Wherein the writer learns how to polish mud

There’s an arts and crafts thing in Japan and now the rest of the world that started on children’s playgrounds. At some point in the past, kids in Japan raised the traditional mud pie to a high art form - they rolled their mud into balls and figured out that with water, patience, and time, you can polish them bright and shiny. And actually pretty. It’s called dorodango - literally mud dumpling.

I used to love Ruby. The programming language. I came to it from Perl - I am a system administrator, after all - and boy howdy was Ruby a breath of fresh air at the time. Perl is…. well, it’s extremely heavy on punctuation. Lots of stuff that looks like line noise if you’re old enough to have dialed into a BBS with a modem, and it’s not all regexes that look like that.

Ruby was elegant - half the time, punctuation was optional. There’s usually several different ways into a method or function, and the creator of Ruby, Yukihiro Matsumoto (affectionately known as “Matz” by Rubyists), wanted to make a programming language that was just beautiful and a joy for the programmer.

I think he succeeded.

My first Ruby project was a bolt-on rewards points interface for an e-commerce site which happened to be a flat-file Perl cgi script at the time. Earn points, get discounts. And it was a delight. Ruby on Rails hadn’t been a thing then. I like Rails, but it does non-Ruby things sometimes.

Life is a meandering path

By training and avocation, I am, as I have stated before, a system administrator. What you’d call a Site Reliability Engineer, or DevOps Engineer, or something otherwise modern and complicated, but basically I’m the kind of engineer that drives the train. Only my trains are lots of servers. I can program, and when I do my code’s generally fairly good, but I’m extremely slow at it and even though I’ve shipped code for pay many times, I’m not really a software developer.

And in the last 20 years or so, I’ve shifted from actually doing real system administration to supporting admins and SREs and DevOps folks in a more consulting role.

So I’m way better at writing documentation and emails these days than code, although I run my home lab and have projects to keep my skills oiled up. I want a mud dumpling.

So… I decided I’m writing something in Ruby.

Introducing…. some classes

I’ve been vibe coding things and playing around with LLM tooling a lot lately - but I don’t want to vibe code this. I did brainstorm with Claude Code on what I wanted to build, and after a few prompts and responses I settled on a Dave Winer Dave Winer literally invented the blog, but made his living creating software that makes outlines in really elegant ways. He’s still at it. Go give him a visit. style Ruby-based outliner, OPML and all, with a text ui. Now - this is a big programming project for me, and I’m re-learning Ruby, so I did ask Claude to write up an implementation plan, but I really wanna get some code under my fingers. So, after a couple of hours last night with a lot of support from Google and two different AI bots (Claude and a locally-hosted Qwen3.5 that I’m kicking around), I now have two data classes. Outline and OutlineNode.

I built getters and setters, some list management methods, and I’m fairly sure the next session I’ll be able to actually get an outline built in memory.

I also learned some new terminology - I asked for strict linting (that I’m partially ignoring) and guidance for idiomatic Ruby. Like any writer or poet, it helps if you know the rules before you break them. Although I’m calling explicit returns, dammit. It just makes more sense.

I think I’ll journal what I’m learning. It’ll help it stick in my head, and if anyone’s reading this, I hope you follow along. Once I get this far enough down the road to be worth anything, I’ll post the code online, too. I’d love a review.

return self