Always interesting when people as talented as Bellard manage to (apparently) never write a "full-on" GUI-fronted application, or more specifically, a program that sits between a user with constantly shifting goals and workflows and a "core" that can get the job done.
I would not want to dismiss or diminish by any amount the incredible work he has done. It's just interesting to me that the problems he appears to pick generally take the form of "user sets up the parameters, the program runs to completion".
The "full-on GUI-fronted application" is two different problems.
PROBLEM_A = create a minimal interface (arguments to application) and focus on making robust logic that is fit for use and purpose.
PROBLEM_B = make users who resist/object to a minimal interface happy by satisfying an unbounded set of requirements involving a changing stack of tools and OS dependencies.
The latter effort can expand to consume the time and energy of entire teams of people.
One can easily imagine (and I think they even exist) GUI front ends for ffmpeg that let a user set up a conversion "more easily" than they might find it using the command line. Bellard has chosen not to do this (lots of entirely fine reasons), but even if you use such a GUI front end the use of ffmpeg still consists of "set the parameters and let the program run". At some point after clicking "Run" (or whatever the button says), then just like after press "Return", the ffmpeg process will have completed its work, and that particular user interaction is over.
By contrast, a video and/or audio editor is really an entirely different beast, in which the user is continually adjusting any and all parameters and states of the project, expecting undo/redo histories, and so on and so forth. There is essentially no "completion state" for the application to reach.
I'm just curious that Bellard seems never to have tackled this kind of application (as is absolutely his right to do, or not do). I'm curious because it creates an entirely different class of programming problems from the "set-and-run" type of application (though they also obviously overlap in many important areas).
If you accept that there is some similarity to game development or a real piloting system for an aircraft, these complex adjustments would be split among components to be developed and tested separately and then integrated.
Bellard wrote an emacs-type text editor, with full html rendering support, Unicode, X11 GUI, ... in the early 2000s!
He has his favorite niche intellectual and technical subjects, where all his big and small projects are explorations of that space from various angles. It's a lesser concern whether the result has business value, or wider public appeal. He's more of a researcher and scientist.
It's not that cut and dried. The application I work on has some notable chunks of assembly code, lots of tricky multithreaded realtime lock free code involving threads, atomics, RCU and more ... and ... a GUI that lets the user continuously interact with it.
Oh, and we use ffmpeg for video decoding/encoding :)
> Many times there are certain chunks which will occur many times in the code of a program. Instead of taking the time to translate them all separately, QEMU stores the chunks and their native translation, next time simply executing the native translation instead of doing translation a second time. Thus, Bellard invented the first processor emulator that could achieve near native performance in certain instances.
JIT is about as old as Fabrice, or even older depending on what you consider a modern JIT.
This technique has since been dropped by QEMU, but something similar is now used by the Python JIT. These days QEMU uses Tiny Code Generator, originally forked out of TCC though by now the source is probably unrecognizable except in the function names.
This doesn't make Fabrice a lesser man, but truth is truth.
If you leave out the JIT part, binary translation dates back to at least 1966 (Honeywell).
Still one of the GOATs, agree.
For instance Marco Ternelli’s dynamic binary translator ZM/HT dates back to 1993, when it was published by Ergon Development. It translates Z80 to 68000 machine code on the fly and was a successful commercial product. I’d be interested to hear of earlier JIT binary to binary implementations, especially others which coped with self-modifying code, without which ZM/HT wouldn’t have been very useful.
Self-unpacking executables are at least a decade older, and Fabrice quite likely had Microsoft’s 1985 EXEPACK, written by Reuben Borman, on his computer when he came up with LZEXE. That was bundled with MASM and Microsoft C 3.0, their first in-house version. Both were preceded by Realia’s Spacemaker product, which Wikipedia says was written by Robert B. K. Dewar in 1982.
> Compatibility with the IBM/1400 Series has, of course, been a key factor in the success of the Series 200. The principal software components in Honeywell's "Liberator" approach are the Easytran translators, which convert Autocoder source programs written for the IBM machines into Easycoder source programs which can be assembled and run on Series 200/2000 systems, usually with little or no need for manual alterations. The Easytran routines have effectively overcome the minor differences between the instruction sets and assembly languages of the two systems in literally hundreds of installations.
from https://bitsavers.org/pdf/honeywell/datapro/70C-480-01_7404_...
https://cdnibm1401.azureedge.net/1401-Competition.html
It appears that Honeywell Liberator was a program to convert 1401 assembly to Easycoder, the Honeywell 200 assembly format.
C or asm are not obscure languages or anything, they are brutal languages where you have to trace runtime from A to Z, and manage the memory.
In 1990, it was absolutely normal to code in C. Yes you had to decode images yourself, yes you had to decode audio, yes you had to raytrace, etc.
“Wait, you had to calculate all of these by hand ?
Yes my friend everybody had to do that in my time, what else could we do ?
So we took books, and did one by one.
This was the norm, just that it became some sort of archeology.”
Every year, thousands of 19-year-olds complete these tasks in low-level schools like Epita/Epita/42 or in demoscene contests. They aren't geniuses; they are just students who were forced to read the manual and understand how the computer actually works.
Free time won’t guarantee you success, but free time + obsession will (like Terry Davis).
Really, this is not alien tech.
Before FFmpeg, people had to encode the videos. Before emulators someone had to create the state machine, etc. All these people it would be insane to ignore them.
Most of the difficult problems have shifted somewhere else from low-level.
How to simulate millions of pharmaceutical molecules in short amount of time ?
How to simulate the world in GTA VI ?
Saving 2 bytes of memory by writing asm (that… won’t be portable) is not the thing going to save you. The problems are now elsewhere.
The problem now is not about “wow you read ancient manuals and mixed sand with water and got a solid foundational brick” but it is about “ok, using these bricks, how to build a skyscraper that is 1km tall”.
No doubt that these modern programmers are as good as the archeologists who like to explore handcrafted code.
> the main thing you need is free time and obsession (and money for your free time btw).
Free time (and money for your free time) is a privilege not everyone may have had. Also, access to computers which, don't forget, has only become ubiquitous this century, and sadly not always in the form that might encourage experimentation. Without getting too much into the Nature-Nurture debate, talent and obsession sadly won't go anywhere without the proper environment to cultivate it. You don't become Bellard/Knuth/Dijkstra with just a bunch of rocks[1] and a whole host of other concerns on top.
https://x.com/VictorTaelin/status/2003839852006232478?s=20I'm aware :(
(I maintain one, one written by my Swedish friends, whom too were obsessed.)
I doubt he is ideologically opposed to them, given his work on LLM compression [1]
He codes mostly in C, which I'm sure is mostly "memorized". i.e. if you have been programming in C for a few decades, you almost certainly have a deep bench of your own code that you routinely go back to / copy and modify
In most cases, I don't see an LLM helping there. It could be "out of distribution", similar to what Karpathy said about writing his end-to-end pedagogical LLM chatbot
---
Now that I think of it, Bellard would probably train his own LLM on his own code! The rest of the world's code might not help that much :-)
He has all the knowledge to do that ... I could see that becoming a paid closed-source project, like some of his other ones [2]
[1] e.g. https://bellard.org/ts_zip/
When the coding assistant LLMs load for a while it's because they are sending Fabrice an email and he corrects it and replies synchronously.
Maybe that is a hint that he does use off-the-shelf models as a coding aid?
There may be no need to train your own, on your own code, but it's fun to think about
Or it can review for any subtle bugs too. :)
I doubt it. I follow him and look at the code he writes and it's well thought out and organized. It's the exact opposite of AI slop I see everywhere.
> He codes mostly in C, which I'm sure is mostly "memorized". i.e. if you have been programming in C for a few decades,
C I think he memorized a long time ago. It's more like he keeps the whole structure and setup of the program (the context) in his head and is able to "see it" all and operate on it. He is so good that people are insinuating he is actually "multiple people" or he uses an LLM and so on. I imagine he is quite amused reading those comments.
Real programming is 0.1% typing. Typing speed is not a limiting factor for any serious development.
I have of course found some problems like this myself. But it's such a tiny portion of coding I really question why you can't leverage LLMs to make yourself more productive
That’s kind of a weird speculation to make about creative people and their processes.
If Caravaggio had had a computer with Photoshop, if Eintein had had a computer with Matlab, would they have been more productive? Is it a question that even makes sense?
Absolutely. It's a very intriguing thought invoking the opposite of the point you're trying to make.
AI is the same, for example creating slop or virtual girlfriends.
- qemu user mode
- tcc
- ts_zip
https://news.ycombinator.com/item?id=2555654 (2011)
My favorite line from the biography:
> [As a child] Bellard was drawn to electronic devices. His first word was magnétophone (tape recorder).
Fabrice Bellard [pdf] - https://news.ycombinator.com/item?id=2555654 - May 2011 (29 comments)
I guess we can throw these in too although it was presumably a different article:
Fabrice Bellard: Portrait of a Super-Productive Programmer (2011) - https://news.ycombinator.com/item?id=32795067 - Sept 2022 (26 comments)
Fabrice Bellard: Portrait of a Super-Productive Programmer (2011) - https://news.ycombinator.com/item?id=6941135 - Dec 2013 (24 comments)
Fabrice Bellard: Portrait of a super-productive programmer (2011) - https://news.ycombinator.com/item?id=5187585 - Feb 2013 (155 comments)
Fabrice Bellard: Portrait of a superproductive programmer - https://news.ycombinator.com/item?id=2555867 - May 2011 (8 comments)
Fabrice Bellard is not a 10x engineer, he is a 100x engineer. You could attach him to a good people manager and either build a team around him or allow him to work independently on a project that he finds exciting that also aligns with company goals.
Bellard wouldn't apply and be interviewed like some Stanford grad. He would be head hunted and told he can do whatever he wants and receive a massive amount of compensation.
I'm not sure why you woulf assert he wouldn't pass the interview that seems totally outrageous.
Given his alma mater and the way the French education system works, he performed too-of-France at “solve math problems on a blackboard in front of someone” after two years of grinding math problems including extensive practice for the aforementioned “solve math problems on a blackboard in front of someone”. I think he could manage. FAANG interview is basically a CS khôlle.
Put Terry Davis (again him) as senior manager at Apple, and see the result.
From my point of view, Terry has the same level and approaches as Fabrice.
It does not guarantee at all that he is going to be more productive than 100 engineers as you directly claim.
It makes them good in what they like to do (writing obfuscated or low-level code, or implementing from scratch from specifications) as art or creativity.
I am definitely not talking about art.
When I refer to 100x engineer, I'm referring to the impact that QEMU and FFmpeg have had on the world. I would be surprised if anyone who is familiar with these two projects would disagree that they have been highly impactful.
EDIT: Fair enough, I think he would be very productive due to useful contributions, at the end I agree with you.
There is no need to wish me harm because I compared two people who had the same similar tech level and approach as art, rather than pursuing productivity as a first goal.
Again sorry if that made you upset, I just wanted to share my train of thoughts:
It was to show that "tech skills" != "tech lead skills" + "tech skills" != "productivity".
In fact, sometimes great devs can be counter-productive, as they tend to write code that they are the only one who can maintain (bus factor), or optimizations that turns out to be net negative when working as a team.
Here it is a mixed bag, Fabrice is very productive at least as a solo contributor (c.f. FFmpeg or QEMU), but Terry obviously wouldn't be.
About the comparison, it may sound strange to you, but I am talking only about the tech-side to show that tech skills do not always align with human skills (or management, or team lead), and Terry seemed to me the perfect example of something completely disconnected.
In practice it is difficult to find other examples of people who wrote their own compiler, put a huge amount of energy, just for the sake of writing a compiler.
Thinking about of the most well-known projects: Bellard's "Obfuscated Tiny C Compiler" (which then became TCC), it's not that crazy to compare it to the "HolyC compiler".
Now outside, in their private life, they are very different, and nobody doubts that.
Side-note: I actually like very much what Fabrice does.
To your credit, again the two persons are NOT at all equivalent or comparable, just that the resulting works are, but for different reasons.
What kind of point are you making?
I edited the post above to make it more clear, that they are not comparable on the human aspect, perhaps I should have insisted more, to not give the impression.
It was clumsy from my side, just that I found it difficult to find better example of someone who is well-known good programmer, wrote their own compiler too, wrote their own image decoder too, but not productive in a corporate environment.
Then he had the dissease and could not keep working.
“‘We're delighted to have you here,’ he said, ‘but a word of advice. Don't try to be clever. We're all clever here. Only try to be kind, a little kind.’ Like most university stories, this one is variously attributed and it probably never even happened but, as the Italians say, se non e vero, e ben trovato - even if it isn't true, it's well founded.” ⸺ Stephen Fry.
Maybe but what’s the point? Hell, I might guess he is terrible at jiggling and basket weaving, too. Complete failure as wrestler, even. But that is kind of neither here or there. Or is it you think staff title at faangs is some kind of pinnacle position every engineer should strive for? It actually always strikes me as a funny title. In college when they didn’t have a specific professor to teach or just going to use a grad student they put “staff” in the name box so in my mind it’s associated with a random lower rung student who couldn’t get away doing just research.
The bunch hung from a high branch, and the Fox had to jump for it. The first time he jumped he missed it by a long way. So he walked off a short distance and took a running leap at it, only to fall short once more. Again and again he tried, but in vain.
Now he sat down and looked at the grapes in disgust. "What a fool I am," he said. "Here I am wearing myself out to get a bunch of sour grapes that are not worth gaping for." And off he walked very, very scornfully.
Why would you even think that these sort of exceptional people would even be interested in mere jobs?
These are people who are solo auteurs; something in them feels a need to express themselves in full creativity without restraint in any domain they choose to focus on. That is what makes them unique because they are the few who can change Science into Art and make it seem effortless. The common man calls them "Geniuses" but it is actually a way of living, thinking and training.
Much of Society's institutions, companies, jobs etc. is designed to get the most out of the average person which does not work for creative individuals. To measure the latter using the yardstick for average is foolish in the extreme. This is why true Scientists/Researchers/Artists etc. need to be treated very differently from the "common" man.
For all the hoopla about Corporations/Companies/Groups/Teams etc. in the modern world, all our civilizational breakthroughs have emerged from a single individual or a small group of individuals.
Why would he want to do that, though?
He might as well be but why would he give a flying fuck about it? He gets to do what he wants and is financially independent for doing just that. Most can only dream about it.
Myself - I do not come within a million miles to his professional level, but I still have managed to do just that - I develop what I want, how I want and get paid for it. I am 64 and still design and develop actively for my own company and for clients. Gives me happiness, motivation to stay alert and more than enough time to still do my hobbies (mostly various outdoor activities).
>Fabrice won International Obfuscated C Code Contest three times and you need a certain mindset to create code like that—which creeps into your other work. So despite his implementation of FFmpeg was fast-working, it was not very nice to debug or refactor, especially if you’re not Fabrice