Wow, I've completely failed to do any long-form posting lately. Mastodon is a seductively easy outlet, encouraging quick thoughts (and occasionally rewarding them highly with boosts and faves) without the effort of serious writing. I'm kind of disappointed in myself in principle, but not sure whether it's likely to change.
That said, it's been A Lot recently, so let's catch up on some stuff. This is going to be a bit of a long wander across several topics; hopefully it won't be entirely boring.
Work
As promised, I took three months off for a sabbatical, before starting to look for a new position at the beginning April. I did talk to a few companies, but in practice, it turned out to be all about Networking, as usual.
When I say "it's all about Networking", mind, I don't mean spending all my time pressing the flesh at cocktail parties. Real-world networking mostly consists of being good to the people around you, helping them out when you can, and being pretty clear about when you're looking.
In practice, I got Just Plain Lucky this time. Right around the time I started looking, I got a ping out of the blue from Carlos, asking, "Hey, Justin -- would you happen to be in the market?" After a response of, "Wow, good timing", we got to talking.
To explain this, I have to step back half a dozen years. From around (it's complicated) 2017 through 2021, I was working for Rally Health, primarily on a project called Rally Recover. Recover was great -- a product I was really proud of, to help surgical teams keep in touch with patients post-op. There was a lot to it, but the backend was mainly three of us: me (the Scala expert), Steve (the Ruby on Rails expert), and Carlos (not quite as expert in either, but solidly good at both, so he acted as the essential glue).
Sadly, Recover got cancelled -- great though it was, Optum (our Corporate Overlords) weren't figuring out how to sell it effectively. So our team got shunted onto A Project Of Which We Will Not Speak (suffice it to say, it was a political clusterfuck, and largely collapsed after six months), and thence over to start building a new product called OnePass.
I laid down a good deal of the technical foundation of OnePass (built in my preferred stack: Scala, using the Typelevel functional-programming framework), and was having fun on it when The Merger happened.
Like I said, Rally had been a wholly-owned subsidiary of Optum (which itself is part of the UHG empire). We'd known for most of a year that Optum had decided to absorb Rally, and a lot of folks were nervous about that, but I'd initially blithely said, "We build all of the best software in Optum -- surely they won't kill the goose that lays the golden eggs, right?"
But some months later, one or two senior folks who I particularly trusted abruptly left, so I started to get nervous. I wound up interviewing at Troops while on vacation in Hawaii in late 2021; by the time I got home, the merger had happened, and I survived precisely one day at Optum before noping out, giving notice and joining Troops.
Anyway...
After four years "incubating" at Optum, they apparently decided that OnePass was going to thrive better as an independent company, so they were spinning it off. Carlos knew that I don't enjoy working at a corporate giant like Optum, but a scrappy startup like OnePass is becoming is right up my alley.
So basically, I'm boomeranging back to my old project, even through it's a completely new company. I know that I like the tech stack, and I can probably bring a lot to the table -- it seems like the right move.
My first day is tomorrow, so I'm preparing for the roller-coaster now...
Querki
During the sabbatical, and even more during the subsequent months while negotiating things with OnePass (we agreed to wait until the company was fully established before starting the process, so it's taken a while), I've been finally making progress on Querki.
Reminder for those who haven't been following it forever: Querki is my little garage startup, which I've been working on (with a lot of help from Aaron, who also owns a chunk of it) for a dozen or so years now. It's a hybrid between a wiki and a database, designed for "small data" problems -- enabling individuals and small communities to keep track of and organize stuff.
Fairly early on, I made a decision that seemed like a good idea at the time. Querki was built using a product called Conductr -- an early "containerization" system that was optimized for the Scala/Akka architecture that Querki is built on. It seemed like a good fit, and as a result I wound up as the smallest customer for Lightbend, the consultancy behind Scala, Akka, and Conductr: we had a handshake agreement that I would alpha-test Conductr and help them work out the kinks.
But things change over time. Lightbend decided not to be the primary supporter of the Scala 3 language (which is instead managed by the Scala Center), and has instead doubled down on Akka; indeed, they changed the company name to Akka recently.
And Conductr? It just kind of quietly died. It was a clever idea, but Kubernetes sucked all the air out of the containerization room, and there was no point in competing with it.
Querki was, AFAIK, the only third-party product ever built using Conductr (that is, the only one not built by Lightbend). And by the time Conductr was clearly dead, I had a dayjob, and didn't have time to extract it from Querki's architecture.
But there was a huge problem: Conductr was invasive. Much of its power came from the fact that it was actually laced through the application itself, not just wrapped around it. And it was built using Scala and Akka.
Which meant that Querki was bound to the specific versions of Scala and Akka that Conductr had been built with. And Conductr was dead.
So Querki has been stuck on an increasingly antique platform for the past ten years. I was able to make some progress on features during that time, but have been more and more stuck because of that.
So the sabbatical was spent learning enough about AWS to figure out how to do the things that Conductr had been providing, and then "ripping out the tablecloth" -- rewriting Querki so that one day it was built on the Conductr architecture, and the next day it wasn't.
Since then, I've been speed-running a decade of ecosystem evolution: step-by-step upgrading Scala, Akka, Play, and dependencies. That's not yet done (indeed, there's quite a lot to do yet), but making progress has been extremely satisfying, and I'm probably halfway there.
(The next step is upgrading from Cassandra 3 to 5, because Querki's Cassandra host will be removing support for 3 late this year. Thank heavens I've gotten as far as I have, or we'd be in serious trouble come November.)
The plan is to get it all up to Reasonably Modern -- probably not Scala 3 (which is a big jump), but modern versions of Play and Akka (or more likely Pekko, the open-source fork that got set up when Akka locked down its license). Then I'm going to fix a few horrible long-standing bugs (eg, Eric discovered the hard way that Querki Spaces start having serious trouble loading if their history becomes very long), and make some long-desired architectural changes (in particular, rewrite the heart of the QL engine to use cats-effect and fs2). And then I can figure out what comes next.
Typelevel
I've mentioned before that I'm on the Steering Committee for Typelevel, the above-mentioned organization that OnePass (and many other companies) is built on. Suffice it to say, there are some changes coming there: it's not all public yet, but I expect my responsibilities to grow in the coming months. I've been avoiding taking on additional responsibilities elsewhere as a result.
SCA
That said, it's been a busy year for me in the SCA, especially for my two offices.
Chatelaine
I've been Baronial Chatelaine (the new-people officer) for just about three years now. I mostly enjoy the work, but I've been getting a little toasty, and was starting to get quite worried by the beginning of the year: I wanted to hand it off, but had no idea to whom.
Once again, I got super-lucky. Within days of each other, around the time of Birka, Thorfinn and Revna -- both of them young, energetic fighters -- asked whether I was looking for a deputy. I gratefully said absolutely, and suddenly found myself heading a Chatelaine team, which is a vastly healthier state of affairs.
Both of them have been very helpful, and Thorfinn in particular has been a force of nature, doing much of the work to drive the new Baronial Discord, working with the Webminister to improve our site, and generally help new folks. So I'm happily trading places with him around now (we haven't really worried about exact dates, but Pennsic is my three-year anniversary), with him stepping up as Chatelaine and me stepping down to Deputy. I expect that to continue to work well.
Dance
One of the questions I kept hearing from new folks was, "Do you have a dance practice? I'd like to try dancing!" And of course, we allowed Dance Practice to go quiet a year or two ago, so I didn't have anything to tell them.
So early this year, I basically declared that I was coming back as Dancemaster, but changing it up a bunch.
Aaradyn managed to get us the "friends and family" discount for the church she works at, which eased the way a lot -- having a nice site within walking distance of Harvard Square made it much easier to get things going again.
Since we've had difficult sustaining a frequent practice in recent years, I decided to scale it back to monthly for the time being. That allows each Dance Practice to be a bit special, and lets me lean into the publicity harder.
And I decided, entirely on my own recognizance, to start running it using the gender-free "Larks and Robins" protocol. That replaces "Lords and Ladies" -- it's mnemonically brilliant, and I've been using it with great success for the Arisia Renaissance Ball for the past couple of years. The younger dance community in this area are largely used to it, and I'd very much like to bring in some of those folks, so I decided that we're going to follow along.
It's going reasonably well. We're not getting the 30-40 dancers we had in our heyday (much less the 150 who show up for the BIDA contradance in Porter Square), but we're generally getting a decent critical mass, including a fair number of new folks. I'm taking the summmer off, but plan to continue in the fall -- it's being a good deal of fun.
General
Suffice it to say, I'm trying to keep my head on straight during these "world on fire" times. It's not easy, finding the right balance of staying engaged while not letting myself fall into fear or depression, but so far, so okay.
I miss y'all! I'm trying to stay social, but opportunities don't present themselves enough. I hope to see folks more: we need each other, if we're going to stay sane through all this.
As always, comments and questions on any of this highly welcome...