March 26, 2020

Let us not forget

The sun comes up,
and the world still turns.

There is so much bad going on,
so much uncertainty.
For many of us,
the right thing to do is to just stay put,
fingers crossed,
and not get in physical touch with others.

That does not mean that you shoult not notice good things.
Perhaps we should even more than usual?
Beautiful, sunny spring days.
The calm I feel has settled with fewer people out and about.
There could be even more of a storm coming any minute, but if so I have even more reason to appreciate the calm while it lasts.

I have been working from home for two full weeks and have been away from the office for another few days, but I still truly enjoy working from home. Somehow, we managed to get ourselves pretty well set up for everyone working remotely well before this situation became a thing. Now, I wonder if the office will remain even emptier on average once this finally passes.

This situation makes clear just how large my hobbit tendencies are. As long as I have a decent connection to the internet and am allowed to get some fresh air, I feel like this is a very gentle restriction of my life indeed.

Which is a big damn luxury of a situation to be in.

But I would do more harm if I did not appreciate the details I notice among all the clearly bad things.

March 23, 2020

Books I have read

Books and other literature I have read, in, somewhat uncertain, reverse chronological order. The list starts from the summer of 2008, and my main purpose with it is to be able to see what I have actually been reading. I do feel that I read many quite good books, but I never seem to be able to recall what I have recently read when asked for recommendations.

March 09, 2020

Post-podcast Monday

I spent the weekend in the distant north, recording episode 200 of Björeman // Melin, digging through a lot of cool gadgets, and having a few drinks in the process. The episode is epic in length, but all edited and ready. Unfortunately, the whole infrastructure powering the podcast kind of collapsed onto itself the day after recording (which on the other hand went off without a hitch), so actual publication might be a while longer. You should have been there as it happened.

I got a nice little retro memory with me back home:

Mac OS X 10.2 box Mac OS X 10.2 box

Mac OS X 10.2 "Jaguar" was the first version of OS X that entered my family, my first taste of that lickable Aqua interface, the starting point of the thought that maybe, just maybe, my computing life would not be all Windows PC:s.

Personally, I could have lived with that furry X being the logo of the OS for a lot longer. Panther was better at everything, but the X was all metal and business.

Side view of the Mac OS X 10.2 box Side view of the Mac OS X 10.2 box

Remember when Java was a feature?

If not, you did not miss out.

(I was also forced into accepting a Mighty mouse. I will use it to scare future generations.)

Really, I am still recovering from the weekend. Travel and good times take their toll, but I also managed to get a new minor version of Podcast Chapters out, fixing a crash bug which made affected users unable to save their podcast. There is more work to do around that code (having to do with the reading and writing of comments), but not crashing feels like a good thing to do while I make the code as nice as I want it to be.

Once again, I have been humbled and encouraged by just how nice and helpful the users of Podcast Chapters actually are. Thank you all, again!

While testing, I discovered Macos has become even more podcast-metadata aware lately: when I hit spacebar on my exported MP3 to listen using Quicklook, the playback controls include a chapter button on the right-hand side! Pretty darn cool. Comment text shows up in Finder info dialogs, too.

ID3 metadata: it is a thing. I happen to have an app to sell if you want more of that …

March 01, 2020

The big 2.0

That all-Swift version of Podcast Chapters I mentioned is out.

Hopefully everybody will notice some nice user-facing features, and nothing of the actual code changes.

I decided to splurge and jump to 2.0 for this, as much for getting magical thinking about the number out of the way as anything else.

Fun fact: the all-Swiftiness is a sort of half-lie. The non-Swift code is not actually used for anything, but I kept it around just to not make any last-minute radical changes. That turned out to be a good decision, because when I tried deleting the Objective-C code just now, I drowned in a wave of errors. Things like NSImage and others were missing all over the place.

The Objective-C code is exposed to Swift via a bridging header, and that also seems to expose all my Swift files to all the imports made in the Objective-C headers. It most likely makes total sense to anyone more up to speed on the whole language-bridging concept, but it caught me by total surprise. Luckily it was quick to isolate the cause, and the solution is of course to go back and add the missing imports to each file. It just takes a little while.

I am a little bit surprised a strict-ish language like Swift, running inside Apple's own environment, allows a thing like this to happen without any kind of warning. Again, it most likely makes all the sense in the world on a technical level, but removing an unused framework in a different language and getting a cascade of errors just feels strange. Swift basically let me write using deeply hidden imports for a very long time, and the effects take longer to repair the longer you let it go on.

Well, yes, I see how it makes sense now. The bridging header is set up for the whole project as a precompiled header, and I recall from my C++-adjacent days how precompiled headers count as added to all other files. And, of course, how that meant a whole lot of thoughtless work to undo when moving to an environment less friendly to the precompiled header concept itself.

Anyway, time to go clean that up nicely and make "all Swift" be true in all ways.

(Perhaps I will actually write about the version and its features the next time, who knows?)

February 23, 2020

An all-Swift production

Ever since I was given the opportunity to adpot Podcast Chapters about a year ago, I have been working to make the code my own.

This has meant everything from small rewrites plainly for my own understanding to removing external dependencies and writing the required parts of them myself.

I am now nearing a fun milestone: the next update of the app is likely to be all Swift. That feels like a nice milestone, but it is more like the cheerful face of the actual important change.

The actual important change is that I will have a single coherent (well, at least once I clean up my own thoughts a bit more) engine for reading and writing all the ID3 information Podcast Chapters is all about. One engine which I, theoretically, know every in and out of. This should make it easier for me to make further changes and updates, and also pave the way for some exciting experiments in the future.

I have a rather long list of things I would like to try in the app, and not being all Swift felt more like an annoying hindrance the more I thought about it.

My mind is of course likely to generate some new annoying hindrance sooner rather than later, but for now, at least, I feel like the next thing I will start in the app will be one of those exciting new features.