🎵 Okkervil River’s back catalog

Listening to Okkervil River’s new album, In the Rainbow Rain, today gave me an excuse to dive, once again, into their back catalog. I am a huge fan of the band’s 2005-2008 work, a trifecta of literate rock albums: Black Sheep Boy, The Stand Ins, and The Stage Names. Each of these albums is a staggering artistic achievement; each song on them is an evocative short story with enough weight, depth, and maturity to reward repeated listenings.

I haven’t spent nearly as many hours listening to their work since then, which which includes The Silver Gymnasium and Away. This, more recent, period is characterized by a darker, more somber tone. It’s easy to imagine the band’s frontman, and only consistent member now, Will Sheff, slowing down, looking back on life, and looking far forward to his eventual death. That’s way heavier stuff than what I normally listen to, but not too heavy to be enjoyable.

🎵 Groundhog Day the Musical

Groundhog Day is my second favorite Broadway musical of last year (closely behind “Dear Evan Hansen”, which has more plot-related problems but really terrific music), and the only one I saw. I revisit the cast album from time to time, because it is terrific, and multiple listens reveal hidden depth in the earthy lyrics.

Broadway World’s review of the cast album is remarkably spot on.

On first listen, Minchin’s melodies are captivating. They are undeniably more poppy than his dark, moody, and undulating score for MATILDA; however, it’s obvious that he has written each of these compositions with the same consideration and care that he did with MATILDA. Despite the more simplistic sounding and pop aural soundscape, the melodies are intricately layered showing an artistry and skill that is not apparent in one listening.

I hope Tim Minchin keeps writing musicals. His music and lyrics for his prior show, Matilda, are a masterpiece. (Listen to the London cast recording over the Broadway one if you can; it is a far better performance, though it is missing some of Matilda’s monologues.) “Groundhog Day” doesn’t quite rank as a masterpiece in my book, but it is really, really good.

📚 Ready Player One, by Ernest Cline

Earlier this year, I completed reading Ready Player One by Ernest Cline. It was the first novel that I had read in a while, as I have been reading mostly nonfiction in recent years. I discovered the book from an episode of the “Triangulation” podcast in which Leo Laporte interviewed author Andy Weir, who enthusiastically recommended the book.

Overall, I enjoyed the book. The prose is efficient and the pacing is swift. I thought it started out strong, and I liked the world building and the build-up of suspense in the early chapters. After a while, though, I tired of all the 1980s video game and movie references, and wanted the book to end. While I was about three quarters through the book, I referred to it as “the reading equivalent to watching somebody else play video games”. For me, the stakes felt too low, and the characterizations were too thin, to make a lasting impression. Still, I had fun reading it, at least most of the way through.

Premature Optimization

In programming, there has long been a warning in computer science to avoid premature optimization. Donald Knuth called it “the root of all evil”. I find myself thinking about this all the time—not so much while programming, but when I’m thinking of spending money on myself, or telling people how to spend their money on me, as for birthday or Father’s Day gifts.

I’m at an age now where I have everything I would ever want. But…everything I have could still be a little bit better. To wit:

  • I have awesome headphones that I love. I want better ones. And different ones.
  • I have a home server that is underpowered, but quiet and extremely reliable. I would love one with enough power to could run virtual machines, but I don’t really need it.
  • I have a clicky mechanical keyboard that I love. I want a better one—that lights up, unnecessarily, or has colorful keycaps.
  • I have an Apple wireless keyboard for my Mac. I want to replace it with the Apple Magic keyboard, even though I already have an Apple Magic keyboard for my iPad.
  • I have a Series 1 Apple Watch that I love. I would love, even more, a Faster Series 3.
  • Let’s not even talk about iPads and Macs.

These few things are some of my material obsessions. What they have in common, for me, is that they have all been satisfied by things I already own, upgrading to newer or better versions would cost a lot of money (way more than anyone would spend in a gift for me), and the upgrade would be only marginally better than what I have, so I’m not sure if it would even make me happy.

Despite knowing all this, I can’t stop thinking about upgrading what I have to something better. I always want to optimize my experience with the things I enjoy. But, until the things I have break down and are no longer useful, it is too early to upgrade them. Doing so would be indulging in premature optimization, which be wasteful, which is “the root of all evil” to me.

Someday, my headphones will break, my keyboards won’t be compatible with my computers, my server won’t support the OS I want to run, and Apple won’t support my hardware anymore. That’s when I will upgrade these things—after I have extracted every bit of their value. Until then, I will just daydream about, and feel a little guilty about obsessing about, premature optimization.

