Minimal effort build improvements and a GHC 8.2.2 upgrade

How attempting to speed up my CI builds led to upgrading to GHC 8.2.2 (and eventually speeding up my CI builds)


19 minute read

tl;dr - On a Haskell project I’m working on I started with >~20 minute cold-cache builds in the worst case in my Gitlab-powered CI environment then found some small ways to improve. Very recently I decided I wasn’t satisfied with ~10 / 15 minute builds and did the laziest, least-effort steps I could find to get to <10 minute cold-cache builds (~5min best case). Check out the [TLDR][tldr] section to see the Dockerfiles and steps I took summarized.

Switch From ployst/docker-letsencrypt to Jetstack's kube-lego

Switching from ployst/docker-letsencrypt to jetstack/kube-lego for auto-generated SSL certs with Kubernetes.


7 minute read

tl;dr - I switched from ployst/docker-letsencrypt which I considered less complicated than jetstack/kube-lego initially. Turns out jetstack/kube-lego is pretty simple and *just works* which is amazing, props to the team over at jetstack and as always the kubernetes team, for making this more intelligent automation possible. You could honestly just read the jetstack/kube-lego guide, it’s real good. If you wanna see my path through it, keep reading.

Docker on Arch Linux - docker0 just doesn't seem to want it's IPv4 address

Recent instability running Docker on Arch -- docker0 just doesn't want to keep it's IPv4 address.


5 minute read

tl;dr - My setup of Docker on Arch Linux is having some issues, around docker0 not properly holding on to it’s IPV4 addresses (listed as inet in ip addr output). I originally though it was a problem with Alpine CDNs, but it was actually docker0 throwing up repeatedly. Short term work around I’ve found is to just create the missing link again, w/ sudo ip addr add dev docker0.

Static Binaries for Haskell: A Convoluted Approach

A convoluted (but working) path to building binaries for a Haskell app


17 minute read

NOTE - this blog post has been updated, thanks to feedback from the reddit community in pointing out ways this should have been done/done better! If you read any part of this with any intent to use it, definitely read the updates at the end!


3 minute read

tldr; If you’re on arch, not all hope is lost when trying to deal with PDFs. pdfunite is out there for combining PDFs, Firefox is surprisingly helpful since is uses pdf.js, pdftk is there if you’re down with downloading the dependencies, convert is available for paring down scanned images, and ultimately, any software you can run on ubuntu can run on arch with a little docker.

Using dockerized Ghost with local SMTP

Getting Ghost (the open source publishing platform) working with local SMTP


2 minute read

When handling mail for a ghost instance, the official recommendation of the Ghost team is to use Mailgun. Since I have email set up on the server on which I’m running Ghost, despite the fact that Mailgun offers a pretty good free tier of services, it seems pretty extraneous/unnecessary to use mailgun just to send email from my own server. Of course, this ignores the effort that it takes to set up things like postfix, dovecot, and opendkim, but I digress.

Default docker settings on arch

What happens when you don't RTFM

2 minute read

RTFM. Seriously. The Arch Wiki is seriously one of the most informative wikis I’ve ever read, and has excellent guides. If I had read it closer, I would have avoided one problem I’m about to explain below.