I admire Fabrice Bellard. He is almost certainly a better overall programmer
twitter.com
twitter.com
He keeps picking stuff to work on that ends up being insanely useful to a massive number of people. That seems somehow even more remarkable than the technical ability.
Deciding what to work on might be the most important question in life.
Which is funny because, everyone has that experience, right? But then approximately nobody proceeds to do something about it. (Including most people who have the skills to make a difference!)
Like, that's surprisingly mundane, and surprisingly actionable.
---
If we distil it into a philosophy, it would be something like...
- things should be good
- they are not so good
- I can learn to make them better
And more broadly: "You can just do things"
Of course, all of those are hard! And I think that speaks to the modern tarpits. No one set out to make a tarpit, it just happened and it's hard to make it perfect.
That is, going to town halls, writing senators, and running for office are all standard parts of the system people are complaining about. And they are offering the complaints, largely, as stand in complaints for whole hosts of problems that they actually think are there.
So, agreed, few are willing to ignore their general nebulous complaints and get into the system to work with it. They dream that there will be some magic shift of everything away from their complaints.
My only twist is I think this is ok, as long as people stay grounded in the rest of their life. It is perfectly fine to dream. Is mostly fine to complain. No need to dirty the water where people are getting things done, though.
Also keep in mind that most of such charitable work goes nowhere. There is a fair number of projects shaped like ffmpeg or QEMU that have never achieved the critical mass. I've written a number of small utilities that simply went unnoticed because they were never featured on HN or anywhere else. Writing FOSS is pretty similar to starting your own band. It helps if you're a good singer, but it's not enough.
A lot of devs like building features.
I think of git as the same. The git cli is not intuitive at all (unless that lightbulb goes off) but the utility is so good, that people just kind of suck it up and use it.
This is my approach which I use for SMBs (my actual clients). Never failed in decades. I am on my own since year 2000 and few times before that.
1) Always start with building single vertically scalable monolith running on dedicated server which can serve reasonable amount of transactions / date volume with acceptable performance.
2) Only start adding to infra when vertical scaling stops working (well you get some warning sign before it actually starting to hurt business) and then do it strictly on on need basis. Only rewrite / rearchitect if you see approaching google scale and can not shard simply by XXX-Canada, XXX-US etc. This will of course fail on some specialized scenarios but we are talking plain vanilla business backends for SMB.
Google shows no results for this term so i'm guessing its your own short hand for something hard?
(DX is developer experience, tarpit is used idiomatically to mean “slow/difficult thing”)
Tarpit is often used as an analogy for anything that suddenly slows you down.
Thus starting with learning wow meditation seems an important first step.
For all the rest, it's already going to be more issues on how to prioritize getting the ressources mapped where seems to fit to reach the goals.
Taking something that’s traditionally been hard and making it dramatically easier, better, and faster unlocks pent-up downstream use-cases.
I’m sure it’s some degree of both selection and execution, but so many industries have been unlocked simply because somebody showed up and figured out how to make a previously difficult thing easy.
Maybe 100x or more in Bertrand’s case.
It’s not about putting in 19 hour days or spitting out more lines of code or PRs or whatever.
It’s coming up with elegant solutions with broad impact that no one else even considered.
I don't think 100 1x programmers can create these solutions. So much gets lost having to communicate and coordinate people. And they would just accumulate cruft (and DX tarpits like other mention).
The flip side of this, is if you have the ability, you can just pick the hardest problem in your field, go solve it... rinse and repeat.
Everyone can find out what the hardest problems in their field are, it's not a secret, just a question of if you have the ability/gumption/willingness to go spend years of your life attacking a problem like that
Prove P = NP
(or not).
Is definitely one of the hardest problems in computer science, but you could waste your entire life on that problem and make no progress. Innumerable great contributions to the field have nothing to do with that problem. Booting Linux in JavaScript wasn't even on most people's maps.
But this guy is the opposite idea of that. In hindsight, sure, a library doing video is obvious. But the other ones? That's something else.
I think the trope exists because so many people with poor or mediocre ideas perceive them as good. It's analogous to the observation that most people view the languages they commonly use as the most powerful and those that could offer them new capabilities as strange.
Work on being a positive influence in the world. Help your neighbour when they are in need and fight for the rights of those less fortunate than yourself.
Different groups have different "positives" / negatives. So unless trivial like don't eat babies who's the judge?
You are. Decide for yourself what it means to be a positive influence in the world and do that. This isn’t that hard, it’s not a gotcha. If you are capable of empathy, you are capable of understanding what it means to be good for others, learn from mistakes, and do better.
Also, I provided examples:
> Help your neighbour when they are in need and fight for the rights of those less fortunate than yourself.
Seems unambiguous to me.
His most important projects are ffmpeg (codec specs), qEmu (ISA specs), QuickJS (the EcmaScript spec), tinyC (the C spec), and his telecom company (LTE specs). I guess the pi calculations and neural network stuff are exceptions.
Just to be clear, this doesn't make his work any less impressive. Highly performant codec and emulator implementations are no easy feat; it's just interesting that most of this work falls into that relatively narrow area.
I've always seen Bellard as an engineer who programs rather than a pure programmer.
What I should have written is that the "hard" part, which is generally left unspecified, is the part that removes redundancy. An MPEG encoder removes redundancy whilst its decoder adds redundancy. An FEC/communications encoder adds redundancy whilst its decoder removes redundancy.
That fact that you can (almost) freely mix and match processing between such different worlds is quite an achievement and libav (IMO) is decently well designed to allow that.
if your mental model is that somebody writes codec specs and then fabrice bellard comes in and turns the specs into C, you are dead wrong. first of all, codecs are usually reverse-engineered, there is no spec. second of all, even when a well specified document describes the codec, that spec does not describe how to efficiently encode or decode with that codec. people like fabrice bellard develop the algorithms that do that.
It may also be worth pointing out, in terms of apportioning credit fairly, that ffmpeg has not been Bellard's project since 2004. The thing we see today is no more his project than GCC or Emacs are Stallman's projects.
In a normal standard development process experimental codecs come first, then those that have proved to work well, including having good enough performance, are described in the spec; after standardization there's very little room to "develop the algorithms" because nonconformant implementations would be useless.
Reverse engineering is limited to the abnormal case of having access to some codec but not to the standard that describes it.
there is A LOT OF ROOM to develop the algorithms. it seems that you are confused about what an algorithm is, since you seemingly think that there can be only 1 algorithm that can decode a given media file.
These days, I tend to mix them all together, and I think I get good results.
I strongly suspect that a lot of folks, these days, only do the middle one.
Ain't no one willing to pay for all of that. The clear separation is something you only see remaining in academia and industries where code quality issues have legal consequences (i.e. aerospace, marine, automotive and medical), and even there, pressure is high to relax rules viewed as "arcane".
Writing good specifications, documentations, implementation code and tests each is an art form in itself
I see a lot of “Ready, Fire, Aim” behavior, hereabouts, and can’t help but imagine that it extends into our basic workflows.
It’s entirely possible to create a huge ball o’ mud, that works, but is unmaintainable, and damn near impossible to adapt to changing circumstances.
I just went through that, with my LLM. Really easy to simply say “Screw it. Let’s ship.”
Linus himself phrased it as git being about applying his filesystems knowledge to source management. You can't take that statement at its face value.
Many of Bellard's projects boil down to applied tcc but just being able to understand tcc in the first place is out of the reach of most people who call themselves "programmers". And then applying it to a novel field solving problems people didn't even know they had.
That's exactly what "inventing" is.
Carmack didn't invent logarithms. But without people like him who innovated building on someone else's innovation, and on many people's common knowledge, we'd be still running away from lions in the Savannah.
It has a full list of his projects.
Chronological or Alphabetical sorting would make more sense than importance.
You can push it if you want to maximize horizontal space utilization - the site you're on right now, for example, caps reflowing text to about 1200px - but reading is easier when you have to scan over less horizontal distance, and there's literally no reason not to set some max-width.
Why?
It's literally just a list of <p> tags. This is ridiculous. It's running a single sentence across the entire window.
What about the url on the first displayed line?
Not saying it's bad - got me thinking about this self-reference that most modern websites do with the logo on the header.
https://www.ipaidia.gr/wp-content/uploads/2020/12/117-2020-f...
My impression is the guy had always better things to do than engage with the greater internet, like thinking real hard and solving difficult problems. Much respect to his work, but even more respect to his work ethic. When you have a strong vision, you need the ivory tower style of development rather than spending your days arguing and defending your choices with internet strangers.
Satoshi shouldn't be compared, I don't hold bitcoins nor am I interested, but the name is a lore. It was stamped on the original document.
Fabrice Bellard is a real person shipping code; not an internet anonymous identity.
Perhaps it was trying to stretch it to “unknown figure”, saying this programmer is mysterious, even though it was not by choice but circumstance: fame has eluded him. (Not implying it’s desired).
But on that reading, I would still say the metaphor fails: it’s not effective at conveying this meaning and reads more like an unnecessary Satoshi name drop.
"Thou shalt not take the name of the Lord in vain". I apologise.
I think Unicorn illustrates one of the issues with his style. It wouldn’t have needed to exist of the QEMU code was architected into neat components. But then writing spaghetti code that gets the job done is why he’s so fast and effective. It’s a trade off
https://www.unicorn-engine.org/docs/beyond_qemu.html
I think there’s actually a sharp contrast with John Carmack here. Fabrice might be smarter and faster but Carmack is perhaps a better software engineer. You can really see the development of his style from Doom and Quake source code, where Quake 3 source is like a beautiful gem of a code base.
Then you have the other end of the spectrum where people are too focused on hacking stuff together that the end result is unmaintainable.
The reality is there needs to be a bit of both to be a good developer.
For example, if you’re building a proof of concept (POC), then it’s more important to prove the idea than it is to define the architecture. And the reason for that is because you don’t always understand how the final product (whether it’s commercial software or a FOSS library) is best architected until you’ve gone through a few drafts of the idea. So spaghetti code isn’t necessarily a bad thing.
But then when you know your idea works and you need to flesh it out into something more durable, you start to refactor the spaghetti into something more maintainable.
Fabrice mainly releases POCs while Carmack mainly releases finished products. So it’s unsurprising you’ll see a difference in the style of architecting in their code.
I used to be someone who focused on beautiful code for my POCs too. And used to fail to release any personal projects. Then one day I learned to embrace the chaos of POCs and realised that you can getting something built and tarting it up afterwards was better than failing to build anything at all.
I find this very scary. Somebody unable to perceive capabilities and tech-debt. If you can not perceive that- you should not be let near executive decisions or code-base evaluation. This is literally the difference between rocket-science and exploding failed projects. Everyone can pile up explosives, not everyone can go to space today.
Its a great interview topic to filter this kind of candidate out of companies.
It's separate from striving for "beautiful" code, beauty within well-factored boundaries yields dimishing returns compared to just having the boundaries.
I have tried to do this for POCs (just hacking everything together), and I always get stuck very quickly. Then until I figure out some sort of architecture for what I'm supposed to be doing I can't proceed. It's like, once I have the first step (of several) of the a POC working, I literally cannot think of how to implement the second one until the first one is somewhat well organized
If I had to describe it in aesthetic terms I would maybe say brutalism?
Pedantic much? It's not about him writing elegant code like someone would write elegant music. It's a comparison about the skill level achieved, Mozart-level vs Salieri-level (and in the sense of their Amadeus movie rivalry, not real world).
His code tackles very complex subjects, succesfully, with huge technical skill, and has been reliable and relied upon by millions...
There’s few things I find more pathetic than trying really hard to show who’s best and ranking things that have no business being ranked.
You will find humans are n-dimensional and elude these simplistic categories.
Beauty is in the eye of the beholder. What you find beautiful, I would find grotesque, and vice versa. What you think of as well-organized, I think of as spaghetti.
I think it's great that we can have such a diversity of viewpoints on beauty, but I wouldn't advise making universal proclamations on beauty standards.
Now, what is outstanding in Fabrice's work is that his curiousity projects often end up being breakthroughs.
I mean, i have like hundreds of these. Can emacs do that? I make a compiler to do that? How fast can i make this bytrcode to run?
And it is cute at best.
Really? I find his code elegant and concise.
OTOH it's fun to see people comparing programmers (better/worse) as if that actually mattered.
As the internet says, post physique bro.
They're good (like, quite good), but as soon as their names come up people start talking about some weird expectation of what they are supposed to think rather than the actual things they did.
Somehow, that mythologizing diminishes their accomplishments.
I have nothing against it. The fact that I explained a mechanism (mythologizing diminishes one's real work) offends people who like to do it, but that's outside of my control. It's not meant to offend or deny their right to do it. It is just what it is and I'm naming it. I understand it's uncomfortable, and pulling the "everyone does it" card makes things easier.
I love mythology by the way, stories, etc. Fascinating stuff.
> I love mythology by the way, stories, etc. Fascinating stuff.
Most people do. Given that it is quite prevalent across cultures and given that we are a product of our genetics and upbringing, one might even say, in our nature.
No matter how elevated they are in your mind, they’re still just people. One pants leg at a time and all.
And it is that aspiration you’re degrading with the rush to de-mythologize, as if it weren’t inevitable, under the crushing rush of time, that we in the hacker world had heroes.
For all we know, it could be a temporary fluke and we'll snap back to something else. We could be beings with no default to snap back to, ever changing, destined to dissolve the prevalence of cult figures into something else in the following eras.
In a few thousand years we could totally see this practice as some distant-past thing like making clay pots or carrying Roman dodecahedrons.
The new cultural trend could become jumping off cliffs, and someone would be arguing that it's inevitable human nature.
By the way, no rush to de-mythologize. I'm not fighting any dragon here, you do you.
I beg to differ, but okay. I don’t disagree to your allusions that there is a banality to mob idolatry, but that’s a discussion for other forums, ironically.
A cult figure before writing would have more limited reach, and be forgotten because their name wasn't written down. But they'd still have been a cult figure.
afaik Bellard never had any beef with Burger Becky. Both are legendary programmers, but somewhat different eras.
I have no idea what you're suggesting.
I had no idea.
The description on his website is amusing: "The ts_zip utility can compress (and hopefully decompress) text files using a Large Language Model"
If the decompression is optional, I've got a really impressive compression algorithm in mind!
My mental model and go to ELI5 is "imagine you compressed the whole internet into a zip-like archive and you have an extremely clever and efficient way to search it for data".
I'm old enough to remember the time when you could order wikipedia on CDs and I don't see much difference between that and downloading LLM.
They are not. The only reason one might think the solution is novel is because they never saw it before, but what they are actually receiving is an excerpt from someone elses blog post or stack overflow answer. [1]
A bit terrifying thought experiment is to accept for a moment that programming is dead and all its left prompt engineering. Fast forward 5-10-15 years and whos left to actually produce new code and ideas to feed LLMs?
[1] one thing I like to do from time to time - especially when I'm asking for something I know little about - is to copy and paste the answer back to google and look where did that answer originated from.
One time I asked a very specific linux shell command and the answer didn't sit right with me. I googled it and it pointed me to a stackoverflow question. It was the first answer with ~1000 upvotes. But it also had a comment with ~700 upvotes explaining why you never ever should do that. :)
You don’t even have to understand how modern reasoning LLMs work to be able to tell that your perception is warped and doesn’t reflect reality - there’s plenty of news to the contrary - OpenAI resolving a major Erdos problem[1], the First Proof endeavour[2], amongst others [3].
[0]: https://arxiv.org/abs/2201.11903 [1]: https://openai.com/index/model-disproves-discrete-geometry-c... [2]: https://1stproof.org/assets/docs/report.pdf [3]: https://archive.ph/2w4fi
what was particularly interesting about that experiment was the fact that you could pack quite a few images in a very small network.
A long-running kinda-joke in the field is that the upper-bound of compression is "AI-complete", where instead of compressing, say, the text data of the complete works of Shakespeare, the compressor just encodes "The Complete Works of Shakespeare", and the AI decompressor re-generates the output from that prompt.
With the advent of LLMs, Bellard just made that joke a reality.
I get what the author is saying but I really dislike this hyperbole. The Internet will be absolutely fine if FFmpeg suddenly disappears.
Companies that rely on it in the core of their product may not, but the Internet absolutely will, and the vast majority of websites and other Internet services will keep working just fine.
For most of the internet users- very likely no. Social media and video streaming IS the internet for the majority
Apple is a super late stage company, why would a clever person join them just to work under some middle manager.
One co-worker, for example, has headed up the team that convert the proprietary RAW format from various camera vendors to a standard RGB format that can then be edited/adjusted in Photos, etc. The cameras (vendors) never rest and as such he's kept quite busy.
Another coworker was the guy you turned to who could walk a stack, read registers, and then tell you that you were trying to dispose of an object on a different thread than you created it on (and the framework that handled the object had stashed important data in the creation thread that it needed for disposal—bad framework).
I turned to another coworker when a stack of transforms had my brain in a knot (early bring up of Preview to allow scaling (zoom), translation (scrolling) and rotation while trying to select text (hit-test in the transformed PDF). "The matrix you want to invert should have been created in the reverse order of the transforms that you had applied when displaying the PDF." Oh.)
And then there were the GIT experts that could somehow fix the completely fucked up state I had got the project in…
And the Smart Guy™ who, glancing at the debugger, might announce that I had exceeded the number of threads allowed per process. (I had no idea there was a limit.)
Come to think of it, maybe I'm just an idiot. :-)
I don't know a single name behind the construction of the AI tensor core in Nvidia's chips but it is effectively what runs all of AI.
Also there's irony in the stark contrast between this x-article and the Bellard's own website.
I've always had a lot of admiration for Fabrice Bellard, I always wished I was as good an engineer as he is.
I have no idea what "ATSC" means, and I've been in tech for nearly 40 years now so I have a fairly good handle on this stuff.
"Van Gogh is almost certainly a better painter than I am" -Monet
That is a work of art in and of itself. It's genius narcissism.
"almost certainly", "overall programmer", are we really going there? Are we 16?
Why even do the comparison? Fabrice is not a "programmer". He is an engineer. Programming is a medium he often works in and that medium is completely meaningless in and of itself. I would be offended if someone called me a "programmer".
I don't agree about the distinction between programming and engineering; to me it's all programming, engineering is just the word we started using to make it sound higher status.
Especially if you consider ignorant people who don’t even know how to program are writing about “the future of programming” now and a ton of people are reading them.
Same about mathematics and w/e unlucky subject is attacked by the slopmasters.
It is fair for a person who programmed his whole life to assume he is a good programmer IMO
And more https://www.bellard.org/
I have been referring to his page for decades as an example of one can have a huge respect without having a fancy web page and no bragging at all. He is a genius :-)
In fact, if you ask me, I think the tweet's picture is semi-real; I trust the computer history museum to have the original and the tweet has an AI-upscaled photo with artificial details.
this to be exact https://news.ycombinator.com/item?id=48400935
"I trust that I am not more dense than my neighbours [i.e. fellow programmers], but I was [and am] always oppressed with a sense of my own stupidity in my dealings with [the works of Fabrice Bellard]."
-- inspired by Watson's comment about Sherlock Holmes in "The Red-Headed League" from the volume, The Adventures of Sherlock Holmes.
Hedging the claim with a lot of qualifiers. What's wrong with admitting someone is a better programmer? even giving someone else the benefit of the doubt?
This is because we've been trained to be humble by the machines we work with. Computers expose a lot of our mistakes, and over time they remove any illusion that we can be quickly confident about things.
I would take the qualifiers in his post as an indication of his general disinclination towards making absolute statements, not as a lack of humility.
It’s also a nod to his own fame.
[1] This is based on Masters of Doom. And the anecdotes are probably from the 90’s. And being arrogant does not mean that being confident in one’s ability is unjustified or that they are in fact not skilled. Being arrogant and being highly skilled are completely orthogonal.
Fabrice is more clever and faster, I guess.
But John Carmack is in my mind a better software engineer. He writes elegant code that can be used and maintained for a long time. At least from Quake 2ish, but you can see signs of solid code architecture already in Doom.
Doom code will live almost as-is forever. The code Fabrice wrote for ffmpeg has been entirely replaced
Where would we be today without Fabrice?
My previous comment with links - https://news.ycombinator.com/item?id=46372370
dang's links - https://news.ycombinator.com/item?id=46379975
Getting listed on popular twitter account is I guess useful, depending on how much you care about receiving attention. But otherwise I'm kinda wary of people who give admiration to a person's skills or people who like to receive it.
https://en.wikipedia.org/wiki/Fabrice_Bellard
Surely we are all capable of understanding Bellard’s contributions and judge them on their own merits without needing some famous programmer to point directly at it and saying “this good”.
>A quiet French engineer who never moved to Silicon Valley wrote the code that quietly runs the internet.
Why do some assume you need to move to SV to make an impact in tech?
Or they just don't know tech outside of SV, which is understandable, considering the rest doesn't do nearly the same amount of self-promotion and, well, they're not from SV anyway so why should SV care?
The other day there was this article: something something nerds, which assumed (almost) everyone in tech was looking up to Jobs and Wozniak.
I think I saw my first Mac in 2006 or so and only for a brief moment - it belonged to an artist the parents of my high school friend employed. The next time it was a musician. That was really the stereotype in my corner of the world at the time and using Apple devices for programming seemed like a weird idea.
The Polytechnique and École Centrale campuses are just a few kilometers apart, and both projects began around 1997–1998.
I don’t know about you, but as a student, I was too busy drinking beer to write clean code.
I don't know ffmpeg but this resonates with my experience with other open source projects.
You mean trademark. The copyright is held by the authors of the code (or their employer, etc.), since there is no copyright assignment requirement.
This is similar to how Linus Torvalds owns the "Linux" trademark (in some jurisdictions), but the copyright mostly belongs to other contributors.
Most of the code in the linux kernel today is not from Linus.
He has no real power. You can fork the project and organize an election.
Funny, I remember this being completely different; FFmpeg bundled ffserver, which transcoded to a bunch of codecs at the same time (sharing motion search and everything) precisely to demonstrate how similar the codecs were and how much could be shared. (Of course, that could easily be spaghetti, but not spaghetti for non-code-sharing reasons.) All on the 400MHz-class machines we had at the time. Do I remember wrong? I haven't looked at these old releases in forever.
On the real world, if it runs and solves their problem nobody gives a fucc. Period
Props on him.
One think to note though is unelected dictators do have their benefits, even if they come with obvious downsides.
I'd hazard a guess that most people who run Internet things know who Fabrice Bellard is, and may indeed have spoken to him at some point.
... do tech people really not know who Fabrice Bellard is?
He's kind of a household name in a lot of programming circles
I guess that if people aren't loud on social media, people tend to ignore them.
Respect to those who posted their praise of someone else on social media. We need more of this.
I don't need to know who is building VLC, curl, ffmpeg or any of the other essentials in my life. I just appreciate their work and pitch in some money if possible.
- active in the startup/VC scene
- "indie hackers"
- chasing platonic elegance with functional languages (for which the world at large doesn't care)
- rewriting everything in Rust
Fabrice doesn't seems to firmly fit any of this.
>programming circles
Well, not all tech people are part of some curcles I guess.
I think I first noticed this either with regard to JSLinux, or possibly some software he wrote before that; don't fully remember which year. It's like some people go deliberately to more unique problems with regards to software that actually works in achieving that outcome, whatever the outcome may be.
Ritchie, Knuth, Notch, Carmack, Dean etc… these are like the Mount Rushmore of writing code and I think that era is over.
Unusable internet.
> He just wrote code.
> He was not done.
> He kept going.
> He is still shipping.
That guy talks like a scrum master, this linkedin bullshit writing style is just so bad...
Simple as that.
Over half the planet gets a chance to prove they're smart in this day and age, between gaokao in China and whatever the exams are called in India, plus the western world and the rich portions of poor countries.
There is no almost John.
One of you has kept shipping for 30 years, the other one has spent most of the last couple of years in courts for stealing from former employers or on social media promoting being toxic and "anti woke" (whatever that is).
For me Michael Abrash (Quake, xbox) is a much better developer and person.
Carmack's "almost certainly" doesn't look good here.