My slide into audiophile territory, Part 3

This is the third in a series of posts about my realization that I have become an audiophile. The prior post examined what it means to me to be an audiophile.

It’s about spending money, right?

Calling yourself an audiophile is a little like calling yourself a rube and not realizing it. That’s because being an audiophile is a hobby marked far more by spending large amounts of money on speakers (I include headphones here, of course)—speakers that sound only a tiny bit better than much less expensive speakers, than on anything else. At worst, it’s conspicuous consumption wrapped in a superiority complex, or an obsession that has gotten embarrassingly expensive. At best, however, it’s about finding new ways to enjoy the music you love, enjoying that music an awful lot with the equipment you have, while keeping a level head about your budget and equipment’s price-to-performance ratio.

I, of course, include myself in the latter camp. I’ve spent a good amount of money on headphones at this point, but I am mostly interested in extracting as much value out of them—as many listening hours and as much enjoyment as possible—rather than on what the next better set of headphones will be.

But why spend a lot more money on a tiny improvement in sound quality?

I care an awful lot about music. I’ve found, quite accidentally, that there is more detail to be heard in the recordings I love, provided I have better speakers or headphones to listen to them with.

I never thought I was missing anything when I listened to everything through $10 Sony earbuds that I would have to replace every three months or so. When I got my first pair of over-ear headphones, though, it opened a new world for me. I heard details in the music I had never noticed before. The soundstage sounded wider. Instruments sounded more distinct, realistic, and separate from each other than I had ever heard before. Drumbeats had a more visceral impact, due to headphone drivers being much larger than those I was used to. On a more basic level, the over-ear headphones had better isolation than the earbuds did, blocking out outside noise, allowing me hear my music even better. Listening to music, something I loved already, became more fun and more exciting than ever before.

Those first over-ear headphones, which I credit for opening my eyes to the benefits of higher-end gear, were nothing special. They were a SteelSeries 7H gaming headset, which I received for free in exchange for writing a review. At the time, it was a $130 headset; today they are being sold for $21, proving that you don’t have to spend outrageous amounts of money to get better audio quality. I’m not saying they are the best headphone ever. Compared to Apple and Sony earbuds, though, they sound fantastic. I never would have realized it, if I hadn’t picked them up.

The headphones I’m wearing right now cost a lot more than those SteelSeries cans, and they reveal details in the music that the SteelSeries cannot. They are objectively better. But the much cheaper headphones are still just fine, and sound way better than whatever free pack-ins you got with your smartphone. I enjoyed them and would probably still be using them to this day if they had not broken. (Headphone durability is a separate issue from sound quality, and can be worth spending more money on.)

The jump from $10 headphones to $130 headphones was definitely worth it to me. Each jump up in price I have made since then was worth it, too. (I didn’t get all my headphones for free!) If I hadn’t tried headphones better than the ones I was used to, I never would have known that better sound was even possible.

What about the law of diminishing marginal returns?

After a certain dollar amount, each additional dollar spent on audio equipment buys you less and less of an improvement in quality. This is the law of diminishing marginal returns, and it’s a very real thing.

Audiophiles can spend stupid amounts of money on headphones and speakers. (To me, the “stupid” threshold is over $400; it may be way higher or way lower to you.) Some headphones cost well over a thousand dollars. Still other models, designed, I think, for for people with more money than sense, retail for three thousand dollars or more. Some speakers cost tens of thousands of dollars. In addition, some people spend hundreds or thousands on receivers, amps, DACs, and whatever other signal processing they want to use to drive their headphones or speakers. The audiophile hobby can get extremely expensive, if you have the money and are never satisfied with what you have. It doesn’t have to be, though.

In my opinion, you have to stop spending money on audio equipment at some point. If you are never satisfied with what you have, the problem may be something other than not having spent enough to buy decent hardware. You can still be an audiophile without buying new equipment all the time or going broke (or merely being ripped off) on over-expensive gear. It’s about the love of the game—the love of music and the gear it plays on—not the love of spending or the fear of missing out on an even better thing.

SwiftoDo Development Notes, April 2018

Weekly updates to SwiftoDo came to an end in early April, but work on SwiftoDo has continued apace.

What’s next?

