Monday 30 December 2013

Toinou - Les fruits de mer!

When we visited Marseille last november, we passed a few people selling their fish while we walked along the harbor side. Of course the talk went to about eating fish and then a few people there pointed us to 'the best fish restaurant in town': Toinou - Les fruits de mer!
After a short walk back into town, we found it and indeed, it was an experience for us we'll never forget. The great thing also was that they have their own market stall outside of the restaurant!

toinou-restaurant-and-marketplace

toinou-oysters-served

Wednesday 4 December 2013

Your bike as camera support with Joby Gorillapod

Always take a Joby Gorillapod with you. If you forget your big tripod, you can always use your bike for support!

IMG_4632

Saturday 30 November 2013

Foto: Marseille en een stukje Provence

Panorama Marseille Port, France

Panorama Marseille Port, France

Taken on 26 November 2013. This pano is made of two pano's, both taken with my GF6. Click to enlarge!

Panorama Marseille Centre, France

Panorama Marseille Centre, France

Taken on 26 November 2013. This pano is made of three separate pictures, taken with my GF6. Click to enlarge!

Panorama Provence, France

Panorama Provence, France

Taken on 25 November 2013. This pano is made of two pano's, both taken with my GF6. Click to enlarge!

Friday 29 November 2013

De Saint 0744 - Saint Magazine 12

Een weer een Saint gedigitaliseerd. Geen OCR, dus gewoon met Calibre of een Comicbook reader lezen. Klik hier...

saint744_0000saint744_0095

Thursday 7 November 2013

Store/Show BLOB images with PHP and Lasso 9

I have added a new page to the 'How To'-list where you can find information about how to read an image from disk, store it into a MySQL blob-field and display that image on a web page. Reading and storing is done with PHP, displaying with Lasso 9. [Read more...]

Sunday 20 October 2013

Riesling Machtum Onkaf - Grand Premier Cru 2011 - Luxembourg

We had this wine during dinner in hotel-restaurant Koener, Clervaux. We were surprised that Luxembourg had such good wines.

Riesling 2011 - Luxembourg1

Riesling 2011 - Luxembourg2

Saturday 5 October 2013

Periquita 2009 - Península de Setúbal, Portugal

Een echt heerlijke wijn uit Portugal.

Periquita - Portugal1Periquita - Portugal2

Te koop bij de Jumbo en sommige Albert Heijn supermarkten.

Tuesday 1 October 2013

Grand Rolland - Grande Cuvée 2011 - Bordeaux, France

Een hele lekkere, zeer aan te bevelen wijn.

Grand Rolland - Bordeaux

Te koop bij Jumbo supermarkten voor een mooie prijs.

Wednesday 25 September 2013

Foto: Baantjer Impressum

Baantjer Impressum

Baantjer Impressum

Artistieke impressie van een aflevering van de politie-serie Baantjer.

Friday 20 September 2013

Even pauze bij Brasserie Lettink

Op een wandeling van Warnsveld naar Vorden stuitte ik bij Vorden op een leuke plek om te pauzeren: Brasserie Lettink. Even tijd voor een Latte Macchiato en een vegetarische broccoli-soep, geserveerd in een alleraardigst pannetje!

_1100410_1100412

20130919wandeltocht

Thursday 15 August 2013

De Saint 0686 - Saint Magazine 11

Een weer een Saint gedigitaliseerd. Geen OCR, dus gewoon met Calibre of een Comicbook reader lezen. Klik hier...

saint0686_0000saint0686_0096

Saturday 20 July 2013

Foto: Kasteel Hernen

Kasteel Hernen

Kasteel Hernen

Bezoek aan kasteel Hernen. Panorama van 3 foto's. Deze manipulatie doet het kasteel wel eer aan, vind ik.

Sunday 14 July 2013

De Saint 0632 - Saint Magazine 10

Een weer een Saint gedigitaliseerd. Geen OCR, dus gewoon met Calibre of een Comicbook reader lezen. Klik hier...


