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 …
tools
Cabal exact printing
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 …
Announcement: Updated Esqueleto text-search & PostGIS bindings
I’ve updated the esqueleto bindings for esqueleto-textsearch to include a tutorial and documentation so it no longer requires guesswork. Furthermore I’ve also created new esqueleto bindings for PostGIS.
Esqueleto is a more advanced query library that builds on top of the persistent ORM3. Postgres text search brings …
BONUS Announcement mysql pure unfork
Good news! I’ve come to an agreement with the maintainer of mysql-haskell, winterland. I’ll become a co-maintainer.
What this means in practice is that I’ll deprecate mysql-pure and merge the changes back into mysql-haskell. This will make upgrades far more convenient for users. That’s you! It …
Announcing mysql pure fork
I’ve forked mysql-haskell and persistent-mysql-haskell into mysql-pure and persistent-mysql-pure. The original packages were no longer maintained and frequently caused me issues during GHC upgrades, so I decided to take over maintainership. For example, bounds were outdated, or I needed minor patches found on obscure branches in unrelated repositories. I …
MySQL Persistent Support for Haskell on Windows
Restoring msyql backup system on windows.
This is a quick after action report on restoring backups. This is mostly for future me to know what I did.
The backup scripts on the main server stopped working. The IT person at that company had already figured out this was because of the database not booting on the …
Restoring mysql innodb on windows.
Over the weekend a company had a power outage, causing corruption to the on premise hosted mysql innodb database. This means the company can’t do any work, so I had to fix this fast before they opened again on Monday. It’s not trivial because the system runs on …
Installing a NixOS desktop tracked with git
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 …
Using git for templates
Over the past few years I’ve started using git as a template management tool1. For example, I clone my haskell template project, edit the names, edit the readme
end re-setup the remotes:
git remote add template git@github.com:jappeace/haskell-template-project.git
git remote set-url origin git@github …
Hacking atom
On my twitch stream I had project where I made a CRT scan line monitor in atom:
The inspiration was the fallout pip-boy. I though it would be cool to have this be in your editor, maybe some of the gray beards are nostalgic for this?
What amazes me is …
Ghcid for multi package projects
Pinning nixops builds
On one machine my Nixops builds and deploys, but on the other one it fails. Why? Isn’t nix supposed to deliver reproducible builds? Turns out nixops uses by default your system configurations’ channels rather then a pinned nix packages. Which is not why you’re using nix. You want …
Reflex server side html rendering
Nixos notes
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
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 …
Fullstack Haskell: Reflex and Servant
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
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
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
- 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
- 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 …
Fun with stack: Haskell dependency management
Working at Daisee, Jappie uses a lot of Haskell programming. Although Haskell is obviously as amazing as the stereotype asserts, the tooling can be a bit challenging. In this blogpost we explore these challenges.
One’s understanding start with the fact that there is not one unified Haskell package manager …
Reddit poster plugin for pelican
Yesterday the Reddit Poster plugin for pelican was finished. This is an initial step towards providing Reddit integration with pelican.
What this plugin does is look a predefined list of subreddits names in an article, then it posts the article to all those subreddits. Aside from the subreddits in the …
Flask, docker and the backend
Jappie Klooster is working with friends on a react native app. It was attempted to do this completely without server-side with help of Firebase. This post describes the thought process behind not using Firebase for everything, and setting up a custom backend instead.
The first major issue, for this use …
Plan prediction
For the raster project a main selling point will be the automatic prediction of future scheduling. There are two major schools of thoughts to go with that I know of. Constraint satisfaction solving and data driven approaches (use statistics).
First of all the most straight forward approach is to use …
Tool survey
Some time ago I made a blog post about thesis writing tips. However while writing that a large part started to be about text editing tools and version control. To keep the thesis writing tips post more focused I postponed writing about that. This post treats my tools of choice …
Optimus time!
Using gentoo is a bliss most of the time. The package manager portage is one of the most advanced managers that I’ve ever used. Last week I encountered how much better it is than for example apt, when my old laptops power supply burned out and I had to …