I am working on an update, version 2.12.0, that includes a couple minor, but long-requested features: (1) a setting to preserve priority on completed tasks and (2) a default priority setting for new tasks. Implementing these features required lots of behind-the-scenes effort. Consequently, neither could be completed in less than a week.

I am currently working on improving the Dropbox code that (1) checks whether SwiftoDo is authorized to access Dropbox, and (2) reports this to the user in a clear and actionable way. This is necessary because Dropbox can de-authorize SwiftoDo for various reasons, including when I upgrade the Dropbox library I am using, which is exactly what the version I am working on does. When this happens, SwiftoDo will alert the user after an upload or a download fails. Based on user reports, however, this notification doesn’t always happen, which can lead to data loss if the user does not realize you are working offline.

Once I finish my work on the Dropbox-related code, I can release this version.

What’s after that?

After I complete version 2.12.0, I plan to focus my efforts on implementing iOS 11 Files integration. Everything else, other than fixing critical bugs, will be put on hold.

The basic mechanics of Files integration are not hard, but they are not really meant for a to-do app—especially one that manages two files. I am unsure if it would require uses to re-open their todo.txt and archive files periodically, after the app is killed, or every time you wish to archive, which may be annoying to users. I am not yet sure how it will affect archiving, manual sync mode, and whether offline access would be possible.

In a best-case scenario, Files integration will eventually allow me to get rid of the Dropbox-related code within SwiftoDo, and rely on Apple’s and Dropbox’s native integration.

In a worst-case scenario, I won’t be able to get Files integration working without giving up too many features or conveniences of the current app.

So, after version 2.12.0 is released, you may not hear from me for some time about development, but I will be hard at work nonetheless.

I miss Caesar salad

It seems to me that massive outbreaks of food borne illness are becoming more and more common. That our current, worsening outbreak is the second E. Coli outbreak tied to my favorite type of lettuce in the past six months or so, and it is so virulent, is making me feel worried about our food system, and pessimistic about my country’s will to improve it.

An outbreak of E. coli food poisoning linked to romaine lettuce has widened and has now made at least 98 people sick, federal health officials said Friday.

More than half have had to be hospitalized because the strain of E. coli causing this outbreak is an especially nasty one, the officials at the Centers for Disease Control and Prevention and the Food and Drug Administration said.

People in 22 states have reported E. coli infections linked to the outbreak, the CDC and FDA said.

I’m no expert in this, but I feel like we have several problems in our food system that have, in the past few decades, started to compound in dangerous ways that we should have seen coming. Some of these problems include overcrowding of animals, overuse of antibiotics in livestock, and over-concentration in production and processing. When bad hygiene infects food, it’s worse now than it used to be. The bacteria are more resistant to antibiotics, and the food, and food borne illness, is distributed all across the country.

Another annoyance to me, as a someone who has eaten some raw eggs (usually in cookie dough or homemade eggnog) and rare meat over the years, is that I have never gotten a food borne illness from those activities. I have, however, gotten terribly ill several times from eating restaurant salads, probably due to unwashed hands or vegetables. There are menu warnings about undercooked meat in every restaurant I go to, but none about the danger of eating unwashed vegetables.

I am impatiently awaiting the day I can eat Caesar salads again.

🎬 Batman Ninja is easily one of the weirdest movies I have seen—and that includes actual anime. I am still a bit puzzled why I watched it. I guess I’m a sucker for Batman and for animation.

📚 How We Got To Now

I recently finished reading Steen Johnson’s How We Got to Now: Six Innovations That Made the Modern World. It was a breezy and pleasurable read, full of interesting information. Johnson’s writing is clear, concise, and engaging throughout.

As a huge nerd who spent a lot of time in childhood perusing a science and technology encyclopedia, and a lot of time in my teens watching tech-related documentaries on Discovery and TLC (before those networks drifted to reality TV), I already knew a lot of the material. Still, it’s a wonderful read to anyone who loves the “history of ideas course” way of looking at disparate, seemingly unrelated things in everyday life, and drawing a through line that connects them all. Plus I learned new phrases that describe these unintended and intended technological and cultural developments—“hummingbird effects” and “the adjacent possible”—that I particularly like.

1Blocker X

I picked up 1Blocker X based on this review from John Voorhies on MacStores.

The first thing you will notice when you set up 1Blocker X on an iOS device is its 7 toggles in Safari’s Content Blocker section of the Settings app. It’s a bit of a head-scratcher at first until you realize that this is what allows 1Blocker X to expand beyond the confines of its predecessor.