Saint0632_0000Saint0632_0095

Thursday 4 July 2013

Foto: Abstract Light

Abstract light 08

Abstract light 08

Played with light (iPhone, glasses with LEDs, reading glasses and a mirror)

Friday 7 June 2013

De Saint 0631 - Saint Magazine 9

Een volgende Saint gedigitaliseerd. Geen OCR, dus gewoon met Calibre of een Comicbook reader lezen.

De Saint 0631_0000De Saint 0631_0094

De hele collectie kan je hier downloaden.

Foto: Mini viooltje / Mini pansy

Mini viooltje

Mini viooltje

Thursday 30 May 2013

Hex2Str and Str2Hex Javascript Functions

Today I needed some Javascript to convert a HEX-encoded string to an ASCII-encoded string. The reason is that to be able to send all possible strings via AJAX-calls back to the client, without problems with quotes, apostrophes and other non-ASCII7 characters, I decided to encode the AJAX-data to hex, which is a nice and simple ASCII7 string of only the characters 0 through 9 and A through F.

After Googling a bit I found an example on webdeveloper.com and some tips on stackoverflow.com, and both combined with some of my own JS-knowledge, I came up with the following small and handy functions:

function Str2Hex(tmp) {
var str = "";
for (var i=0; i<tmp.length; i++)
str += ("00" + (tmp.charCodeAt(i)).toString(16)).substr(-2);
return(str);
}
function Hex2Str(tmp) {
var str = "";
for (var i=0; i<tmp.length; i+=2)
str += String.fromCharCode(parseInt(tmp.substr(i,2),16));
return(str);
}

For example, after a user made a selection from the autocomplete menu and you return a HEX-encoded string containing multiple values, separated by "+++", to fill other form-fields too:

..., select: function(e,u) {
var x = Hex2Str(u.item.value).split("+++");
$("#field1").val(x[0]).change();
$("#field2").val(x[1]).change();
... etc.
return false; } ....

Or when you return multiple values as a HEX-encoded JSON array:

..., select: function(e,u) {
var x = u.item.value;
$("#field1").val(Hex2Str(x.field1)).change();
$("#field2").val(Hex2Str(x.field2)).change();
... etc.
return false; } ....

Happy coding!

Monday 27 May 2013

Nederlandse tekst voor Accessnow actie over Privacy Bescherming

Subject:

Gelieve in te staan ​​voor mijn privacyrechten

Message:

U zal binnenkort stemmen over het voorstel van de Commissie voor een algemene verordening gegevensbescherming. Ik schrijf u om u aan te sporen mijn fundamentele rechten te verdedigen op het gebied van privacy en gegevensbescherming en ervoor te zorgen dat ik de controle over mijn persoonlijke gegevens behoud.

Om dat te doen, is het belangrijk voor u om zeker te zijn dat de verordening het volgende bevat:

    - Bescherming van al mijn gegevens, waaronder gegevens die kunnen worden gebruikt om mij er uit te pikken of mij te identificeren als gebruiker;
    - De mogelijkheid om mijn uitdrukkelijke toestemming te geven voor gegevensverwerking, welke beperkt is tot specifieke doeleinden;
    - Een recht om mijn gegevens te verwijderen en de verplaatsen;
    - Strikte beperkingen op profilering;
    - Een verbod voor bedrijven die toegang bieden tot mijn persoonsgegevens aan buitenlandse overheden of instanties.

Ik dank u dat u een waardevolle partner in het opkomen voor mijn recht op privacy wilt zijn.

Link naar de actie: Act now: tell MEPs to stand up for our privacy as European citizens.

Tuesday 21 May 2013

Foto: Brem in bloei

Brem in bloei

Brem in bloei

Wednesday 24 April 2013

Sublime Text 2 Color Scheme for Lasso

