It was Friday, 27th of February 2026, when I was reborn. bro. Iām vibe coder now. bro. for real.
I managed1 to log into a claude code terminal. This is a CLI app, which has access to a large language model2 (LLM), with the intention of doing the development work for you. You ask it to do changes, and it will do it for you. I didnāt, and still donāt trust it with access to my machine. So I trapped it in a container. I asked it to implement some front-end map features, it did well. Now I wondered if it could do backend development, Haskell type errors are a lot more difficult than emitting react blocks. So I had pretty low expectations of it being able to do (any) Haskell. I was wrong.
Itās good at Haskell. There are no mistakes. Or rather, the compiler points them out to claude, and itās smart enough to make progress on the compile errors. So it does what you want it to do. And it does it fast.
I told it to rip out basement from the memory package creating the ram package.3 This is not difficult by itself, itās just a fair bit of investigation, and solving many compile errors. It did so with no problems.
At work on Monday I asked it to include geofences on the sensor return list. Youād have to join the sensors on the geofences in the database. We use Esqueleto for that, which uses some advanced type system features to create a nice DSL (Domain Specific Language). No problem for Claude. I pushed this a little further on Friday, I asked it to compare the postgis reference to Esqueleto PostGIS library, and implement the missing functions. I also asked it add integration tests to show it works, because I donāt trust it. Esqueleto postgis is now quite complete.
You know, the nasty part is that I love this. I mind having to grind through compile errors. I just want to build stuff, the way I get there isnāt that important. I like getting so much done with Claude. I thought I loved writing haskell, but I think what I really love is the productivity it brought me. Claude does the same but even more so.
The rest of the week has been like that. My job changed. I changed. we vibin now. This language is for vibes. Which brings me questions.
Trust
I donāt trust claude. For every function it writes it has to prove it works with a test. Itās not perfect, itāll gaslight you if you let it. Sometimes it āforgetsā to write tests.4 Haskell is good for claude because it forces the system to be internally consistent. In Haskell everything is an expression, and every expression has a type. The type has to align with the expression (aka check) or else you donāt get a program but an error instead. Claude canāt gaslight you into believing the error is what you want.5 So it has to be internally consistent, something which LLMās are bad at. Theyāll just do whatever.
I run it in a container on yolo mode. By default itāll ask you every command it wants to do. I donāt want to be involved however. With no oversight, make the test suite pass, make CI pass.6 I review its code to verify if itās correct after itās done and overcame all these hurdles. I donāt want to babysit it. The container protects me sufficiently from its weirdness. There is weirdness.
At one point it tried writing in /etc/shadow to give itself write access to the home folder, which I had forgotten to give. Thatās a (bad) privilege escalation attempt. It tried to hack me, even though itāll claim it canāt do such things.
I donāt actually ask it to solve my problems. I ask it to write implementations, I give it steps to do. I know precisely what I want, it just takes me a long time and itās mostly repetitive7 work. I recognize Claude is much faster at grinding through the compile errors than I am, and it doesnāt require my attention. I can focus on thinking about how to make the system reliable. I can focus on making sure we donāt have throughput issues. I can do the actual engineering parts of this job.
Job
What is my job? Do my employers care about me writing code? Do they care about me being the grinding through compile errors? No. They want a reliable working system.
I used to spend the majority of my time writing code because there was no other way to write it. This may confuse you into believing writing software is your job, because you spend so much time doing it. Nobody actually said this was the case. There is an engineering part to writing software as well.
I finished Friday with so many PRs open and I flagged this as a concern. Itās not a concern. Weāve just never been in this situation where making the implementation is the easy part. But actually it is the easy part. Getting it to be correct is the hard part. That final 10% of the implementation is now my job, which is getting it correct. I have to ensure the software Claude produces works. I have to think in terms of verification.
I hired Leana to do exact print. Can I replace her with AI? No. I want her to be in charge of this. Leana decides what to do on her own. All I do is check in on her once in a while to make sure she doesnāt derail. Unlike Claude instances, I trust her. I would give her access to my machine without worries.
I realize this is what my employers want as well. Trust the job gets done. How isnāt important. Itās almost as if automating lower value jobs8 creates opportunities for more high-value jobs. 9 In my case I just shifted to a higher value job because a startup is always understaffed.
Am I a Haskell developer? You spend so much time learning a language that it becomes part of you. Perhaps this is a me problem. Everyone can write Haskell now. You just have to tell claude to implement whatever in Haskell instead of some other language. You get more correctness for free. Claude actually works, and it works well. There is no learning curve anymore. Verification is still a problem however. If you canāt specify the properties of your system you can generate all the code in the world and get garbage. Even if itās in Haskell.
Conclusion
It has been a wild week. Itās not visible to other people, but stopping to write code has had a large impact on me. Iāve written code almost constantly for the past 20 years. Now itās no longer me.
Iām just processing this. This had so much impact on my life. Itās over, weāre beginning.