Sean

Weekly Brain Dump #8

- 900 words

At a Glance

Poros

When I first wrote plain old Ruby object storage (poros) the YAML Ain’t Markup Language (YAML) parser in Ruby didn’t protect you against loading arbitrary classes. Now it stops you as that’s obviously a very dangerous default. I didn’t want to just allow everything - and I’m not sure it’s even possible - so I instead made it configurable.

Poros::Config.configure do |config|
  config[:permitted_classes] << Date
end

I considered making it a per-model attribute but didn’t want to spend too long on this as it’s mostly just a fun project that I needed to update for my expense tracker I’m building for myself.

This does mean I got to do a release after 7 years of inactivity! I was surprised that the gem “just worked” on Ruby 4.0 without modification. The only difference was the safe loading.

Expense Tracker

Over the weekend I started a new project to help track my expenses. It’s fairly simple and has a few goals.

  1. Load my transactions from a comma separated values (CSV) files
  2. Let me categorise transactions
  3. Work on mobile
  4. Break down my spending in an understandable way

I’ve built something like this in the past and built it on Vue.JS. This time I wanted to build it with as little JavaScript as possible. This was just a fun extra challenge for myself.

I decided to use Sinatra as I’m used to it and like it for small projects.

I got a large chunk of the project built-in 1.5 days by limiting my testing to only parts of the system I didn’t have high confidence in. So far this has meant only my importing class. This has allowed me to move very fast and all the bugs I’ve had have been minor.

I’m considering releasing it for free if I’m happy once I consider it “done”.

Kiwi.nvim

My coworker was showing me their Org Mode setup and it make me want to get off my arse and get my wiki situation sorted again. I used to use VimWiki but wanted something lighter and more geared towards Markdown. I found kiwi.nvim in my search for a solution. I’m liking it so far. It checks most of my boxes. The only two things I am missing are:

  1. Lists continuing on newline
  2. Tables formatting nicely

I solved the issue for tables with the help of this blog and I turned it into this keybind.

vim.keymap.set(
  'v', '<S-t>',
  ":!column -t -s '|' -o '|'<CR>",
  { desc = 'Format a markdown table' }
)

It’s not perfect but it does the trick. Also, don’t be surprised if I’ve forked kiwi.nvim or even rewritten it by next week. It’s only a couple hundred lines and I’m not chuffed with the code quality.

Taylor Monthly - January 2026

I wrote up and published my first Taylor Monthly and I’m fairly happy with it. I spent all of Saturday morning writing it up. Thankfully I had done a lot the prep work because most of it is taken from my Weekly Brain Dumps and tweaked slightly to read better for there.

The biggest thing for me though was show how much I had actually done on Taylor during the month. It’s surprising that I got this much done on top of a full time job and - honestly - way too many hobbies. It’s no surprise that this past week I’ve been taking it a bit slower and trying to detach from my computer.

In fact, these Weekly Brain Dumps have actually highlighted to me that I do a lot of programming out of work. I would like to start introducing more analog hobbies into my life again. I used to have a lot of them as a kid and there are some I’d like to give more time too. Maybe I’ll make an effort to document them here too? I guess this doesn’t have to be a technical blog, I’ve just kind of imposed that limit on myself subconsciously.

Mecha Comet: This might be the most perfectly designed handheld Linux computer, we’ll see if it lives up to the hype.

NES.css: This was nearly the CSS framework I used for my website.

Kemal Website: This is the Sinatra of Crystal and I have been meaning to build something with it.

Lichendust Blog: An interesting blog I found that also does an “interesting links” section!

CapRover Deploying with the Wrong Platform: How I solved my CapRover issue with the help of the developer.

gem.coop update #4: cooldowns beta: An awesome idea to hold back updates for 2 days. This has been shown to minimise most compromised packages reaching you nearly entirely. I’ll be switching my projects to this.

The cost of running OpenBenches.org: This does a great job of showing just what it takes to run a site like this.