Fabrice Bellard: Portrait of a Super-Productive Programmer

Hollywood portrayals of computing superstars are more rooted in comic-book super-heroics than the realities of software development. Except that in programming, superpowers do exist. Fabrice Bellard has them.

Computing in the movies is hard to recognize: Typographical errors are non-existent, crackers break through tested defenses in seconds, and practitioners create twenty-function-point programs in fewer keystrokes than the count of bullets whizzing by their heads. Hollywood portrayals are more rooted in comic-book superheroics than the realities of software development.

Except that in programming, superpowers do exist. Fabrice Bellard has them.

Serial achiever

What other description can there be when one man successively produces a dozen important and widely-used software applications? Look at the (partial) record:

Every one of these would be a proud accomplishment in any programming career. To produce so many, and so consistently, is very, very rare.

A bit of background provides the context to understand this record clearly. It’s common in programming folklore to talk about how a particular program was pulled together in one intense weekend, or during a vacation interval. Many of these tales are true, as far as they go; several of the best-known programs were first launched with a specific effort of just a few days. This leads some to expect that those few days define the life cycle of program development: A sufficiently clever programmer can create the Linux kernel this holiday season, take the next weekend off to invent the Ruby programming language, build an award-winning iPad game the following month, and so on.

It’s not so. Just because top sprinters finish a hundred meters in under ten seconds doesn’t mean they sustain that pace for the duration of a marathon. When Bellard wrote LZEXE, for example, he created a program that performed the data compression he needed at one particular time (it was the first widely-used executable file compressor for MS-DOS).

What’s notable is that he also invested the follow-up effort to ensure the software was engineered well-enough to work on other computers and on multiple operating systems, could be understood and maintained by others, was adequately documented, licensed to be useful, and so on. All those apparently secondary activities typically  take orders of magnitude more time than the original coding at the heart of a successful program.

Bellard isn’t unique as much for being a smart guy who has clever ideas about programs—although he certainly is and does—but for his achievement in refining and crafting those ideas into programs that make sense to others. He consistently creates applications that other programmers want to use and enhance.

Think about QEMU, for example. Like all Bellard’s best-known programs, it’s freely-available under the GNU Public License (GPL) or a close relative, originally developed under Linux, broadly portable, and now mostly maintained by others. Several programs preceded QEMU and roughly fit its description as “a generic and open source machine emulator and virtualizer;” QEMU, though, like many of Bellard’s creations, combines performance, robustness, portability, and flexibility in a way that none of its ancestors or rivals matched. Bellard’s contribution wasn’t to create the idea of a machine emulator, but to envision how to engineer one well enough to move it from the classroom or laboratory to “working-class” developers’ and testers’ toolboxes. It’s now indispensable to many testing teams, who can leverage QEMU to manage hundreds of distinct computing environments from a single underlying physical computer.

Finding a Balance

Bellard seems to balance nicely between extremes that threaten productivity. His techniques are modern without being faddish, and careful, yet not neurotic. While he moves every few years into new and fertile unconquered territory, he exercises  patterns that have served him well over and over: cleanly-styled C, data compression, numerical methods, signal processing, pertinent abstractions, media formats, open-source licensing, and “by-hand parsing.”

Bellard doesn’t appear to promote himself—he politely declined to be interviewed for this profile, for example—but others enthusiastically adopt his creations. Among the 654 Copyright notices QEMU 0.13.0 source code embeds, 216 are his. To put that another way: He was successful enough with QEMU during its first few years to entice others to put in over twice as much work (by this crude measure) as he has!

Fabrice Bellard (left) with Miguel de IcazaBellard, born in 1972, began practicing his own coding techniques first on a TI-59 scientific calculator, at the beginning of the ‘80s. Many of the projects listed above, along with others in his portfolio, originated as student assignments at l’École Polytechnique, where he matriculated in 1990. TinyGL, for example, derives from the VReng Virtual Reality Engine distributed 3D application he began in 1998. Based on this experience, he eventually created and released in 2002 TinyGL as a very fast, very compact re-implementation of a substantial subset of OpenGL.

