All my life, I’ve been interested in building things. When I was little, it was LEGO. Then building my own computers. When I had lots of time on my hands, I started an open source project of my own. Predictably, I ended up studying computer science. I got involved in yet more open source things. Open source has led me to where I am today. It’s changed my life.
If you want to hear my story, read on.
High school: DriverPacks.net
Back when I was 16, in 2004, I was very much into gaming on my pc and “overclocking” it. Combined with the abysmal reliability of Windows XP back then, it meant I had to reinstall my pc quite often.
(By the way, that feels very strange to say, as it’s both 12 years ago, which is amazingly long, yet it also feels strange to see it’s been only 12 years.)
I got sick and tired of the reinstallation process, which involved backing up and restoring settings, savegames, document, software, drivers and so on. But most frustratingly, installing Windows required you to be physically present at the computer for more than an hour! Worse, if you had hard disks connected via SATA, you had to provide the Windows XP installer with a floppy disk with the driver for the SATA controller — otherwise Windows XP’s installer wouldn’t be able to find the hard disk and therefore it wouldn’t actually be possible to install it at all.
That’s how I ended up discovering the magical world of “unattended Windows installations” — where it could install itself automatically, i.e. unattended. Wow! So cool!
Microsoft had made it possible to copy the Windows XP installation CD to your hard drive, use esoteric software to modify it and then burn the result back onto a CD. Then you wouldn’t have to insert a floppy disk anymore during installation. And you could go further: you could have all your drivers installed automatically (back then Windows wasn’t smart enough to automatically download the necessary drivers). And even install your favorite software automatically!
In starting to play with that, I ended up noticing that it was an absolute pain to automatically install up-to-date drivers. And since I had a lot of free time in those days (high school!) and was bored more often than not, and because I was fascinated by the world of “Unattended Windows”, I ended up trying to automate as much as possible of my automated Windows installation. I thought the idea of a Universal Windows XP Installation CD was very intriguing: the idea/goal/challenge of having an installation disc that would work on any computer!
(Remember, back then you’d almost always need a floppy disk with a specific mass storage driver to be able to install Windows XP at all.)
This was a great challenge for a bored geek. Everybody said it was impossible. But I was both bored and had lots of time.
So I took the challenge.
I started to create packages of drivers. One package per type of hardware: first Sound, then Mass Storage, and on to LAN, Graphics, Chipset, WLAN, and so on.
And so the DriverPacks.net project and site was born. I opened a forum (that is still online and active) which has gathered >50,000 posts since 2006. I regularly published updated DriverPacks — whenever a bunch of drivers got updated.
I even started to learn how to program, because I wanted to also provide software to make it easy to take those (heavily compressed) DriverPacks and integrate (slipstream is what Microsoft calls this for some reason) them into Windows XP installation discs and automatically modify some of those metadata files it contained.
I ended up choosing the programming language that was the most popular in the “unattended Windows scene”, a scripting language by the name of AutoIt.
I called this software “DriverPacks Base”. It most definitely was not the best code — it’s the first code I wrote.
But… it turns out that this software project that this 16-year old bored geek with nothing better to do was actually useful to lots of people. The software ended up getting dozens of translations. Universities, ministries, big companies started using DriverPacks BASE (the software) and the various DriverPacks, because they had to administer hundreds or thousands of computers, and DriverPacks allowed them not to have to spend time to hunt for drivers, because I was the crazy person already doing that for them. For the same reason, PC shops selling and repairing computers are also avid users.
Over the years, it saw literally millions of downloads of those DriverPacks. As the use of Windows XP declines, so does the need for DriverPacks. 2015 was the first year we saw fewer than 1 million downloads.
In the process, I also received some money through donations. Not a lot, but still a significant extra for someone who got very little pocket money.
Going to University: less time
Two years later, I left high school and went on to university. You can probably guess what I wanted to study: Computer Science.
I went there with a back-then unimaginably fancy and powerful 17” MacBook Pro. All those years of dealing with Windows left me with a deep, deep amount of hatred, distrust and disgust towards Microsoft Windows. Apple’s OS X seemed so much more appealing.
I was able to buy that top-of-the-line 17” MacBook Pro by combining all my summer student jobs’ earnings (since the age of 15) plus much of my pocket money plus the donations I got from DriverPacks.net.
I’d worked hard to get it. Now it’d help make life a bit easier/nicer while studying Computer Science. Particularly that bigger screen, which allowed me to look at more information at once, and made programming on it at the university campus a lot more pleasant.
However, there was still this DriverPacks.net project that I started. I poured a lot of work into it over the past >2 years. So I didn’t want to let it go to waste. I knew it was helping lots of people around the world, saving a lot of time around the world. It should keep going. But I also didn’t want to jeopardize my CS studies. What to do?
Well, there already were a bunch of people helping me out with (bèta) testing DriverPacks. Several were reporting updated drivers to me. Some were even helping me update DriverPacks. What if I could empower those people to publish those updates?
So far I’d been using mostly static HTML plus a tiny bit of PHP. Whenever a new DriverPack update was available, I’d update that DriverPacks’ PHP file that listed all versions, download URLs, release dates and changelogs. Obviously I didn’t want to give people I only knew from across the internet access to PHP code itself, that’d be both impractical and insecure. So … I needed something that was easier to use, secure, and so on.
I needed a CMS!
I started looking around. I looked at Joomla, WordPress, Drupal and more. Since I needed to customize things a fair bit, I primarily evaluated them by looking at the code. Joomla and WordPress both looked terrible. Drupal looked great. I started giving it a serious try (Drupal 5 was in beta back then!), played around with modules, reported some bugs, chatted with people in the
#drupal IRC channel. The people in that IRC channel were so friendly, so helpful, so supportive, that it convinced me this was the right choice. For the first time, the enthusiasm and support of others led me to become part of an open source software community, and wanting to be part of that, and wanting to contribute back.
So, I ended up starting to rebuilding DriverPacks.net on top of Drupal. Until then, it was static HTML and tiny bits of PHP. The absolute simplest thing possible code-wise. That was also why I couldn’t give any of the DriverPacks.net volunteers/contributors the ability to update the website, to post updated versions of DriverPacks, because they’d need to know PHP, the file structure, server access, and so on. Too brittle, too insecure.
Drupal is first and foremost a CMF, so it’s perfectly suited to build a website that matches your exact needs. In my case, that was publishing new releases of DriverPacks and automatically making them available for download.
In my eyes, one crucial bit of functionality (a Drupal module) was still missing: the ability to select something in a hierarchy. DriverPacks exist for Windows XP and Vista, for x86 and x64. That’s a hierarchy: “Windows → XP → x86 → Sound/Graphics/…”.
So I started working on my very first module: Hierarchical Select.
Just like with DriverPacks, it turned out that I was not the only one with this need. Dozens, then hundreds, then thousands of sites adopted it. While it got adopted more and more widely, I kept adding features, made it easier to use/install/customize, provided support, and so on. Just like the Drupal community had already been doing for me. I was merely returning the favor.
Many hundreds of hours I spent improving Hierarchical Select. (The second half of the first year of Computer Science was relatively relaxing. It also helped I didn’t go out much.) An unexpected consequence is that I was contacted by several people to add more functionality or site-specific customizations.
So, rather than doing mind-numbingly boring student jobs like serving drinks or packing sandwiches (both of which I did before then), I was able to do something that I liked, that earned me more, that usually benefited everybody (my work was usually open sourced), that allowed me to work from home and that gave me valuable programming experience.
This of course got me more hooked on Drupal. It led to me contributing several more modules.
This in turn led me to go to DrupalCon Barcelona in September 2007. Less than a year after I discovered Drupal, I was going to my very first conference, flying for the first time, traveling alone for the first time. So exciting!
It would cost me many hundreds of euros, which seemed crazy. But on the other hand, it’d lead me to meet these wonderful people in real life, overcome some of my fears (I used to be very afraid of speaking in front of just a few people), learn a bit about other cultures (Barcelona’s and the other attendees’ views on life & work). If it was awkward, I wouldn’t have to see anybody again. If it was fun, then hurray!
Turns out it was a lot of fun. Turns out the random person I was sharing my room with was actually also a well-known person in the Drupal world. So he introduced me to lots of people. One thing led to another, and I happened to also meet a tall fellow Belgian, Dries — the founder of Drupal!
In that Barcelona apartment where I met Dries, I felt intimidated, but Dries was his usual self: very down-to-earth, relaxed, approachable. Just like he does with everybody, he started a brief but genuine conversation with me. He had just started his anti-spam service Mollom back then.
The next summer (2008), after my second CS bachelor year, he asked me to work on Mollom’s subscription system, with automated billing & payments. I worked on it again the next summer (2009), after I’d finished my bachelor’s degree and was moving on to my master.
So, while studying, I did freelance Drupal work during the school year — but only to the extent it wouldn’t harm my studies. In the summer, I had a student job at Mollom. Thanks to Drupal!
I also ended up seeing a bit of the world, by going to DrupalCons: Barcelona in 2007, Szeged in 2008, Paris in 2009, and so on.
After about a year of working with Drupal, in the Christmas of my second year at university (2008), I ended up getting very frustrated by how slow so many websites were. So I started reading about how to make websites faster, and found myself utterly fascinated. Back then, analyzing web sites’ performance and formulating best practices was in the early days. The infamous fourteen rules were the key metric.
Given my involvement with Drupal, I figured it’d be interesting to see if Drupal was already respecting those fourteen rules. I described my findings in an article. To my surprise, an avalanche of comments was posted to my blog. Apparently me being frustrated, then being fascinated and writing about that fascination was useful to many people. This too is open source!
I wrote that article in the middle of my second year. In the third year (and the last year of the bachelor degree) I’d have to do a bachelor thesis. Rather than choosing one of the predefined proposals, I wrote my own proposal, to do a bachelor thesis on improving Drupal’s page loading performance. Specifically, on integrating Drupal with CDNs.
Back then many (if not most) CDNs still had proprietary APIs to get files onto the CDN, each with their own peculiarities. Ideally, you’d be able to avoid vendor lock-in. Ideally, free & open source software would exist that allows you to integrate with any CDN, and makes it easy to switch or even combine different CDNs. So, that is exactly what I wrote for my bachelor thesis. I wrote it in Python and called it File Conveyor. I also wrote an accompanying Drupal module (the CDN module) that makes it easy for a Drupal site to use File Conveyor.
I also wanted to prove that using a CDN actually did improve performance. And thanks to the DriverPacks.net project I started, I had the ideal test case: a site with a fair amount of traffic (>1 million page views per month), with visitors distributed fairly evenly across the planet. And, sure enough, the numbers did show this helped pages load noticeably faster.
Again I hoped it would be useful to many, but I never expected that The White House would consider using & supporting it!
You see, once you contribute your work to the Drupal ecosystem, you’ll be surprised which organizations end up using your work! Hierarchical Select eventually got to several tens of thousands of sites using it, File Conveyor & the CDN module “only” several thousands, but in either case your work will benefit many!
Understanding performance: data mining
I continued my studies: having finished my bachelor degree, I went on to get my master degree. I chose the specialization with more “fundamental” CS subjects: databases, algorithms, data mining. The latter I found most fascinating. I continued to do some freelance Drupal work. But, most importantly, there was that master thesis you’d have to write to graduate.
For my bachelor thesis, I had measured performance before and after updating my test subject to use the software I wrote. It’d be better if performance was measured continuously: just like continuous integration, also do continuous profiling.
That is exactly what I ended up proposing to do for my master thesis: an analytics suite for tracking page loading performance. An application that can automatically extract conclusions out of the measurements, and that can alert you of improvements and regressions over time. Using data mining.
DriverPacks had led me to Drupal, Drupal to performance, performance to data mining.
I called the result “WPO Analytics” (WPO is short for
Web Performance Analytics). I learned a lot about data mining algorithms, and learned even more by actually implementing them (and discovering where the papers describing them were omitting important details). Diving deep into data mining for months and extending existing complex algorithms with your own insights is a fascinating experience.
Interning at Facebook
What’s far more exciting is what happened next. I was contacted by a member of Facebook’s Site Speed team. They had stumbled upon my master thesis and my site. They were looking for people to help make Facebook faster and thought I could be a good fit.
Since I was still studying, I asked if it’d be possible to do an internship instead of a job. They were okay with that.
Since I’d worked quite a lot with Dries while building the subscription system for Mollom, I asked him to write a letter of recommendation, which he was kind enough to do.
After a first technical interview that didn’t go too well (I didn’t prepare for it at all), I sharpened my basic algorithmic skills and then did rather well on the second technical interview.
A few weeks later, I received the verdict: I was invited to start a 12-week internship at Facebook, starting in September 2011!
I couldn’t believe it.
From something silly a 16-year old is doing to Drupal to performance to data mining to possibly working at Facebook!? The entire reason I was on this path was open source: if DriverPacks wasn’t open source, I wouldn’t have needed to build a website for it so other volunteers could keep it going, which means I wouldn’t have discovered Drupal. If Drupal weren’t open source, I wouldn’t have freelanced, worked at Mollom nor would I have done my bachelor thesis about Drupal + performance. Then I wouldn’t have done my master thesis about going further in understanding web performance. And without that, Facebook wouldn’t have contacted me.
Those 12 weeks at Facebook flew by (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) despite me longing for home & my girlfriend. Facebook organized lots of amazing intern events: I got to see and experience things I never thought I’d do (from VIP Cirque du Soleil to indoor skydiving, from American football to an actual Thanksgiving, even a holiday party in San Francisco city hall). But, of course, mostly I was just working hard.
At Facebook, I spent most of my time improving the data mining software I had written for my master thesis. Facebook already had a performance data collection pipeline set up (as you’d expect), but was limited in its ability to analyze it. Only very simple deductions could be made from it, and it had to happen mostly manually.
The goal was to use my software to automatically pinpoint causes for slowness on Facebook using pattern mining, whether for entire pages or just particular interactions.
I managed to deploy it to Facebook’s infrastructure. It was used to understand the performance characteristics of five particular pages on Facebook. The biggest of those five analyzed 17 million samples per day, but split each sample into 5 separate ones so that’s about 85 million per day — or almost 1,000 per second. Per sample, 10—11 attributes are analyzed, so that’s about 900 million attributes analyzed per day.
I never would’ve had the opportunity to work with data on this scale if it weren’t for this internship.
On my last day, there was an employee event (to celebrate the move to the new buildings), with a death ride, sledding slope, beer pong, slides and more. That’s why I’m on the photo with a shoeless Mark Zuckerberg :)
A few days before that last day, I was offered a permanent position at Facebook! I was proud. I’d proven I was good enough. But I would have to move to the United States, which I did not want to, nor could (my girlfriend was studying medicine, and she’d have to A) start over, B) studying medicine in the US is extremely expensive). So I respectfully declined, and returned home just in time for the holidays.
Working at Acquia
On the second day of 2012, I blogged that I was looking for a job. I talked to >65 companies and had actual interviews with >30. Having contributed much of about five years of my spare time in the Drupal world made it very easy for me to find a job. I even had the luxury of being picky.
After a short detour, I ended up working in Acquia’s Office of the CTO. Which meant being an extension of the CTO, to do programming things the CTO doesn’t have time for anymore. That CTO is Dries — the founder of Drupal & Mollom. Since he had prior experience working with me, he wanted to give me a chance to work remotely for Acquia (which is located in Boston).
Ever since then, I’ve been working remotely from Belgium, together with my colleagues around the world (from Oregon & Vancouver to Boston & Philadelphia to Budapest), on making the next version of Drupal better. And not just with direct colleagues around the world, but also together with colleagues in the community — whether in their free time or at other companies. I’m now able to do much more than when I was still studying, because it is my full-time job. Our team tries to do what’s best for both Acquia and Drupal. And what’s good for Drupal, is good for Acquia. We unblock each other: we unblock contributors in the community, they unblock us.
In particular, we (and full-time contributors at other companies) are able to tackle the bigger, meatier problems that take weeks, months or even years to solve. Doing that after work hours or in the weekends is just not doable — some try, but the personal risk (burn-out) and the project risk (delays, lack of coherent, complete APIs) are much higher. So, we often do some of the grunt work to push the project forward, with consensus with the larger community.
For the first 3.5 years, that was improving Drupal 8’s authoring experience, its cacheability, making it fast by default, but also helping to complete complex parts, such as render pipeline. Since Drupal 8 shipped, we’ve been working on important new capabilities for Drupal 8.1, 8.2 and so on, such as BigPipe.
We all (i.e. the Drupal community) strive to find the best solution possible, that takes into account all the competing considerations: usability, performance, accessibility, developer experience, translatability, front-end performance, site builder experience, timeliness, understandability, testability, and so on. That requires discussion and consensus building. The end result is a solution that is perhaps not the simplest, but is the most robust and takes into account these many considerations.
The Drupal community does this via the internet, with discussions in IRC, issue queues, calls and even in person at DrupalCamps (relatively small, relatively local conferences) & DrupalCons (enormous “official” conferences, very international conferences). Sometimes we even have dedicated “code sprints” somewhere, to tackle a particularly thorny problem with just the right people (like in the above photo).
Reaching consensus in those discussions to solve problems can sometimes take a long time, but usually when it takes a long time to agree, it’s for a good reason: because there are concerns concerning one of the aforementioned aspects.
So my job consists mainly of tackling complex, large problems and building consensus with the wider community. So since I started, my communication and reasoning have improved a lot :)
This is my story, but there are many people with similar ones. Open source in general, and the Drupal community in particular, has connected lots of people and given many a person new perspectives & opportunities.
It feels bizarre to present my own story. I provide it here hoping it may help others leave their own comfort zone, conquer impostor syndrome and meet wonderful new people from everywhere around the world & all sorts of backgrounds.
For me, open source & Drupal have changed my life. I fully realize not everybody has this opportunity, but that doesn’t change that I’m grateful for where it has led me.
February 8, 2016