Do not donate to me!

Some people ask me if they can donate for my software. My answer invariably is they can’t, because I don’t want money. Instead I would like them to make a small donation to a good cause!
Why? Well, I’m a very lucky guy, living in the richest region of one of the richest countries of the world and having a full-time job that allows me and my family to live a comfortable life. Software is “just a hobby” which I hope is a small contribution to make the web (and by extension the world) a slightly better place.
So given that context and given the fact that there are many ways in which the world could be made a better place, I would like to ask you to donate any amount of money you think my little projects are worth to a good cause. Just pick one, click and donate!
  • Donate via GiveDirectly which helps people living in extreme poverty by making unconditional cash transfers to them via mobile phone.
  • Lend via Kiva, or send me a Kiva-voucher and I will lend with that. Kiva allows people to lend money via the Internet to low-income / underserved entrepreneurs and students in 70 countries.
  • Support La Quadrature du Net, which is one of Europe’s leading organizations promoting net neutrality, a positive reform of copyright and the protection of privacy (these guys were instrumental in defeating ACTA).
  • Mary’s Meals provides life-changing meals to some of the world’s poorest children every school day.
  • The Mozilla Foundation is responsible for Firefox and for the Mozilla Developer Network documentation, keeping the web open en other browsers honsest. Donate to them!

And there are many, many more great causes both locally and internationally that can use our help!

Stress uitlokken dan toch ethisch volgens JEP

cover van metro op 13 Juni 2013Die mannen van de JEP hebben zich op vraag van de advocaten van Beiersdorf opnieuw over de zaak “Stress op de trein” gebogen. De Jury in eerste aanleg veroordeelde de advertentie voor Nivea Stress Protect nog in strenge bewoordingen:

De Jury is van mening […] dat het onvoldoende duidelijk is dat het in werkelijkheid gaat om een bericht dat deel uitmaakt van een reclame.[en dat] de reclame in kwestie niet getuigt van een behoorlijk maatschappelijk verantwoordelijkheidsbesef en meer bepaald ten onrechte inspeelt op angstgevoelens

Maar de JEP-jury in hoger beroep bleek het daar dan toch niet mee eens (zie ook samenvatting van de klacht en de uitspraken op de site JEP);

De Jury in hoger beroep is derhalve van oordeel dat de reclame in kwestie voldoende identificeerbaar is als reclame voor de gemiddelde consument [en] dat uit deze context en uit de totaalindruk die de reclame biedt, voldoende duidelijk het humoristische gebruik van overdrijving naar voren komt. Gelet op het voorgaande, is de Jury in hoger beroep derhalve tevens van oordeel dat de reclame in kwestie niet van een gebrek aan behoorlijk maatschappelijk verantwoordelijkheidsbesef in hoofde van de adverteerder getuigt.

Terug naar af, of toch niet helemaal? Goh, ik mag hopen dat ze bij Metro, Beiersdorf en het reclamebureau in het vervolg toch net iets verder van de grenzen van het toelaatbare blijven? Want al de commotie (de veroordeling door JEP in eerste aanleg, de verontschuldiging van Metro, de publicatie van de rechtzetting van Infrabel en de veroordeling van Metro door de Rechtbank van Koophandel van Brussel), daar moet toch wat stress-zweet aan te pas gekomen zijn, niet?

You gotta love HTML5’s input types and patterns

While working on updates of the admin-screen of Autoptimize, I wanted some checks on the URL a user can enter for a CDN. At first I thought I’d do some jQuery-based validation but then I came accross a page (on StackOverflow I guess) that mentioned the new input types and the use of validation patterns, so now I just have this beauty in place;

<input type="url" pattern="^(https?:)?\/\/([\da-z\.-]+)\.([\da-z\.]{2,6})([\/\w \.-]*)*\/?$" />

And to make sure the user gets a visual indication if the string isn’t a valid URL (according to the regex) there’s this CSS oneliner:

input[type=url]:invalid {color: red; border-color:red;}

The nice thing about this is that it is pretty backwards compatible;

  1. browsers that do not know type=”url” will just consider it type=”text” and can still enforce the pattern (if supported).
  2. browsers who support type=”url” but not the pattern, will do more basic validation.

And for browsers that do not support type=”url” nor patterns, there are multiple polyfills available that force older browsers to comply as well. But who cares about older browsers, right?