706 karma · joined December 4, 2025
for (i=0;i<3;++i) {
/* Do initialisation here!
niftyConfig = 1;
funkyValue = 2;
}
There's no way it's mentally just as easy for me to find that error without syntax highlighting.It may be just slightly more difficult, but then it's death by a thousand paper cuts if I'm reading code for 6-12 hours a day.
The fact that C was effectively "born old" means you can take a C89 program and compile it as C23 and it should simply work, with extremely minimal changes, if any.
That's a killer feature when you're thinking in decades. Which SQLite is.
One of the very strange things about C is that it is designed by a committee that is inherently conservative and prefers to not add new features, especially if they have any chance of breaking any compatibility. This seems necessary before Rust ever becomes an old, boring language.
But I don't see Rust ever going in such a direction. It seems fundamentally opposed to Rust's philosophy, which is to find the best solution to the problems it's trying to solve, at any cost, including breaking compatibility, at least to some degree.
For example, I also am old enough to have used DOS before Windows 3.1 came out, which was my first GUI. When Windows 95 came out, it was a clear improvement, but retained the same principles as Windows 3.1 began. Windows 98 iterated on it, and Windows 2k perfected it in my eyes.
So that when Windows XP came out, it abandoned the principles, going for a look that felt cartoonish and childish to me, but for others was perhaps casual and inviting. It was during this time that I discovered Compiz and other Linux eye candy, and although it abandoned the fundamental principles that Win 3.1 planted, it almost admitted this with pride, submitting a new set of principles altogether.
So when Windows Vista came out, clearly trying to compete in the arena of that new set of principles of beauty, I was ambivalent but mostly impressed. That's when I found out about Mac OS X, which Compiz et al. were clumsily imitating, and I fell in love with them, which I realized had perfected those principles before Microsoft and Linux even began to imitate them.
It almost seems like the same concept as the original purpose of MMA (mixed martial arts). There is a perfection particularly to a set of principles. You can be the best at boxing, or the best at Brazilian Jui-Jitsu, and it's almost comparing apples to oranges because they're so fundamentally different that they don't actually mix well (the current UFC being proof that the experiment has failed and created a monster).
It's the same reason movies exist like Home Front: it's that age old question, "who would win if ...", in this case London gangsters vs Southern American gangsters. Or Freddy vs Jason, or Alien vs Predator. I wish I could remember more, because those are some of the most interesting types of movies, with different real human cultures being pit against each other. Like David and Goliath, the top champions of two cultures facing off for the world to see.
I think MacPaint is one of the most beautifully designed GUIs ever created.
I do agree that Steve was somewhat revolutionary in this, bringing his personal quest for beauty into early GUIs through his (overly) perfectionistic command. I remember a decade or more ago being struck by just how genius it was for him to bring professional typography into personal computers, complete with kerning and everything.
But lately, over the past 5 or 10 years, it seems to me that perfection in UI is just as arbitrary and mutable as people's tastes and preferences.
It's hard to admit it to myself, but I think my love for the early Mac OS and Windows 9x UIs was mere puppy love at first sight, and now is simply nostalgia.
To me, it seems very related to the idea of how to fall in love with a person. There seems to be nothing you can measure it against. You simply either do or do not feel a connection with the person, an inexplicable infatuation. And if you do, then that love cools and settles into something more subtle but just as real over decades, until you're holding hands on your deathbeds. Yet I can't for the life of me figure out how it begins, or what its metrics are, or where its catylists come from. I suppose this is what Randall Monroe wondered all those years ago when he came up with his blog's subtitle. If only I could ask him, perhaps I would have the answers to everything.
Session Error
Rate limit exceeded: 10 per 1 minuteRemote: yes, only
Willing to relocate: n/a
Technologies: 20 years professionally in C, C#, C++, ObjC, Swift, Java, JavaScript, TypeScript, Ruby, Python, Lua, Clojure, Julia, Chicken Scheme, Go, PHP, Rust, Assembly and more!
Resume: c̶l̶a̶s̶s̶i̶f̶i̶e̶d̶
Email: contact@lowkpro.com
Recompense: No salary or benefits; contractor only; $950/hour
LLMs: Will not use AI or help build AI, on ethical and philosophical grounds
Catalog of Copyright Entries, New Series. Part 1, Group 2: Pamphlets, Leaflets, Contributions to Newspapers or Periodicals, Etc. Maps 1929: Vol 26 No 1-12
int random() {
return 4; // chosen by dice roll
}
Technically correct. But not really.Compilers can do whatever they want when they see UB, and accessing an unassigned and unassiganble (file-local) variable is UB, therefore the compiler can just decide that *foo is in fact always 42, or never 42, or sometimes 42, and all would be just as valid options for the compiler.
(I know I'm just restating the parent comment, but I had to think it through several times before understanding it myself, even after reading that.)
Knowledge sharing with next generations is one of those very tricky things.
For one thing, how would I know where to find this? What book? What teacher? There are so many books, must I read all of them? What if my coworkers awaren't aware of it, how can they share it with me?
Also, an old saying goes, if you're good at something, never do it for free. This isn't exactly a trade secret, but how many people blog about every advanced technique and trick they know? I blogged about how to create real C function pointers from Lua closures, as a way to advertise for my product, but that could very well have been kept a trade secret (and probably should have, as I got 0 sales from that blog post still). Why would anyone want to share this "tiger style" knowledge with newer generations with no personal benefit? Aren't they incentivized to use it secretly, or maybe write it in a book, or blog about it for advertising?
IIrc, Matz designed Ruby as a pet passion project, and its design was reactionary against excessiveness found in other languages, hence its minimalism in arguably excessive syntax and notation. Otoh, Tegcraf designed Lua out of pure necessity, adding only the features needed to satisfy its clients' needs.
In my opinion, necessity always leads to the better product than desire, hence C is still unbeat, having been formed under similar circumstances. Lua's C API is copied by nearly every other embeddable scripting language, including (I think) mruby. Yet they were the first to come up with it, a testament to their creativity under pressure.
Ruby (and mruby) takes the Smalltalk approach, and asks, what if everything was an object and every function call is a method call? Lua takes a less extreme approach, and merely asks, what if every data structure was built on a hashmap?
Other than that, Lua takes a very minimal approach, having break/goto but not continue, if/elseif but not switch, metamethods but not inheritance. It gets to 90% of the functionality of JavaScript with 10% of the spec and 1% of the code. You can read the entire Lua manual in one Saturday. You can read its grammar in under five minutes.
For all its cleverness, and as a price for its concise implementation and design, Lua is inconvenient to use. Hence the plethora of languages that compile to Lua and try to make it more convenient to use. One comes to mind but I can't remember or google the name successfully.
does not deserve the roast
"I built a language nobody will use just to learn generics"
It's not fair to assume the author didn't know how to implement generics before this project. It's also not fair to assume the project won't gain traction. Zig and Rust started out small too! This just goes a little too far for my tastes.