• 2023-06-19

    New homelab machine

    I've been meaning to share the new addition to my homelab setup for a while now but just never got around to it. It's a beast that's definitely overkill but I wanted to play around and future proof as much as possible.

    It initially started as a project to replace my old 2-bay Synology NAS. I needed an upgrade, storage wise, but I also wanted to switch to ZFS, and since Synology doesn't support ZFS I knew I'd have to build my own rig. That in turn meant I needed to figure out what I was going to install on the thing. Initially I looked at openmediavault but it didn't seem to support ZFS at the time (I don't know if this is still true). Then I looked at FreeNAS as they were going through their rebranding to TrueNAS - but I was weary about switching to FreeBSD at the time. I wanted something that I knew well (Linux) and that I can easily customize. Before you mention TrueNAS Scale (which is Linux based) it wasn't ready at the time1 and I was hesitant about all the cruft that comes pre-installed with it (my main issue with Synology). I guess I wanted to install and configure stuff my way when I need it.

    Read more…

    homelab nixos

  • 2021-12-09

    How I do backups

    Backups are important! I don't just mean for production environments either - you should back up your laptop regularly and in an automated fashion.

    I've started doing regular backups of my machines after suffering 2 consecutive drive failures with one of my laptops. After something like that (which BTW never happened since XD) you kind of realize that backups are not just a nice thing to have, but a hard requirement. In this blog post I'll outline how I've set up my on-site backup solution.

    Read more…

    backups haskell linux

  • 2019-05-12

    Haskell Showroom: Switching between different AWS accounts

    In my previous post I talked about denv and how I switch between different Kubernetes clusters.

    I also talked about the importance of being explicit about which environment you're currently working on, easily switching between and deactivating an environment so that we don't run accidental commands in the wrong context.

    Continuing this series, in this post I will talk about how to effectively switch between different AWS accounts.

    Read more…

    aws denv devops functional programming haskell haskell showroom open source

  • 2019-01-14

    Haskell Showroom: How to switch between multiple kubernetes clusters and namespaces

    A while ago I decided that I was done writing anything in bash. I just won't do it anymore! Instead I've started writing everything, even the smallest of tools, in Haskell.

    I just don't think it's possible to write good and maintainable software with bash, no matter how simple the tool might be. In my opinion the main benefit with bash is that it's so easy to distribute to end users. There's no special installation or configuration, you just download a script and run it. With haskell I'm aiming towards distributing statically linked binaries (although in simple cases dynamically linked binaries work just fine as well).1

    This series of posts titled "Haskell Showroom" are my attempt at showcasing what Haskell can be used for. It's an attempt to answer the question I get asked a lot:

    "What is Haskell a good fit for?"

    Haskell has a very good reputation when it comes to writing compilers but it's a general purpose programming language and it really can be used for all sorts of things. I mainly use it for writing web apps and CLI tools.

    In the first post in this series I will talk about my tool called denv, which is a tool to help me "manage environments". While it helps me manage (and switch between) various environments, in this post I will focus on how it helps with switching between multiple kubernetes clusters in a sane and simple way.

    Read more…

    clusters denv devops functional programming haskell haskell showroom kubectl kubernetes open source