Hey all,
Maintainers of the community version of LYAH were busy at work updating the technology behind the website to hopefully attract new contributors and boost interest in this classic text. Here are three main updates done around the turn of the last year.
Go All In on Markdown
The site used to be a collection of HTML pages. For a couple of years now, there was an effort to switch to Markdown, but it was never finished before 2026. In fact, we were in a sorry state maintaining two versions of the site and getting divergencies all the time. No more. We killed the HTML version and switched to Markdown altogether. (See: Switch to Markdown by ulysses4ever · Pull Request #103 · learnyouahaskell/learnyouahaskell.github.io · GitHub and prior PRs linked from there.)
Switching to Hakyll
The initial port to Markdown used a rather hairy bash/sed script for conversion. It’s all Hakyll now. (See Move from Bash/sed to Haskell/Hakyll for site generation by ulysses4ever · Pull Request #110 · learnyouahaskell/learnyouahaskell.github.io · GitHub ).
Dark Mode
In collaboration with GitHub Copilot, we created an experimental dark mode for the website. It would benefit from stress-testing and eyeballing, please open an issue if anything comes up. To try it out, use the little Sun/Moon switcher at the top right. (PR: Add dark mode with persistent theme toggle by Copilot · Pull Request #117 · learnyouahaskell/learnyouahaskell.github.io · GitHub)
Finally: Call for Contributions (update the text itself!)
This is the main point of this post: please consider picking an issue and help in solving it. There are many low-hanging fruits in there (but also more substantial ones): the text is old and outdated in many (mostly minor) ways.
Bonus: Future Plans
I will try to attend to commuinity contributions to the text (the point above) but I’m personally interested more in updating the technology even more. Two primary thoughts I had is:
- Automating checks that the code blocks are still executable (in CI). I started experimenting with a Pandoc filter that could check that: GitHub - ulysses4ever/lyah-eval · GitHub Let me know if you’re interested in contributing there.
- Adding “execute” buttons for the code blocks in the interface (like in Rust book: e.g. Hello, World! - The Rust Programming Language has an executable snippet printing Hello World, etc.).
One other pain point of mine: the black background of the code blocks. Having those high-contrast elements in the design is a well-known antipattern. I hope we’ll find a way to improve it without departing too far from the original style.