Reviving might be a bit of an over statement. The project I “revived” is still actively supported just under a different name.

Last week, I pulled down an old Ruby on Rails project, Typo[1] (now known as Publify[2]), widely regarded as the first Ruby on Rails blogging platform and one of the oldest open-source projects built on Rails. I forked it from Emmanuel Auffray[3], who had version 6.1.0 on GitHub, and quickly realized just how old the codebase was—the project originally shipped in January 2005, right at the dawn of Rails itself. Its last meaningful development activity was over a decade ago.

I had a simple task in mind: see if I could use Claude Opus 4.5 to get it running on Rails 7 and Ruby 3.4.7, even though it originally shipped with Rails 3.0.10 and Ruby 1.9.3. I told Claude not to ask me for permission and to just go to work upgrading what it needed using the Claude CLI. Over the holidays, Anthropic doubled Claude’s usage window, which meant I could let Claude run uninterrupted for hours at a time.

Claude ran for nearly 18 hours straight, debugging, attempting fixes, failing, retrying, and debugging again. By the end of the hackathon, I had a running Typo instance with many failing tests and a truly Frankenstein backend. Once I had time to review the code, I realized what had happened: Claude had stitched together a hybrid of Rails 3 and Rails 7, with a compatibility layer to keep old components alive under a modern framework—no wonder the tests were failing. Anyone who has lived through a major Rails upgrade[4]) will recognize this pattern.

I had to give Claude additional instructions to remove deprecated code, rewrite things the right (Rails) way, and—while we were at it—upgrade everything again to Rails 8. I wasn’t able to oneshot the application to Rails 8, but by iterating together—error by error—we eventually got there. Once Typo was functional again and core features worked—creating articles, posting comments, managing categories and tags, and loading sidebar plugins—I decided it was time to modernize the user experience. I removed the legacy visual and HTML editors and replaced them with CodeMirror, a proper Markdown editor (CodeMirror[5]). I added Active Storage[6] so I could use S3 for uploads, replaced legacy JavaScript with Turbo and Stimulus via (Hotwire[7]), and experimented with new sidebar plugins for Flickr, Spotify, and X—with mixed results. I also removed a bunch of themes that I was not going to use. When I used Typo for the first time 12 years ago, I was a big fan of.the Scribbish theme by packagethief. I used that as my base template and then leveraged styles I like from different places, mostly based on LaTex[8] templates I have used in the past. Oh, and on posts where I write a lot I can indent paragraphs! I know that seems trivial[9].

On the content side, I built new Typo textfilters for generating PDF slideshows from Markdown, added beautiful code syntax highlighting using Prism.js[10], and implemented automatic link referencing for articles. After all of that, Claude summarized the work we did:

In just 7 days and 16 commits, this modernization effort transformed a decade-old Rails 3 application into a modern Rails 8 application with:

  • 5 major Rails version upgrades
  • 2 major Ruby version upgrades
  • 54% more test coverage
  • 29% fewer files, resulting in a leaner codebase
  • A modern CI/CD pipeline using GitHub Actions
  • Docker deployment support
  • A fully modern JavaScript architecture

The repository—now totaling 3,740 commits since January 2005—has been successfully brought up to modern standards while preserving its original purpose as a blogging platform.

Published on 04 Jan 2026 at 08:06PM under , . Tags ,