I joined the Haskell Stability Working Group about a year ago. I was freshly scarred from a GHC upgrade, so I decided to try improving the situation. I think my first contribution was making an example for GHC nightly builds on GitHub Actions. This allows downstream1 maintainers to build …
Tagged: tools
Analyzing Haskell stability
Cabal exact printing ![[]](https://jappieklooster.nl/theme/images/category-tools.svg)
For a long time, I’ve been annoyed that cabal tells you to add modules to your cabal file. It can detect missing modules, but won’t automatically add them. This is not a big deal for a single module, but if you like splitting code into many small modules …
Installing a NixOS desktop tracked with git ![[]](https://jappieklooster.nl/theme/images/category-tools.svg)
A few years ago I wrote a post on installing NixOS on encrypted btrfs. I recently went trough that guide to install NixOS once more. It is good, but it has some issues:
- btrfs: Which I no longer use due to performance concerns.
- git: This requires some special attention, but …
Reflex server side html rendering ![[]](https://jappieklooster.nl/theme/images/category-tools.svg)
Citrix XenCenter 7.6 notes ![[]](https://jappieklooster.nl/theme/images/category-pain.svg)
A client had a Citrix environment running. To debug the deployment of a machine, I copied the Citrix environment locally in VirtualBox. Note that the server doesn’t run any machines inside citrix, but it does get the XenCenter operational. It appears that in nixos you can just setup a …
Nixos notes ![[]](https://jappieklooster.nl/theme/images/category-tools.svg)
This is a post of things I wanted to do in nixos but isn’t described anywhere. I had to read source code to figure these things out. By explaining here what is going on I make things easier for other people.
Nix custom image
It’s possible to bypass …
Authentication in Reflex & Servant ![[]](https://jappieklooster.nl/theme/images/category-tools.svg)
In the previous blog post we saw interaction with servant in reflex. Although that covers the basics, there are several more hurdles to overcome to get comfortable with Reflex. I think most of these are encountered by building a simple login system. So let’s build something like:
+------------------+
+-----------+ | . - |
| +--------+| | . - .. . |
| +--------+| | . .-- - + m..-. |
| +--------+| \ | m …
Lens into wrapped newtypes ![[]](https://jappieklooster.nl/theme/images/category-technique.svg)
All newtypes are isomorphisms
— My mother
Control.Lens.Wrapped uses the isomorphism property to introduce a type class Wrapped
. Let’s explore use cases, because after all, it doesn’t appear to do much at first glance. What’s the point of formalizing wrapping and unwrapping of types?
Instance boilerplate …
Fullstack Haskell: Reflex and Servant ![[]](https://jappieklooster.nl/theme/images/category-tools.svg)
In the pragmatic haskell series, we saw how to setup a simple webserver with database. But at some point you still need a frontend. If it were 2005 you may have been able to get away with just blaze. But we are in 2018+, and JavaScript is a problem. In …
NixOS on encrypted btrfs ![[]](https://jappieklooster.nl/theme/images/category-tools.svg)
Nixos is heroin for tinkerers. Paradise can be tinkered together and be freely shared among peers because it’s fully reproducible! Jappie wanted more, he wanted a secure disk and a BTRFS. There used to be no guides for this, now there is.
The bullet was bitten, BTRFS was made …
Pragmatic Haskell III: Beam Postgres DB ![[]](https://jappieklooster.nl/theme/images/category-tools.svg)
Note, I no longer recommend using beam for business as ORM. Please use persistent instead. Beam is far to complicated for it’s use case. Migrations can be run with postgresql-migration for example, using the suggested migrations from persistent. I’d only recommend using beam for hobby projects or as …
Pragmatic Haskell II: IO Webservant ![[]](https://jappieklooster.nl/theme/images/category-tools.svg)
- Pragmatic Haskell: Simple servant web server
- Pragmatic Haskell II: IO Webservant
- Pragmatic Haskell III: Beam Postgres DB
Most Haskell language guides will leave IOuntillater. This guide is different, this guide is about using Haskell. Our focus is different: We build first, then learn trough delight.
The previous blog …
Pragmatic Haskell: Simple servant web server ![[]](https://jappieklooster.nl/theme/images/category-tools.svg)
- Pragmatic Haskell: Simple servant web server
- Pragmatic Haskell II: IO Webservant
- Pragmatic Haskell III: Beam Postgres DB
There are many guides available for learning Haskell. Setting up a something simple like a web server isn’t so straight forward. Perhaps choosing one of the 14 libraries is a bit much …