Hacker News new | past | comments | ask | show | jobs | submit login

> When they want to tinker, they should write their own compiler. But they shouldn't use that in production.

Why? We should stop saying others how they want to write/use their code ASAP.

Many established technologies are a total shitstorm. If it is ok to use them, it is ok if somebody wants to use their own compiler.




These systems also came from tinkering. Most programming languages even are really the investment of one person for a long time, doing apparently what you aren't supposed to do.

When it comes down to it, whatever works best and is usually the most simple, non-breaking, used to win out. That decision has been disconnected from the value creators to the value extractors. It is impossible to extract value before value is created.

Additionally, programming is a creative skill no matter how hard they try to make it not one. Creativity means trying new things and new takes on things. People not doing that will harm us long term.


>> But they shouldn’t use that in production. > Why?

Generally speaking, because that’s very likely to end up being “pushing for rewrites of things that work”, and also a case of not “taking complexity into account when adding features”, and perhaps in some cases “jumping on a new language”, too.

This is an imagined scenario, but the likelihood of someone easily replacing a working compiler in production with something better is pretty low, especially if they’re not a compiler engineer. I’ve watched compiler engineers replace compilers in production and it takes years to get the new one to parity. One person tinkering and learning how to write a compiler almost for sure does not belong in production.


"parity" is the keyword here. Most of the time, the problem doesn't come from sloppy execution, but ever widening scope of the software.

For example, my own "Almost C" compiler[1] is 1137 lines of code. 1137! Can it ever reach "parity" with gcc or even tcc? No! That's specifically not the goal.

Do I benefit strongly for having a otherworldly simpler toolchain? hell yeah.

The key is scope, as always. Established projects have, by virtue of being community projects, too wide a scope.

[1]: https://git.sr.ht/~vdupras/duskos/tree/master/item/fs/doc/co...


Agreed, parity is a strong constraint. Since the premise under discussion was “production” environments where some kind of parity is presumably required, I think it’s a reasonable assumption. If there is no baseline and it’s not a production situation where parity is needed, then yeah scope can and should be constrained as much as possible. I like the phrase “otherworldly simple”, I might borrow that!


I don't think that people deciding what goes in "production" are immune to scope inflation. Thinking that we need parity with another software without realizing the cost in terms of complexity of that parity requirement is, I think, a big driver of complexity.


> Why?

Those who do not know history are doomed to repeat it. Or re-re-reinvent Lisp.

There was this anecdote about storm lamp or something. New recruit comes to a camp and sees old guard lighting lamps are turned upside down and lit sideways with a long stick. But he knows better, he tells them and they smirk. First day he lights them the optimal way with a lighter. He's feeling super smug.

But next day he finds the fuse is too short to reach so he takes the long stick...

Few months later, he's a veteran, he's turning lamp upside down using lighter sideways, with a long stick.

And the fresh recruit says he can do it better. And the now old guard smirks.

I'm sure I'm misremembering parts, but can't find the original for the life of me.


> Why?

If someone would hand me a project, that is full of self invented stuff, for example a PHP project, that invented its own templating or has it's own ORM, I would run. There is laravel, slim or symfony, those are well established and it makes sense to use them. There are so much resources around those frameworks, people who posted about useful things, or packages that add functionality to those. It just doesn't make sense to reinvent the wheel for web frameworks and thousands of packages around those.

Writing software is standing on the shoulders of giants. We should embrace that, and yes one should learn the basics, the underlying mechanisms. But one should make a difference between tinkering around and writing software, that will be in production for years and therefore worked on by different developers.

The JavaScript world shows how to not do things. Every two years I have to learn the new way of building my stuff. It is annoying and a massive waste of resources. Everyone is always reinventing the wheel and it is exhausting. I understand why it is like this, but we as developers could have made it less painful, if we would embrace existing code instead of wanting to write our own.


That’s an interesting take. A lot of big tech has their own tempting, for example.

I’m in games we even rewrite standard libraries (see EASTL) so that they are more fit for purpose.

Of course, it’s your preference. And that is fine. But I don’t think it speaks to the situation in many tech companies.


the shitstorms usually have a community behind it. Even if it sucks, it's supported and will be maintained to a point of it "working." If someone writes their own thing, chances are they won't go the extra mile and build a community for it. Then, when it comes to maintaining it later, it might grow untenable, especially if the original "tinkerer" has moved on.


This would be great if things like open source were more supported in the "real" world. Unfortunately, you're describing exactly why a community means nothing in this situation unless the community is giving back to the project. When the "original tinkerer" moves on, everything depending on that project breaks when everything else changes around it.




Consider applying for YC's Summer 2025 batch! Applications are open till May 13

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: