Skill Issue logo

Skill Issue

Subscribe
Archives
September 12, 2025

Gone Surfing

If you’re reading around the time it went out, I’m probably in the ocean, surfing. I always sneak in one last surfing/camping trip right after Labour Day. The closest surf town is inundated with tourists during the summer, and Pacific swell is pretty wimpy outside of fall/winter anyway. It’s much more fun to get out when the tourism is winding down, the kids are back in school, and the swell starts to pick up.

I got lucky this time too. Today the island is getting hit with the highest quality swell we've seen in many months. (It's about 6' at 13-14s for the surfers out there.)


In my spare time I've been working on my perpetual project, my personal site. This is part of the aforementioned effort to build a new, interactive Ruby guide. The new version of site uses SQLite, because why not. Most blogs should probably use SQLite. When 99% of the requests to your site are just doing database reads, it's perfect.

This version of the site is also a pure Rack app, with the most advanced request router in the world. Check this thing out:

module Jardo
  class Router
    def initialize(*actions, default:)
      @actions = actions
      @default = default
    end

    def call(env)
      @actions.each do |action|
        next unless action.match?(env)

        return action.call(env)
      end

      @default.call(env)
    end
  end
end

Yep, it just looks through all the possible actions and asks each one if it wants to serve the request. For small app, it's totally adequate. You initialize it with a bunch of actions, like this:

Jardo::Router.new(
  HomeAction,
  PostAction,
  # More Actions...
  default: NotFoundAction
 )

The action class does some nice stuff under the hood to make building new actions easy, but I'll go over that in a future Skill Issue. I hope this serves as a reminder that you don't need to make simple things complicated. 🙂


I had Justin Searls on the podcast the other day. We had an interesting discussion about an under-discussed topic: how we approach problems when we're in the trenches writing code.

We touched on a few mechanisms and heuristics we use, but I'm curious to hear from others. Reply to this email and let me know how you decide how to tackle a programming problem or task. I'd love to highlight some in a future issue.

Fear-Driven Everything (with Justin Searls) - Dead Code | Acast

A podcast about how the software industry got this way


When Goblinsmoker's new record popped up in my feed, my first reaction was, "who the hell is Goblinsmoker?" It came as no surprise that they are a heavy-as-fuck stoner doom band from the UK. The King's Eternal Throne delivers the kind of vitriolic, heavy doom that fans of Conan will find familiar. Give it a spin.

GoblinsmokerThe King's Eternal Throne
Don't miss what's next. Subscribe to Skill Issue:
https://ruby.social… Bluesky https://jardo.dev/ GitHub X LinkedIn
Powered by Buttondown, the easiest way to start and grow your newsletter.