All posts by Martijn

OctoMadness – physical arduino installation.


I helped Klaas-Harm of Watermelon to control his awesome Zoetrope: Its a physical installation with 63 custom rendered and 3D printed figures. When seen with the right (stroboscopic) light, instead of rotating all the figures come to live, walking and skating around the installation. The installation was shown at the Eye museum in Amsterdam, during KLIK festival, and will probably travel around for the next few months.

My job was to automate the show: From a lit room, to automatically dimming the lights, starting the motor, playing the music, and starting the strobe, all timed to a track. For this we built a small arduino installation that controlled the various 220v components via relays.

Much more on the project can be seen at the site of watermelon

Or see the making of below:

Game Backend.


For a large Dutch publisher, I built the backend API for one of their new interactive games. Within weeks after launching, the game grew to over 60.000 users, while keeping response times on the API below 30 ms, by using smart caching and the right choice of data store to keep user scores. At peak times over 600 requests a second were handled by this custom backend, which run on only 3 servers. Calculating daily scores and winning users, a process that used to take over an hour, was optimized to run in a few minutes.

The backend was build on PHP, CodeIgniter, Nginx, Redis and MySQL.

WildHitz Website

Screenshot 2014-04-24 14.28.07

For new music station Wildhitz I built a fully responsive website. It enables visitors, on any device, to live stream the video clips, from either the live chanel or the custom playlists. It also enables users to create and manage their playlists by drag and drop. Another important part I built was the custom advertising logic, to monetize the station with streaming video ads.

Fishtales Facebook app.

Fishing Pass

For Dutch Fish brand Fishtales I built a custom Facebook app. Fishtales is giving a trip to the Maldives to participants, who can participate by liking the brand, or embiggen (perfectly cromulent word) their chance of winning by entering the wincode that can be found on Fishtales products.
The app fully integrates with the Facebook API, making participation super easy for visitors. I built both a mobile version, which can be used outside Facebook, and a page-tab version for desktop visitors (Page tabs don’t work on mobile).

Caro Emerald Album app

Album as an app

Together with the team of Caro Emerald I built the “album as an app”. The app enables users to listen to the full album, streaming. It also shows the inspiration behind each track, custom backgrounds the user can save, and exclusive behind the scenes photography.
The whole app features a custom design; (almost) no default iOS graphical elements were used.

Back to freelance

Back to work

My closer contacts know this, but I haven’t written about it here yet.
I’m back to freelance development.

Last summer, my company Skylines failed as a company. While we built some awesome technology, indexing over 5 million pictures a day, billions in total, we failed to build a sustainable business. So last summer, I (silently) went back to freelancing and some travels. My next few posts will show what I have built in more detail.

So if you have a fun project, either in backend, frontend or mobile apps, let me know! And I would love to do a project with connected devices, so those are more than welcome.

Photo Credit: Ian Sane

Apple really needs two passwords, not one for everything

I think it’s quite insane that my  whole Apple account only has one password. I need the same password for a whole range of actions. I need to type it to ‘buy’ a free app, which has almost no consequences; I can always remove it. But with the same password I can also remotely erase my iPhone, iPad an Mac. So I have no choice but making it a long, complex, strong password. Which stops me from getting free apps, as it’s a hassle to type on my iPhone.

Apple should really have two passwords: A simple 4 digit PIN for free apps (or, up to a threshold: Let’s say I could enable my PIN for apps up to $5). And you could then use your “real” password for features that need more security, such as find/erase my device, buy a $999 app, and so on.

How to not do CRM: Telfort.

Warning: this is a rant…

I have been a (mostly happy) customer of Telfort for the last few years. The provided phone (and 3G) access over the (good) KPN network, I paid their bills; everybody happy. Over the last few years I have paid them well over €7.000.

Until last week.
I woke up to a text I missed a payment, and they disconnected me. I looked into my bank statements, and it seemed they (automatic) bill for oktober failed. The bill for November did work. I immediately made the payment I missed, and give them a call. There they explained that getting reconnected will take 5 days. 5 Days?!

My questions:

  • Why couldn’t they warn me by SMS there was an open bill? They did send me one when I was disconnected. Why no last warning a day before? (yes, they did send me a letter, which I must have missed).
  • Why didn’t they retry their automatic bill? Their next bill worked, they could have just added the outstanding amount to it.
  • Why, in this realtime age, does it take 5 days to look up a bank statement and reconnect a phone? Isn’t this an ongoing process?
  • Why don’t they do any risk calculation? I understand from their perspective providing service to non-paying customers is expensive. But I’m not a new pre-paid account: I have paid them well over €7K over the years, and never not paid a penny. It’s not like I’m a high-risk customer: They should have made that calculation, and understood I would pay.
  • Don’t they do automatic cost/benefit analysis? On average I pay them €5/day, so they have about €25 in missed income. Also, I have been talking to their call-center about this, which must have high costs on their eind. All in all their direct costs will be at least € 50,-. And since I’m planning to look for another telco, their indirect costs will be a lot higher.

I keep on thinking this is stupid from both a short-time financial perspective (today I’m costing them direct money, instead of making them any), and a long time perspective: I’m losing my interest in them, and wouldn’t advocate them to my friends.

The most frustrating thing is this whole mess could have been prevented with one text message (or call). Something like “You have missed a payment, if you don’t pay in the next 2 days, you will be disconnected”.