Chris Allen
bitemyapp.com · Personal blog · on HN since 2010
Chris Allen writes about learning and teaching Haskell, functional programming and Haskell in production.
What HN saysCommenters see him as a committed Haskell evangelist and link his learning guide, which recommends cis194 and NICTA over LYAH and RWH.
35HN people shared it
21linked it in comments
36stories submitted
208story points
1 year agolast shared
2010people per year2026
Most-shared posts
- 1The problem of learning functional programming11 people · 19 points · first shared 2015 · discussion on HN
- 2Why a prolific Clojure user switched to Haskell5 people · 31 points · first shared 2014 · 3 comments on HN
- 3[haskell] Why we don't chuck our readers into web apps4 people · 22 points · first shared 2015 · 4 comments on HN
- 4Functional Education (2014)3 people · 17 points · first shared 2020 · 1 comments on HN
- 5Haskell is not trivial, but it's not unfair like Dark Souls either3 people · 9 points · first shared 2016 · discussion on HN
- 6Homepage3 people · first shared 2010
- 7From 25 minutes to 3 minutes; speeding up the builds for our Haskell projects2 people · 4 points · first shared 2016 · discussion on HN
- 8The Hashrocket websocket shootout in Haskell2 people · 4 points · first shared 2016 · discussion on HN
- 9Literate Haskell URL Shortener2 people · 3 points · first shared 2014 · discussion on HN
- 10URL Shortener in 43 lines of Haskell2 people · 2 points · first shared 2014 · discussion on HN
- 11Why the poor are poor1 people · 39 points · first shared 2010 · 22 comments on HN
- 12Moonbit developers are lying to you1 people · 12 points · first shared 2025 · 1 comments on HN
- 13Wrapping up Haskell Book1 people · 9 points · first shared 2018 · discussion on HN
- 14Either and (,) in Haskell are not arbitrary1 people · 4 points · first shared 2015 · discussion on HN
- 15What a Haskell Study Group Is Not1 people · 4 points · first shared 2017 · 1 comments on HN
What HN people wrote when they linked it
ezl · 2010-11-27
Oh poop. I'm the ezl from the github repo where that source lives. Was hoping we'd have more time to fix it before being embarassed.
HNOH was intended to be a quick weekend project (famous last words). We didn't quite make it in the weekend, so we just let it hang out in his half complete state.
rguzman, smalter, and I have been meaning to put some love into it, but we've been slammed working on what we think will be our real startup, http://www.leasely.com, so we've not really carved out the time.
Its broken and buggy, the calendar features don't work right, and there are issues with creating/canceling recurring office hours. We'd LOVE for this to be used in real life, but its not in a state we can really say we're super proud of yet. We want anyone who wants to be involved to get involved, so if you have hours to donate, please get in touch.
The heavy lifting was done by HN users: rguzman, deuterium, C Allen from NYC (github.com/bitemyapp/, http://bitemyapp.com), and a few others.
So we f-ed up, there are still bugs, and its been on the backburner since we're trying to work on leasely but now we've been embarassed into fixing the bugs so we will.
[edit: linked to C Allen's github and personal page]
chillee · 2018-02-10
To elaborate on LYAH, I think it's a pretty bad resource for actually learning Haskell. It's very "here's a feature, now copy it". Which works fine for learning syntax, but works poorly for learning Haskell.
Check here for a review that really resonated with my experiences about LYAH:
http://bitemyapp.com/posts/2014-12-31-functional-education.html
Note the author of that post is also the author behind the Haskell book, which is also what I'd recommend currently.
danieldk · 2016-05-01
Like a true evangelist. He is frustrated with misrepresentation of Haskell in wider programmers' community and to his credit he is working hard to fix this.
Learn yourself a Haskell was a great book. Many friends/colleagues picked up Haskell with that book and were really happy with it. @bitemyapp 's book may be better (I don't know, I didn't read it), but he seems to try to bash LYAH at nearly every possible occasion.
http://ircbrowse.net/browse/haskell?id=19614985×tamp=14180379…
https://lobste.rs/s/5pqc1y/learn_you_a_haskell_for_great_good/comments…
http://bitemyapp.com/posts/2014-12-31-functional-education.html
I think this is undeserved and perhaps toxic (especially coming from someone who wrote a competing work).
bootload · 2016-02-22
A great comparison to the above article is this post by Stephen Diehl, "Reflecting on Haskell in 2015". [0] A great read and an interesting pointer on the state of Haskell / Javascript (Elm, Purescript). Also, work your way through "Write you a Haskell", [1] well worth the effort.
Going through the post, this looks like a comprehensive book. Read the rationale behind, 'how to learn Haskell' from author. [2]
[0] "Reflecting on Haskell in 2015" http://www.stephendiehl.com/posts/haskell_2016.html
[1] "Building a modern functional compiler from first principles." http://dev.stephendiehl.com/fun/index.html
[2] "Why we don't chuck our readers into web apps" http://bitemyapp.com/posts/2015-08-23-why-we-dont-chuck-readers-into-w…
coolsunglasses · 2015-03-25
If you'd like to learn Haskell, I'd suggest doing cis194 and then the NICTA Course rather than LYAH and RWH, based on my experiences learning and teaching Haskell.
I have a guide here that lists my recommendations: https://github.com/bitemyapp/learnhaskell#yorgeys-cis194-course
I've explained my stances towards what not to use to learn Haskell here: http://bitemyapp.com/posts/2014-12-31-functional-education.html
alnayyir · 2011-02-14
http://bitemyapp.com:8000/ there's a test build of it,
https://github.com/bitemyapp/thodol
and there's the github. It's nowhere near done, and while history is being saved, I need to make a differential front-end to it.
Let me know if you want an account on the test deployment.
If people show an interest, I'll start taking suggestions on features and implement them.
I could probably get it rest of the way to 80% done in one more weekend. This was just two days of fiddling so far.
yakshaving_jgt · 2021-12-19
If only it could do this…
f :: YourTestInput -> CorrectAndPerformantAdventOfCodeSolution
f = _
---
Seriously though, even after writing Haskell primarily for years, I've never done hole-driven development and I'm still not sure what I'm missing. I tried once — granted, that was a long time ago — but I didn't get it. This post[0] suggests I'm not alone in thinking this.
I'm glad Wingman exists and I think branding it nicely like this is the right thing to do, but I think I need to see more concrete examples to really see the magic. Probably something like Gary Bernhardt's Destroy All Software screencast series. It's one thing for someone to tell you that vim is fast, but it's another thing entirely watching the tool come to life in the hands of an expert. I imagine it's a similar thing for Wingman — I still have this mental block where I'm picturing the tool conjuring up an undefined for each hole, which is exactly what the documentation suggests the tool doesn't do. I would love to see someone use Wingman to quickly hammer out an Advent of Code puzzle, or even something more real-world like an Esqueleto query (but is that even possible?)
[0]: https://bitemyapp.com/blog/please-stop-using-typed-holes/
mrslave · 2021-07-12
I went through most of the Hutton book but I already had an elementary background in the language. Then some of the recommended CIS194 course. (3-6 months spent studying total.) Finally I decided upon a project that was right in one of Haskell's strong points: parsing/compilation [0]. Everything was a Google search: how to start a Haskell project with Nix? How parse command-line arguments? How to write a parser for a calculator? What the hell does this compiler error mean??!! Find the answer and get straight back to it. I would still consider myself intermediate, and not proficient, at the language.
While it is one person's opinion (albeit well explained) I strongly appreciated Chris Allen's efforts to evaluate existing learning material (prior to co-writing his book) as well as recommending a learning path [2]. Ultimately there is multitudinous material to study. For the textbook-like route, choose something that seems sensible and commit, leaving only when it appears to no longer be fulfilling the purpose. Juggling too many artifacts is like interrupting programmers.
I don't use VS Code but again, my elementary knowledge of the language, plus sufficiency with GHCi, meant I could stay within my Vim comfort zone. If anyone has a good single resource for configuring Vim for Haskell I'd love to see it?
[0] State of the Haskell ecosystem https://github.com/Gabriel439/post-rfc/blob/master/sotu.md
[1] Functional Education https://bitemyapp.com/blog/functional-education/…
allenleein · 2017-09-02
If you want to learn Haskell or functional language:
Haskell for all- http://www.haskellforall.com/
Bryan O'Sullivan's blog- http://www.serpentine.com/blog/
Monday Morning Haskell- https://mmhaskell.com/
Jane Street- https://blog.janestreet.com/
Haskell Weekly- https://haskellweekly.news/
Neil Mitchell's Haskell Blog-http://neilmitchell.blogspot.tw/
Types & Functional Programming- http://bitemyapp.com/
Haoyi's Programming Blog- http://www.lihaoyi.com/post/WhatsFunctionalProgrammingAllAbout.html
0xmohit · 2016-09-12
URL Shortener in 43 lines of Haskell.
http://bitemyapp.com/posts/2014-08-22-url-shortener-in-haskell.html
exDM69 · 2016-09-03
http://bitemyapp.com//posts/2016-09-03-websocket-shootout-haskell.html
I happened to come across this in /r/haskell today. The results are very impressive.
hyperpape · 2016-02-22
The author of the book mentioned has a post called: "Why we don't chuck readers into web apps"[0] that is...not encouraging.
"....Understanding algebraic datatypes requires understanding products and sums. Understanding products and sums requires understanding addition, multiplication, types, cardinality, type constructors, and data constructors...."
By the time I reach cardinality I wonder if maybe the author is more interested in making things sound intimidating than helping? Or will readers be quizzed on the Continuum hypothesis?
"Why can’t I learn Haskell the way I learned $BOZOLANG?"
...I hope the book itself won't take this tone. The community doesn't need it.
[0] http://bitemyapp.com/posts/2015-08-23-why-we-dont-chuck-readers-into-w…
bgar · 2015-07-01
There are much better resources than LYAH.
Chris Allen has a good list and critique of different books/courses: http://bitemyapp.com/posts/2014-12-31-functional-education.html
killtheliterate · 2015-04-30
cdubose · 2015-01-02
You can try the /r/haskell subreddit. They'll have more detailed information there, and on the subreddit you can browse some of the topics and projects currently going on in the haskell world, which may give you a better idea of what haskell is capable of.
Also, if you haven't been getting traction with the #haskell IRC channel, try the #nothaskell channel. The title is a little confusing (it should be called something like #notjusthaskell), but they try to be more helpful there than the regular #haskell generally is.
You may also want to check out this recent post about the quality of various haskell resources: http://bitemyapp.com/posts/2014-12-31-functional-education.html
bkirwi · 2014-06-09
Here's an article that was on the frontpage recently; some reflections from a Clojurist that switched to Haskell:
http://bitemyapp.com/posts/2014-04-29-meditations-on-learning-haskell.…
pseudonom- · 2014-05-05
bitemyapp seems to have pretty clear opinions on Haskell vs Clojure: http://bitemyapp.com/posts/2014-04-29-meditations-on-learning-haskell.…
Tehnix · 2018-06-03
What languages have you worked with before, with static types?
If it's something like Java, C, C++, etc, then I can see your point, but if you pick any of the languages with type inference (like Elm, Haskell, PureScript, OCaml, F#, etc), then you rarely actually have to write types.
Working with the type system is a different way of working. It's more beneficial to see the compiler as a helping friend, instead of an adversary that is just there to complain.
Some interesting reads might be:
- http://elm-lang.org/blog/compilers-as-assistants
- https://matthew.brecknell.net/post/hole-driven-haskell/
- http://bitemyapp.com/posts/2017-09-23-please-stop-using-typed-holes.ht…
Personally, I honestly hate every time I don't have a time system to rely on. I don't make any false pretenses that I have the whole program in my head 100% of the time. I don't want to have to think about things that a computer can solve for me, hence I like my compiler to do as much work as possible.
As for unit testing, a type system is never supposed to remove the need for unit testing, and if you see anyone promote a language because of this, they are probably (hopefully) over simplifying. What it does do though, is significantly cut down the need for certain types of tests, since you can model so much more logic via types (ADTs, Union types, etc), and get it checked by the compiler.
As an aside: I simply do not believe you've never run into a type error, unless you've only written projects…
akurilin · 2014-07-09
For me it's mostly about codebase scaling, refactoring and maintainability. Clojure is liberating and exciting when you're writing a tiny little project, but it's a whole other experience when you need to refactor dozens of files because you changed the format of the data being passed around, or you're changing an internal API that's called from a hundred different places.
You better have perfect code coverage, or you'll have no clue why and where something broke (the sink/source problem) or perhaps you won't even find out for a while because that scenario wasn't sufficiently tested and it slips into production. Having a compiler nag you about type inconsistencies is incredibly helpful in these scenarios.
The other big one is working with large blobs of data. Our product has a large analytics component to it, and massaging giant, deeply nested maps representing a certain compendium of statistics is really tough without the compiler spotting you. None of this is an issue when you have to satisfy a certain type, the compiler will basically give you a checklist of things to fix when you change something.
With Haskell you're getting all of the benefits of Clojure (expressiveness, leverage etc), plus the really useful addition of types and enforced purity on top.
Here's another clojurian's experience with switching to Haskell: http://bitemyapp.com/posts/2014-04-29-meditations-on-learning-haskell.…
codewright · 2013-03-03
I identify with, and am seeking for myself, a lot of things described here.
That said, the author is speaking from an intensely privileged point of view. Referring to selling one's time as a programmer as 'whoring' caused me to cringe.
I have strong aversion to growth for growth's sake now that I've lived and worked in Silicon Valley and the startups that go with it (I was CTO at a nutrition startup).
Things I've done recently:
1. Quit my job and went back to being an independent consultant. Looking to start a product company in the gap time between contracts.
2. Exercising more, in my case, 6 times a week minimum as well.
The real question is whether or not I'll be able to make something that bears revenue fruit or not. I've had small bits of success here and there before but nothing substantial or lasting. Current side project is just me scratching an itch, no real revenue potential.
I've been reading a lot in an attempt to learn as much as I can and prepare myself to be able to make something profitable. Mostly marketing and sales books, about to do another read-through of Patio11's stuff again.
Can anyone tell me what the aspiring micro-ISV/self-employed entrepreneur really needs to know in order to get ramen profitable? I know I need to build and experiment quickly - what else?
Edit:
My book log: http://bitemyapp.com/post/book-log-1/
I agree with orangethirty's "start selling". I just need to hoof it and do it. Not about to stop reading though :)
sotojuan · 2016-11-19
Some links that might be of interest:
http://bitemyapp.com/posts/2014-12-31-functional-education.html
http://bitemyapp.com/posts/2015-08-23-why-we-dont-chuck-readers-into-w…
http://bitemyapp.com/posts/2016-02-06-haskell-is-not-trivial-not-unfai…
https://github.com/bitemyapp/learnhaskell
http://haskellbook.com/ by the above author