Sublime Text 2 is a superb code editor. I am using it now since 4 days and I am already completely used to it. I thought I would miss all integrated functions in Coda 2, but it turns out that I don't. I already use applications like Transmit, SmartSVN and Navicat outside Coda 2 to do more than can be done from within Coda 2, so I am already used to that. After 4 days of coding with Sublime Text it is now the other way around - I miss stuff in Coda 2 that makes me turn back to Sublime Text!

A fellow developer has made a great Lasso syntax highlighter for Sublime Text 2 and I have been playing around a color scheme to get the (almost) same syntax coloring as I had in Coda 2. Maybe you find it useful too.

20130424113839-Lasso


Download myLasso.tmTheme and put it into:
/Users/<YOU>/Library/Application Support/Sublime Text 2/Packages/Color Scheme - Default/

(to install on Win / Lin - read this part of the manual)

And this is my 'all-the-extra-packages-you-need' list:

Friday 19 April 2013

ICSviewer v2 is out. View and export .ics calendar files

Version 2 of ICS Viewer was released today. Someone reported a crash, which had to do with the order of VEVENT entries. This, among other things, has been fixed. Enjoy!

Saturday 13 April 2013

Foto: Ice Dick / IJspenis

Ice Dick

Ice Dick

An artificial form, but still quite familiar ;-) Created while our garden tap was dripping in the sink outside.

Thursday 28 March 2013

Logistics Dictionary

While cleaning my databases I found a Logistics dictionary called 'Terminology in Logistics', which I once digitized from a paper version. I've put it online as a searchable database. If you miss anything, please let me know and I'll add it - if is a valid entry.

Monday 11 March 2013

Connect your Mac to the Tor Network

I created a page how to 'Connect to the Tor Network', which describes the steps to connect your whole Mac, not just clients with their own proxy settings, to the Tor Network. It's really simple and not complicated at all.

Happy free and anonymous browsing!

Sunday 10 March 2013

Country codes, Postcodes, City names, etc. at GeoNames

In search for a good list with ISO-country names and relevant data, I ended at GeoNames. This site offers really super data, like even the RegExp to test a postcode value! Really great! And even more data of countries worldwide, like largest cities, highest mountains, capitals, postal codes, country statistics and much more.

And all for free. However, I can imagine what a job this must be to keep all that data up-to-date, so I donated for the data I downloaded (donate button is at the top of the donate & sponsoring page).

See also my earlier post about calculating postcode-to-postcode distances.
 

Restaurant Majesteit in Velp

Als je in Velp bent en weer eens echt lekker wilt eten in een aangename ambiance, dan is eetcafé Majesteit een echte aanrader.

Majesteit, Velp1 Majesteit, Velp2

Makkelijk bereikbaar door achter de AH te parkeren en dan een klein stukje door te lopen naar de Wilhelminastraat 21 (bekijk in Google Maps)

Saturday 2 March 2013

iOS Home Screen Backgrounds

I created my first series of iOS Home Screen backgrounds and you can see and download them from this page.

Yourhead Collage 2 not working in IE9

I found the bug that blocked YourHead's Collage 2 from working in Internet Explorer 9. You can read about it at, and download the corrected plug-in from, the YourHead Support Forum. I attached it there to my last response. If you can't download it from there, contact me and I'll mail you the 2MB zipped file.

Do not 'install' the unzipped file. Rather copy it to /Users/YOURNAME/Library/Application Support/RapidWeaver/

You can open your 'Library' folder, if you do not see it, like described here: https://www.macworld.com/article/1161156/view_library_folder_in_lion.html

 

Thursday 14 February 2013

Remove dynamic tables from Lasso 8 and MySQL

I wrote a small script that cleans up Lasso 8's internal SQLite database from dynamically created tables in MySQL. It also deletes the dynamic tables from MySQL when older then 2 days, so you do not need a separate script for that.

In my case, the script has been written to clean my dynamically created temp tables, which names all begin with 'REP'. But you can copy the script and of course modify it to your needs.

Happy coding!

Thursday 7 February 2013

Foto: City Wall in Zutphen

Stadswal in Zutphen vanuit Badhuisweg

