2,853 karma · joined February 27, 2013
Usually I would agree with you but when porting code the source code is the spec.
All it takes to understand this is a little knowledge of history and psychology.
Progress has always been driven by a tiny minority who refuse to be amoral sheep. Without them, we’d still be living in caves, bashing each other over the head with rocks.
Nothing controversial about that to me. I see people operate like that every single day. And history is a looooong list of people doing exactly that.
It's like measuring how fast the wheels are spinning rather than how far the car is actually moving.
It works beautifully, and I've never felt the need for anything more complicated.
What you like will not be what I like.
I wish there were more posts like this on HN showcasing the creative possibilities of AI.
But in practice, I think monads are a poor tool for large-scale software development. I spent a long time trying to build a large game in Haskell and eventually gave up out of frustration with the complexity they introduced.
Monads make sense as a way to manage effects in pure languages like Haskell/Lean/Idris/Agda. But outside that context, I don’t think the additional abstraction is worth the cost.
Understanding how monads work is one thing. Understanding why they’re needed in the first place, and when they’re not, is another.
I like monads as a concept, but in practice I find them frustrating and unnecessarily complicated. I worked on a large game written in Haskell and eventually gave up because dealing with monads made development so cumbersome.
I love the idea, but for real-world projects I’d rather avoid the complexity.
I used to be a big Haskell fan, until I discovered languages like Lean, Agda, and Idris 2 and realized how much cleaner and more coherent the whole thing could be with dependent types built in from the start.
I highly recommend Haskell fans explore Lean/Agda/Idris. They make Haskell feel like a pile of spaghetti by comparison.
That’s true today, was true a year ago, and has always been true.
Judge the quality of the results, not the tools used to produce them. Whether those tools involve AI or not is irrelevant.
We hear about the tiny fraction who manage to make a decent living from their games, but rarely about the vast majority who don't. It's classic survivorship bias.
And it's hardly unique to indie games. The same is true across pretty much every creative industry: books, movies, music, art, and so on.
At work, I’ve just started a large, complex project that we wouldn’t even have considered practical before LLMs.
I absolutely love learning new things and pushing myself far beyond what I previously thought was possible. And I love that I’m no longer limited by how fast I can type.
My advice is to embrace the change and see it as an opportunity to expand your capabilities. You now have the chance to build far more cool stuff in your lifetime than you could ever have imagined before.
Claude is brilliant at writing C++ so I get the performance I want with zero hassle and see no reason to switch to a “better” language.
So “you might get the spec wrong” applies either way. The big difference is that with Lean, you can prove that the implementation matches the spec. With mainstream programming languages, you can't.
The trick is to give it enough guidance about the style you prefer.
So our understanding moves from the C/Python level to the Markdown specification level. We still need to understand exactly what we're building and why.
The hard part was never translating the spec into machine code. The hard part is defining the right spec. That is still the job of the software engineer.