Okay, I Guess I’m Learning Ruby

Right, so a macOS application has a ‘Help’ menu by default, but unless the developer does some complicated and poorly documented stuff, there isn’t any help. Now, I’ve found a swell tool, Middlemac, that helps make the process much simpler. However, it doesn’t work with Ruby 3, because stuff in the past. Nowadays, middleman does actually work with Ruby 3, so maybe Middlemac could be made to?

Well. I’ve managed to get fast_trie to compile, so that’s part of the process done. I’ve also pulled the source for middlemac and built it locally and that’s cool, but the tests don’t pass. The tests don’t pass because of some error being thrown down in middleman, and I haven’t found anything specific about it:

 middleman-core-4.5.1/lib/middleman-core/step_definitions/middleman_steps.rb:54
      undefined local variable or method `only_processes' for #<Object:0x0000000148f9ff08> (NameError)

So now, even if I were to find (possible, however unlikely) and fix (ha!) this problem in middleman-core, how do I install it so that middlemac uses my locally built version and not the version I installed via `gem install middleman`? I haven’t a clue.

Fortunately, since updating my laptop’s operating system to “Sequoia”, I can at last have a Ruby that works. The last time I looked into Ruby, it was an exercise in frustration just getting a development environment that worked. So, it seems that I get to spend a few months getting smart about Ruby. Well, worse things could be true, I guess.

Hey, quick question: VS Code or RubyMine?

Modern Opera – Just Say Ouch (The Handmaid’s Tale)

We went to see “The Handmaid’s Tale” at SF Opera last night. I read the novel back in … I dunno, 1988? 1989? Somewhere around there. I knew this was going to be a megadowner. Then again, it’s not like “La Bohème” is a laugh riot or anything. But here’s the thing: it’s modern, and the music and libretto were written within my children’s lifetimes. So, I guess the persons responsible had something to prove.

Continue reading “Modern Opera – Just Say Ouch (The Handmaid’s Tale)”

Maybe Don’t Do That?

Right, so I am working on a service that replaces a single part in an existing workflow. The workflow itself has been in existence for, like, 30 years and really, I’m not prepared to go down the path of explaining why the whole thing isn’t being replaced with a shiny new integrated and up-to-date system. Just accept that and move on to today’s interesting point. At the beginning of the part I’m working on, we have to go fetch some structured data from an outside source. This data is available as files, and must be transferred via ftps, with user/password authentication. Once we’ve got this data, we can slurp it into our own database, transform it, and use it for our purposes. Our service is running as a Vapor application so it can provide a nice REST API for the client software and the person using the service doesn’t have to have the database running on their desktop computer, and all the other goodness that comes from a remote service.

Continue reading “Maybe Don’t Do That?”

Webassembly: Do I Want That?

From a first glance at the Webassembly (abbreviated as WASM) site, it’s hard to tell what it’s for. A little bit of digging, though, gives me the idea that it’s a way to write an application that gets delivered to users from a web server and which runs in the browser. This is sort of like Java applets or Angular or Flutter apps. The world, apparently, needs yet another one of these things because…well, obviously, because they all suck in various ways as anyone can tell you. So why does WASM not suck? Apparently, the way that WASM is cool is that you write the code in the programming language that you actually like to use, and then there’s a compiler that will read that and output WASM. So you don’t have to burn out your brain remembering the syntax and idiosyncrasies of lots of stupid programming languages and frameworks, just a couple.

Continue reading “Webassembly: Do I Want That?”

Music Software: Ensemble

Ensemble is billed by its creators as music score software specifically intended to make piping and drum scores for pipe bands. It claims to be able to play the scores so you can hear what the arrangement sounds like. It even claims to be able to import scores from other music software packages. It and all the score data reside in the cloud1 so you can share the scores with your whole band, or with your students, et cetera.

Continue reading “Music Software: Ensemble”

Cloud Development Environment (CDE)

This morning I had to restart Docker Desktop and the marketplace tab had a notification. There was a new extension available, “OpenVS Code for the Web.” So then I had to go find out what that even means and why I ought to want to install it. The answer is that I don’t.

It seems that all the exciting tool development these days is happening around what one company is calling “Cloud Development Environments.” The general idea is that the source repository sits on a server somewhere, and then there’s another server, the CDE server, that knows about the source repository and maybe all the other services you need in order to work on that source repository (a database, maybe an artifact repository, maybe a build server, probably some testing pipelines, whatever). Then, instead of pulling the source locally and firing up their own instance of whatever IDE they like to use, a developer will instead fire up a web browser and connect to that CDE server and they’ll be instantly configured and working on the project inside the browser window.

This is the thin client model that we’ve seen before. Things that lead to thin client are, generally:

  • really, really cheap network I/O
  • really expensive local storage
  • highly paranoid and proprietary engineering management who don’t want individual contributors to take any code out of the organization’s grasp

This is hardly an exhaustive list, but from here it gets less general. For instance, at Netflix, I had a Windows desktop and a MacOS laptop and, when I worked remotely, rather than run my dev instance locally and tunnel its connection to the dev database through the VPN and keep mentally current with all the stupid configurations necessary for both operating systems, I just used remote desktop software to use my laptop as a thin client for my desktop computer. It reduced my mental load and kept me productive.

Still, I am no longer in a situation where thin client makes a lot of sense. Well, sort of. I mean, I develop services that run in Docker containers on my laptop, so the shape of my environment looks kind of like the server side of a CDE. It’s not true, though, that I need to bring new employees onboard, and it’s not as though adding yet another piece of software to my system will reduce my mental load. Meanwhile, out here in the woods network I/O is the opposite of cheap. So, no, I don’t need to get smart or excited about whatever CDE gets thrown up in front of me.

Another Really Cool Thing I’m Not Gonna Do

I just read an article on Ars Technica, reviewing a new telescope. Super cool. Well written and, while I was reading it, nearly convinced me to buy a telescope. We live out in the woods. Often, when I take the dogs out at night, I look up and see stars and planets, and frequently even satellites zooming past. For five minutes in a row, I thought I might enjoy having a digital telescope to take pictures of Mars, or Jupiter. That would be cool.

The activity is cool and the process sounds kind of neat but, and this is the part that’s easy to forget as one reads the story, what thing are you doing right now that you are willing to stop doing in order to start doing this new thing? Sleep is not optional.

What Did You Think It Did?

This morning I read an article with the headline, “Novel attack against virtually all VPN apps neuters their entire purpose.” This seemed really alarming and, to be sure, the details are pretty bad. But as I read through the article I was thinking about what I expect from a VPN, and how the attack would affect those expectations, and, maybe I’ve been thinking about VPNs wrong all this time?

Continue reading “What Did You Think It Did?”

nix, lix, and Reproducibility

I’ve just spent the morning reading through some documentation and tutorials for nix, trying to figure out what it is, whether it’s cool, and whether I should be using it. Also, trying to figure out what this lix thing is. And of course, this is a dependency chain — I started out at the last element and, before I could answer that, I had to investigate the one before it, and so on. Why did I list it out this way? Because investigation is a stack, and I am reading out my stack by popping elements off it.

Continue reading “nix, lix, and Reproducibility”