Stadswal in Zutphen vanuit Badhuisweg

Monday 4 February 2013

Foto: Old Water Tower in Gorinchem

Gorinchem - Oude Watertoren / Old Water Tower

Gorinchem - Oude Watertoren / Old Water Tower

I sometimes like to design a poster - this time the Watertower image had a nice angle to it to play with. Convert it to a sort-of black&white (PostWorkshop) and than finding a nice frame (ImageFamer)

Sunday 27 January 2013

Foto: Cannon Fire in Gorinchem

Cannon Fire in Gorinchem

Cannon Fire in Gorinchem

Just right - the sun as a blast of the old cannon.

Thursday 10 January 2013

Foto: Still Life

Still Life of an Evening@Home

Still Life of an Evening@Home



iPhone-apps experiments (tilt-shift, borders, coloring filters, vignettes).

Wednesday 9 January 2013

Bronkhorster bieren

Een paar weken geleden vond ik in de supermarkt in Hummelo een setje lokaal gebrouwen bieren: Bronckhorster, gebrouwen door Brouwerij Rodenburg in Rha. Wel prijzig, dus een aanrader voor af en toe en speciale gelegenheden zoals Ome Joop's speciale gelegenheden: als het regent en als het niet regent!

bronkhorster-bieren

Monday 7 January 2013

Restrict Lasso AJAX-file calls to the intended web page

Suppose you have a nice setup where a page interacts with the server via AJAX-calls and executes a Lasso file on the server to get some data. You don't want this file to be called directly via the URL-bar in a web browser, or via other self-made web pages by others who try to access it via a copy of your page. Anybody can see which AJAX-files your page is calling, so for some it is always a challenge to execute them outside the normal webpage to see what data will come up. Might be of interest! So you want to prevent that, somehow.

There is a Lasso-tag called referrer_url, which returns a string containing the URL that requested your AJAX-page. If you look into this string for a domain name or a path that only you have, you can block execution if the requestor is not coming from your server. When a page is called directly in the browser, the referrer_url is always an empty string. Which is logical, since the page was not referred to by another page.

Suppose I have a page mypage.html with a jQuery auto-complete implementation in it. This auto-complete can of course be used by more than one page and you do not want people to try it out in other ways.

...
...
<input type="text" id="inp1" size="25"><span id="desc1"></span>
...
...
<script>
$(document).ready(function() {
   $("#inp1").autocomplete({minLength:2, source: "ajax.lasso?p1=a&p2=b", select: function(e,u) { $("#inp1").val(u.item.value); $("#desc1").html((u.item.label).replace("(" + u.item.value + ")", "")); return false; } });
});
</script>


Simple protection:
[
if (referrer_url >> '/mypage.html' || referrer_url >> '/myotherpage.html');
...
...
/if;
]


Better protection:
[
if (string(referrer_url)->beginswith('http://my.domain.com/') &&
   (referrer_url >> '/mypage.html' || referrer_url >> '/myotherpage.html'));
...
...
/if;
]


So this gives you some protection from just try something-users. Add a login-system, which restricts the number of users that might want to hack your pages - you can trace their actions on your site. In that case, add a check if the user is logged in. You must execute your complete login-sequence in your AJAX-pages too, as with 'normal' pages, since the xhttprequest is a normal HTTP request and thus the browser sends the same HTTP-headers and cookies, etc.. to your AJAX-page.

More protection:
[
if (referrer_url >> '/mypage.html' || referrer_url >> '/myotherpage.html');
   var('loggedIn = false');

   include('checkuser.lasso');

   if($loggedIn);
      ...
      ...
   /if;
/if;
]


Even better protection:
[
if (string(referrer_url)->beginswith('http://my.domain.com/') &&
   (referrer_url >> '/mypage.html' || referrer_url >> '/myotherpage.html'));
   var('loggedIn = false');

   include('checkuser.lasso');

   if($loggedIn);
      ...
      ...
   /if;
/if;
]


But, as with everything web-related, nothing can be trusted.