You see, iOS limits the number of blocking rules that can be implemented by an app to 50,000. That’s a lot of rules, but sadly not enough given the amount of junk on the Internet these days. As a result, it’s a limit that 1Blocker began to run into not long after it launched in 2015.

Finding a way around that hard limit required a rewrite of 1Blocker from the ground up. The result is 1Blocker X, an app with around three times as many blocking rules, room to grow, and enhanced flexibility for applying those rules.

I don’t think I really needed to replace the content blocker I had been using, but it hadn’t been updated in a really long time, so I’m not sure it’s blocking rules are up-to-date.

Much of the work these things do is invisilble. It’s easy to see if ads are blocked, of course, but not so with trackers and malware, which I care more about. At home I also block ads at the DNS level using Pi-hole, running on an old Raspberry Pi. I heartily recommend setting up a Pi-hole (it’s easy; there are tutorials to follow). I miss having it when I’m out of the house, which is why a content blocker is helpful, too.

So far, 1Blocker X has been working just fine. I’ve noticed no decrease in speed from Safari, despite the crazy amount of blocking rules I have enabled.

I got to be reminded today just how long VBA takes to run when used inside SQL Queries in Microsoft Access. I wish I could always use SQL Server, which is faster and better in every respect, but in my Company’s distributed environment, it’s always Access.

AirPods batteries drain much faster on phone calls

I thought my AirPods batteries were already aging out of their useful life span, due to quick draining on numerous hour long phone calls today and last week. It turns out, talk time is only “up to 2 hours”, while listening time (my main use case) is 2 1/2 times that.

Per Apple:

AirPods (single charge): Up to 5 hours listening time,(2) Up to 2 hours talk time(5)

So…phew! I’m more worried about having to replace them after less than two years due to a battery issue than about shorter battery life on calls.

🎧 I had a lot of fun testing out the V-Moda Crossfade 2 headphones last night. My review is on Amazon.

🎵 Frank Turner is—all at once—literate, angry, cynical, hurt, sad, and tender on Love Ire & Song (Well, literate except for comma usage. 😀) Despite the negative emotions he expresses, his music is lively and compelling.

I am coding VBA and ripping CDs like it’s the year 2000 today.

🎵 Taking a trip down memory lane with Guster’s Keep It Together this evening, on my MacBook Pro and Oppo PM-3’s 🎧. Their records are cleanly produced, tightly written, and tastefully played. When I saw them live, though, they absolutely shredded their way through their songs. They were freaking amazing.

📚 At long last, I have finished reading Team of Rivals by Doris Kearns Goodwin. It (the last chapter and epilogue especially) has overwhelmed me with a sense of love and sadness, which is why it took me so long to read their whole thing. The book is a monumental achievement.

🎵 “Space Gun” by Guided by Voices sounds just as good and just as vital as their old stuff.

🎵 I’m really digging Bleachers' “Gone Now” right now. I like everything that Jack Antonoff does.

🎵 I re-listened to The Decemberists' I’ll Be Your Girl today, and was surprised that all the songs sounded like I had always known them. I enjoyed the album a lot more today than on my first listen.

🎵 Max Richter’s “Sleep”

I am unreasonably excited to learn about Max Richter’s 8 1/2 hour album “Sleep”. It is meant to be played all night long, as you sleep. What I have heard so far is quiet, relaxing, and beautiful. I doubt my wife would let us play it through the night while we sleep. But maybe we could play it instead of white noise for our kids.

🎭 Last night my wife and I saw “Motown: The Musical”. We enjoyed it but thought it was too sanitized and limited in viewpoint to be interesting. I would have liked to hear more (any?) complete songs. The music is fantastic, of course. We’ll be listening to those records today.

🎙 I missed Om Malik’s spot-on take on Facebook from February, before the Cambridge Analytics fiasco. It’s worth a listen if you’re still interested in the Facebook mess.

🎬 Rewatching “The Last Jedi”

I am enjoying “The Last Jedi” a lot more on the second viewing. I didn’t like it when I first saw it in the theatre, for a dozen different reasons. But now I get it in a way I hadn’t. Some things I thought were annoying, like Po’s actions, were supposed to be. The whole movie is about learning from failure, and is well structured around that theme.

🎵 I’m trying to form an opinion of The Decemberists' new album, “I’ll Be Your Girl”. I haven’t gotten my mind around it quite yet. Has it really been 7 years since “The King Is Dead”!?