Matthew Lang avatar

Alice Girard Guittard reminds us of the intentional internet and why it’s better for us.

You didn’t really have one big app that you could open and order it to entertain you. Instead, you had a few dozen of bookmarks to websites, each with a specific idea in mind. A site for video game news, that one website with lots of tutorials, a blog about anime that didn’t update often enough, a wiki about a TV show from the 90s…

Attention is all you have by Alice Girard Guittard

A reminder that it’s still there. You just have to go looking for it.

Laurel: a weekend Hanami project

Over the weekend, I wanted to build something with Hanami. I wanted to build something with Hanami more as a learning exercise than anything else. I had a bookmark manager written in Rails that has been languishing on the side, so I thought I would build something a bit more functional using Hanami. I called it Laurel.

Bookmarks usually build up for me. I wanted to build a way to resurface bookmarks so they can be acted on. It’s something I didn’t have in the previous bookmark application. I also didn’t want to be distracted by using background processing. Any methods that calculate ranks or anything else like that will be handled during the request.

This isn’t my first Hanami project. I built a couple of smaller applications a couple of years ago, but I never kept them because they were just a way to see what Hanami can do.

Getting the project started was familiar. Typing bundle exec hanami new is almost the same as kicking off a new Rails project. Once I had a blank application set up, I started looking into the code. It has similarities to Rails, but also differences.

I’m not going to delve into the experience of using Hanami or compare it to Rails, but I enjoyed using it, and the developer experience is good.

As for the project’s goal, I eventually finished it on Sunday night. It includes the following features:

  • Capture: add/edit, tag, import
  • Curate: the digest page, Elo comparisons, evergreen marking, archiving, snoozing or ignoring bookmarks
  • Decay: the HN-style ranking score

Bookmark digest interface showing a priority comparison between two articles and a list of saved bookmarks with action buttons.

The digest page is the real workhorse of the application. Here you can decide which of the two bookmarks is more important and also action other bookmarks that appear on this page. Being able to action bookmarks over time with the archive, snooze or ignore buttons is more helpful to me and actively curates the collection.

The difficult part was deploying the application to Hatchbox. I originally had an error in the application that appeared only in the production environment, not the development environment. I eventually resolved this issue, but I still seem to have a deployment issue: it requires a restart after deployment, and I’m sure this is a mistake on my part when setting up the application.

I’m going to definitely keep using this, and over the next few weekends, I’ll be adding more features and hopefully resolving that deployment issue on Hatchbox as well.

I promised a write-up of my weekend project tonight, but between wrestling with Hatchbox and almost seeing the Packers crumble, I think I’ll pass for now. Project’s going well though — just hitting some snags deploying to production.

The Packers head to MetLife tomorrow, aiming to erase some of the damage from last week’s loss to the Vikings. Bad penalties, a stuffed sneak and a fourth-quarter collapse. A nightmare start to the season. The Jets are beatable. The question is whether GB can close the door this time.

Bookmarks that come back

I started working on a new bookmark manager tonight using the Hanakai toolset. It comprises the Hanami framework, Dry validation library and the Rom persistence toolkit.

A bookmark digest interface showing an Elo-ranked comparison of two bookmarks with archive, snooze, and ignore actions below each entry.

This little project has two goals. The first is to learn Hanakai. Ruby on Rails is a reliable web framework, and I’ve used it for over 15 years, but I want to try something different. The second is to try something different with a bookmark manager. Instead of just saving bookmarks and forgetting about them, I’m going to try to build a bookmark manager that resurfaces bookmarks over time. It will do this on a schedule and based on bookmarks that fit the criteria for being resurfaced. The idea is that, over time, you’ll weed out anything that isn’t relevant and be left with only the bookmarks that matter.

I initially envisioned this as an email workflow, but I’m going to keep it simple and display the decision in the web app. Email would have meant building the sending infrastructure, but I didn’t want to deal with that this weekend.

The fundamentals are already in place. I will be dipping in and out of this over the weekend with a view to having something to deploy on Sunday night. The final decision screen will be for me only, but I’ll follow this blog post with more information on how I got on.

Jen and I finished season 2 of Lioness tonight. A great season. Just enjoyable television. I think we’re going to catch up with Slow Horses tomorrow.

I’m trying to work out a way of keeping some of my notes in Obisidian in sync with a section of my blog. There is a benefit to doing this, but the content is slightly different for each. For the moment, I’ll manually pull Obsidian files into my blog, but in the future I hope to automate this.

Not feeling great tonight, so I watched a couple of episodes of Lioness (season 2) with Jen, then spent a half hour adding themes to my blog. Currently sporting the Maple & Rust palette, with the colours on the colophon page. Each time the theme changes, the colophon page will update as well.

Bookmarks with a twist

I’ve run my own bookmarking app for a few months now, and it has the same problem as every bookmark manager I’ve used. Nothing ever resurfaces. Save the bookmark, forget the bookmark.

That’s really two problems in one. First, bookmarks aren’t all the same. Some are evergreen and worth keeping forever. Others, like anything about a web framework, are stale within a year or two. I end up with two collections tangled into one. Second, managing bookmarks at scale is a chore. Bulk-editing helps — filter, select, update — but it doesn’t solve the deeper issue. I never revisit anything on purpose.

Over the weekend I sketched an app that tries to fix that with a daily email. Each one asks a simple question about these bookmarks. Which still matters? Whatever you pick gets a new lease of life. Whatever you skip goes back into the pool for another chance later. Miss a bookmark enough times in a row, and it’s archived for good — no more resurfacing, no more guilt.

I’ve also been itching for an excuse to build something real with the Hanakai toolset, and this feels like the right fit. I have no idea if it’ll become an actual product, but it’s a fun problem to build, and it should get me using my own bookmarks again.