Reading the list of Bellard's contributions, what strikes me is not the raw ability (although certainly there is that too!) but "damn, he knows how to pick 'em!"
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.
My guess would be the hueristic is "I want to do simple thing, why is it so hard?" (Modern computing has an overabundance of "DX tarpits".)
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...
The actual calculus is that you spent 30 minutes on something that should have taken 30 seconds, but then you're done with it. The "proper" solution is to spend months or years fixing the workflow for complete strangers for free, even though you personally will never get that time back. Yeah, it moves the world forward, but it's not always the best choice on a personal level.
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.
Ah, agreed, this is how it is with almost all personal projects even outside of software. Am experiencing this in music too, almost none of them go anywhere. Got to do them because you enjoy them
As an extension to your last point, here in the US people love complaining about politics (on both sides) but very few people (including me!) take the time to come up with solutions and go to town halls, or write to senators apart from the automated message that makes you feel like you did a thing, or even run for office.
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.
A big hidden in plain site facet of this, is few are willing to put forth the work within the existing system.
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.
I don’t know, it wasn’t until the pandemic and a layoff that I had time to actually sit and think.
There’s a reason that most of the voters (and protesters in my area) are retired, and it isn’t apathy. I don’t have time to educate myself on these topics in any real depth.
And I need to educate myself because the push information is all bullshit. Digging into policing in Seattle, the official and public conversation was all culture war while the actual problems looked like simple incompetence from a system analysis perspective.
I don’t have the bandwidth to deal with this kind of fumbling on every topic, and I’m realizing that my parents didn’t live in a low-trust society like I do.
We don't disagree? But this is part of the problem of many complaints. The cost of entry into any system is non-zero. That people with more resources are involved is not at all a surprise.
Which is why I have my "twist" there that this is not necessarily bad. I'm fine letting people dream. I'm fine with people having general complaints. I have to be fine with people being wrong, as it happens whether I'm fine with it or not.
What is getting dodgy is how many people accidentally find themselves hijacked in the delay that is inherent in understanding systems to think that they can win with a culture war.
"Willing to put forth the work" is where we differ. The collapse of the fourth estate alone meant the end of the broadly informed citizen.
I've been professionally trained to monitor my own thought process and review my notes for signs of bias, and I've spent decades absorbing new domains well enough to build testable models. When I look at understanding political issues the people I rely on to help me "put forth the work" are gone, man. The effort I need to put in on one subject well enough to make decisions now is immense.
I'd wager I probably violently agree with that. The collapse of the fourth estate from people that were willing to hold government accountable to people that are chasing ratings and payouts has been an unmitigated disaster.
I think you're underestimating the skill required to do it that well. Add 1 wrong feature and suddenly your simple project working around a DX tarpits is a new tarpit.
To be fair, almost zero people praise the dx for ffmpeg. but the utility and value is so massively high, that it overcomes the famously complex dx of ffmpeg. I'm not even insulting ffmpeg, if it does a million things, then there are going to be a million knobs.
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.
I think for what it is ffmpeg has about the best interface it possibly can. At least I find myself failing to imagine a better one. Complaining about it would be similar to complaining about jq IMO.
Whereas the git cli is very clearly suboptimal. Unrelated tradeoffs aside, spend a while using an alternative DVCS such as mercurial if you doubt this.
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.
That's still make the hard part present. Things are not good on so many considerations. So selecting and being able to focus for just as much time as it will be required are the hard part.
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.
Maybe, but you could also look at it from another angle.
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.
Often this is the conundrum in research as well. What should one spend their life working on? Especially if you want to make an impact. Choosing the right problem is often harder than coming up with a relevant solution.
I don't even think such a scale works for the kind of brilliant solutions Bellard (not Bertrand) creates.
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).
> Deciding what to work on might be the most important question in life.
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
Finding the hardest solvable problems in your field is far harder.
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.
One way I like to think of it is that Fabrice creates prototypes interesting enough that other people choose to spend their entire careers maintaining them.
This is the more striking thing. An meme I often repeat is that ideas are cheap, execution is key - there's a trope of "I have a great idea for an app, I just need a developer to do all the work", exacerbated with AI doing all the work.
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.
Bad ideas are cheap. Good ideas need to account for the surrounding context as well as the target audience which I suspect you might be lumping in with execution. Good execution is also nontrivial.
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.
> Deciding what to work on might be the most important question in life.
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.
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.
It's interesting to me that most of Bellard's work is basically turning specs into C.
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.
It's worth noting that most communications specifications that involve an encoder/decoder pair communicating over a channel only specify the encoder. Standards purposely leave the decoder open to allow systems to progress as technology develops and to allow competition between implementations. This also makes a standard simpler, as a decoder is usually more complex than an encoder since it has to deal with noise and other effects introduced by the channel. Consequently, implementing a competitive standards compliant decoder involves R&D and is not a case of following a predefined path.
I've always seen Bellard as an engineer who programs rather than a pure programmer.
The format for all modern video codecs is not the kind of format where any specific piece of uncompressed input should always be encoded the same way, but more like a very restricted programming language that gives the encoder a lot of tools to compress the video, and which tools they use and how they use them are up to them.
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.
Vocabulary please.
A "codec" is software that CODes and DECodes multimedia content, while specs describe an encoded file or stream format (occasionally involving network protocols and other concerns).
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.
> after standardization there's very little room to "develop the algorithms" because nonconformant implementations would be useless.
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.
The way to criticize that comment is to point out that all the major and most important codecs that are most commonly used with ffmpeg, do not come from the ffmpeg project. H.264, H.265, libmp3lame, speex, libfdkaac, etc. all come from other projects. What ffmpeg does is provide libraries for transforming decoded data between formats and calling to and from encoders and decoders and multiplexers and bitstream formats.
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.
FFmpeg has its own native H.264, HEVC, MP3, Speex and AAC decoders. It's true that they don't have an H.264 or HEVC _encoder_ without calling out to external libraries, but they have a pretty good AAC encoder now, and TBH most use of FFmpeg is for decoding, not encoding.
There was a time when we would spend an enormous amount of time defining a spec, so that we can farm out the code. Now, we farm out the spec so that we can spend an enormous amount of time with the code.
> 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
If you actually work with ffmpeg, it's rather quite impressive how pluggable the architecture is. The codecs have huge amount of quirks and disagreements about basics (what is a "frame" in audio, subtitle, and video worlds?) and even their environment (passing frames around software and hardware coders is way different).
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.
Interesting observation, similar manner of work as Linus Torvalds. These guys implement existing ideas well, consistent and open, but are not inventors.
Bellard hasn't been involved in FFmpeg for *over 20 years* at this point, and more like 23.
His code was not great and reeked of sphagetti due to FFmpeg back then lacking any framework for code sharing between components and codecs. These days none of his code survives. Everything that became of FFmpeg is because of other developers.
Yet he's treated as the one-and-only BDFL of FFmpeg, with any other developers building upon his wise framework since time immemorial.
These days all he does is hold the copyright, which lets him, *and only him*, elect which project/leader may call itself FFmpeg. He's an unelected dictator, who already used his powers once to ostracize libav developers in favor of another dictator.
Sounds about right. Don't know about the internal politics around the original maintainer but the libav folks never seemed right to me. I was glad at the time that the distro I was using left the choice up to the user.
As far as the accusations against both rejecting patches and/or rewriting the code themselves goes I can empathize. It's not always easy to take on maintenance of code that isn't written like you want it to, even if the difference is ultimately immaterial. Sucks when this happens to a fundamental project that is used everywhere though. A good maintainer does need to have some ego but not too much it seems.
Yeah, ffmpeg is a pretty successful open source project to now give credit to just one man. I remember the times when AviDemux had a much faster / better H.264 encoder implementation than ffmpeg. Open source being open source, ffmpeg incorporated AviDemux code into it and ultimately even AviDemux pragmatically opted to use ffmpeg as its backend instead of trying to compete with it. (Best example of embracing the open source spirit).
1. I don't believe anyone in their right mind thinks that ffmpeg is still maintained and developed by a single person, and definitely not by Fabrice
2. Spaghetti code or not matters very little, especially in the beginning, before you even know or understand the scope of the project and what it can become in the future. You can indeed refactor code when you understand the requirements better, and it's great that it's what the community did. I still think it was the right call to start with the spaghetti mess to not be dragged down by potential future problems that might never materialise because your project became something very different from what you originally had in mind
> 2. Spaghetti code or not matters very little, especially in the beginning, before you even know or understand the scope of the project and what it can become in the future.
Demonstrably false. Here and on Reddit, everyone will dogpile on a project to call it slop and flag it if they see code smells they don't like. Unless it was written by someone they already know and like from twitter devgooning, in which case it's amazing and everyone should use it.
It isn't, but if you're sharing something and you care about people seeing/using it, they're the most "democratic" places to do it. Twitter/YouTube can work well but they're rich get richer platforms.
Thanks, that maybe one side of the coin but it's very one-sided. The man is busy innovating and maybe has no time to carry on as he focuses on other projects. But he was there from the start and made it happen.
Most of the code in the linux kernel today is not from Linus.
You could be right. I don't really know much about FFMpeg. But going from 0 to 1 and going from 1 to 100 are different. Usually, people remember the 0 to 1 step more. Symbolic capital tends to go to the first mover. It might feel unfair, but we always remember the first challenger. It might be spaghetti code, there might be countless contributions later, but that's usually how it goes
What you describe is obvious corporate management path. You start with MVP, it gets traction, bosses like you and then others will code for the original author dismantling and rewriting original MVP. And don’t be shy - if one can pull this off he’s worth the credits. There are many who can code and not much who can manage.
> due to FFmpeg back then lacking any framework for code sharing between components and codecs
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.
Interesting counterpoint. I think this is the Peter principle in software: a lot of people are great at prototyping, but not great at the next stages of the project. Other people step in for those, but their existence is mostly ignored, since they can't easily fit inside a narrative.
One think to note though is unelected dictators do have their benefits, even if they come with obvious downsides.
Also it's worth mentioning that gstreamer is far more superior than ffmpeg, with its bindings, plugin architecture, control over stream (valves, tees, etc) and overall quality of code.
Watch how developers breathlessly defend code quality and stand tall ready to die on the hill against "AI slop". Craftsmanship, quality control, oh, it's all so, so important. No, it's absolutely vital to civilization.
Then witness the amazing reversal when some member of The Tribe pushes unbelievably unreadable slop that works. Then we see his Ring getting kissed by all the betas: "if it work, it works".
To call out The Tribe as hypocritical, you first need The Tribe to have a consensus opinion. Agentic coding in particular has been very polarizing both on HN and in the developer community at large - there is no consensus opinion.
Before AI Slop most code quality that ran in production was shit, that's the GP's point.
Anyone who thinks otherwise simply did not have to come in contact with a wide variety of code in their job.
Yet these same developers, these slop machines, are willing to die for "craftsmanship" and "code quality" when they are threatened by statistics. I don't see how you addressed my point.
This is a case of tribalism, absolutely zero rationality and people will do mental gymnastics or get nasty if you try to force it. These people have decided that they HATE AI, and LOVE gooning on famous programmers, and public stances they take will support that, logic or consistency be damned.
It's really not a great design. It's just nerdy in a HN way. A great website would list projects in approximate order of importance/notability, would use the tiniest bit of CSS to make the text readable on wide screens, and would have images for projects with a visual component. The only reason his site is appealing is because you already know who he is.
I agree it's not the most pleasant site to visit. I understand peoples desire to move the web back towards simplicity/html only with no js. But a little bit of css does not hurt and would make simple sites like this a lot more enjoyable to look at. Just my opinion..
I am on a 27" 4k screen and that website is very readable to me. Should the text all be in a single column in the center taking 10% of the screen like 99% of blogs now?
Chronological or Alphabetical sorting would make more sense than importance.
Anything above ~1000px is considered difficult to read, yes. For example, the W3C Web Content Accessibility Guidelines require that the site at least provides a mechanism to set the width to 80 characters, or about 1000px at a standard font size: https://www.w3.org/TR/WCAG21/#visual-presentation
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.
I imagine they're suggesting that so someone who lands on the page and is unaware of Bellard can immediately know what he is (famously) known for instead of having to scroll through the long list of projects.
Bellard has a very interesting project that is `ts_zip`, a compression algorithm powered by LLMs. It's just an "experiment" and should never be used in production, but very smart.
The description on his website is amusing: "The ts_zip utility can compress (and hopefully decompress) text files using a Large Language Model"
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.
That is true, but I have to be honest and say that I didn’t make the connection until I saw Bellard’s project for the first time, and I said: “ah! That actually makes A LOT of sense”
There is a field of competitive compression algorithms, where time and computation are not factors. People have made compressors that take hours (days?) to compress the test corpus.
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 have wondered if I sequentially ask people who is the smartest living person they know, and ask that person next, would it lead me toward the same small group of geniuses. If I were doing that with the best living coder I might well start with Carmack. So next I'd have to go to Bellard, and hope that his answer isn't Carmack.
There's a story along these lines about all the scientists / physicists involved in the Manhattan Project, ending with the answer being John von Neumann.
If they are so clever it's weird how they end up with butterfly keyboard, walled garden software, glassy iOS themes, and fight against EU initiatives such as replacable batteries.
Apple is a super late stage company, why would a clever person join them just to work under some middle manager.
First time I see his picture, and it’s a bit like someone’s revealed the identity of Satoshi Nakamoto when it’s clear they are going out of their way to protect their privacy and stay out of the limelight.
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.
Right, but the analogy is very clearly about someone trying to hide / protect their identity, which doesn’t apply in this case.
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.
Mozart doesn’t feel right. The code isn’t beautiful and elegant. It’s not built to last (at least for ffmpeg) or be some kind of masterpiece. He writes code to get a job done or tickle some intellectual curiosity. It’s not beautiful but that’s OK.
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
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.
I think developers sometimes get too obsessed with code quality thinking that smarter code makes them a better developer. In fact I’ve seen developers fall into the trap of mistaking their code as the product and thus spend so much time beautifying it that that fail to ever release anything.
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.
But the code quality is speed. And reach. You can not advance, unless you can read the code, you can understand the model, you can not scale beyond a certain point. The beauty of the architecture is the ability to build a spaceship compared to a train of kerosene tankers. Physically similar, but in capability radical different.
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.
> But the code quality is speed. And reach. You can not advance, unless you can read the code, you can understand the model, you can not scale beyond a certain point
Other people can do the important work of investing time to understand the model and simplify the code architecture, as proven many times over by actively maintained projects pioneered by Fabrice.
To kickstart a project, you have to show people that something they assumed impossible or hard to achieve is actually possible by dropping it in front of them.
> Its a great interview topic to filter this kind of candidate out of companies.
Fabrice Bellard ships. It makes sense to filter him out if you're a bank or an org with well-established products that prefers stability over velocity. If you're a start-up or have lots of greenfield projects requiring fast experimentation loops: you need folk who can ship quickly. Most organizations have a mix of projects and need a healthy mix of engineers, or ones who can flip modes relevant to the project.
No it’s not. Code quality is just code quality. It's a subjective measure. eg how do you define one thing is of greater "quality" than another? Is it CPU ops? Memory footprint? Code readability? And how do you measure readability? By who? What I find readable someone else might not, and visa versa.
If you’re making choices to improve development throughput then that’s fine. But so often I see developers architecting code for what they mistakenly think will improve their throughput but ultimately they spend longer on writing those abstractions than any time they have saved when using them.
Sometimes this comes down to developer vanity, sometimes it comes down to poor alignment of goals and/or communication between the product teams and development teams. And sometimes it’s just because solving problems is fun so naturally we’ll look for problems to solve. But whatever the reasons, I’ve personally seen this happen (as well as being a victim of it myself) enough times to know it is an underestimated problem.
> 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 a rather insulting assumption. I've been a tech lead for around 2 decades now and have worked on plenty of brownfield projects in that time. I know what tech debt looks like.
The problem with "tech debt" is it can mean anything from "this is ugly code that takes 5 minutes longer to read but it works well" to "this in a insecure/unstable pile of horse manure and customers will start to notice".
The latter is where time should be spent. The former is a vanity project that doesn't bring the business any value.
That's not to say that developers shouldn't ever spend time on the former examples of tech debt, just that it's of a lower priority than getting the project working.
This is one of the reasons I got away from writing commercial software and now only write code as a hobby.
To me, the code itself is the product. I want the code to look like a beautiful painting—the fact that it does something is secondary. I’ll sit there for hours working on things like const correctness, and making sure each class has the bare minimum amount of state/instance variables, making sure function arguments are named and ordered consistently, even though it has no effect on user-visible bugs or runtime performance. I’m the kind of person that paints the back of the cabinet. Even though no user will see it, I will know it is there.
Obviously this mentality is at odds with commercial software’s imperative to shit out barely working spaghetti code as fast and cheaply as possible, so I opted out.
Have you ever done research mathematics? To me, the only difference between code and math is that the code can do things, make stuff happens in the world; outside of that, mathematics has a lot more opportunities to be beautiful (not to say that there isn't beautiful code, but the beauty is not central in the way it often is in mathematics).
Yeah, a lot of businesses definitely do push things too far the other way and advocate releasing _anything_ regardless of how well it works.
I'm strongly against the "move fast and break things" mentality. But there is a happy middle ground between architecting works of art, and shipping urinals with faulty plumbing.
Although in this case it's more like using the paint in the tin to paint the tin itself. It's useless and completely missing the point of why the paint exists in the first place.
You do you, I'm sorry if I come across rude and stupid, but I am both things. But "code is the product" is what IMO caused the downfall of this entire profession. No wonder everyone is trying to get rid of us. I wouldn't want a plumber that's obsessed with the tubes itself and not whether my house has working plumbing in a reasonable time frame and within budget.
Despite the gallons of ink spilled on the subject I have not worked at a single place in my 30-year career where developers sat around perfecting masterpieces.
I have worked at a never-ending list of places where people shipped the first thing that worked, built spaghetti around it, something else got built on top, and the original thing is now critical infrastructure that takes 10x longer to fix bugs or add needed features to than it would have if we’d taken 1.5x longer to ship it in the first place. I have worked at a never-ending list of places where developers beg for time to be set aside to deal with the worst parts that sap their time, energy, or will to continue working at the job. I have worked at a never-ending list of places that eventually sets aside a few days to tackle these tasks, when the engineers estimate two or three weeks. I have worked at a never-ending list of places that then uses the failure of these momentary diversions as evidence that their engineers don’t know what they’re talking about and should shut up and ship more features.
I sure wish I knew what masterpiece factories you must have spent your career working at.
I feel like the navel-gazing-ivory-tower programmer is almost a straw man used by commenters and bloggers to make themselves sound pragmatic. Summoned only be be torn down. Never to be found on an existing software team.
I have come across the architecture astronaut before. But I feel like they’re the result of the culture of the ecosystem the language. The Java and C# programmers whose language requires you to juggle weak types with visibility keywords and null ability. They can be forgiven for not being able to implement a priority queue without a committee and a class hierarchy deeper than the Mariana Trench.
But the perfectionist that never ships anything useful and only ever tweaks interfaces and types? Never met one.
Most people are just trying to balance progress with practical concerns.
I’ve been in this profession for two decades as well. As both things.
My take on this is that we need both, because the market is cyclical. It’s just that it’s hard to perceive any of those cycles if you (a) live them (b) are not experienced enough to introspect.
I absolutely would love an obsessed plumber (and got one!) when it comes to deciding that we’re going to do PTFE tubing in our new house. An obsessed electrician in charge to overinvest into our grid, rather than a 3-month timeframe executive. Otherwise our critical infrastructure gets myopically degraded.
I also want the “working within timeframe” outcome.
And we, as an industry, swing wildly in both direction. The Cambrian explosion of shareware was the the former. We course-corrected into cathedrals of good software (I still love Windows 2000’s stability, the pinnacle of NT line), followed by the “reasonable timeframe” 4GB Electron apps, etc.
It will swing. Every complex system from logistic equation upwards will oscillate .
> The problem with "tech debt" is it can mean anything from "this is ugly code that takes 5 minutes longer to read but it works well" to "this in a insecure/unstable pile of horse manure and customers will start to notice".
>
> The latter is where time should be spent. The former is a vanity project that doesn't bring the business any value.
You may have worked with people whose meaning of "code quality" encompassed things that you found inconsequential and a waste of effort. They may have even told you that if you didn't care about those things, then you didn't care about code quality. But that's not true. It only meant you disagreed with them about what code quality is and how to recognize it.
You draw a distinction between aspects of code that tend to lead to better outcomes and aspects of code that don't matter. You say you know what tech debt looks like. When you look at a codebase, you have opinions on where time should be spent to improve it. "Code quality" is shorthand for the heuristics underlying those opinions.
Instead of accepting that other, possibly dumber people get to define what code quality is, own your own definition of it and use it when you communicate with other people.
I don't think you're being very charitable in your reading of my comments. For example:
> You may have worked with people whose meaning of "code quality" encompassed things that you found inconsequential and a waste of effort. They may have even told you that if you didn't care about those things, then you didn't care about code quality. But that's not true. It only meant you disagreed with them about what code quality is and how to recognize it.
Who's these "people" you're referring to? This is an imaginary conversation you've added.
What I actually said was that there's a balance between design and output.
I did generalize that often product people will push too far towards output and often developers will push too far between design, but like all generalizations, I know there are exceptions (eg me).
But the crux of my point is that there are tradeoffs between the two, and thus times when it makes more sense to lean towards output and times when it makes more sense to focus on design.
What you've replied with isn't even remotely the same sentiment as the comment I made.
> You draw a distinction between aspects of code that tend to lead to better outcomes and aspects of code that don't matter. You say you know what tech debt looks like. When you look at a codebase, you have opinions on where time should be spent to improve it. "Code quality" is shorthand for the heuristics underlying those opinions.
No. Code quality is just a subjective term that means nothing in reality because everyone will have different goals in mind when they think about the purpose of the code.
So the underlying heuristics require far insight into project goals, deadlines, and resources than just "code quality".
> Instead of accepting that other, possibly dumber people get to define what code quality is,
The original reason I replied (albeit I did digress quite a bit) was to demonstrate that you cannot extrapolate how smart or dumb an engineer is from their "code quality" alone. So please refrain from calling people dumb in your rebuttals.
> own your own definition of it and use it when you communicate with other people.
Thanks for saying this! I completely agree with everything you said!
There’s far, far too many people who confuse code quality for speed of development and start treating code quality as the product for customer base in the hundreds and active customers in the dozens and for most features to be basically unused.
The reality is that tech debt as a concept these days is hardly real: to be in debt means previous decisions or a previous implementation makes current work extremely hard or impossible, but, the truth is that the human factors such as knowing what to build, team collaboration and even speaking to customers matter far more and can get you “in debt” so so much faster than code alone. At least in your typical SaaS company.
If you ship code in a way that you let tech debt pile up to the point that customers notice it, you have an organisational problem, not code issues per se.
The fact that a lot of people don’t get this is really baffling to me.
Im talking about the speed of mental model building, understanding concepts, relations and organizational concepts.
Good codebases sort of read themselves. You can guess where things are, how they are sorted and how they work, by understanding and relying on the authors ideas.
Companies outside software as a product rarely care that much about what their physical goods are processed by IT, this is how you get outsourcing and offshoring of most of their computing needs, they won't care one second to filter such candidates.
.. is very, very important in the context of milliseconds, hours, days, weeks, months and years. And decades.
Today, you might say that John/Fabrice’ code is readable/unreadable, but will that also be true in 5 years time, in a different cultural/technological era?
Obviously yes in the case of these individuals - because the ecosystem their products have created is self-sustaining at a mass (consumer/social) level.
I’ve built software which has shipped and effected the lives of millions, too. Many of us have.
But I have not built a massive ecosystem by working on the right software which was adopted by millions of developers who read my code, was inspired by it, and used it for something in their own products - thus creating sub-ecosystems upon sub-ecosystems, a big sprawling tree of economy which spreads out into the mass of humanity who use technology.
In this story we have two cases of individuals who have accomplished an extraordinary reach of software, in their own uniquely flavored ways - and this demonstrates that there are no absolute requirements to strip personality from the code - as long as its damn good code in the first place.
>filter candidates out of companies
It’s a great way to decide not to work at a company which managers do not understand the importance of architecture at various scales, milliseconds, seconds, hours, days, weeks ..
>"But the code quality is speed. And reach. You can not advance, unless you can read the code"
I am not sure about "proper" definition of spaghetti code but speaking of long functions: if it is straight code that reads like a book and has no common parts to refactor for further reuse it is actually way more understandable and debuggable then mess of 3 liners spread among 20 files and 10 microservices running under k8s.
>", you can understand the model, you can not scale beyond a certain point"
The needed scaling is being determined by business needs / projection. If you implement service for some SMB that deals with few partners and limited set of business entities in database and architecture of said service addressing Google style of scalability with corresponding overheads and costs you are definitely committing a crime in relation to your client.
>"Its a great interview topic to filter this kind of candidate out of companies." -
basically making sure that instead of pragmatic engineer who can deliver functional and serviceable product to client in reasonable time with reasonable costs you will have them pay for spaceship built by architecture astronauts
It's the opposite, better-factored code makes me, a mediocre developer, capable of making progress instead of hitting a complexity wall.
It's separate from striving for "beautiful" code, beauty within well-factored boundaries yields dimishing returns compared to just having the boundaries.
I haven't read the codebases in question but people were talking about spaghetti code, which would not be well-factored and would impede someone less talented from comprehending it or being able to change it effectively.
I guess I'm saying there are code quality concerns which do affect velocity/maintainability and then there are superficial and stylistic issues. The former aren't just about some kind of beauty standard, they're part of executing.
The comments about Ballard's code is very subjective. But if we take their comments at face value:
> which would not be well-factored and would impede someone less talented from comprehending it or being able to change it effectively.
Except the community did comprehend it and changed it effectively. Ballard hasn't maintained ffmpeg nor qemu for 20+ years.
> I guess I'm saying there are code quality concerns which do affect velocity/maintainability and then there are superficial and stylistic issues. The former aren't just about some kind of beauty standard, they're part of executing.
Which is why I'm saying we're basically arguing the same things. For a POC you get more velocity when focusing on proving that idea. I'm not saying zero effort should be spent on architecting the code. Just that you don't always know how best to organize it until you've had several revisions so developers shouldn't get too caught up trying to intellectualize the best internal layout. That can grow once the problem is better understood.
And I made this point because I felt the comparisons of one engineers POC to another engineers commercial release was unfair. They're completely different ends of the factory.
>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.
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
> I think developers sometimes get too obsessed with code quality thinking that smarter code makes them a better developer.
Not much about "smartness", but code can by far outlast many "product" sold on top of it, so it can make sense to polish them more than the ready to throw gift paper.
People will certainly buy nice gift paper wrapping cheap crap music toy of the day. But they will also value differently access to a beautiful handcrafted musical instrument. On the other hands, people who don’t even play any music won’t be able to assess any musical appliance.
I wonder if what you're noticing in Fabrice's code is a lack of _abstraction_ beyond whats obviously needed to get the job done. It's not spaghetti IMHO, I think its what code looks like when you're smart enough to just hold most of the problem in your head. I am speculating a bit here, because I am not that smart.
If I had to describe it in aesthetic terms I would maybe say brutalism?
>Mozart doesn’t feel right. The code isn’t beautiful and elegant. It’s not built to last (at least for ffmpeg) or be some kind of masterpiece.
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...
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.
> 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.
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.
Yes, ranking requires reducing to a single dimension where all interesting things are multi-dimensions. This is a lossy process, which often tells more about the one(s) doing the ranking than what's ranked.
I was thinking of sport players that have their stats laid out as a radar chart. One might be average on defense, but a world class striker. Is he better than a world class defender but average striker? And even that is a convenient and lossy approximation.
Honestly, two mythologized figures (Carmack and Bellard).
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.
Telling stories, looking for gods that don't have our limitations and telling stories about those gods is pretty much in our nature irrespective of the era.
There's no such thing as "human nature", that's just a way to justify something that can't be easily explained.
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.
I think it's the wrong lens for observing this conversation. You're looking for something that I might be attacking. I'm not doing what you think I am, that's why you can't pinpoint it.
It's a simple observation: mythologizing might diminish one's work.
Even if we assume there's some "human nature", that claim stands unchallenged.
"But you can't fight this thing that all humans do" is your line, and it was never my point to fight it. I want to explain what it does, not change it (which is outside of my control).
I am of an age with Carmack and wanted to be a game developer when i was young. I very much elevated him very high. In terms of computer graphics he is very informed and talented. But I have watched him do interviews that largely focused on other areas and I find him to be pretty average or even below average. His thoughts on BJJ and AI are quite immature and don't express any special insight.
Oh, this is human nature and you will find it impossible to avoid this framing of cult figures, because they are indeed cult figures - albeit positively perceived ones, since they appear to not just be doing it for themselves, but altruistically every wonder they produce is for their users - and thus their works have effectively and productively impacted the lives of millions of other people, at economies of scale most of us here on HN aspire to.
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.
Humanity has some 300.000 years of existing, and we can only trace back the prevalence of cult figures a few thousand years back.
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.
We only have writing and, consequently, people who's names we know a few thousand years back.
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.
The oral tradition you're probably trying to refer to is the Rigveda, which is amazing. It's like a human recorder that kept a series of vocalizations intact for thousands of years through chanting, with error correction mechanisms and all sorts of tricks to reduce drift over time.
That's our oldest attested oral tradition, 2000 years or so. Stretching to a maximum of 6000 years if we're generous.
Buddhism is like, a thousand years after that.
It's all still super young though. Like I said, humanity has 300.000 years.
Earliest petroglyphs from 50.000 years ago corroborate my point of view: they depict animals, and migrations and shit. Nothing that can attest some kind of cult towards individuals, no heroes, no holy images.
So, yeah, talking about the Buddha "seems like old stuff", but it really isn't in the timescales that matter for estabilishing what "human nature" is, we've been human way before all that jazz appeared.
I imagined him with wild, long hair; possibly tattoos, huge and heavy set. The picture destroyed my imagination - and now I want my imagination back. :(
In my personal experience, uber French nerds don't really fit the Simpsons "Comic Book Guy" appearance stereotype. Anyone else reading this, feel free to disagree.
> Today FFmpeg is the invisible engine of the internet.
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.
Very very tangential, and at the risk of down-votes, the recent trend of X-articles (or whatever they call them) is extremely irksome. When I try to view on mobile it takes 3-4 hops to get to the article, and the articles always look hyper-optimized for engagement with low-attention-span readers, sort of like LinkedIn posts.
Also there's irony in the stark contrast between this x-article and the Bellard's own website.
It's a bit sad that people who are already big VIPs in the tech industry feel the need to spend time writing such tweets, or even worse, hire a PR firm to do it. It's usual for celebrities with the same net worth from other industries, but to me it feels weird.
My jaw dropped when I read this guy wrote ffmpeg AND QEMU!!? Thats insane levels of talent and capability.
I remember looking through the source for QEMU and it appeared monstrous in its scale. Dude is a legend, no wonder Carmack is complimenting him.
Isn't that how it is supposed to work ? Stroke of genius (over and over again) to get something working given constraints of the day followed by hundreds of engineers who will improve on the foundations, basically like Wozniak ?
I think that undersells Bellard. The engineers that made NVidia’s chips made a trade: they give their achievements and potential public recognition to their employer in return for generous compensation. Bellard’s work is overwhelmingly free and open source.
I think Fabrice is actually quite noticeable. His name kept on coming up again and again in the past. He is definitely not incognito as such, even if he may not be that interest in hyping up his own name either.
Fabrice Bellard is the kind of programmer I admire, respect and aspire to emulate. Extremely humble, yet incredibly talented with a massive corpus of work. Bravo Fabrice!
In 2006, in my first job after uni in France, I wrote a toy PaaS system called CASIMIR based on qemu. It was a lot of fun, I could via a web UI launch VMs, access them via VNC, etc..
I've always had a lot of admiration for Fabrice Bellard, I always wished I was as good an engineer as he is.
Rather than potentially 1000 HN readers each spending 15 minutes on Google trying to work out what you are talking about, may I suggest that you expand that with a few plain English sentences that tell us what that means?
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.
Advanced Television Systems Committee. It's the US standards organization for terrestrial digital television. ATSC 3.0 is a new standard that's very similar to DVB-T2 (used in the UK for HDTV) at the PHY layer.
"He is almost certainly a better overall programmer than I am."
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.
Fair enough. I can see your point about engineering, but in this case I find it hard to classify the generic SaaS programmer and the guy calculating Pi to 2700 billion digits on his workstation using his own formula - which actually is the innovation here - under the same rubric, but I guess that boat has sailed a long time ago.
Odd example given the SaaS programmer might be doing actual engineering but the math calculation is not engineering by definition. Which is not to say the latter is not more impressive.
Him thinking or saying that he is a great programmer isn’t narcissistic in the grand scheme of things.
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
An opinion: there were (and are) many great unknown engineers behind proprietary corporate projects. FFmpeg and QEMU became famous because these are open-source projects, not because nothing similar was done before (it was done, but in the proprietary world).
Maybe but I think you are underestimating the achievements Fabrice has accomplished. Among others:
- Improved an algorithm to compute Pi, ran it on a *personal laptop* and broke the world record. That achievement is not even listed on his personal homepage, and it a single line of facts with Zero bragging involved https://www.bellard.org/pi/pi2700e9/
- a PC emulator in vanilla javascript, boot the Linux Kernel in a browser and get a virtual terminal also implemented from scratch
- QuickJS, embeddable, self contained (no libs) and fast JavaScript engine matching almost entirely ES2025
- NNCP, a Neural Networks driven lossless data compression system
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 :-)
Not at all. I mean, regardless of him not having a fancy web page or an Instagram, he is anyway an Internet geek celebrity we all know and respect. My point is that I believe there are many similar but noname engineers whose achievements stayed and will stay behind corporate proprietary walls.
Many people have complained about the quality of TCC code. It sometimes feel the code id one big unittest including all nasty C edge cases. I found this out when developing an even tinnier C compiler to compile TCC 0.9.26.
I'll save my admiration for the code or the results. Admiring people for skills is weird. All it takes to build a skill is time and effort and some innate characteristics.
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.
You remember when Micro Center had those portraits of computer greats hanging around the ceiling of their stores? I never noticed it until I looked up one day and saw Denis Ritchie, Vint Cerf, Grace Hopper, etc. The local Micro Center was re-done and I can't remember seeing the portraits, but this guy could be a candidate for a Micro Center banner.
I thought it was rather sad when they removed those. That removal was fairly recent, too. I'm sure plenty of people were saying "who is Dan Bricklin?" but it added some needed character to the store.
If the rest of the tweet is ai-generated, why not the picture?
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.
"He is almost certainly a better overall programmer than I am."
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?
Programmers are notoriously nitpicky, and avoid making absolute statements in most cases (wait, I'm doing it too!).
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.
I suspect being a "better programmer" cannot be said unequivocally at their level. At that percentile of achievement, it depends on the specific dimension you are talking about. It's true of the highest skill in any field.
True, it's a weird thing to say. I am in no position to rank them, I assume they are both excellent at their niches (granted bellard seems to be interested in a lot of niches) but it never hurt anybody to be humble in this position.
I think "he's almost certainly a better programmer than me" is a double form of humility: first, he's assuming that Fabrice Bellard is a better programmer than him based on the evidence and reputation, but he's also admitting that he doesn't have direct knowledge of this. Hence "almost certainly."
Well, carmack is THE game dev of 90s and 2000s fame. His 2d/3d engine work was outstanding back in the day.
Bellard did multiple breakthroughs: ffmpeg, qemu, tcc, jslinux, a state of the art FFT algorithm. I probable skipped a few.
With all due respect to carmack, a single ballard's projects would put anybody into the eternal hall of programmers fame right next to Linus, Carmack, Stallman, the Bell labs crowd and others.
i do understand how carmack did what he did logistically (time, effort, skills, compensation)...
Fabrice is just out of this world. When? How? Why? No idea.
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
Carmack might think that there are certain areas he will be better due to decades of experience. Overall programmer isn’t a bad qualifier at all, it’s actually making it sound less offhand and more honest.
You can find a formulation that doesn't sound sycophantic without including a qualifier that could be misinterpreted as backhanded, because on a bad day it will be.
(Especially if you are complimenting a person with ADHD.)
Carmack seems arrogant[1]. Which is why I take that statement as high praise.
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.
You’re not the only one who noticed. I think the unspoken idea is that Carmack thinks he’s better without ever having met him or seen his code at all. That deserves a few qualifiers.
Can anybody point me at any interviews of Fabrice? I've looked several times (including just now) and I can't find /anything/ - am I missing something obvious?
I think John Carmack is confusing the usefulness of ones contribution to what went in to making it. Both of these men have done amazing things technically and deciding which one is "better" is a fools errand.
Aside, this is why I’m skeptical of the skepticism of the “Great Man” theory of history. Most people scoffing at it have no idea the individual impact that great men and women have on the world. You can both recognize that we all stand on the shoulders of giants and that such giants do exist as individuals (more often than not). Where the giants are collaborative efforts it often takes only minimal digging before you find there’s one person at the core of that group’s effort.
I'll be honest. I discovered him with this post. And I studied in France. I am also familiar with his projects, the obfuscated C code contest and more. Just don't remember seeing his name.
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 think I've known about him for 20 years right now, ever since I discovered his code to compute pi to an ungodly amount of digits. The man sure was prolific.
I have an explicit rule not to meet or look up my heroes. Been burned way too many times.
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.
If you don't put them on a pedestal, you won't ever be crushed when they can't stay on top of it. Appreciating people and the results of people's work doesn't require worship. People don't have to be perfect or even good to make good things. Coming to terms with this and being able to take people as they are instead of how you want them to be is just another part of growing up and leaving behind childish attachments.
There are multiple people I'm fine with in software circles - Daniel being one of them, but then we have Notch and DHH who used to be cool, but some of their current hot takes are kinda oof.
Specifically way too many authors whose books I've loved have turned out to be not very good human beings. David Eddings and Neil Gaiman are pretty good examples of this.
Rowling / Harry Potter comes to mind, too, and Heinlein. You need to be able to separate the artist from the art, the programmer from the program. It’s ok to appreciate a work even if you disagree with its creator’s morals or ethics.
> It’s ok to appreciate a work even if you disagree with its creator’s morals or ethics.
In the case of Harry Potter... the perception of the work tends to follow the perception of the author. There's a bunch of issues with the original books that's widely seen as problematic today - character names seen as racist [1], enough problematic gender stereotypes to warrant half a dozen of academic papers of various quality, and last but not least antisemitism that continues even into modern works such as the shofar in Hogwarts Legacy [2].
I won't deny it, I enjoyed both the books and the movies, but it's ... not something I'd just hand over to my kids one day without having a serious talk with them beforehand. Back when I was young nobody cared too much (although I do member that at least in Germany, the goblins-jews analogy was discussed a bit), but nowadays...
> I have an explicit rule not to meet or look up my heroes. Been burned way too many times.
I mean, don't put them on a pedestal, but meeting them can still be fun. Carmack may have developed some really unfortunate rich-guy political views, but it was nice to get to go to Dallas to meet him.
I'd _love_ to meet Notch or DHH live and have a chat, both would have some pretty good stories. Hell I'd even have a beer or two with Neil Gaiman.
It's mean to convey "don't look up the personal details of artists, just enjoy the art as-is". Similarly I don't interact with the fandoms of any of the media I follow. There are a few good ones, but the majority are insufferable (to me).
That's understood in the comment which explicitly indicates that there are many programming circles and that Bellard is known in a number of them (but not all).
eg: I grew up in the Australian Kimberley region (kind of remote), spent decades in geophysical mapping, multi channel data processing, computational algebra, and other odd niches, have no real interest in SV, and am quite familiar with Bellard's work.
Oh, yes. That was a straight-face answer to "who DHH is", not anything to contradict or argue anyone's point. I never heard of the initialism in any other context either.
If you did "web stuff" in the early 2000s (like 2005-2010). You'd probably know who he is. He did Ruby on Rails, a backend web framework.
But that was also very Start-up and America focussed. So if you did web dev in some other country and didn't have colleagues who were into that culture you still might've missed the name.
TBH the biggest difference is him being more vocal.
I'm pretty sure most of the people who did "web stuff" at the time and used twitter (key point maybe) know him simply because you'd often see his tweets. Regardless of coutry (I'm from Russia, for exampl)
DHH markets himself much better. His company (basecamp), in a sense, revolves around his public persona and he's unapologetic about this. It's the same with all of his projects (e.g. Omarchy recently).
I'm not saying DHH is more widely known than Fabrice Bellard. I'm saying that it really depends on your audience. I can think of many colleagues over the years who would know who David is, but not Fabrice.
(Also, I specifically chose DHH as somebody who's highly unlikely to show up in the same discussion as Fabrice Bellard, not because I'm a fan of his. Judging from the replies, I succeeded beyond my wildest expectations!)
bellard.org is one of those domains along with righto.com that brings me joy and excitement when I see it pop up on HN. Means it’s gonna be a good day.
How on earth were those people able to create such amazing things? Will I ever be able to create something that brilliant someday? What should I even make? I have so many more tools than they did, even LLMs. Where can I learn the ideas and skills they had?
Don't use LLMs except for the most menial things. Get as much practice in creating various things. Study expert-level books on related subjects. Foster your creativity in other areas too (i.e. writing, drawing, music). Don't pass up the chance to work with veteran developers; be ready for that opportunity when it comes.
The smart path: Find good mentors (and return the favor); use LLMs not to do the work but to help you learn and exercise your brain: make them test you, using something aking to teacher/Socratic method, make mistakes and get the mentor/LLM to review in a way you figure out the answer.
The converse: Most itches will either be idiosyncratic, and not get you much attention, or lots of people will be scratching them and it's hard to come out "on top".
I scratch lots of itches, but I also know that most of them are very, very fringe. So going into scratching itches expecting fame is not going to go well for most. But scratching itches is satisfying, so for my part at least I don't care.
Best way to describe how an "ordinary" Programmer feels towards Fabrice Bellard ;-)
"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.
I'm not even sure how you'd define a great programmer. Like Justice Potter Stewart I sort of "know it when I see it". For example, I don't think anybody is going to put Rasmus Lerdorf on the Mount Rushmore of Great Programmers, but man alive is PHP really important and quite good, even at the time of release.
“I am, somehow, less interested in the weight and convolutions of Einstein’s brain than in the near certainty that people of equal talent have lived and died in cotton fields and sweatshops.”
Horrible take given Bellard's lack of general recognition and also the situation in developed-nation-2026. There are 2 billion people not dying in cotton fields or sweatshops, you're not, where's your revolutionary free code that you gave to the world?
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.
> where's your revolutionary free code that you gave to the world?
I’m no Einstein. XD
I wasn’t trying to minimize Bellard’s contributions! I’m in awe of them, and very grateful. If anything I was just noticing that Fabrice is a fantastic example of how much contribution those geniuses could make if they had access to even the bare minimum of education and stability.
For example, if they weren’t growing up in the kilns of India, where they don't actually have real opportunity to participate in “whatever the exams are called in India”:
He is also wrong. Saying "KVM runs on top of QEMU" is a very funny way of looking at it. And the claim that QEMU backs Google Cloud or AWS or Azure(???) is just plain incorrect. Not downplaying Fabrice's contributions - this tweet is just dumb.
It's an AI generated profile that posts this kind of slop weekly about popular developers and entrepreneurs. The type of feel good shit that makes the front page of social media. Not even Carmack is immune.
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.
There’s a strong narrative that it’s unreasonable to stay in the EU (“too regulated”, etc.) if you want to hack on real stuff. Yet plenty of us do — Bellard being exhibit A.
You can stay in EU if you don't need large amounts of capital needed to grow.
EU is thin in capital, not in innovation. Regulation is not an issue for high-tech. The list of smaller startups US and Chinese megacorps buy every year from EU is staggering.
I’m asking genuinely: What’s the point of linking to Carmack’s tweet? The intellectual curiosity (what HN is ostensibly about) is all in the quoted tweet (despite it being written like an LLM trained on LinkedIn posts). Carmack isn’t really adding anything of importance or interest. Linking to him feels a bit cult of personality, as if Bellard is deserving of attention because Carmack gave some vague praise with qualifiers. Why not link directly to the quoted tweet, or even the Wikipedia page?
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”.
The tweet also reads a bit off to me too. Carmack positions himself as if he is a some sort of a litmus test for being a great and successful programmer, which I don't doubt that he is but it's a bit strange. Egotripping.
This has gotten a ton of upvotes, then a ton of downvotes. Yet no one has yet answered the question. If you are downvoting, presumably you believe there is a point to linking to Carmack’s tweet. That it somehow adds more value than the alternative. So please explain why. Like I said before, I am asking genuinely.
Fabrice is kind of like a space explorer. He goes where few people went before.
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.
"He is almost certainly a better overall programmer than I am."
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.
Reading the list of Bellard's contributions, what strikes me is not the raw ability (although certainly there is that too!) but "damn, he knows how to pick 'em!"
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.
My guess would be the hueristic is "I want to do simple thing, why is it so hard?" (Modern computing has an overabundance of "DX tarpits".)
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"
The actual calculus is that you spent 30 minutes on something that should have taken 30 seconds, but then you're done with it. The "proper" solution is to spend months or years fixing the workflow for complete strangers for free, even though you personally will never get that time back. Yeah, it moves the world forward, but it's not always the best choice on a personal level.
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.
Ah, agreed, this is how it is with almost all personal projects even outside of software. Am experiencing this in music too, almost none of them go anywhere. Got to do them because you enjoy them
As an extension to your last point, here in the US people love complaining about politics (on both sides) but very few people (including me!) take the time to come up with solutions and go to town halls, or write to senators apart from the automated message that makes you feel like you did a thing, or even run for office.
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.
A big hidden in plain site facet of this, is few are willing to put forth the work within the existing system.
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.
I don’t know, it wasn’t until the pandemic and a layoff that I had time to actually sit and think.
There’s a reason that most of the voters (and protesters in my area) are retired, and it isn’t apathy. I don’t have time to educate myself on these topics in any real depth.
And I need to educate myself because the push information is all bullshit. Digging into policing in Seattle, the official and public conversation was all culture war while the actual problems looked like simple incompetence from a system analysis perspective.
I don’t have the bandwidth to deal with this kind of fumbling on every topic, and I’m realizing that my parents didn’t live in a low-trust society like I do.
We don't disagree? But this is part of the problem of many complaints. The cost of entry into any system is non-zero. That people with more resources are involved is not at all a surprise.
Which is why I have my "twist" there that this is not necessarily bad. I'm fine letting people dream. I'm fine with people having general complaints. I have to be fine with people being wrong, as it happens whether I'm fine with it or not.
What is getting dodgy is how many people accidentally find themselves hijacked in the delay that is inherent in understanding systems to think that they can win with a culture war.
"Willing to put forth the work" is where we differ. The collapse of the fourth estate alone meant the end of the broadly informed citizen.
I've been professionally trained to monitor my own thought process and review my notes for signs of bias, and I've spent decades absorbing new domains well enough to build testable models. When I look at understanding political issues the people I rely on to help me "put forth the work" are gone, man. The effort I need to put in on one subject well enough to make decisions now is immense.
I'd wager I probably violently agree with that. The collapse of the fourth estate from people that were willing to hold government accountable to people that are chasing ratings and payouts has been an unmitigated disaster.
I think you're underestimating the skill required to do it that well. Add 1 wrong feature and suddenly your simple project working around a DX tarpits is a new tarpit.
A lot of devs like building features.
To be fair, almost zero people praise the dx for ffmpeg. but the utility and value is so massively high, that it overcomes the famously complex dx of ffmpeg. I'm not even insulting ffmpeg, if it does a million things, then there are going to be a million knobs.
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.
I think for what it is ffmpeg has about the best interface it possibly can. At least I find myself failing to imagine a better one. Complaining about it would be similar to complaining about jq IMO.
Whereas the git cli is very clearly suboptimal. Unrelated tradeoffs aside, spend a while using an alternative DVCS such as mercurial if you doubt this.
> "DX tarpits"
Google shows no results for this term so i'm guessing its your own short hand for something hard?
Potentially a play on https://en.wikipedia.org/wiki/Turing_tarpit
(DX is developer experience, tarpit is used idiomatically to mean “slow/difficult thing”)
Ah, thank you.
DX is developer experience (analogous to UX for user experience).
Tarpit is often used as an analogy for anything that suddenly slows you down.
>"DX tarpits"
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.
That's still make the hard part present. Things are not good on so many considerations. So selecting and being able to focus for just as much time as it will be required are the hard part.
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.
Maybe, but you could also look at it from another angle.
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.
Often this is the conundrum in research as well. What should one spend their life working on? Especially if you want to make an impact. Choosing the right problem is often harder than coming up with a relevant solution.
These are your 10x programmers.
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 even think such a scale works for the kind of brilliant solutions Bellard (not Bertrand) creates.
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).
> Deciding what to work on might be the most important question in life.
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
Finding the hardest solvable problems in your field is far harder.
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.
One way I like to think of it is that Fabrice creates prototypes interesting enough that other people choose to spend their entire careers maintaining them.
This is the more striking thing. An meme I often repeat is that ideas are cheap, execution is key - there's a trope of "I have a great idea for an app, I just need a developer to do all the work", exacerbated with AI doing all the work.
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.
Bad ideas are cheap. Good ideas need to account for the surrounding context as well as the target audience which I suspect you might be lumping in with execution. Good execution is also nontrivial.
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.
He also knows what to keep proprietary and monetize.
Any examples? I guess I only know of his public/FOSS works.
This is pretty much the rule in journalism, too - timeliness and relevance are king. Man bites dog, etc.
> Deciding what to work on might be the most important question in life.
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.
>"Work on being a positive influence in the world."
Different groups have different "positives" / negatives. So unless trivial like don't eat babies who's the judge?
Customers / users are the judge.
> 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.
It's interesting to me that most of Bellard's work is basically turning specs into C.
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.
It's worth noting that most communications specifications that involve an encoder/decoder pair communicating over a channel only specify the encoder. Standards purposely leave the decoder open to allow systems to progress as technology develops and to allow competition between implementations. This also makes a standard simpler, as a decoder is usually more complex than an encoder since it has to deal with noise and other effects introduced by the channel. Consequently, implementing a competitive standards compliant decoder involves R&D and is not a case of following a predefined path.
I've always seen Bellard as an engineer who programs rather than a pure programmer.
It is exactly the opposite for MPEG, which only specifies the decoder (i.e. how frames should be decoded).
Maybe they meant encoding, the file format.
But that only specifies the decoder.
The format for all modern video codecs is not the kind of format where any specific piece of uncompressed input should always be encoded the same way, but more like a very restricted programming language that gives the encoder a lot of tools to compress the video, and which tools they use and how they use them are up to them.
> ffmpeg (codec specs)
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.
Vocabulary please. A "codec" is software that CODes and DECodes multimedia content, while specs describe an encoded file or stream format (occasionally involving network protocols and other concerns).
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.
> after standardization there's very little room to "develop the algorithms" because nonconformant implementations would be useless.
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.
There is a lot of room to do exactly the same thing more efficiently, which doesn't count as different algorithms.
Are bubble sort and quick sort the same algorithm?
But they COULD be entirely different algorithms. And frankly, even if they're only 20% different, that's still different.
An algorithm is a sequence of steps and logic. You can create many different sequences to still get the same result.
The way to criticize that comment is to point out that all the major and most important codecs that are most commonly used with ffmpeg, do not come from the ffmpeg project. H.264, H.265, libmp3lame, speex, libfdkaac, etc. all come from other projects. What ffmpeg does is provide libraries for transforming decoded data between formats and calling to and from encoders and decoders and multiplexers and bitstream formats.
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.
FFmpeg has its own native H.264, HEVC, MP3, Speex and AAC decoders. It's true that they don't have an H.264 or HEVC _encoder_ without calling out to external libraries, but they have a pretty good AAC encoder now, and TBH most use of FFmpeg is for decoding, not encoding.
There was a time when we would spend an enormous amount of time defining a spec, so that we can farm out the code. Now, we farm out the spec so that we can spend an enormous amount of time with the code.
Now we replace both with prompts.
That's actually how I was trained. The spec and the implementation (and the testing) were separate areas; sometimes, done by different people.
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.
> 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’m not so sure.
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.”
If you actually work with ffmpeg, it's rather quite impressive how pluggable the architecture is. The codecs have huge amount of quirks and disagreements about basics (what is a "frame" in audio, subtitle, and video worlds?) and even their environment (passing frames around software and hardware coders is way different).
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.
This description feels like how jQuery unified all the disparate JavaScript implementations behind a single framework.
Interesting observation, similar manner of work as Linus Torvalds. These guys implement existing ideas well, consistent and open, but are not inventors.
Git?
Maybe pi is a spec. Just not written by man.
But I was told “spec implementators” were prime for LLM replacement
I don’t think the distinction is actually that interesting as you could call any piece of software a spec
Bellard hasn't been involved in FFmpeg for *over 20 years* at this point, and more like 23. His code was not great and reeked of sphagetti due to FFmpeg back then lacking any framework for code sharing between components and codecs. These days none of his code survives. Everything that became of FFmpeg is because of other developers. Yet he's treated as the one-and-only BDFL of FFmpeg, with any other developers building upon his wise framework since time immemorial. These days all he does is hold the copyright, which lets him, *and only him*, elect which project/leader may call itself FFmpeg. He's an unelected dictator, who already used his powers once to ostracize libav developers in favor of another dictator.
We mustn’t forget the context: FFmpeg and Videolan got their start in dorm rooms, where students used them to stream TV in the dorm and share movies.
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 drank a lot of beer and I can’t remember what my code looked like. But I passed, so there’s that.
> These days all he does is hold the copyright
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.
I just found this comment from 15y ago on the ffmpeg/libav drama: https://www.reddit.com/r/linux/comments/vvdxn/comment/c57zdk...
I don't know ffmpeg but this resonates with my experience with other open source projects.
Sounds about right. Don't know about the internal politics around the original maintainer but the libav folks never seemed right to me. I was glad at the time that the distro I was using left the choice up to the user.
As far as the accusations against both rejecting patches and/or rewriting the code themselves goes I can empathize. It's not always easy to take on maintenance of code that isn't written like you want it to, even if the difference is ultimately immaterial. Sucks when this happens to a fundamental project that is used everywhere though. A good maintainer does need to have some ego but not too much it seems.
Yeah, ffmpeg is a pretty successful open source project to now give credit to just one man. I remember the times when AviDemux had a much faster / better H.264 encoder implementation than ffmpeg. Open source being open source, ffmpeg incorporated AviDemux code into it and ultimately even AviDemux pragmatically opted to use ffmpeg as its backend instead of trying to compete with it. (Best example of embracing the open source spirit).
1. I don't believe anyone in their right mind thinks that ffmpeg is still maintained and developed by a single person, and definitely not by Fabrice 2. Spaghetti code or not matters very little, especially in the beginning, before you even know or understand the scope of the project and what it can become in the future. You can indeed refactor code when you understand the requirements better, and it's great that it's what the community did. I still think it was the right call to start with the spaghetti mess to not be dragged down by potential future problems that might never materialise because your project became something very different from what you originally had in mind
> 2. Spaghetti code or not matters very little, especially in the beginning, before you even know or understand the scope of the project and what it can become in the future.
Demonstrably false. Here and on Reddit, everyone will dogpile on a project to call it slop and flag it if they see code smells they don't like. Unless it was written by someone they already know and like from twitter devgooning, in which case it's amazing and everyone should use it.
it's possible that "popular on HN and Reddit" is not a universal goal for writing code...
It isn't, but if you're sharing something and you care about people seeing/using it, they're the most "democratic" places to do it. Twitter/YouTube can work well but they're rich get richer platforms.
> devgooning
Excellent choice of phrase. Succinct and to the point.
Thanks, that maybe one side of the coin but it's very one-sided. The man is busy innovating and maybe has no time to carry on as he focuses on other projects. But he was there from the start and made it happen.
Most of the code in the linux kernel today is not from Linus.
> He's an unelected dictator
He has no real power. You can fork the project and organize an election.
You could be right. I don't really know much about FFMpeg. But going from 0 to 1 and going from 1 to 100 are different. Usually, people remember the 0 to 1 step more. Symbolic capital tends to go to the first mover. It might feel unfair, but we always remember the first challenger. It might be spaghetti code, there might be countless contributions later, but that's usually how it goes
What you describe is obvious corporate management path. You start with MVP, it gets traction, bosses like you and then others will code for the original author dismantling and rewriting original MVP. And don’t be shy - if one can pull this off he’s worth the credits. There are many who can code and not much who can manage.
> due to FFmpeg back then lacking any framework for code sharing between components and codecs
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.
Interesting counterpoint. I think this is the Peter principle in software: a lot of people are great at prototyping, but not great at the next stages of the project. Other people step in for those, but their existence is mostly ignored, since they can't easily fit inside a narrative.
One think to note though is unelected dictators do have their benefits, even if they come with obvious downsides.
You alright, mate?
Also it's worth mentioning that gstreamer is far more superior than ffmpeg, with its bindings, plugin architecture, control over stream (valves, tees, etc) and overall quality of code.
I would hazard a guess that a plurality, by a large margin, of ffmpeg invocations are something on the level of
for which you don't really need any of those things :)The psyop about "only shipping clean code" has been a big drag on projects
On the real world, if it runs and solves their problem nobody gives a fucc. Period
Props on him.
Watch how developers breathlessly defend code quality and stand tall ready to die on the hill against "AI slop". Craftsmanship, quality control, oh, it's all so, so important. No, it's absolutely vital to civilization.
Then witness the amazing reversal when some member of The Tribe pushes unbelievably unreadable slop that works. Then we see his Ring getting kissed by all the betas: "if it work, it works".
Pick a side. Quality is important or not?
To call out The Tribe as hypocritical, you first need The Tribe to have a consensus opinion. Agentic coding in particular has been very polarizing both on HN and in the developer community at large - there is no consensus opinion.
https://en.wiktionary.org/wiki/Goomba_fallacy
>some member of The Tribe >his Ring getting kissed >all the betas
Wow the quality of online discourse is really in the gutter.
Before AI Slop most code quality that ran in production was shit, that's the GP's point. Anyone who thinks otherwise simply did not have to come in contact with a wide variety of code in their job.
Yet these same developers, these slop machines, are willing to die for "craftsmanship" and "code quality" when they are threatened by statistics. I don't see how you addressed my point.
Nuance is not your specialty, clearly
This is a case of tribalism, absolutely zero rationality and people will do mental gymnastics or get nasty if you try to force it. These people have decided that they HATE AI, and LOVE gooning on famous programmers, and public stances they take will support that, logic or consistency be damned.
That's just, like, your opinion man
For those unaware, you can find Fabrice's website here: https://bellard.org/
It has a full list of his projects.
Great programmers often also have great personal website design, everything is so clear and not one bit of redundance.
It's really not a great design. It's just nerdy in a HN way. A great website would list projects in approximate order of importance/notability, would use the tiniest bit of CSS to make the text readable on wide screens, and would have images for projects with a visual component. The only reason his site is appealing is because you already know who he is.
I agree it's not the most pleasant site to visit. I understand peoples desire to move the web back towards simplicity/html only with no js. But a little bit of css does not hurt and would make simple sites like this a lot more enjoyable to look at. Just my opinion..
I am on a 27" 4k screen and that website is very readable to me. Should the text all be in a single column in the center taking 10% of the screen like 99% of blogs now?
Chronological or Alphabetical sorting would make more sense than importance.
Anything above ~1000px is considered difficult to read, yes. For example, the W3C Web Content Accessibility Guidelines require that the site at least provides a mechanism to set the width to 80 characters, or about 1000px at a standard font size: https://www.w3.org/TR/WCAG21/#visual-presentation
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.
> A great website would list projects in approximate order of importance/notability
Why?
I imagine they're suggesting that so someone who lands on the page and is unaware of Bellard can immediately know what he is (famously) known for instead of having to scroll through the long list of projects.
The website of Daniel J. Bernstein is similar: https://cr.yp.to/djb.html
Ref: https://en.wikipedia.org/wiki/Daniel_J._Bernstein
> Great programmers often also have great personal website design, everything is so clear and not one bit of redundance.
It's literally just a list of <p> tags. This is ridiculous. It's running a single sentence across the entire window.
> not one bit of redundance
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.
Bellard has a very interesting project that is `ts_zip`, a compression algorithm powered by LLMs. It's just an "experiment" and should never be used in production, but very smart.
The description on his website is amusing: "The ts_zip utility can compress (and hopefully decompress) text files using a Large Language Model"
https://bellard.org/ts_zip/
> (and hopefully decompress)
If the decompression is optional, I've got a really impressive compression algorithm in mind!
That's my favorite algorithm of all time
But that's exactly what LLMs are. :)
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.
That is true, but I have to be honest and say that I didn’t make the connection until I saw Bellard’s project for the first time, and I said: “ah! That actually makes A LOT of sense”
There is a field of competitive compression algorithms, where time and computation are not factors. People have made compressors that take hours (days?) to compress the test corpus.
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 have wondered if I sequentially ask people who is the smartest living person they know, and ask that person next, would it lead me toward the same small group of geniuses. If I were doing that with the best living coder I might well start with Carmack. So next I'd have to go to Bellard, and hope that his answer isn't Carmack.
There's a story along these lines about all the scientists / physicists involved in the Manhattan Project, ending with the answer being John von Neumann.
I can list a dozen or so co-workers from my time at Apple that I would choose in an instant.
Apple is heavy in such types, yes
If they are so clever it's weird how they end up with butterfly keyboard, walled garden software, glassy iOS themes, and fight against EU initiatives such as replacable batteries.
Apple is a super late stage company, why would a clever person join them just to work under some middle manager.
"Fabrice Bellard" by Andy Gocke and Nick Pizzolato
https://www.ipaidia.gr/wp-content/uploads/2020/12/117-2020-f...
Do you know if that's the same Nick Pizzolato who wrote True Detective?
It's not. Different spelling: Nic Pizzolatto.
It's pretty dated since he's done more stuff since!
Jesus... has that ever been submitted to HN!? It should be.
https://news.ycombinator.com/item?id=46377862
First time I see his picture, and it’s a bit like someone’s revealed the identity of Satoshi Nakamoto when it’s clear they are going out of their way to protect their privacy and stay out of the limelight.
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.
No he never hid his identity, if you looked him up, you found his picture.
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.
Parent knows. He makes an analogy, not an absolute equivalence.
Right, but the analogy is very clearly about someone trying to hide / protect their identity, which doesn’t apply in this case.
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.
> unnecessary Satoshi name drop
"Thou shalt not take the name of the Lord in vain". I apologise.
As I say, Bellard is Mozart when most of us can't even hope to be Salieri.
Mozart doesn’t feel right. The code isn’t beautiful and elegant. It’s not built to last (at least for ffmpeg) or be some kind of masterpiece. He writes code to get a job done or tickle some intellectual curiosity. It’s not beautiful but that’s OK.
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.
I think developers sometimes get too obsessed with code quality thinking that smarter code makes them a better developer. In fact I’ve seen developers fall into the trap of mistaking their code as the product and thus spend so much time beautifying it that that fail to ever release anything.
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.
But the code quality is speed. And reach. You can not advance, unless you can read the code, you can understand the model, you can not scale beyond a certain point. The beauty of the architecture is the ability to build a spaceship compared to a train of kerosene tankers. Physically similar, but in capability radical different.
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.
> But the code quality is speed. And reach. You can not advance, unless you can read the code, you can understand the model, you can not scale beyond a certain point
Other people can do the important work of investing time to understand the model and simplify the code architecture, as proven many times over by actively maintained projects pioneered by Fabrice.
To kickstart a project, you have to show people that something they assumed impossible or hard to achieve is actually possible by dropping it in front of them.
> Its a great interview topic to filter this kind of candidate out of companies.
Fabrice Bellard ships. It makes sense to filter him out if you're a bank or an org with well-established products that prefers stability over velocity. If you're a start-up or have lots of greenfield projects requiring fast experimentation loops: you need folk who can ship quickly. Most organizations have a mix of projects and need a healthy mix of engineers, or ones who can flip modes relevant to the project.
> But the code quality is speed
No it’s not. Code quality is just code quality. It's a subjective measure. eg how do you define one thing is of greater "quality" than another? Is it CPU ops? Memory footprint? Code readability? And how do you measure readability? By who? What I find readable someone else might not, and visa versa.
If you’re making choices to improve development throughput then that’s fine. But so often I see developers architecting code for what they mistakenly think will improve their throughput but ultimately they spend longer on writing those abstractions than any time they have saved when using them.
XKCD parodies this problem with their pass the salt sketch: https://xkcd.com/974/
Sometimes this comes down to developer vanity, sometimes it comes down to poor alignment of goals and/or communication between the product teams and development teams. And sometimes it’s just because solving problems is fun so naturally we’ll look for problems to solve. But whatever the reasons, I’ve personally seen this happen (as well as being a victim of it myself) enough times to know it is an underestimated problem.
> 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 a rather insulting assumption. I've been a tech lead for around 2 decades now and have worked on plenty of brownfield projects in that time. I know what tech debt looks like.
The problem with "tech debt" is it can mean anything from "this is ugly code that takes 5 minutes longer to read but it works well" to "this in a insecure/unstable pile of horse manure and customers will start to notice".
The latter is where time should be spent. The former is a vanity project that doesn't bring the business any value.
That's not to say that developers shouldn't ever spend time on the former examples of tech debt, just that it's of a lower priority than getting the project working.
This is one of the reasons I got away from writing commercial software and now only write code as a hobby.
To me, the code itself is the product. I want the code to look like a beautiful painting—the fact that it does something is secondary. I’ll sit there for hours working on things like const correctness, and making sure each class has the bare minimum amount of state/instance variables, making sure function arguments are named and ordered consistently, even though it has no effect on user-visible bugs or runtime performance. I’m the kind of person that paints the back of the cabinet. Even though no user will see it, I will know it is there.
Obviously this mentality is at odds with commercial software’s imperative to shit out barely working spaghetti code as fast and cheaply as possible, so I opted out.
“Paints the back of the cabinet” is a great analogy. LLM-driven production is so far away from this mindset.
Have you ever done research mathematics? To me, the only difference between code and math is that the code can do things, make stuff happens in the world; outside of that, mathematics has a lot more opportunities to be beautiful (not to say that there isn't beautiful code, but the beauty is not central in the way it often is in mathematics).
Yeah, a lot of businesses definitely do push things too far the other way and advocate releasing _anything_ regardless of how well it works.
I'm strongly against the "move fast and break things" mentality. But there is a happy middle ground between architecting works of art, and shipping urinals with faulty plumbing.
Although in this case it's more like using the paint in the tin to paint the tin itself. It's useless and completely missing the point of why the paint exists in the first place.
You do you, I'm sorry if I come across rude and stupid, but I am both things. But "code is the product" is what IMO caused the downfall of this entire profession. No wonder everyone is trying to get rid of us. I wouldn't want a plumber that's obsessed with the tubes itself and not whether my house has working plumbing in a reasonable time frame and within budget.
Despite the gallons of ink spilled on the subject I have not worked at a single place in my 30-year career where developers sat around perfecting masterpieces.
I have worked at a never-ending list of places where people shipped the first thing that worked, built spaghetti around it, something else got built on top, and the original thing is now critical infrastructure that takes 10x longer to fix bugs or add needed features to than it would have if we’d taken 1.5x longer to ship it in the first place. I have worked at a never-ending list of places where developers beg for time to be set aside to deal with the worst parts that sap their time, energy, or will to continue working at the job. I have worked at a never-ending list of places that eventually sets aside a few days to tackle these tasks, when the engineers estimate two or three weeks. I have worked at a never-ending list of places that then uses the failure of these momentary diversions as evidence that their engineers don’t know what they’re talking about and should shut up and ship more features.
I sure wish I knew what masterpiece factories you must have spent your career working at.
I feel like the navel-gazing-ivory-tower programmer is almost a straw man used by commenters and bloggers to make themselves sound pragmatic. Summoned only be be torn down. Never to be found on an existing software team.
I have come across the architecture astronaut before. But I feel like they’re the result of the culture of the ecosystem the language. The Java and C# programmers whose language requires you to juggle weak types with visibility keywords and null ability. They can be forgiven for not being able to implement a priority queue without a committee and a class hierarchy deeper than the Mariana Trench.
But the perfectionist that never ships anything useful and only ever tweaks interfaces and types? Never met one.
Most people are just trying to balance progress with practical concerns.
I’ve been in this profession for two decades as well. As both things.
My take on this is that we need both, because the market is cyclical. It’s just that it’s hard to perceive any of those cycles if you (a) live them (b) are not experienced enough to introspect.
I absolutely would love an obsessed plumber (and got one!) when it comes to deciding that we’re going to do PTFE tubing in our new house. An obsessed electrician in charge to overinvest into our grid, rather than a 3-month timeframe executive. Otherwise our critical infrastructure gets myopically degraded.
I also want the “working within timeframe” outcome.
And we, as an industry, swing wildly in both direction. The Cambrian explosion of shareware was the the former. We course-corrected into cathedrals of good software (I still love Windows 2000’s stability, the pinnacle of NT line), followed by the “reasonable timeframe” 4GB Electron apps, etc.
It will swing. Every complex system from logistic equation upwards will oscillate .
> The problem with "tech debt" is it can mean anything from "this is ugly code that takes 5 minutes longer to read but it works well" to "this in a insecure/unstable pile of horse manure and customers will start to notice". > > The latter is where time should be spent. The former is a vanity project that doesn't bring the business any value.
You may have worked with people whose meaning of "code quality" encompassed things that you found inconsequential and a waste of effort. They may have even told you that if you didn't care about those things, then you didn't care about code quality. But that's not true. It only meant you disagreed with them about what code quality is and how to recognize it.
You draw a distinction between aspects of code that tend to lead to better outcomes and aspects of code that don't matter. You say you know what tech debt looks like. When you look at a codebase, you have opinions on where time should be spent to improve it. "Code quality" is shorthand for the heuristics underlying those opinions.
Instead of accepting that other, possibly dumber people get to define what code quality is, own your own definition of it and use it when you communicate with other people.
I don't think you're being very charitable in your reading of my comments. For example:
> You may have worked with people whose meaning of "code quality" encompassed things that you found inconsequential and a waste of effort. They may have even told you that if you didn't care about those things, then you didn't care about code quality. But that's not true. It only meant you disagreed with them about what code quality is and how to recognize it.
Who's these "people" you're referring to? This is an imaginary conversation you've added.
What I actually said was that there's a balance between design and output.
I did generalize that often product people will push too far towards output and often developers will push too far between design, but like all generalizations, I know there are exceptions (eg me).
But the crux of my point is that there are tradeoffs between the two, and thus times when it makes more sense to lean towards output and times when it makes more sense to focus on design.
What you've replied with isn't even remotely the same sentiment as the comment I made.
> You draw a distinction between aspects of code that tend to lead to better outcomes and aspects of code that don't matter. You say you know what tech debt looks like. When you look at a codebase, you have opinions on where time should be spent to improve it. "Code quality" is shorthand for the heuristics underlying those opinions.
No. Code quality is just a subjective term that means nothing in reality because everyone will have different goals in mind when they think about the purpose of the code.
So the underlying heuristics require far insight into project goals, deadlines, and resources than just "code quality".
> Instead of accepting that other, possibly dumber people get to define what code quality is,
The original reason I replied (albeit I did digress quite a bit) was to demonstrate that you cannot extrapolate how smart or dumb an engineer is from their "code quality" alone. So please refrain from calling people dumb in your rebuttals.
> own your own definition of it and use it when you communicate with other people.
That's literally what I've done.
---
This comment better summarizes my point: https://news.ycombinator.com/item?id=48555191
Thanks for saying this! I completely agree with everything you said!
There’s far, far too many people who confuse code quality for speed of development and start treating code quality as the product for customer base in the hundreds and active customers in the dozens and for most features to be basically unused.
The reality is that tech debt as a concept these days is hardly real: to be in debt means previous decisions or a previous implementation makes current work extremely hard or impossible, but, the truth is that the human factors such as knowing what to build, team collaboration and even speaking to customers matter far more and can get you “in debt” so so much faster than code alone. At least in your typical SaaS company.
If you ship code in a way that you let tech debt pile up to the point that customers notice it, you have an organisational problem, not code issues per se.
The fact that a lot of people don’t get this is really baffling to me.
Im talking about the speed of mental model building, understanding concepts, relations and organizational concepts.
Good codebases sort of read themselves. You can guess where things are, how they are sorted and how they work, by understanding and relying on the authors ideas.
Companies outside software as a product rarely care that much about what their physical goods are processed by IT, this is how you get outsourcing and offshoring of most of their computing needs, they won't care one second to filter such candidates.
“You can read the code”
.. is very, very important in the context of milliseconds, hours, days, weeks, months and years. And decades.
Today, you might say that John/Fabrice’ code is readable/unreadable, but will that also be true in 5 years time, in a different cultural/technological era?
Obviously yes in the case of these individuals - because the ecosystem their products have created is self-sustaining at a mass (consumer/social) level.
I’ve built software which has shipped and effected the lives of millions, too. Many of us have.
But I have not built a massive ecosystem by working on the right software which was adopted by millions of developers who read my code, was inspired by it, and used it for something in their own products - thus creating sub-ecosystems upon sub-ecosystems, a big sprawling tree of economy which spreads out into the mass of humanity who use technology.
In this story we have two cases of individuals who have accomplished an extraordinary reach of software, in their own uniquely flavored ways - and this demonstrates that there are no absolute requirements to strip personality from the code - as long as its damn good code in the first place.
>filter candidates out of companies
It’s a great way to decide not to work at a company which managers do not understand the importance of architecture at various scales, milliseconds, seconds, hours, days, weeks ..
I agree with this for complex problems which cannot be vibe coded with AI. So definitely it's an essential skill for any human engineer.
great coders ship.
>"But the code quality is speed. And reach. You can not advance, unless you can read the code"
I am not sure about "proper" definition of spaghetti code but speaking of long functions: if it is straight code that reads like a book and has no common parts to refactor for further reuse it is actually way more understandable and debuggable then mess of 3 liners spread among 20 files and 10 microservices running under k8s.
>", you can understand the model, you can not scale beyond a certain point"
The needed scaling is being determined by business needs / projection. If you implement service for some SMB that deals with few partners and limited set of business entities in database and architecture of said service addressing Google style of scalability with corresponding overheads and costs you are definitely committing a crime in relation to your client.
>"Its a great interview topic to filter this kind of candidate out of companies." -
basically making sure that instead of pragmatic engineer who can deliver functional and serviceable product to client in reasonable time with reasonable costs you will have them pay for spaceship built by architecture astronauts
It's the opposite, better-factored code makes me, a mediocre developer, capable of making progress instead of hitting a complexity wall.
It's separate from striving for "beautiful" code, beauty within well-factored boundaries yields dimishing returns compared to just having the boundaries.
You’re ostensibly arguing the same thing I am though. Focusing on building the thing rather than designing the code to look pretty.
I haven't read the codebases in question but people were talking about spaghetti code, which would not be well-factored and would impede someone less talented from comprehending it or being able to change it effectively.
I guess I'm saying there are code quality concerns which do affect velocity/maintainability and then there are superficial and stylistic issues. The former aren't just about some kind of beauty standard, they're part of executing.
The comments about Ballard's code is very subjective. But if we take their comments at face value:
> which would not be well-factored and would impede someone less talented from comprehending it or being able to change it effectively.
Except the community did comprehend it and changed it effectively. Ballard hasn't maintained ffmpeg nor qemu for 20+ years.
> I guess I'm saying there are code quality concerns which do affect velocity/maintainability and then there are superficial and stylistic issues. The former aren't just about some kind of beauty standard, they're part of executing.
Which is why I'm saying we're basically arguing the same things. For a POC you get more velocity when focusing on proving that idea. I'm not saying zero effort should be spent on architecting the code. Just that you don't always know how best to organize it until you've had several revisions so developers shouldn't get too caught up trying to intellectualize the best internal layout. That can grow once the problem is better understood.
And I made this point because I felt the comparisons of one engineers POC to another engineers commercial release was unfair. They're completely different ends of the factory.
Ok, yeah I hear you there and agree with basically everything. I've actually made those arguments in different contexts. Thumbs up emoji.
I don't think "ostensibly" means what you think it means.
But I can't guess what you meant.
>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.
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
> I think developers sometimes get too obsessed with code quality thinking that smarter code makes them a better developer.
Not much about "smartness", but code can by far outlast many "product" sold on top of it, so it can make sense to polish them more than the ready to throw gift paper.
People will certainly buy nice gift paper wrapping cheap crap music toy of the day. But they will also value differently access to a beautiful handcrafted musical instrument. On the other hands, people who don’t even play any music won’t be able to assess any musical appliance.
I wonder if what you're noticing in Fabrice's code is a lack of _abstraction_ beyond whats obviously needed to get the job done. It's not spaghetti IMHO, I think its what code looks like when you're smart enough to just hold most of the problem in your head. I am speculating a bit here, because I am not that smart.
If I had to describe it in aesthetic terms I would maybe say brutalism?
>Mozart doesn’t feel right. The code isn’t beautiful and elegant. It’s not built to last (at least for ffmpeg) or be some kind of masterpiece.
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...
> The code isn’t beautiful and elegant
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.
> 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.
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.
Yes, ranking requires reducing to a single dimension where all interesting things are multi-dimensions. This is a lossy process, which often tells more about the one(s) doing the ranking than what's ranked.
I was thinking of sport players that have their stats laid out as a radar chart. One might be average on defense, but a world class striker. Is he better than a world class defender but average striker? And even that is a convenient and lossy approximation.
https://en.wikipedia.org/wiki/Radar_chart
Carmack and Bellard are both wizards, and trying to rank them is a fool's errand. Let's appreciate them both!
> 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.
This seems like a strangely harsh response considering the person you're responding to is just restating the assertion that Carmack made in his tweet.
Carmack it's a better engineer, but Bellard it's a better thinker and innovator. To each its own.
True. Carmack was polishing idtech for a decade, and his work is always pleasant to tinker with.
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.
"It’s not beautiful but that’s OK."
Really? I find his code elegant and concise.
Oof, HN says the darndest things.
OTOH it's fun to see people comparing programmers (better/worse) as if that actually mattered.
As the internet says, post physique bro.
Obsessed with poop?
Honestly, two mythologized figures (Carmack and Bellard).
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.
Telling stories, looking for gods that don't have our limitations and telling stories about those gods is pretty much in our nature irrespective of the era.
There's no such thing as "human nature", that's just a way to justify something that can't be easily explained.
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 don't even know what are you arguing against.
> 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.
I think it's the wrong lens for observing this conversation. You're looking for something that I might be attacking. I'm not doing what you think I am, that's why you can't pinpoint it.
It's a simple observation: mythologizing might diminish one's work.
Even if we assume there's some "human nature", that claim stands unchallenged.
"But you can't fight this thing that all humans do" is your line, and it was never my point to fight it. I want to explain what it does, not change it (which is outside of my control).
Not exactly my idea. However, it's pleasant to see two people I admire so much having respect for each other.
I am of an age with Carmack and wanted to be a game developer when i was young. I very much elevated him very high. In terms of computer graphics he is very informed and talented. But I have watched him do interviews that largely focused on other areas and I find him to be pretty average or even below average. His thoughts on BJJ and AI are quite immature and don't express any special insight.
Oh, this is human nature and you will find it impossible to avoid this framing of cult figures, because they are indeed cult figures - albeit positively perceived ones, since they appear to not just be doing it for themselves, but altruistically every wonder they produce is for their users - and thus their works have effectively and productively impacted the lives of millions of other people, at economies of scale most of us here on HN aspire to.
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.
Humanity has some 300.000 years of existing, and we can only trace back the prevalence of cult figures a few thousand years back.
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.
> a few thousand years back
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.
Idolatry is not the same as mythologizing. And I never said there is a banality to it, just that there could be. We don't have enough to know.
We only have writing and, consequently, people who's names we know a few thousand years back.
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.
The Buddha lived before writing in India. We have plenty of other stories that were passed by oral tradition before they were written down.
The oral tradition you're probably trying to refer to is the Rigveda, which is amazing. It's like a human recorder that kept a series of vocalizations intact for thousands of years through chanting, with error correction mechanisms and all sorts of tricks to reduce drift over time.
That's our oldest attested oral tradition, 2000 years or so. Stretching to a maximum of 6000 years if we're generous.
Buddhism is like, a thousand years after that.
It's all still super young though. Like I said, humanity has 300.000 years.
Earliest petroglyphs from 50.000 years ago corroborate my point of view: they depict animals, and migrations and shit. Nothing that can attest some kind of cult towards individuals, no heroes, no holy images.
So, yeah, talking about the Buddha "seems like old stuff", but it really isn't in the timescales that matter for estabilishing what "human nature" is, we've been human way before all that jazz appeared.
It's an interesting hypothesis we can never prove. We don't even know how old names are.
Yeah. They've had their time.
Sad that him can't show the same respect for "Burguer" Rebecca Ann Heineman.
err?
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 think he was referring to Carmack's note on Burger Becky when she passed away.
I imagined him with wild, long hair; possibly tattoos, huge and heavy set. The picture destroyed my imagination - and now I want my imagination back. :(
In my personal experience, uber French nerds don't really fit the Simpsons "Comic Book Guy" appearance stereotype. Anyone else reading this, feel free to disagree.
Yes, it’s difficult to practice climbing if you are obese.
If you want your "imagination" back, go back to watching Netflix and Hollywood cliches.
Except the ‘huge and heavy set’, you’re thinking of tokyospliff here.
Or some version of RMS :)
> Today FFmpeg is the invisible engine of the internet.
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.
It's how LLMs write. The tweet / article is written by an LLM and that's how it does.
Without YouTube and porn, is there really an internet?
More like without video, is there still internet..... Absolutely yes. It's a tad hyperbolic I agree
My kids strongly disagree.
Fortnight isn't a video
although, somewhat ironic to your argument, I bet the intro that fornite plays when starting the game uses ffmpeg
It would still be a game without the intro video.
For us- sure.
For most of the internet users- very likely no. Social media and video streaming IS the internet for the majority
it sounds like paradise, we should start working toward this immediately
It’s the invisible engine of what makes up the majority of today’s internet. I don’t think that’s hyperbole. Tomorrows internet might not be the same.
Ffmpeg has nothing to do with the internet other than being distributed on it
It powers the content that makes up a lot of the time a lot of internet users spend their time watching. I don’t think the pedantry serves a purpose.
Most bytes traversing the internet is video these days. Arguably, ffmpeg has processed most of that video.
Then unicode powers the internet by that same logic.
Very very tangential, and at the risk of down-votes, the recent trend of X-articles (or whatever they call them) is extremely irksome. When I try to view on mobile it takes 3-4 hops to get to the article, and the articles always look hyper-optimized for engagement with low-attention-span readers, sort of like LinkedIn posts.
Also there's irony in the stark contrast between this x-article and the Bellard's own website.
It's a bit sad that people who are already big VIPs in the tech industry feel the need to spend time writing such tweets, or even worse, hire a PR firm to do it. It's usual for celebrities with the same net worth from other industries, but to me it feels weird.
My jaw dropped when I read this guy wrote ffmpeg AND QEMU!!? Thats insane levels of talent and capability. I remember looking through the source for QEMU and it appeared monstrous in its scale. Dude is a legend, no wonder Carmack is complimenting him.
To be clear, while he is the original author of both those programs, both are now developed by other people and have been for many years.
Isn't that how it is supposed to work ? Stroke of genius (over and over again) to get something working given constraints of the day followed by hundreds of engineers who will improve on the foundations, basically like Wozniak ?
Yes, also to be clear, I am not diminishing Bellard's achievement
It's obvious that those that write the tools/infrastructure are less visible than those that create the end product.
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.
I think that undersells Bellard. The engineers that made NVidia’s chips made a trade: they give their achievements and potential public recognition to their employer in return for generous compensation. Bellard’s work is overwhelmingly free and open source.
I think Fabrice is actually quite noticeable. His name kept on coming up again and again in the past. He is definitely not incognito as such, even if he may not be that interest in hyping up his own name either.
He's basically a rock star here. (And well deservedly so.)
They can't hear you, they're on a yacht
Fabrice Bellard is the kind of programmer I admire, respect and aspire to emulate. Extremely humble, yet incredibly talented with a massive corpus of work. Bravo Fabrice!
In 2006, in my first job after uni in France, I wrote a toy PaaS system called CASIMIR based on qemu. It was a lot of fun, I could via a web UI launch VMs, access them via VNC, etc..
I've always had a lot of admiration for Fabrice Bellard, I always wished I was as good an engineer as he is.
I'm a psychofan of Fabrice Bellard. He's unbeatable. He made DVB-T using VGA connector. It's like crazy!
This post is a link to a reply to a tweet containing a screenshot of a webpage.
Unusable internet.
Little known Fabrice Bellard project. He worked with the ATSC to test the ATSC 3.0 PHY layer when he was consulting at DekTec.
Rather than potentially 1000 HN readers each spending 15 minutes on Google trying to work out what you are talking about, may I suggest that you expand that with a few plain English sentences that tell us what that means?
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.
Advanced Television Systems Committee. It's the US standards organization for terrestrial digital television. ATSC 3.0 is a new standard that's very similar to DVB-T2 (used in the UK for HDTV) at the PHY layer.
Looks like "PHY layer" means physical layer.
Bellard is a genius. Carmack's modesty about his own genius is impressive too.
It didn't strike me as modest, to compare oneself to another who is known to be great.
"Van Gogh is almost certainly a better painter than I am" -Monet
I wouldn’t call comparing yourself to Fabrice Ballard and not just saying he’s a better programmer modest.
Yeah he phrases it odd. Like with the "almost certainly" and "overall" qualifiers. Not "he is a better programmer than I would dream to be..."
"He is almost certainly a better overall programmer than I am."
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".
Had the same reaction to Carmack's wording.
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.
Fair enough. I can see your point about engineering, but in this case I find it hard to classify the generic SaaS programmer and the guy calculating Pi to 2700 billion digits on his workstation using his own formula - which actually is the innovation here - under the same rubric, but I guess that boat has sailed a long time ago.
Odd example given the SaaS programmer might be doing actual engineering but the math calculation is not engineering by definition. Which is not to say the latter is not more impressive.
Him thinking or saying that he is a great programmer isn’t narcissistic in the grand scheme of things.
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
HN audience is almost certainly overall more mature than a 16 year old nerd.
I emailed Fabrice in early 2013 when I was starting wit.ai. He replied quickly with a very nice, humble, valuable response.
An opinion: there were (and are) many great unknown engineers behind proprietary corporate projects. FFmpeg and QEMU became famous because these are open-source projects, not because nothing similar was done before (it was done, but in the proprietary world).
Maybe but I think you are underestimating the achievements Fabrice has accomplished. Among others: - Improved an algorithm to compute Pi, ran it on a *personal laptop* and broke the world record. That achievement is not even listed on his personal homepage, and it a single line of facts with Zero bragging involved https://www.bellard.org/pi/pi2700e9/ - a PC emulator in vanilla javascript, boot the Linux Kernel in a browser and get a virtual terminal also implemented from scratch - QuickJS, embeddable, self contained (no libs) and fast JavaScript engine matching almost entirely ES2025 - NNCP, a Neural Networks driven lossless data compression system
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 :-)
Not at all. I mean, regardless of him not having a fancy web page or an Instagram, he is anyway an Internet geek celebrity we all know and respect. My point is that I believe there are many similar but noname engineers whose achievements stayed and will stay behind corporate proprietary walls.
Many people have complained about the quality of TCC code. It sometimes feel the code id one big unittest including all nasty C edge cases. I found this out when developing an even tinnier C compiler to compile TCC 0.9.26.
I'll save my admiration for the code or the results. Admiring people for skills is weird. All it takes to build a skill is time and effort and some innate characteristics.
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.
You remember when Micro Center had those portraits of computer greats hanging around the ceiling of their stores? I never noticed it until I looked up one day and saw Denis Ritchie, Vint Cerf, Grace Hopper, etc. The local Micro Center was re-done and I can't remember seeing the portraits, but this guy could be a candidate for a Micro Center banner.
I thought it was rather sad when they removed those. That removal was fairly recent, too. I'm sure plenty of people were saying "who is Dan Bricklin?" but it added some needed character to the store.
The picture appears to be real, if we trust this source:
https://www.computerhistory.org/tdih/january/6/
Why wouldn't it be real?
If the rest of the tweet is ai-generated, why not the picture?
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.
I think you are right, the checked pattern on the shirt is not directionally consistent
You might have missed this gem https://news.ycombinator.com/item?id=48390688
this to be exact https://news.ycombinator.com/item?id=48400935
Better safe than sorry in today's internet.
anyone have a free photo for wikipedia?
QEMU and FFMPEG!!
Where would we be today without Fabrice?
Our sexual life would be failing dates and still images.
"He is almost certainly a better overall programmer than I am."
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?
He says that Bellard is a better overall programmer, and for some reason you take this as evidence of a lack of humility?
Programmers are notoriously nitpicky, and avoid making absolute statements in most cases (wait, I'm doing it too!).
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.
Sure, but what are the consequences of not being accurate in this case? praising someone undeservedly? Saying someone is better at something than you?
That's unacceptable! Bring out the surgically precise praise!
I suspect being a "better programmer" cannot be said unequivocally at their level. At that percentile of achievement, it depends on the specific dimension you are talking about. It's true of the highest skill in any field.
I more suspect he is not just a better programmer but has a two orders of magnitude smaller ego.
True, it's a weird thing to say. I am in no position to rank them, I assume they are both excellent at their niches (granted bellard seems to be interested in a lot of niches) but it never hurt anybody to be humble in this position.
I think "he's almost certainly a better programmer than me" is a double form of humility: first, he's assuming that Fabrice Bellard is a better programmer than him based on the evidence and reputation, but he's also admitting that he doesn't have direct knowledge of this. Hence "almost certainly."
Well, carmack is THE game dev of 90s and 2000s fame. His 2d/3d engine work was outstanding back in the day.
Bellard did multiple breakthroughs: ffmpeg, qemu, tcc, jslinux, a state of the art FFT algorithm. I probable skipped a few.
With all due respect to carmack, a single ballard's projects would put anybody into the eternal hall of programmers fame right next to Linus, Carmack, Stallman, the Bell labs crowd and others.
i do understand how carmack did what he did logistically (time, effort, skills, compensation)...
Fabrice is just out of this world. When? How? Why? No idea.
He is also a mathematician, having invented a new algorithm for calculating the digits of pi
Here is his paper on it which is a little 2 pager:
https://bellard.org/pi/pi_bin.pdf
Though I have to say the last line of the proof "...which gives (1) by reordering the terms" took me much head scratching to understand!
its because carmacl enjoys a lot of fame around his tricks. ppl get like that.
It's just a tweet, no need to over-analyze everything.
Carmack is the one over analyzing the praise he hands out.
This is truly the most non-controversy I have ever seen on here. I don't know what you drank this morning.
Depends on what we mean by programmer.
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
Carmack might think that there are certain areas he will be better due to decades of experience. Overall programmer isn’t a bad qualifier at all, it’s actually making it sound less offhand and more honest.
1) Bellard is
2) avoid qualifiers in personal compliments (unless ironic)
I don’t agree with 2). It’s ok to qualify. Sounds sycophantic to not do it.
You can find a formulation that doesn't sound sycophantic without including a qualifier that could be misinterpreted as backhanded, because on a bad day it will be.
(Especially if you are complimenting a person with ADHD.)
"You will be lucky to get this man to work for you."
Carmack seems arrogant[1]. Which is why I take that statement as high praise.
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.
You’re not the only one who noticed. I think the unspoken idea is that Carmack thinks he’s better without ever having met him or seen his code at all. That deserves a few qualifiers.
Can anybody point me at any interviews of Fabrice? I've looked several times (including just now) and I can't find /anything/ - am I missing something obvious?
He gives virtually no interviews and will not talk about himself, here's an example from 2014 where only replies to technical questions: https://www.macplus.net/depeche-82364-interview-le-createur-...
> He gives virtually no interviews and will not talk about himself
Case in point, from the linked interview:
> Could you say a couple of words about yourself?
> I would rather not talk about myself, except that I created other projects such as FFmpeg or QEMU.
Biography - https://news.ycombinator.com/item?id=46377862
My previous comment with links - https://news.ycombinator.com/item?id=46372370
dang's links - https://news.ycombinator.com/item?id=46379975
I think John Carmack is confusing the usefulness of ones contribution to what went in to making it. Both of these men have done amazing things technically and deciding which one is "better" is a fools errand.
Mildly funny that Carmack is quote tweeting a slop biography of Bellard from a pure AI slop account
Bellard seems to be at the extreme tail of the distribution of talent x grit/perseverance.
Why not post an original URL instead of the redirector?
Aside, this is why I’m skeptical of the skepticism of the “Great Man” theory of history. Most people scoffing at it have no idea the individual impact that great men and women have on the world. You can both recognize that we all stand on the shoulders of giants and that such giants do exist as individuals (more often than not). Where the giants are collaborative efforts it often takes only minimal digging before you find there’s one person at the core of that group’s effort.
> A French engineer who lives quietly in Paris has spent 30 years writing software that the entire internet now runs on without knowing his name.
... do tech people really not know who Fabrice Bellard is?
He's kind of a household name in a lot of programming circles
I'll be honest. I discovered him with this post. And I studied in France. I am also familiar with his projects, the obfuscated C code contest and more. Just don't remember seeing his name.
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.
What percentage of the population are computer programmers?
Welcome to that sub-group of the Lucky 10,000 today!
https://xkcd.com/1053/
I think I've known about him for 20 years right now, ever since I discovered his code to compute pi to an ungodly amount of digits. The man sure was prolific.
I've been around for a long time and I know of him. Most people don't bother looking up where stuff comes from.
He's a lifelong familiar name since the LZEXE days.
I have an explicit rule not to meet or look up my heroes. Been burned way too many times.
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.
If you don't put them on a pedestal, you won't ever be crushed when they can't stay on top of it. Appreciating people and the results of people's work doesn't require worship. People don't have to be perfect or even good to make good things. Coming to terms with this and being able to take people as they are instead of how you want them to be is just another part of growing up and leaving behind childish attachments.
There is a difference between "not perfect" and "Convicted and went to jail for 11 counts of physical child abuse".
I appreciated the art at the time, but can't really enjoy it anymore knowing what I know. My life would be better if I never found out.
You'd be fine with Daniel Stenberg. :)
There are multiple people I'm fine with in software circles - Daniel being one of them, but then we have Notch and DHH who used to be cool, but some of their current hot takes are kinda oof.
Specifically way too many authors whose books I've loved have turned out to be not very good human beings. David Eddings and Neil Gaiman are pretty good examples of this.
Rowling / Harry Potter comes to mind, too, and Heinlein. You need to be able to separate the artist from the art, the programmer from the program. It’s ok to appreciate a work even if you disagree with its creator’s morals or ethics.
> It’s ok to appreciate a work even if you disagree with its creator’s morals or ethics.
In the case of Harry Potter... the perception of the work tends to follow the perception of the author. There's a bunch of issues with the original books that's widely seen as problematic today - character names seen as racist [1], enough problematic gender stereotypes to warrant half a dozen of academic papers of various quality, and last but not least antisemitism that continues even into modern works such as the shofar in Hogwarts Legacy [2].
I won't deny it, I enjoyed both the books and the movies, but it's ... not something I'd just hand over to my kids one day without having a serious talk with them beforehand. Back when I was young nobody cared too much (although I do member that at least in Germany, the goblins-jews analogy was discussed a bit), but nowadays...
[1] https://7news.com.au/entertainment/harry-potter-fans-call-ou...
[2] https://theconversation.com/how-hogwarts-legacy-video-game-r...
> I have an explicit rule not to meet or look up my heroes. Been burned way too many times.
I mean, don't put them on a pedestal, but meeting them can still be fun. Carmack may have developed some really unfortunate rich-guy political views, but it was nice to get to go to Dallas to meet him.
"Meet" is metaphorical here =)
I'd _love_ to meet Notch or DHH live and have a chat, both would have some pretty good stories. Hell I'd even have a beer or two with Neil Gaiman.
It's mean to convey "don't look up the personal details of artists, just enjoy the art as-is". Similarly I don't interact with the fandoms of any of the media I follow. There are a few good ones, but the majority are insufferable (to me).
no, most people wouldn't know. you're in an echo chamber if you think he is well known.
Can we stop calling every niche an echo chamber?
It is an echo chamber if you think your niche is universal though.
“And quartz, of course”
https://xkcd.com/2501/
First time hearing the name too.
>programming circles
Well, not all tech people are part of some curcles I guess.
And you can just email him. He's just this guy, that writes stuff, and likes to help answer questions about it.
"Tech people" aren't one single homogeneous mass. His name is unlikely to show up in the same conversation as, say, DHH.
That's understood in the comment which explicitly indicates that there are many programming circles and that Bellard is known in a number of them (but not all).
eg: I grew up in the Australian Kimberley region (kind of remote), spent decades in geophysical mapping, multi channel data processing, computational algebra, and other odd niches, have no real interest in SV, and am quite familiar with Bellard's work.
No idea who DHH is though.
https://tekin.co.uk/2025/09/the-ruby-community-has-a-dhh-pro...
https://community.frame.work/t/framework-supporting-far-righ...
That validates his point - barely anyone outside the ruby community would even know about DHH if he didn't manage to trigger the eternally outraged.
Oh, yes. That was a straight-face answer to "who DHH is", not anything to contradict or argue anyone's point. I never heard of the initialism in any other context either.
I knew of Fabrice, and have admired him for many years…but who is DHH?
If you did "web stuff" in the early 2000s (like 2005-2010). You'd probably know who he is. He did Ruby on Rails, a backend web framework.
But that was also very Start-up and America focussed. So if you did web dev in some other country and didn't have colleagues who were into that culture you still might've missed the name.
Ru y was something that one guy tinkered with briefly. It was less used than Perl. Java and php was what tools were built in at my company.
TBH the biggest difference is him being more vocal.
I'm pretty sure most of the people who did "web stuff" at the time and used twitter (key point maybe) know him simply because you'd often see his tweets. Regardless of coutry (I'm from Russia, for exampl)
There was a big RoR scene in Glasgow in the mid-2000s, but there were a few of us that were resolutely Django.
I stand by that decision, for various reasons.
Not least being that "Why's Poignant Guide to Ruby" gave me the ick.
Ruby on Rails creator (among other things).
To be fair, I don't think anyone outside the Ruby community knew who DHH was until his politics went viral on twitter
https://en.wikipedia.org/wiki/David_Heinemeier_Hansson
DHH markets himself much better. His company (basecamp), in a sense, revolves around his public persona and he's unapologetic about this. It's the same with all of his projects (e.g. Omarchy recently).
Yeah, same.
DHH is even less known, don't kid yourself.
I'm not saying DHH is more widely known than Fabrice Bellard. I'm saying that it really depends on your audience. I can think of many colleagues over the years who would know who David is, but not Fabrice.
(Also, I specifically chose DHH as somebody who's highly unlikely to show up in the same discussion as Fabrice Bellard, not because I'm a fan of his. Judging from the replies, I succeeded beyond my wildest expectations!)
Oh DHH is well known. We all know about DHH.
Just that he's a douchebag, not what the letters stand for.
I hope your middle name doesn't start with H ;-)
We know it's not you.
What is a DHH? A person?
https://en.wikipedia.org/wiki/David_Heinemeier_Hansson
The HN bubble surfaces mainly those programmers who are either
- 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.
When I saw the title I first thought of Fabien Sanglard.
... I'm only now realising thanks to this comment that they are two different people >.>
bellard.org is one of those domains along with righto.com that brings me joy and excitement when I see it pop up on HN. Means it’s gonna be a good day.
Thanks!
Does Fabrice Ballard have any interviews?
Congrats, you are now unbanned: https://news.ycombinator.com/item?id=48538329
How on earth were those people able to create such amazing things? Will I ever be able to create something that brilliant someday? What should I even make? I have so many more tools than they did, even LLMs. Where can I learn the ideas and skills they had?
Don't use LLMs except for the most menial things. Get as much practice in creating various things. Study expert-level books on related subjects. Foster your creativity in other areas too (i.e. writing, drawing, music). Don't pass up the chance to work with veteran developers; be ready for that opportunity when it comes.
The smart path: Find good mentors (and return the favor); use LLMs not to do the work but to help you learn and exercise your brain: make them test you, using something aking to teacher/Socratic method, make mistakes and get the mentor/LLM to review in a way you figure out the answer.
Find an itch, then scratch it. If many people have the same itch and can use your solution, you win.
Simple as that.
The converse: Most itches will either be idiosyncratic, and not get you much attention, or lots of people will be scratching them and it's hard to come out "on top".
I scratch lots of itches, but I also know that most of them are very, very fringe. So going into scratching itches expecting fame is not going to go well for most. But scratching itches is satisfying, so for my part at least I don't care.
Find a problem and work on a solution for 20+ years.
Start fixing the unfixable and doing the undoable things ;)
Best way to describe how an "ordinary" Programmer feels towards Fabrice Bellard ;-)
"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.
Carmack replies to slop generated by slop account. What a time to be alive.
Yeah, I can't finish reading tweet. Is that even made for human consumption?
Yes, whats wrong with it?
Nothing wrong, unless you have intact brain.
RIP this class of programmer.
Ritchie, Knuth, Notch, Carmack, Dean etc… these are like the Mount Rushmore of writing code and I think that era is over.
Maybe a hot take, but I wouldn't call Carmack a great programmer as in _one of the greats_, but definitely influental and original.
I'm not even sure how you'd define a great programmer. Like Justice Potter Stewart I sort of "know it when I see it". For example, I don't think anybody is going to put Rasmus Lerdorf on the Mount Rushmore of Great Programmers, but man alive is PHP really important and quite good, even at the time of release.
“I am, somehow, less interested in the weight and convolutions of Einstein’s brain than in the near certainty that people of equal talent have lived and died in cotton fields and sweatshops.”
Horrible take given Bellard's lack of general recognition and also the situation in developed-nation-2026. There are 2 billion people not dying in cotton fields or sweatshops, you're not, where's your revolutionary free code that you gave to the world?
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.
> where's your revolutionary free code that you gave to the world?
I’m no Einstein. XD
I wasn’t trying to minimize Bellard’s contributions! I’m in awe of them, and very grateful. If anything I was just noticing that Fabrice is a fantastic example of how much contribution those geniuses could make if they had access to even the bare minimum of education and stability.
For example, if they weren’t growing up in the kilns of India, where they don't actually have real opportunity to participate in “whatever the exams are called in India”:
https://www.youtube.com/watch?v=OW3cy1kiB-0
https://youtu.be/oAOypGQdzGU?is=mLehIyREf0k9TUzk
An Einstein or Bellard would pass the exams anyways.
A schlub like me probably wouldn't, and I recognize the advantages I've had, but your quote was about Einsteins.
You're thinking of the legendary IIT (Indian Institute of Technology) JEE (Joint Entrance Exam).
https://en.wikipedia.org/wiki/Joint_Entrance_Examination
Thanks!
Ramanujan is a case in point. Some people just have it built into them, most others don't.
> He just keeps shipping.
> 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...
Pretty sure this is just AI writing style, and yes it's a huge turnoff.
He is also wrong. Saying "KVM runs on top of QEMU" is a very funny way of looking at it. And the claim that QEMU backs Google Cloud or AWS or Azure(???) is just plain incorrect. Not downplaying Fabrice's contributions - this tweet is just dumb.
> He kept going.
> He is still shipping.
https://en.wiktionary.org/wiki/schiffen#Etymology_2
:-P
It's an AI generated profile that posts this kind of slop weekly about popular developers and entrepreneurs. The type of feel good shit that makes the front page of social media. Not even Carmack is immune.
My “favourite” was “a project called JSLinux that engineers still cannot believe is real”. Such dumb hyperbole.
Obviously an LLM and sad Carmack engages with slop to normalize it.
Why bother with the long comments? Just go to http://bellard.org
remember when HN was interesting?
Pepperidge Farms remembers...
It used to have a lot less stuff about AI in it. It'd be great if we could just filter off all the posts about LLMs and LLM-related crap.
From the tweet he's replying to:
>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?
Presumably because "money".
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.
There’s a strong narrative that it’s unreasonable to stay in the EU (“too regulated”, etc.) if you want to hack on real stuff. Yet plenty of us do — Bellard being exhibit A.
You can stay in EU if you don't need large amounts of capital needed to grow.
EU is thin in capital, not in innovation. Regulation is not an issue for high-tech. The list of smaller startups US and Chinese megacorps buy every year from EU is staggering.
Salvatore Sanfilippo (a.k.a. Antirez) exhibit B
I had assumed it was slop but whether or not it is, that is kind of a revealing default isn't it?
Some assume that everything noteworthy regarding the internet is SV based.
"... that the entire Internet runs on without knowing his name"
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.
The tweet Carmack's replying to is such a gross, cloying example of LLM slop. Bellard, of course is a legend.
I’m asking genuinely: What’s the point of linking to Carmack’s tweet? The intellectual curiosity (what HN is ostensibly about) is all in the quoted tweet (despite it being written like an LLM trained on LinkedIn posts). Carmack isn’t really adding anything of importance or interest. Linking to him feels a bit cult of personality, as if Bellard is deserving of attention because Carmack gave some vague praise with qualifiers. Why not link directly to the quoted tweet, or even the Wikipedia page?
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”.
The tweet also reads a bit off to me too. Carmack positions himself as if he is a some sort of a litmus test for being a great and successful programmer, which I don't doubt that he is but it's a bit strange. Egotripping.
If most people would agree with that, is it really egotripping?
This has gotten a ton of upvotes, then a ton of downvotes. Yet no one has yet answered the question. If you are downvoting, presumably you believe there is a point to linking to Carmack’s tweet. That it somehow adds more value than the alternative. So please explain why. Like I said before, I am asking genuinely.
Fabrice is kind of like a space explorer. He goes where few people went before.
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.
Fabrice Bellard is the actual greatest programmer that has ever lived.
Carmack's "almost certainly" doesn't look good here.
The actual greatest programmer is the one who gets compensated according to their output.
What does it have to do with compensation? Creativity for creativity’s sake is also important. Not everyone spends their life chasing dollars.
No, that's a regular programmer.
#howtomakethisaboutme "Almost certainly better than I am", eff off Carmack.
"He is almost certainly a better overall programmer than I am."
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.
I am sorry John...who hinted that you were better programmer than Fabrice? And how is the AGI going? Any release date?