Similarly, his recent and relatively well-publicized calculation of several trillion (!) digits of pi was performed on a single desktop computer. Previous record-setting calculations of this class were done on million-dollar supercomputers. Bellard made it seem natural to pull together his mathematical insight, broad experience at instruction-level coding, and careful engineering to advance the field this way. The roots of the achievement reflect back to his experiments on a hand-held programmable calculator at the age of nine .

To describe fully even one of the projects already mentioned is beyond the scope of an article such as this; it would take several books to capture all that Bellard has already contributed, and at least another to explain how he works. A few broad conclusions are possible, though:

  • As has often been observed before, the very best programmers are far, far more productive than the average, able to produce multiples of the usable output of others;
  • While it’s unrealistic to predict how programming would look without Fabrice Bellard or open-source licensing, there can be no doubt that such programs as QEMU, LZEXE, and FFmpeg are in pervasive use thousands of times each day around the world now; and
  • If there’s a secret to this superhero-level productivity, it appears to have less to do with comic-book mutation and radioactivity, and far more with discipline, confidence, rigor, and many years of practice.

Mass media make it easy, especially in the United States, to believe that only “clashes of the Titans” matter. That is, the mindset is that progress with computers has to do with million-dollar budgets, celebrity announcements, and courtroom jousting. That’s a dangerously narrow view, dangerous because it neglects the creativity and insight of sufficiently dedicated individuals. While Fabrice Bellard seems unlikely ever to hire a publicist or otherwise elevate his profile in the public eye, he shapes our use of computers more indelibly than corporate executives and industry analysts.

How do you use FFmpeg or QEMU or his other productions?  Tell me about it in the comments.  Even more important: What great program will you write next?  What obstacles to superproductivity do you face?

