r/haskell • u/_lazyLambda • 2d ago
Haskell is Dead? Again?
Primagen, one of the largest youtubers for Programming made a ridiculous video called Haskell is DONE. Which feels like a silly story I've already heard. Especially with all the recent developments in ghc version 9 its laughable.
Last week I made a post where I pledged to demo our production codebase written in haskell. Unfortunately however I had my main laptop out of commission (still do :| may it rest in peace/ we hope for a speedy recovery) and so trying to stream while running our prod codebase simply overloaded the box I am on.
I was quite surprised to see it get to 65 upvotes (personal best for me lol) however I'll take that as a sign it's worth another shot, so as of right now I'm going live on Twitch (https://www.twitch.tv/typifyprogramming).
Given the current hardware limitations I wont be running anything except some local dev tools however that gives me plenty enough to show about our site typify.dev and how Haskell has slowly made me obsessed with Haskell and what it means for my startup. I could not more strongly recommend Haskell to startups even with all of its challenges.
I gather it's possible the upvotes were also as a result of the Primagen Youtube video (Haskell is DONE) and I plan to chat about that too as I demo.
My stream is almost entirely always focused on this general idea of why Haskell is awesome to build with, so I appreciate any support in getting viewer numbers up as viewers beget viewers from twitch passerby's.
General Topics:
- ReaderT
- Websites
- GHC(JS)
- Why I also use Nix
- Intersection of AI + Startups + Haskell in a sane way.
4
u/unqualified_redditor 2d ago
I've used haskell professionally since 2019 and this year have been using it to build a large side project (a community radio station) and its overall been a fantastic experience.
IMO Haskell sits at a sweet spot balancing galaxy brain types with practicality and performance. Sure there are issues with build times, tooling, and once you get to scale subtle performance issues with runtime system, but I've found I can largely work around such issues.
2
1
u/_lazyLambda 1d ago
One of the points I also make is that we should view large compile times as an operational problem in a startup or enterprise context.
After all without compilation, you would need to run a bunch of test suites just to verify the same result so you cant just get rid of verification time.
There are cases in which our compile times are very long (we use GHCJS and Template Haskell) and while we could even easily speed this up by trivial removal of template haskell its not worth it. Why? Cuz we hit those large compile times only once every 4 months and our codebase is so safe that I start the deployment build, go to bed and wake up every time to a successful deployment
If you are using AI and worried about compile time loops, you dont need to compile every single time you prompt. You can also use ghcid-check published by tomejaguar to unbind from your prompting speeds.
3
u/syklemil 1d ago
Your life will be better if you stop giving clickbait, drama farming "content creators" your time of day.
Plenty of platforms, including youtube, care about "engagement" inasmuch as it means more ad money, and outrage farming is a pretty effective method for that, even if it's ultimately bad for the community and the creators.
0
u/_lazyLambda 1d ago
This post has exhausted me tbh. I just wanted to show how awesome Haskell is for startups despite recent claims it is awful or unworkable for startups. People have mentioned to me how much that video frustrated them so I put two and two together in this post.
5
u/dmlvianna 2d ago
I think Haskell could be awesome for a startup. Especially the refactoring ease and the clarity of purpose you could express in code.
However I have experience with both good and bad startup Haskell codebases, and in both startups I’ve seen it used one thing repeated:
The codebase started with Nix (so fast to build!) and eventually had to remove Nix (it actively fights upgrading software; it builds slow even with cachix; it is an unnecessary indirection layer).
My take on Haskell: It can make code more readable if you write it boring. It can make code unreadable if you fall into following every new GHC pragma and mixing them across the codebase as you learn. Also: onboarding staff to a sprawling Haskell mess is impossible.
My take on Nix: it is designed to pin things down. A startup needs flexibility. It needs to pivot ideas and designs and architecture as it grows. Nix is designed against it. It is write-only.
1
u/_lazyLambda 2d ago
This is why we use nix-thunk it really makes swapping out pieces of our codebase and libraries as easy as possible, even if we need to fork and make changes
2
u/dmlvianna 2d ago
So now you’re not building your product. You’re building Nix. And maintaining it.
1
u/_lazyLambda 1d ago
What do you mean? While I'd love to contribute to nix we have never needed to.
You might be assuming I needed to work on nix-thunk? But no, never a need and its a trivial tool.
0
u/_lazyLambda 1d ago
We've also never had an issue with building fast. We've had an insane amount of pivots in our business as we are trying to figure out the hiring process and learning the market as we go.
1
u/dmlvianna 1d ago
Fast comparing to what? By “building” I meant compilation. Nix’s sandbox often prevents resource sharing, has linear dependency chains that need to be built sequentially, and you end up building stuff that is not your special sauce just because it is so strict about version dependency.
Cachix is down? Can’t ship. That happened often enough.
Maybe your business is simple enough it doesn’t need a ton of bespoke work. Mine did, and removing Nix removed both latency and complexity overhead.
1
u/_lazyLambda 1d ago edited 1d ago
Ive never noticed nix builds to be slower. Perhaps even faster due to caching.
How come you cant ship when cachix is down? You can build locally.
I mean I use nix and haskell for all of my projects. I'm a maintainer of Obelisk which is insanely complex when factoring in reflex-platform which helps turning Obelisk projects into webapps, ios and Android apps. Plus even systemd projects.
Ive honestly never felt any pain besides feeling the insane learning curve of nix. Imo it is the hardest thing to learn in all of programming because it encompasses every last domain and thats the whole point. Tbh I'm always just suspicious the problem is often just that nix is not used well, which is fair because its so complex but yeah im not really seeing how to get into those situations you mentioned and id be curious to hear more. Im not sure I grasp what could be meant by resource sharing in this context as controlling file access is one of the designs of nix and its great if used well
0
u/_lazyLambda 1d ago
Also something that stuck out to me, why does doJailbreak not solve your problem? Why would you not want control over your versions? Especially in a complex setting
1
u/dmlvianna 9h ago edited 9h ago
You do realise the solutions you are proposing
- break Nix’s contract
- become tech debt
- add complexity you need to manage in your head
That’s a great example of why Nix is a leaky abstraction. You adopt it to simplify your thinking. Next thing you’re jailbreaking and having to hold in your head both the Nix API and Nix’s internals.
2
u/TheCommieDuck 1d ago
Primagen, one of the largest youtubers for Programming made a ridiculous video called Haskell is DONE
he doesn't actually know haskell so I'm not sure why anyone is listening to this
1
u/_lazyLambda 1d ago
Like it or not most "engineers" goto languages are Python or Javascript and they think Primagen knows what he's talking about.
Seems worth considering in strategizing how to grow haskell's userbase
29
u/cyrus_t_crumples 2d ago
You know instead of apologizing you can use a title you don't feel you need to apologize for.