inessential by Brent Simmons

There’s an unofficial Seattle Xcoders this Thursday at the Cyclops in Belltown. I plan to get there around 6 pm.

We’re always in back, next to the bar but technically in the restaurant section. Anyone is welcome — you don’t have to be a coder! We regularly have designers, testers, support people, product managers, and so on.

Heck, even if you’re a fan, you should come. Should be a beautiful night to hang out with some fine folks.

I was happy to read that Unread 1.9.3 now handles untitled posts better. Very cool.

On the Omni blog I wrote up how we do The Omni Show.

The post explains my approach to marketing, unchanged over the decades:

I don’t have some grand marketing philosophy, other than 1) make great apps, and 2) look out and let other people look in.

Now I’m in a Pickle with this Web Stuff

To publish to this blog, I run a little web server on my Mac that implements the MetaWeblog API, which then renders this blog and rsyncs it to the server. (This way I can write using MarsEdit.)

What I’d rather do: run that little web server on the actual server, and do the static-site generation there. That way I can post from my iPhone and iPad, not just from my Mac.

But… here’s where web deployment gets tricky. I’m on an inexpensive shared host plan at DreamHost. The machine is running an older version of Ruby that’s incompatible with my scripts.

I could use RVM and Bundler, I guess, to use the version of Ruby I want to and to install the gems I need. (It’s just a few, but it’s more than zero.)

That is, if I could figure out how to use this stuff and get it installed on the server. Looks like something I could spend weeks doing (remember that my hobby coding is limited to nights and weekends).

Alternately, I could get an inexpensive VPS from one of the various providers and set things up there. That might be easier — maybe I could skip RVM and Bundler and just install the things I want to use in the old-fashioned way.

But then I have to deal with a bunch of other things myself, including setting up Apache or Nginx. All the things DreamHost does for me automatically I’ll have to handle myself. That doesn’t sound like fun at all.

I totally don’t know what to do. It’s not my plan to become a Ruby deployment expert or to be on the hook for running a server all the time. I’ve done way too much of that kind of thing for one lifetime already, and I’ve mostly been glad to be out of it.

What surprises me is that in 2018 it still requires so much work just to get a CGI script running on a server. It should be easier.

Laura Savino explains the difference between optimal compiling and compiling with optimizations — and which Swift flags mean what.

On the blues harp:

A diatonic harmonica is designed to ease playing in one diatonic scale…

Blues harp subverts the intention of this design with what is “perhaps the most striking example in all music of a thoroughly idiomatic technique that flatly contradicts everything that the instrument was designed for.”

Jason Kottke reminds us that blogging is most certainly not dead, and that there are great blogs out there.

My only objection is the use of the word “dead” to apply to things that aren’t alive. Even when you’re saying that something is not dead.

I’ve done it myself. It’s shorthand, yes, but it’s a broad binary take when something more nuanced and true would be warranted.

The View-Source Web

A line in Frank Chimero’s article Everything Easy Is Hard Again, published a couple months ago, has stuck with me:

That breaks my heart, because so much of my start on the web came from being able to see and easily make sense of any site I’d visit. I had view source, but each year that goes by, it becomes less and less helpful as a way to investigate other people’s work.

One of the ironies of this is that HTML5 makes it easier than ever to make readable, simple HTML. I especially like two things:

  1. Quotes for attribute values are optional (when there are no spaces), and
  2. There are semantic tags for things where before you had to guess at the author’s intention. We have header, main, nav, article, and similar now.

I realized that this blog — since it doesn’t use cookies or JavaScript, since the layout is as straightforward as can be — would make a good personal test case. How easy-to-read can I make the HTML?

So I adopted the semantic HTML5 tags, simplified a few things, and now the source is as easy to read as any HTML I’ve ever written.

Lesson learned: the discoverable and understandable web is still do-able — it’s there waiting to be discovered. It just needs some commitment from the people who make websites.

Colin Devroe:

History belongs to those willing to hit publish.

Steven Aquino, in Giving Tweetbot a More Accessible Design, writes that Twitter’s official client for iOS does a good job with accessibility:

The UI design is much higher contrast — Twitter for iOS even acknowledges when you have the system’s Increase Contrast setting enabled, as I do. And, crucially, the official client natively supports alt-text, which allows users to append image descriptions for the blind and low vision before tweeting. now supports podcasting. Wow. Manton is busy.

I interviewed Aaron Bendickson — Omni sysadmin, pinball wizard, Very Patient Man Who Loves His People and Isn’t Bothered At All Ever By All My Incessant Questions — for the latest episode of The Omni Show.

Jean MacDonald: A Guide to For People Who Have A Love/Hate Relationship With Twitter., an old blogging community, is being relaunched via Kickstarter.

Blast from the past, sure, but we can make new things by borrowing from the past.

I’ll be hosting The Omni Show Live at a conference right next to WWDC. Can’t wait!

Evergreen Status

Things have slowed down for Evergreen — but only temporarily.

I had to spend some time turning 50 years old, which was ridiculously good fun. (One day I hope my 11-year-old nephew and I finish the cover of “Smells Like Teen Spirit” we were working on!)

And… my nine-year-old blogging system needed an update, and I just couldn’t stand it anymore, so I rewrote it. It’s nearly finished now — finished enough that I can post to my blog again, at least.

And then I realized that I had kind of a mess with Evergreen and Frontier frameworks. I was thinking about how I wanted Frontier’s hierarchical key-value database (which I haven’t written yet) in Evergreen — and so, obviously, they should share this framework. And, well, there are a bunch of frameworks they should share.

So I started work on converting over to Git submodules, so that they can share frameworks, and so the frameworks can live in their own separate repositories. Which of course also meant learning how Git submodules work in the first place.

And it turns out that Frontier doesn’t build right now, and needs to be updated for Swift 4. But it needs to build before I can tell if I’ve got frameworks-as-submodules set up there correctly.

Anyway — long story short — there’s finishing the blogging system and then doing a bunch of housekeeping stuff.

In other words: it’s infrastructure week! (And will be for a few more weeks, I expect.)

And then I’ll be back to Evergreen. It should be just one more push of a few months to get it to 1.0.