See also:


  1. Alan Rocker says:

    Are you sure that “Fabrice Bellard” isn’t a pseudonym for Nicolas Bourbaki? :-)*

  2. It looks like he’s really a great man. This is such an informative post. Thanks for sharing this one.

  3. Thank you for posting an article like this. I am glad to see this article.

  4. you forgot to mention he wrote an IBM PC emulator that runs entirely in javascript inside a browser..

  5. you’ve missed this one:  

  6. Pierre-Alex says:

    Bellard is mainly a man with a extremely strong maths skill…

  7. When reading about achievers like this, the greatest question in my mind is always, how did the person have time to work on these things? 
    Bellard must have had some way to pay the rent and get other necessities while doing these things – I don’t think it could have been done if he had to spend 8 hours per day working at some unrelated job, and more hours going back and forth and so on, like most people. 
    Not everyone who has time will accomplish anything of value, but anyone who has the ability must also have time, otherwise the talent is wasted. 
    So we should admire the talent, but also acknowledge the role of luck, or early advantages, or whatever it is that enables the material situation to give the person the opportunity to work on his/her project.

  8. Fabrice rocks. The js emulator blew my mind; and I’d already been amazed by his other vast achievements. Rock on, Fabrice.

  9. “Super productive” does not do him enough justice.

  10. This is a perfect example of the good seed falling on the good soil. He has liberty to work yet does not squander it. He put in his 10,00 hours and we are all the beneficiaries.

  11. Not just super productive. Also a really nice guy who will not consider that it’s OK to be impolite just because he’s very smart.

  12. @steve – “So we should admire the talent, but also acknowledge the role of luck, or early advantages, or whatever it is that enables the material situation to give the person the opportunity to work on his/her project.” I couldn’t agree more. I have to admit to a lot of jealousy when I hear about people my age (I’m 1 yr older than Bellard) who had access to such technology as children.  
    As a kid, I heard about Atari game consoles, but we couldn’t even afford that. I didn’t touch a personal computer until I was taking an English course while on active duty in the military. I didn’t have access to a computer for hacking or programing until 1998. Yes, I probably could have gotten one before then, but I didn’t have enough information to know that I might want more information, yet along full-time access to such technology. Of course, by then I had a ‘career’, bills, and adult expectations – i.e. not a lot of time to play and learn. 
    Expertise research shows it takes regular practice (~ 4 productive hours a day) for 10+ years to become an expert. At this point in my life, I’m lucky if I can get in 1 productive hour a day. Short of abdicating many existing responsibilities, that’s not going to change anytime soon. 
    So yes, we absolutely should admire the talent – and the focus, discipline, and everything else that Bellard invested in becoming the “super-productive programmer” that he is! But we should also acknowledge the role of luck, early advantages, and whatever opportunities individual have to work on such projects. And we should also do what we can to help give _all_ youth comparable access to emerging technologies, or else we risk widening the existing technological class divide.

  13. These are no superpowers. Programming a dozen useful things might make me think that the programmer has superpowers.

  14. I use QEMU to build & test customized OpenWrt kernels for my partners abroad and I and my girlfriend use ffmpeg to split audio / video tracks of movies and music clips as we edit them for our younger relatives’ karaoke enjoyment 🙂

  15. IMO, the best thing on that list is ffmpeg. I’m guessing YouTube would not exist if it wasn’t for ffmpeg.

  16. Using qemu (Android’s builtin simulator) and ffmpeg (without even knowing it probably) on a daily basis. 
    Not to forget using Fabrice’s http://numcalc.com/

  17. It’s truly amazing. I think he’s really among the very best programmers.  
    And it seems like he can keep his passion long-lived. That’s indeed special! 
    Thanks for sharing the post.

  18. I am REALLY stunned at what Fabrice achieved and had make available to us – I personally like qemu the most; but every project is masterpiece already. Fabrice seems Carl Gauss reborn as programmer. What a genius! Thank you Fabrice to open source your great work and whole world benefits!

  19. I worked for some time with and on ffmpeg. I always liked its code and architecture. Once you get it, there are very few surprises there. Sweet consistency. ffmpeg still influences my style a lot, I guess the biggest obstacle I’m facing towards superproductivity is confidence.

  20. weethomas says:

    Hmm, sure, there’s sometimes those advantages. But, for me and my friends, it comes down to lifestyle. We prioritize our passion above almost anything else. You work full-time on your “normal” stuff, what pays the bills, and you also work full-time on your passion. We tend to average 5 hours of sleep per sleep cycle. I didn’t say night because some nights don’t involve sleep. A lot of time others use during the day is spent on entertainment. Most of my entertainment is my passion. I think it has to start young. You need to develop a body that’s refreshed with 4 hours of sleep, sees 6 as an absolute luxury and have something so enjoyable that most tv and other entertainment pales beside it.

  21. Why would it not exists? Aren’t there other alternatives that are good enough?

  22. Terry A Davis says:

    I went to Mensa, once. I showed them art I had done. Older woman said flatly, “You’re a genius.” End of conversation, LOL.

  23. Fuck you with your politeness, that’s an american way to see things.

  24. franpascasio says:

    I use ffmpeg every day in Spain. Thanks for your software Fabrice, merci!

  25. A productive programmer has to keep his passion burning during a long long time. And not to mention focus.

    Thanks for sharing a great story of Fabrice Bellard.

  26. Rumor has it he is working on a top secret project to end hacking as we know it.

    If this is not true, I hope it comes true. #theendofhackingasweknowit

  27. Peadar Ó'Colmáin says:

    Hi I’d like to contact Fabrice Bellard directly. I have been working on a program using ffmpeg and it seems that I have come to a dead end. I am writing a live chatroom in Ireland to help the Irish language and hopefully, other languages around the world too. I am using Visual C++. I can send video and voice from one computer to another using holepunching and H264 compression. I can send video in both directions but If I try to send voice in both directions the technology itself just stops. By this I mean that the waveOutOpen will no longer call its callback function If I am listening on a incoming socket for anything.I have created a small program to illustrate the issue and will send it to Fabrice or to anyone who is interested. Could anyone tell me if I am on the correct site or how I can get an email address for Fabrice or what approach I could take please? Thank you in advance for any help received. – Peadar

  28. Great man to look up to !!!

Speak Your Mind