MinimiseExpand links
    . : 0.0 : .
    . `:   :´ .
     . :; ;: ,
      ` --- ´
   Nicholas Boyd

Find me elsewhere



I’m Nicholas Boyd Isacsson (nichobi for short) and this is my homepage. The site consists of three main pages:

Since 2016 I’ve had a keen interest in functional programming, first awakened by Scala and over time also in Haskell. Most of my projects tend to be terminal-based utilities for Linux servers, motivated by a mix of solving my own problems and wanting to learn more about some new tool or framework.



Short demo of Scalarr functionality

Scalarr is a command line tool for communicating with Sonarr, written in Scala. I initially developed it to get the hang of REST APIs and IO monads, for which I made heavy use of ZIO. It features a simple command line interface, and uses (a slightly modified) TerminalImageViewer to display posters in a low-res but very cool and mostly identifiable way.



Terminal output demoing how beets-yapl converts its playlist format to M3U

beets-yapl (yaml playlist) is a plugin for the beets media manager. It was built out of frustration with the M3U playlist format, which breaks at the slightest change in filepaths. After years of fruitless searching for a better playlist format, I realised I was going to have to invent one myself. I ended up finding yaml to be an excellent starting point, with a clear and concise syntax, and from there I just needed to decide how playlist were expressed.

Leveraging beets’ powerful query engine, songs can be described as a list of fields and values, consisting of whatever metadata required to unambiguously pinpoint a single file in the library. This means you can construct your playlists by song title and artists, MusicBrainz ids, release year, or any other of beets many fields, in whatever combination you like. beets-yapl will then go through each query, and find generate an M3U playlist for each unambiguously defined track to be used in any music software. Warnings will be emitted if any query results in multiple or no results, in which case you can refine it. Should your library change in future, a call to beets-yapl will reconstruct the playlists with the updated paths.



A POSIX shell script that monitors all Chromecasts on the local network and automatically skips past any sponsored or otherwise unwanted segments of Youtube videos, using the SponsorBlock API.

It was inspired by CastBlock but rewritten from scratch to avoid some of its pitfalls, allowing for much greater performance and poll rates as well as extra features and configuration. Thanks to contributors, it will also automatically skip skippable ads and is available in a docker image.



       .   .
      /{   }\          stag beetle
     | \, ,/ |
  ,,  \ '-' /  ,,
   \  [_   _]  /         m-,{_},-m
    \_/ ‾‾‾ \_/        ,,  (   )  ,,
     _\_____/_          \_/‾---‾\_/
    / |  |  | \          _|-----|_
   /  |  |  |  \        / |  |  | \
  ´` |\  |  /| ´`      ´`|\  |  /|´`
     | '---' |           " '---' "
     "       "
         ♂                   ♀

I’ve been making ASCII art for a few years, in one ever-expanding document sorted from newest to oldest. It’s available in full on my ASCII site and if you start from the bottom you can follow my journey from its (quite ugly) beginnings. You can also browse the history of it in via the git commits.



Short demo of playing wordle

During the Wordle mania in early 2022, I wrote a minimal terminal clone of the popular daily word guessing game by powerlanguage. It uses the same daily word as the original website, so everyone gets the same word each day! (After the accquisition by the New York Times, the word list of the game has been modified several times, putting my version out of phase.)

It’s written in Haskell and was my first time using the terminal UI library brick to design a more interactive interface.



My dotfiles repo contains all my configuration files for my development environment (based on neovim), Arch Linux setup (sway, zsh & more), qutebrowser and many other programs. I don’t recommend copying it in its entirety, but feel free to poke around for inspiration!



I made this website in an attempt to combine the style of an ascii-art webpage with some more modern features of HTML and CSS to create a website that could for the most part be rendered in a terminal, yet doesn’t feel (too) antiquated. It started as a single file of handwritten HTML and CSS, but during the creation of my blog, it was generalised into a pandoc template, allowing me to generate a multitude of pages at once. You can read more about that process in my first blog post.

It’s an intentionally bare-bones static webpage, with no JavaScript or animations as I strongly believe the internet has become a worse place as a result of increasingly bloated and ad-infested sites, when the content we’re after is mostly static media.