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 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?
> 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.
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.
>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...
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.