Software engineer · product designer · digital transformation advisor
Building software since 2008, now at Booking.com. Before that, Spotify,
Backbase, and Udacity. I’ve open sourced
dozens of projects, and maintain the ones
people use.
I run Harf Labs, and
Unblock Syria with a lot of help. I’m from
Aleppo, live in Amsterdam, and write here in Arabic and English.
Now
Building something new at Harf Labs. Restoring digital access with Unblock
Syria.
Experimenting with water fasting. Practising thuluth, slowly.
How to produce one Open Graph image per route instead of a single shared image. Two working setups — HarfBuzz and resvg at build time, satori per request — with the meta tags, font loading, and what to do when rendering fails. Includes what changes for right-to-left text: word order, letter joining, and the letters a font does not have.
Syria went on the American terrorism list in 1979 and came off it on Monday. I wrote the careful version for Unblock Syria. This is the one where I'm happy, and still angry.
One model reads Arabic handwriting at under one per cent word error. The best anyone has managed on classical calligraphy is forty-five. I went looking for the missing data that would explain the gap and found the opposite — a script whose rules were written down in the tenth century, and again in software in the 1980s.
An IPTV client needed Picture-in-Picture, and the VLCKit line it ran on does not have it. Notes on owning a C engine rather than consuming one — pointer isolation, lifetimes nothing checks, a patch set carried against VLC's own source, and what that costs.
SwifterSwift passed five hundred extensions and began colliding with other libraries. A member added to a type you do not own is not scoped to your library at all — it is global, and no module qualifier reaches it.