[ Content | Sidebar ]

apple music modification times

March 18th, 2017

A few months back, I noticed that my desktop machine was using its drive a lot. (The machine, sadly, still has a magnetic disk; I’m just waiting for new iMacs to be released to replace it.) Poking around, it was the backups (Time Machine and Backblaze, which I highly recommend). So something had caused a lot more files on my machine to get modified on a regular basis; I’d signed up for Apple Music recently, so I was afraid it was doing something, and, sure enough, I saw music file names show up in the Backblaze upload list.

I grabbed one of those files from an earlier backup, in order to compare it with the current version. And, of course, the obvious way to compare two binary files is: open them up in Emacs. Specifically, open them up in two buffers, then do compare-windows.

It turned out that the two files differed in three locations; all those locations were in the first few hundred bytes. So that’s good: at least Apple Music hadn’t replaced my file from some version in their library that they’d decided matched my file, they were just changing metadata. (At least I hope it hadn’t: I don’t have any reason to believe that the file I downloaded was from before I turned on Apple Music, and, in fact, as it turns out below: I have an active reason to believe that I didn’t grab the original.)

 

That raises the question, though: what’s changing in the metadata? I wanted to understand the bytes a little better; so I put both buffers into hexl-mode. Here’s what it looked like:

The first difference is highlighted; one copy has the bytes f2ae01 while the other copy has b212a2. And, actually, all three differences had the same bytes in both the old and new versions.

The other thing that you can see (either in the hexl-mode version or the original version) is that there’s actually some ASCII around there; in particular, before the modified bits, you’ll see the strings mvhd, tkhd, and mdhd. So there are four-character tags in this metadata; if I can figure out what those tags are, maybe I can figure out the meaning of the bytes that changed.

 

After some poking around, I found a QuickTime File Format Specification. Here’s what it says about mdhd:

The bytes after mvhd are 0000 0000 bdfc 5ded d4f2 ae01, with the last three bytes being the ones that changed. Comparing that with the layout diagram, we see 00 is a version, 000000 is flags, bdfc5ded is a creation time, and d4f2ae01 is a modification time.

So the modification time seems like it’s changed. (And, looking up the other two tags, the bytes changed there were also modification times.) As a sanity check, let’s try to decode it. At first, I assumed it was a unix time stamp, but that translates to base 10 3572674049, which doesn’t look like a unix timestamp to me. (Turns out that it would be a date in 2083.)

Looking further in the documentation, it says that the modification time is “A 32-bit integer that specifies the calendar date and time (in seconds since midnight, January 1, 1904) when the movie atom was changed. It is strongly recommended that this value should be specified using coordinated universal time (UTC).” Googling a bit, I found a Mac HFS+ Timestamp Converter which seemed to expect those; 3572674049 translates to Sat, 18 Mar 2017 09:27:29 GMT, while the time in the other file, 0xd4b212a2 = 3568439970 translates to Sat, 28 Jan 2017 09:19:30 GMT.

And that all makes sense: those timestamps must represent when iTunes was last scanning the file for some Apple Music-related reason.

 

Stepping back, though: iTunes / Apple Music is modifying the file to update a modification time; and that results in about a gig and a half of backups happening on my computer every day. And, when I write it that way, that’s ridiculous: maybe don’t modify the file, and then you won’t have to update the modification time?

Of course, Apple Music must be using the modification time for some other reason, some sort of scan time, it’s not a literal modification time. But it would be far better if that scan data were stored in a separate file, instead of modifying the music file itself: on a conceptual level, the music hasn’t changed, it’s just bookkeeping information that has changed, while on a pragmatic level, it causes a ton of extra backups to be generated. I’m mostly noticing it with Backblaze, but the consequences for Time Machine are equally bad: it means that my backup disk gets full with multiple versions of the same music file, so my backup history gets cut off more quickly than it should be.

airpods

March 11th, 2017

I’m not used to people asking me about stuff I’m carrying around, but several of my coworkers have asked me about my AirPods when they’ve seen me wearing them around the office; apparently people are curious about them. So, a report:

They replaced my EarPods, which have been totally fine for me: I’m not particularly an audiophile. (And I’d historically mostly used them for podcast listening anyways, though that’s changed somewhat over the last few months.) So read everything here with the lens of “replacement for Apple’s free pack-in earphones” in mind.

And they’re quite good in that role. They’re the first set of wireless earphones that I’ve owned; and, it turns out, I prefer wireless earphones to wired ones. No more wires to untangle when I’m pulling them out, no more carefully coiling the wires when I put them away in a (futile) attempt to avoid tangling / fraying, no more having the cord occasionally being just a bit too short when I open my jacket, no more occasionally sending my phone or headphones flying when something hits against the cord.

Also, in terms of more subtle benefits of wireless headphones: since I started listening to music at work more, I’d been a little bothered by the fact that it means that my phone is on my desk, or maybe in my pocket, which makes it a bit too easy to check Twitter when I should be working. Whereas now I can move my phone to my backpack while still being able to listen to music.

When reading about Bluetooth earphones in the past, I’d heard that latency is a problem; it is not a problem for me at all with AirPods. I haven’t tried playing video games with timing-specific audio cues, so I can’t swear that there aren’t situations where latency is an issue, but as far as I’m concerned, it’s not worth worrying about at all.

 

So yeah, wireless earphones are good; on to more AirPod-specific stuff. I really like the way it pauses when you remove one of the earpods, I use that all the time. E.g. when I stop by Pamplemousse every morning on my way into work, I pull out one of them while waiting to order, and then put it back in when leaving the store; when the train approaches and it’s loud and I’m going to be reading a book soon anyways, I’ll pull out both of them; if I’m walking towards somebody in the hallway and don’t want to appear actively antisocial, I’ll pull out the AirPod on whichever side they’re approaching me from. The unpause functionality when putting it back in rarely works for me, but I don’t think that’s an issue with the AirPods: unpausing from anywhere other than the app that’s playing sound (from a wired earphone button, from the lock screen, from the control center) hasn’t worked for me most of the time for the last couply of iOS versions. (Not sure if that’s a general iOS bug or a Castro 1 bug or what.)

It’s a small thing, but, when doing the above, the AirPods fit nicely into the tiny pocket in my jeans. (The watch pocket inside the right pocket.) But, of course, when putting them away for longer periods, I put them in the case, and the case is great. I had a pouch for wired earbuds before that I really liked, but I didn’t have any way to replace it, so I’d honestly been a little worried about not knowing what I’d do if I lost it or if it fell apart. But the AirPods case is a very good size to fit into my pocket, which solves that problem. And the case’s battery means that I never have to worry about running out of power: as long as I recharge the case once out of every three or four days and as long as I don’t listen to music for five hours straight at a stretch, then I always have power, and neither of those scenarios is a problem at all. (I already had a lightning cable plugged into my work computer anyways, for the times when I needed to do mid-day phone recharges.)

I gather that most wireless earphones actually have a wire between the two ears; not having a wire helps in a few different ways. E.g. it makes the pause gesture a little easier; it makes it easier to temporarily put them away (or, for that matter, put them away long-term, not sure what the case would be like if it had a wire); it makes it possible to listen with one ear while having the other ear open for external noises. And I’ve never had a sync problem between the two ears.

When reading reviews, I’d somehow gotten the impression that the AirPods magically got audio from whichever Apple device was nearby and playing audio, but that’s not the case: you have to manually select them when changing devices. (Unless you have a Watch, but I don’t.) You can skip the Bluetooth registration step on the different devices, but, while that’s welcome, it’s also only a one-time savings per device. The only weird behavior I’ve had is that, on my home laptop, they don’t reliably show up on the Bluetooth menu; that seems like potentially a pretty major problem, but I feel like I might be hitting a corner case that doesn’t affect most people? (Maybe it has something to do with multiple people being logged into the laptop at the same time? Though, right now they are showing up, even though Miranda is logged in as well.) I hope Apple fixes it soon, at any rate, but fortunately there’s still a wired headphone port on their latest laptops…

I was expecting to miss having builtin volume buttons a little bit, but, in practice, that’s totally fine: I don’t change volume all that often, and I can change it by feel with the buttons on my phone while leaving my phone is in my pocket. I actually miss the hardware pause button more, because of the unpause bug mentioned above, but that’s not a big deal at all. (The tap-to-Siri functionality works, but I rarely use it.)

At first, the price seemed like it was more than I wanted to spend, though not out-of-line for even cheap wireless earphones. The thing is, though, the wires in my wired ones fray every four months or so anyways, so I was always replacing those. (Not an Apple thing, it happened no matter what brand of cheap earbuds I got.) So, as long as these last a year and a half, I’ll break even on price anyways. I was worried about losing them, but at this point I’m not particularly worried about that: they never fall out of my ear, and if I take them out temporarily, the small pocket is a natural place for them. I’m sure I’ll lose one eventually (though Apple is willing to sell individual replacements), or maybe I’ll accidentally put them through the washer or something, but right now, that scenario of them lasting over a year and a half seems entirely plausible.

 

I don’t want to oversell them: ultimately, they’re non-audiophile wireless earphones, so if you’re the sort of person who wasn’t using Apple’s default earphones before, you might not like these either. But, accepting that constraint (and accepting that you’re going to have to spend $160 for them and, as I write this, wait a month and a half for them to be shipped): they really are well done.

tokyo mirage sessions

March 7th, 2017

Tokyo Mirage Sessions ♯FE is by the Persona team; it’s effectively a lighter-weight Persona game (plus a very light dusting of Fire Emblem), with an idol plot. And it is amazing.

I’m trying to remember what in the game first made me sit up and take notice. I have to think that it involved Kiria: maybe when she shows up and saves you at the end of the introductory dungeon, maybe when you see her first concert performance? The game characterizes her (initially) as the embodiment of cool; I’m not going to argue with that, but the message that I took from that was that this game takes a lot of care about style and presentation, with excellent results.

People who know me in person might be a little surprised to hear me say that I care about style and presentation: I am unstylish in a completely stereotypic white male programmer way, never deviating from my uniform of slightly shabby blue jeans and a solid-color shirt, with the extent of my color coordination being whether I wear a pink hairband (if my shirt is black/grey) or a black hairband (otherwise). And I’m sure that there were times in my life when I wouldn’t particularly have cared about the style that games present, when I might have even been actively disdainful towards it.

I’ve changed, though. My current attitude: style is a form of expressiveness, a form of art, and, as such, is a wonderful thing. It’s not an art form that I actively explore in my own personal life, but that doesn’t mean that I don’t appreciate it: I don’t actively explore drawing or painting in my own personal life, but that doesn’t mean that I don’t enjoy going to art museums. It’s an art form / area of expression that I’m relatively ignorant about (which, actually, isn’t too different from painting, but at least with painting I have been to a decent number of art museums), but I’m at least aware enough to sit up and take notice when I see the way Tokyo Mirage Sessions uses music, dress, environmental design, Tokyo itself, and cel-shaded graphics. (And, incidentally: why isn’t cel-shading a lot more common than it is? I honestly don’t understand why some form of cel-shading isn’t the default for games that actively care about appearance.)

 

So yes: the most stylish game I’ve played in, uh, potentially ever? (Hmm, I guess Jet Set Radio and Katamari Damacy give it a run for its money, but still: there aren’t many games I’d compare to those two.) I would say that that level of style isn’t too surprising, given the game’s idol theme; but, comparing it to Love Live, another idol game, it’s like night and day: so much better done in Tokyo Mirage Sessions. But style isn’t the only thing going on here: the game is also grounded by an underpinning of joy.

The game thematizes that joy as cuteness (e.g. in Kiria’s evolution over the course of her side stories); certainly there’s cuteness present, and it’s well done. But there’s more to it than that. It’s the way that Mamori, as cute as she might be, is also fundamentally a good person who cares about others and who brings out a reaction of others to care about her; it’s about the way that Tsubasa leans into her insecurities, works to master whatever she’s afraid of, and burst out with a performance that is glorious partly in an expression of technique and style, but also partly in an expression of the joy of showing that you can do something, and also partly just the joy of being the good, shining person that Tsubasa is.

 

It’s the joy of the stickers; or, for that matter, the non-joyful range of emotions of the stickers. The game has a messaging platform that it uses to push the plot forward; like most modern messaging platforms, it has stickers. Which isn’t something that I’ve experinced personally: I’ve never used Line, and while I’m aware that iMessage has stickers these days, I’d never investigated them personally.

Tokyo Mirage Sessions has stickers; they are adorable, with the different characters having their own sets expressing their personalities. But they’re not just adorable, they really make a difference: seeing a conversation end with, say, the “Tiki is worried” sticker has an impact that words alone don’t.

This is, I’m sure, not a surprise to most people reading this: I realize that I’m behind the times in my use of messaging platforms, and that I also spend time in my own head in a way that makes me oriented towards words instead of pictures. (I appreciated the way Yashiro presents that sort of person in the game.) I’m a convert to stickers now though, or at least I’ve started using them some; sadly, there isn’t a Tokyo Mirage Sessions iMessage app, but it turns out that iMessage apps are really easy to write, so now I can send those stickers myself! (Sadly, they’re too small to work well as Slack custom emoji, even when jumbomoji…)

 

It’s even in the joy of the combat. The combat will be entirely familiar to any Persona player: they added in the Fire Emblem weapon triangle, and even the lead character only has access to one of the game’s equivalent of personas, but the individual combat is otherwise essentially the same, down to the names of spells. (And personally I think both of those changes are improvements over standard Persona combat.)

But the combat has a little more flair, a little more style: it’s thematized as taking place on a stage, with a cheering crowd and big pictures of your team on the side. And yes, a little more joy: there’s something something cheerful about the way that the team members do their attacks, especially the way that they do follow-up attacks.

I haven’t always been a fan of the way that, when JRPGs moved to the third dimension, they added in animations for attacks, potentially even rather lengthy ones for special attacks. But somehow Tokyo Mirage Sessions pulls this off in a way that kept me watching the animations until the very end of the game, even as the attacks get longer.

Because they really do get long: you unlock an ability for your team members to do follow-on “session” attacks if you attack an enemy’s vulnerability (which each team member can almost always do): so each attack quickly turns into a trio of attacks, and then, halfway through the game, non-primary party members can join in, so you get up to seven attacks. And then, as you complete side quests, every once in a while, two team members will put on a special joint performance, which will allow the chain to restart.

The game is reasonably thoughtful about this from a “waste of time” point of view: for most enemies, there just aren’t that many interesting choices, so having you defeat weak groups of enemies with a single attack plus a chain of followups jumping from enemy to enemy makes them less tedious, and having you defeat enemies that are just under your level with one attack plus a chain per enemy also works well. And that sort of respect for the player’s time is important: but equally important is the way the chains come off as a bunch of skilled performers who enjoy showing off their craft and riffing off each other. The joint performance animations really do take a little while, but they don’t show up that often, and they include some of the single cutest animations in the entire game.

 

Those chain attacks and joint attacks, in turn, point out the final aspect of the game that makes it so special: its focus on teamwork and companionship. When writing about Persona 4, I mentioned that one of the things that I liked about that game is that it presents your superpower is being a good friend and collecting good friends. And Tokyo Mirage Sessions does something very similar: you join a production company, and apparently you do get jobs as a singer / dancer / actor, but you’re never a star in that regard: your party members are the stars, they’re the ones whom you see in videos, on posters, on magazine covers.

But what you do is help them grow, help them become better. At the start, your role is more one of encouragement, of literally providing courage to Tsubasa. But, as the game goes on, you get deeper: you turn into a set of eyes that can coach people, and you even help your team members learn from each other as well.

I remember wondering halfway through the game when the protagonist would get his own music video, and then (once I thought about the question) realizing that the answer was “never”, because you’re not a star. But then, when the credits rolled around, I heard a song over them with an unexpected voice, and realized: finally it’s your turn.

Which made sense in so many ways. On a basic level, it makes sense to let the protagonist sing the last song that you hear, the one that brings the game to a close. On a thematic level, though: the song is playing over the credits, which means that, while you’re listening to it, you’re seeing the names of all of the people who worked together to bring the game into existence, so you want the singer who is the ultimate manifestation of teamwork. And, on a musical level: the voice isn’t the voice of a star, there’s nothing ostentatious about the song and it’s not clear that the singer would be well suited to a more ostentatious song. But it’s performed well, you have no trouble imagining it as being done by somebody who is professionally successful in a more background/supportive role.

And, emotionally: there’s something about that last performance that makes me just feel like I’m at home. I’ve listened to the soundtrack a bunch of times, I like all the songs on the soundtrack and I like some of them quite a bit, but much of the time I think that that last song is my favorite song on the soundtrack. It’s the one that lets me relax, feel like I’m part of the family, and just be happy.

 

This game and Persona 4 are my favorites from the games that I’ve played for the first time this year; Tokyo Mirage Sessions seems like it should be a minor side project, but, as far as I’m concerned, it’s some of Persona Team’s best work, and I personally think it’s better than Persona 3. From a game mechanics point of view, they’ve made intelligent choices about what to keep and what to refine: I prefer this version of the dungeon exploration, the combat mechanics, and the leveling mechanics. The studio has always been stylish, and with Catherine we saw that perhaps starting to come to the fore a little more, but the evolution that Tokyo Mirage Sessions shows in that regard is significant. (And that combined with the footage I’ve seen of Persona 5 is making me very optimistic about that game!) Most importantly, the emotional grounding of this game is real and deep.

Having said that, Persona 4 (and Persona 3, for that matter) also has its own virtues that Tokyo Mirage Sessions doesn’t show as strongly. Those games are built around a calendar, with a corresponding focus on daily life and on small-scale, intimate situations. Not that the story missions in Tokyo Mirage Sessions don’t provide intimacy: on the contrary, they absolutely do present you with your team members in vulnerable, honest situations. But it’s different from seeing them in school day after day for month after month, from going to the same streets and stores over and over again. And, also: a game built around a team of idols is going to be different from a game whose heart is an elementary school student who has lost its mother.

So yeah, Tokyo Mirage Sessions doesn’t have the same type of emotional texture that Persona 4 does, and you could make a case that it loses something with its focus on a group of people who are larger than life. (Though that is only a difference compared to a Persona game: it’s entirely in character with the anointed-savior-of-the-world plot of most role-playing games out there!) But, if you accept that premise: it does what it does very well indeed, with flair and style, with joy, and, ultimately with love and caring.

mini metro mario run

February 26th, 2017

Mini Metro is a good game. Interesting mechanic, simple but with (I suspect) a decent amount of depth, and (at least on the iPad) an interface that works extremely well with the gameplay.

Super Mario Run is also a good game. Despite being a one-button game, it is unquestionably a Mario game; and the levels are interesting enough the first time, and have two separate mechanics (the colored coins, the “compete against ghosts” mode) that encourage you to really master those levels.

I’m not currently playing either game, however, and I’m not entirely sure why. Maybe it’s just that I don’t like either of them quite enough to compete with my gameplay time? (Possibly true for Super Mario Run; Mini Metro seems like it should make the bar, though.) Maybe I’m not spending quite as much time playing games as I used to? (I’m actually not sure if that later statement is true or not; I certainly spent enough time on Tokyo Mirage Sessions, though…) Maybe I don’t like clean little games as much as I would like to pretend I do? (But I spent a lot of time playing Imbroglio last summer.) And: why am I still doing various Conceptis puzzle games (Fill-a-Pix in particular), when Mini Metro seems like it could plausibly be as evergreen? (I was also still playing Love Live for a long time, even though I think it’s a much worse game than Mini Metro, but that’s a very different game, and one which has very low-weight “return every day for 30 seconds” mechanisms.)

 

Comparing Mini Metro to Imbroglio, the latter game had the advantage that it gave me staged challenges to learn the game. I’d try out a new character, introducing not just a new ability but also unlocking new weapons; I’d work to get a score of 128 with that character, while getting a feel for the new weapons and designing a board of my own; I’d then try to push my board further, refining it in the process; and then I’d move on to another character. So I always had something relatively concrete to learn, and something that wasn’t a big step from what I’d been doing before: it’s designed to actively support deliberate practice. With Mini Metro, in contrast, there aren’t the same small steps: it’s easy to unlock all the cities, the differences between the cities don’t seem significant enough (at least at my skill level) to make me feel like I’m learning from the different cities in the same way I was learning even from the different character abilities in Imbroglio, let alone the weapons. So I instead have to set a challenge of getting a certain number of passengers; that is indeed a challenge, but it doesn’t have the same scaffolding.

Which isn’t a bad thing: it’s no more scaffolding than Flight Control HD had, and I loved that game. I think the other thing that’s going on with Mini Metro is the play sessions: they require you to concentrate and be ready to respond, not with the same level of constant attention as Flight Control but for a longer duration, maybe 10 minutes or even 15?

And that’s not a bad thing at all, either: I think the game does a real balance between giving you time to think and consider the bigger picture while forcing you to make decisions regularly. So I really appreciate that. But, at the same time: that length means that it can’t fit into quite as small chunks of time as some games do; and the active nature means that it’s probably not the best game for me to play right before going to sleep, because it will be a little hard to go to sleep. Also, comparing it to the Conceptis games, it doesn’t feel right to pause Mini Metro (and I don’t even know if pausing is possible): a hard Fill-a-Pix board may take hours for me to solve, but I can spend those hours over multiple days.

 

So the upshot is: if I want to play Mini Metro for long enough for me to really get a feel for its depths, then I’ll have to commit to it: it’s not fighting with other iPad games for space, it’s fighting with narrative games for space. And it’s not quite managing to win that fight. Though, now that I think about that: Super Mario Run would fit into my iPad spaces. So that’s not the only thing going on there: I think the other issue is that, once a game qualifies as one that I want to spend time with in random iPad moments, then it can take up part of that space for quite a while, making it harder for competitors such as Super Mario Run to dislodge it.

At an rate: games I’m happy to have played. I may well even return to one or both; and, if not, they’ve at least taught me something about what I value spending time on in practice.

fingers on scales

February 16th, 2017

A couple of months ago, I ran across the paper “The Moral Character of Cryptographic Work”, by Phillip Rogaway. It’s a very good paper; I encourage you all to read it, instead of this blog post! But, for those of you who are still here: the question there of the political implications of nominally apolitical subjects (the pure math underlying cryptography, in that case) reminded me of problems that I’ve struggled with a few times over the years.

For example, I don’t want to have anything personally to do with the military. I’ll accept that a country the size of the US needs a military and I have respect for (most) people who serve in it; but my belief is that, over the last half-century or more, the US military has been the aggressor far more often than the defender, that’s it’s done much more harm than good.

I write that I don’t want to have anything personally to do with the military, but the truth is that I’ve accepted military money, and more than once. In the summer after my freshman year of college, I worked at a military contractor; I don’t remember enough details about the funding of the project that I worked on to be sure, but I assume that my paycheck came straight out of the DoD. I justified it in that the project was, on the surface, in no way militarily-focused, it was applicable much more broadly: we were working on a system for automatic verification of computer programs.

And, for grad school, I got a scholarship from the military; they gave me a slightly higher stipend than the NSF would have, and they didn’t impose any requirement for me to work with them, so I figured, it wouldn’t change my actions in any way, why not take their money?

Later on, I applied for a job with a company that worked on free software; in particular, they worked on GCC (the GNU C compiler), and one of their clients (if I’m remembering correctly) was the Lawrence Livermore lab, who wanted improvements to GCC to help numerical simulations used in their nuclear weapons work. The idea of helping nuclear weapons work squicked me out enough that I withdrew from consideration for the job (and I have no reason to believe they would have hired me). Of course, it helped that some of my other job leads seemed to be turning out well, I’m not at all confident if I’d have made the same decision if my job search had been running dry.

 

I’m not saying that, even for a pacifist (which I don’t necessarily consider myself to be), any of those three examples would be situations where military collaboration would be immoral. In all of the situations, the work was in no way of a strongly military nature: I’d have ended up doing the same sort of pure math Ph.D. no matter my funding source, and making an open-source compiler even better is a positive good in the world! So they’re different from the cryptographic examples in the article I mentioned: they’re different from doing cryptographic research within the confines of the NSA that will never see the light of day, but also, setting the NSA aside, effective cryptographic results are either going to help you keep secrets or help you uncover secrets, and in neither case is it morally neutral. If you’re working in a field like cryptography, I would certainly recommend thinking hard about what you want to do that work in service of.

But that lack of direct military impact is exactly what I want to talk about. We’ve evolved into a society that is very good at giving powerful institutions what they want: institutions find what level of collaboration a given person is comfortable with and convince that person to do exactly that much collaboration. Continuing with the military example: if you want to kill for your country, they’ll hire you to do that. If you would rather not kill but are okay directly supporting those who do, they’ll hire you to work behind the lines. If you don’t want to work in the military itself but you still support the institution or are neutral to it, then there’s a job for you as a military contractor. If that sort of active support makes you feel uncomfortable, the military will still pay for and benefit from work on technologies that are useful to but not specific to the military.

Ultimately, this collaboration diffuses down to the level of working for a company that manufactures nails that are sold on the open market with the military as one of its buyers, or to paying taxes with some of that tax money going to the military. Renouncing collaboration at that level means giving up both a huge number of personal benefits and societal benefits to other institutions; it’s a rare person indeed who would avoid that sort of collaboration, whether because of a desire to avoid the personally unpleasant consequences or because of an active desire to affirm the broader virtues of a society where nails are available on the open market and where taxes support programs that make our society as a whole stronger. But, even accepting (as I certainly do) those last points, it remains: powerful institutions are capable of putting their fingers on the scales to tilt society in their direction at many levels.

 

I work in Silicon Valley: sometimes for tech startups, sometimes for larger companies that have acquired those startups. And I do believe that Silicon Valley brings a lot of benefits to the world; but, following the above reasoning: there’s also a vast amount of money sloshing around, and it is inconceivable that that money isn’t being used to tilt the scales in directions that benefits those who control the money. There’s a level of indirection beyond the “direct military funding” example, though, so it’s a little less obvious what ends I’m working in service of.

I mean, with some companies in the valley (and none of these examples are ones I’ve worked at), the moral linkages are obvious: Palantir, for example, is creepy as fuck, they’re not even trying to hide that, just look at their name! Uber is a little more subtle: they’re consciously placing themselves in the middle of a bunch of really important societal shifts, shifts that are large enough that I don’t feel like I can clearly see which ones will end up with us in a better world and which in a worse world, especially in a medium-to-long timescale; if Uber weren’t so obvious about not caring about democracy or workers, I might wonder about whether I’d be interested in working for them, but, well, they are pretty obvious about both of those points. Facebook is a step further into uncertainty: connecting people is good, getting information that’s interesting to you is good, except that a filter bubble is bad, and monopoly power over certain classes of interaction and information access is bad.

And then, taking one step further away: setting aside the question of what companies do, there’s the question of whose pockets you’re putting money into by helping those companies become valuable. I certainly wouldn’t want to work at a company where somebody who thinks women’s sufferage is harmful is in a position of leadership (which rules out two of the companies in the previous paragraph); I don’t know exactly where I draw the line with him, but I’m very glad that the company I work for doesn’t have Founders Fund as an invester, and I hope it stays that way. He’s not the only prominent Silicon Valley VC whom I find abhorrent, though; it may be that finding a valley company that’s funded by ethical VC firms isn’t any more possible than buying your gas from an ethical oil company. Or maybe that sort of nihilism is exactly wrong, in that it encourages us to give up rather than trying to make ethical choices!

 

Looking a little more broadly than Silicon Valley: as I write this, we’re getting an object lesson in how many people in the country support white supremacy, support Christian supremacy, support patriarchal supremacy. Those are powerful institutions, putting their fingers on the scales of society in countless ways.

And I qualify on two of those three categories; I’m sure that has given me huge benefits over my lifetime, much more than I’m consciously aware of. I’m also sure that I’ve both implicitly and, at times, explicitly supported the wrong side of those positions; I’ve also explicitly worked against them at times, don’t get me wrong, but still.

With something as deeply woven into the fabric of our society as, say, patriarchy, it’s impossible to not be compromised in countless ways, even if you want to do the right thing. I think that men and women should be compensated equally, and I also recognize that they aren’t. That doesn’t mean that I volunteer to give up part of my paycheck, it doesn’t even necessarily mean that I should volunteer to give up part of my paycheck, but it does mean that I shouldn’t pretend to be confident that I’m “earning” everything I get: if I were a different but equally capable person, the chances are that I wouldn’t be getting the same compensation. The chances are, in fact, that I wouldn’t be doing what I do at all: looking around at my last several jobs, it’s abundantly clear that society is pushing men and women in different directions. I would like to pretend that I’ve gotten where I am out of merit, and I do actually believe that I’m a good programmer, but still: clearly I am and have been for decades competing on a playing field that benefits me. And it’s not clear to me either what the ethical responses are to this situation or whether I personally am willing to accept the consequences of those ethical responses.

 

So: powerful forces have their effects everywhere, at all levels. They figure out where each of us individually have our limits and then push us in their favor towards those limits. And just being aware of the extent of this is very difficult, let alone navigating it at all successfully.

Fortunately, as the protests over the last month have shown: there are powerful forces working in favor of the many, not just in favor of the few…

someone is wrong about apple on the internet

January 20th, 2017

Random thoughts kicked off by the new MacBook Pros (or, really, by people’s reaction to them):

  • It was really weird to see how strongly people reacted to the 16GB memory limit.

I totally get being disappointed that 16GB is the cap: that felt low to me, too. But (and I wish I’d saved links) the reaction seemed much stronger than that: that a 16GB cap means that this isn’t a pro machine, that it’s impossible for professionals to get work done in 16GB.

And that’s ridiculous. I’m a professional; I use Macs for work; all of my Macs have 16GB of memory. And, given that Apple hasn’t released a laptop with more than 16GB of memory, there are plenty of people serving as existence proofs that professionals can use a 16GB Mac.

  • The shape of Apple’s laptop line

Then, once it turned out that the reason for the limit was because of chipset limitations, the reaction changed: some people said “fine, I guess Apple made a good tradeoff”, and other people said “pros want a powerful machine, so Apple should have released something heavier and/or with less battery life so that we could have gotten more memory”.

Which is something nice to wish for in an alternate universe, but I can’t imagine it happening in this one. Apple’s laptop strategy is clear and consistent: they want to have two models, a cheap and light one and a more powerful but still pretty light one. Sometimes (as is happening now) they go through a transition period, where they introduce a new, lighter model that starts out in the middle and then, as the price drops, replaces the bottom one; we saw this with the Air replacing the plastic MacBook, and we’re seeing this now with the non-Pro MacBook being introduced in the middle but being named in a way that makes it clear that Apple intends it to replace the Air once its price drops enough. (The lack of retina Air models, or of Air updates at all, also makes the intended transition clear.)

Apple isn’t going to introduce a third, even-more-pro level; Apple isn’t going to make people who can’t fit in the skinny MacBook’s constraints use something fat; and it’s abundantly clear from their OS work over the last few years that battery life is a priority for Apple.

Also, they only update the body for their machines every few years. So, if they make the machines large this year, that will affect them for years to come, even after chipsets have been released that allow them to use more memory at low power draws. Again, it’s no surprise that Apple is going to choose a tradeoff that makes the machine a little underpowered now, growing into something entirely adequate in future years: we’ve seen that play out before.

  • The dangers of single suppliers

Even though it’s no surprise that Apple made the tradeoff they did, that doesn’t mean that other people should prefer that tradeoff. It happens to be one that I’m personally happy with — 16GB is fine with me, while more weight is not fine with my back — but there’s no reason why everybody should have the same priorities as I do.

Disruption theory warns about the dangers of overserving; part of me wants to say that some of what’s going on here is that Apple is being smart by not giving into the temptation being led into overserving by following their most profitable customers. Apple has always been a weird case for disruption theory, though: they stay in the high end but remain in touch with enough people that they can continue to grab large profits because of both their volumes and profit margins. I wish I understood what was going on there, but it feels to me like they probably understand something about product placement / stratification that basically nobody else does, and I suspect that staying a bit away from the high end is part of that.

But that choice leaves those best customers frustrated. In most circumstances, that would be fine, another company would spring up; that’s harder in this case. I do wonder if enough people will flee to either Windows or Linux to make a difference in the medium term, though.

The other situation in which a single supplier is causing problems here is Intel, with their chipsets. I’ve mostly ignored the ARM Mac rumors before as not relevant any time soon, but now I am wondering if they’ll come to pass sooner rather than later: the ARM chips are catching up very quickly in power, and if Intel is causing active problems for Apple, then maybe Apple really will jump ship in a few years?

I also wonder if Apple can stick with Intel CPUs while designing their own chipsets. I heard something about there being licensing issues that would prevent that; I’m not sure if that’s true, and, if it is, what might be the ways around that. (Can Apple twist Intel’s arm enough? Do a deal with AMD? Buy AMD?)

  • The role of the laptop

What do we want out of a laptop? The current consensus vision is: we want to have a single computer which we use wherever we are, doing whatever we want on it. If we’re at work, we’ll plug it into a monitor (and maybe connect a keyboard, a mouse, potentially other devices, or we’ll take it with us as we go from meeting to meeting. If we’re at home, maybe we’ll also sit at a desk and plug it into a monitor, maybe we’ll sit in a comfortable chair and have it in our lap. If we’re in a coffee shop, we’ll plunk it on the table next to us.

Depending on the kind of work we do, the kinds of environments we like spending time in, our modes of transportation, and just our personal preferences, we’ll value aspects of the laptop differently: maybe we’ll want more compute power, more storage, more battery life, less weight, a smaller size, a larger screen. But modern laptops are, year after year, reducing these tradeoffs: these machines are very powerful, very light, have a battery that can last all day, and a lovely screen. Not powerful enough for everybody, not a big enough battery for everybody, and so forth, but really: laptops these days are great for lots and lots of people in lots and lots of situations!

At the same time, though: networks get better and better as well, as do the services available over those networks. So why worry so much about having a laptop as a single machine that you can do everything on? You can reach the same files anywhere with Dropbox, your e-mail is stored in Gmail, you spend huge amount of time browsing the web, and AWS is happy to provide vast computing and storage resources for you. With that lens, it’s less clear that it’s important to focus on the power of your laptop.

To return to the question of wanting more memory: for me, personally, lots of the situations where I would want more memory are situations where, honestly, I’d be just fine doing the task in question on a Linux server somewhere. It happens to be the case that, much of the time, my laptop is good enough; but if it’s not, it’s not particularly clear to me why I would prefer a more powerful laptop over spinning up an AWS instance. (Or, for that matter, over putting a generic desktop machine under my desk and installing Linux on it.) The laptop is a nice interface to that compute power, but that doesn’t mean the laptop has to host that compute power.

Maybe I’m eccentric in that regard; but I imagine that a lot of programmers feel the same way, as do a lot of people who are, say, doing scientific computing. I’m sure there are people out there who need to do tasks that require a rich graphical interface that’s colocated with significant compute power (people who spend lots of time doing video work, maybe?); I also bet that there are lots of people (including me, honestly) who work that way mostly out of habit, though, or because of tooling limitations.

I’m pretty sure that most of the people who are talking about how awful the new Macs are will stick with them; but it wouldn’t surprise me if a non-negligible number ended up in a split world between a Mac and a Linux server (or servers) somewhere. And I suppose it’s possible that enough will go to Windows to make a difference; I’m glad that Microsoft is trying out some interesting hardware ideas.

  • Apple’s commitment to the Mac

Another phase of the reaction: the new laptops are a sign that Apple doesn’t care about the Mac. I don’t see how to square that claim with the existence of the Touch Bar: nobody was asking Apple to create the Touch Bar, it required real engineering effort at a hardware level, they put in the work to add support across a wide range of their applications, and apparently the API is well-done as well.

That doesn’t mean that the Touch Bar is a good idea! It just means that Apple spent significant engineering effort on this Mac, effort from a wide range of teams, and effort that they could easily have avoided spending.

I’m not saying that Apple cares as much about the Mac as they do about the iPhone: it’s much more important to them to make a splash with a new iPhone every year than to constantly improve their Macs. But there’s a big difference between “iPhones are more important to Apple” and “Macs aren’t important to Apple”.

  • Mac desktops

The above arguments mostly settled down to a general feeling that the new laptops are okay, but that we still need thinkpieces about the Mac being doomed, because Apple clearly doesn’t care about professional needs for the desktop.

And it’s not so clear to me how that will play out in 2017. I’m almost positive that those worries are significantly overblown, if for no other reason than that articles about Apple being doomed are 1) frequent and 2) always wrong; but I can’t see the details. And it’s certainly the case that the Mac Pro raises eyebrows: I can’t imagine that Apple’s plan when they launched that machine was to leave it basically untouched after launch for three and a half years and counting. So something changed their plans, and I don’t know what caused that change or what their new plan is.

I am sure that Apple still cares about Mac desktops: the most recent iMac iteration is apparently a pretty glorious machine. And it’s a machine that’s good enough for the vast majority of users, like the new MacBook Pro; but desktop machines should have a higher ceiling than laptop machines, and the iMac has a lot of headroom above it.

Certainly something more powerful will come in 2017: if nothing else, an iMac that supports more than 16GB of memory! (And presumably with an external keyboard with Touch Bar, though I don’t know for sure if Bluetooth has bandwidth constraints that would make that unworkable.)

I kind of feel like something else is coming, though. Above, I claimed that Apple has historically had exactly two classes of laptops, one for most people and one higher-end one; they’ve also generally had that for desktops, an iMac and a Mac Pro. And I like symmetry concerns, which means that I expect that to continue to be the case!

Except that, for years now, they’ve actually had three desktop lines, with the Mac Mini in the mix as well; and, unlike the three laptop lines, it hasn’t been a temporary measure caused by phasing out old models and phasing in new models. So their product lineup hasn’t actually been that symmetric in the past; and symmetry, while nice for mathematicians, isn’t necessarily the best business strategy anyways.

I think that the Mac Mini is on its way out: its use cases have largely either gone away or been satisfied by the Apple TV or been satisfied by NAS devices. Really, the important gap is at the high end, not at the low end.

But it’s less clear to me that there’s a reason for physical distinction in desktop machines the same way there is for laptop machines. And the main reason for a physical difference at the high end would be to allow expandability / user replacement of parts, which is something that Apple has been steadily moving away from over the last decade.

So I can see Apple saying that the iMac form factor is good, and just putting in more options for high-end components there; that probably seems like the most likely option to me? (Possibly branding some configurations as an “iMac Pro”, but with the two versions as much more of a single continuum than their laptops are.) I guess the second most likely option to me seems to go back to an expandable Mac Pro: it’s going in an un-Apple direction, but it does provide a clear justification for a split between two lines of desktops, and clearly there’s something about their non-expandable Mac Pro that didn’t turn out the way they hoped. The third option would be a new model of non-expandable Mac Pro (with a promise that this time it will be different?); and the least-likely-sounding option to me is for them to say “the iMac at basically it’s current power level is fine, we’re not going to try to make desktop computers for the 2% or 5% or whatever of people who want something more”.

I’m really not sure, though: with the laptops, there have been lots of examples over the last few years about the direction Apple is going in and what’s important to them, while with desktops, there have been many fewer examples. And, well, it’s harder to make predictions about the future than about the past.

  • The retina transition

I expected the retina transition to be quite smooth, after observing the first couple of examples; but it sure hasn’t been for Macs, with Apple still not offering a cheap retina laptop, with the Mac Pro mess, and with them only now having a good solution to plug a laptop into a retina monitor.

So: I underestimated the ease of the retina transition and the importance of the bandwidth that ports provide. And that is one possible story behind the Mac Pro stagnation: Apple was unwilling to invest in improvements to machines that didn’t support retina displays, and it took longer than they expected for a suitable connector to appear? Actually, now that I type it, that seems pretty plausible: maybe my third scenario (new non-expandable Mac Pro) is more likely after all, with Apple claiming that, with USB C / Thunderbolt 3, everything will be wonderful and they will continue to improve it. Not sure the Mac Pro audience will trust Apple if they make that claim, though.

(And, while I’m on the subject of ports: anybody who was surprised about the ports on the new MacBook Pros hadn’t been paying attention. Though I don’t think too many people were surprised, even if they were complaining.)

  • The machines themselves

So: the machines seem like they fit pretty well into what you would expect from Apple. My home laptop was quite old, so I’d been waiting for new models to be released so I could replace it; I got a 15" base model MacBook Pro.

And, indeed: it’s a great machine, in basically unsurprising ways. I liked my prior laptop (a six-year-old 17" MBP), but I certainly prefer having a machine that’s significantly lighter and has a significantly nicer screen. One weird thing about the screen configuration: the default logical resolution the OS selects is a little higher than half the physical resolution. Honestly, it looks totally fine at that resolution, I didn’t notice pixel artifacts, but when I set it to exactly half the physical resolution instead, the larger text size made my aging eyes noticeably happier. At any rate, I appreciated the higher physical resolution giving me the flexibility to change logical resolutions.

The Touch Bar is a sign that Apple cares about the Mac, but that doesn’t mean that it’s a good idea! And I’m still not completely sure what I think about the Touch Bar: numbered function keys do seem a little silly, but only having four function keys worth of operations available by default is a little low, and Safari in particular doesn’t provide useful functionality with the portion of the Touch Bar that it takes over for its own usage. (Not that I have a better idea about what Safari should do with that space.) The nonphysical escape key is totally fine, I can reliably reach it without looking, and Touch ID is great.

I was a little worried about the keyboard, but, once I’d spent a little time with it, I turned out to fall into the class of people who like the keyboard. In fact, I’m pretty sure that it’s now my favorite keyboard: I really like how little pressure you need to type on it. (So now I want all of my other machines to have that keyboard, so my fingers can really get used to it!) The big trackpad is great too, the fake click is magical, and (once I got used to the fact that I could now easily click with a finger instead of a thumb) I appreciate how little effort the click takes. I’m not entirely sure what I think about having two depths of click: it tripped me up several times when I was getting used to the trackpad, and while that doesn’t happen to me now, I’m not yet getting value out of the two levels that justifies the complication. Maybe I’ll like having the second level as I use it more?

I was excited about the True Tone display on the iPad Pro; I was expecting it to show up on all their new products, I was disappointed it wasn’t on the iPhone 7 (and I probably would have bought an iPhone 7 if it weren’t for that, actually), and I’m disappointed it’s not here. Which is another way in which I have to update my mental model of Apple’s behavior: it seems like the sort of improvement that would spread quickly everywhere, but now we have two existence proofs that that’s not the case. Not sure what’s going on there.

The USB C Thunderbolt 3 ports are great; I’ve only seriously used them once, but I was impressed how quickly I was able to use them to do a full-disk clone. Though, admittedly, I’m not sure how much of that is surprise the speed of the port and how much is my expectations being set by old hardware. I was expecting to miss MagSafe, but I haven’t particularly; I do miss the orange/green light on the charger a little bit, though. And I am not impressed by them not including a long cable from the power outlet to the brick in the box; the current Apple does seem a bit cheap in how they nickel-and-dime you.

I’ve run into a few more bugs than I would have liked. My initial restore when setting up the machine ran into enough problems that I had to bring it into an Apple store to reset it to factory settings: clearly Time Machine over the network isn’t as reliable as it should be. (I’ve since added SuperDuper as a backup option.) There were a few OS crashes; they’ve mostly or entirely gone away after the OS update, though. At first I was worried about battery life, but now the battery life is great; not sure if the problems were caused by OS problems that have been fixed or by some sort of new machine experience (the initial Spotlight index?) or by Miranda playing lots of MySims, but whatever was going on, I’m happy now. And in general the bug level has gone down to an acceptable level; not quite as low as I would like, but low enough, and the trajectory is in the right direction.

Touching on the “role of the laptop” note above, I’m starting to rethink what my machine mix should be. For the last few years, one decently powerful laptop plus an iMac with more storage (e.g. with my music library on the latter) has been the right choice for us, but I’m not convinced that it will be the right choice once Miranda has gone off to college. It seems like one decently powerful machine is a better choice for me, which either means a laptop that can do everything plus a monitor for times when I want it or else an iMac plus a lower-powered laptop. Not sure; for now, I’ll stick with my current configuration, and I’ll buy a new iMac when they release them, presumably in a few months. (My iMac still has a spinning disk, and that really is slowing it down.)

At any rate, it’s nice to be using a new computer again; one advantage of only upgrading rarely is that the upgrades feel better when you do them.

firewatch

January 2nd, 2017

(Spoilers ahead.)

The introduction to Firewatch sets puts Henry in a situation that’s impossible to successfully navigate. I can’t really imagine what it would be like to have somebody you love not only fall into dementia but to do that when they’re in what should be the mental prime of their life; I would like to hope that I’d navigate it more gracefully than Henry apparently did, but until I’m confronted with something like that, who knows.

And his difficulties didn’t begin there. One of the big stories of 2016 is the power of the filter bubble: people clustering with those who come from the same point of view as you have. And one half of the couple here was representing a filter bubble that is very familiar to me: I’m not currently an academic, but I grew up in academia, started my career in academia, and in fact every person that I’ve dated (a small number, admittedly!) also had academic parents. So when I see Henry approaching Julia, that’s the lens that I apply: it’s a gulf that I would personally find hard to cross, and more power to him (and to her) for working on crossing it.

Those two difficulties color how I interpret Julia’s family taking her away to live with them: it’s not necessarily that Henry was behaving badly, especially given how difficult the situation would be to deal with well. Instead, it’s that they never felt right around Henry, potentially never felt that he was good enough for their daughter, and that colored what they saw. While Henry, in turn, very much loved Julia, but he had been through the wringer, and ended up retreating to a context where he felt more comfortable by accepting the job as a fire lookout.

 

So that’s how I was role-playing when I got out of the prologue: Henry needed a place to recharge, and he’s the sort of person for whom hiking around in the forest would help him do that. And he was happy enough to talk to Delilah, but Julia was never far from his mind during those conversations.

I (me the player, not me the avatar) assumed that the game was setting up some sort of romantic interaction with Delilah: that’s the sort of thing games do. And I was actively uninterested in dealing with that directly: that’s not the sort of thing that my Henry would do. But, as the game went on, I realized that I wasn’t giving the game enough credit: it was actually doing a quite nice balancing line in that regard. Delilah’s an interesting person, she’s the sort of person I had no trouble imagining that Henry would enjoy talking to. But “enjoys talking to” doesn’t lead to romance; also, it’s entirely possible to be in love with one person while seeing yourself getting potentially attracted to other people, and to worry that there are landmines there.

And both Henry and Delilah recognize this, and also recognize that they both have bigger issues to deal with. So I ended up enjoying watching the two of them navigate that space: they really did enjoy talking to each other, they really did care about each other, there probably was a subtext of attraction there on both sides. But, ultimately, they both wanted the subtext to remain subtext, and Delilah ends up pushing Henry to go to see Julia, even though that means facing Julia’s family. And, learning more about the game after I finished it, that’s not just the path that I took: there apparently isn’t an all-out romantic option available. The game simply isn’t a dating sim; and while I have nothing against dating sims (heck, I usually enjoy romance plots in games), I’m very glad to see a game that explores relationships in a different context.

 

The game doesn’t consist solely of walking around and talking to Delilah: there’s the whole mystery plot there, trying to figure out if there’s somebody else around and, as it becomes clear that that indeed is the case, to figure out what on earth is going on. Something beyond walking and talking feels more or less necessary to me in a game like this; a mystery subplot seems as reasonable a way to do that as anything.

The fact that the mystery person is listening in on you conversation fits in well with the subtext of the conversations: not only are the two of you trying to navigate how you feel about your conversations with each other (or at least Henry, as I played him, is trying to figure that out), the third party raises the question of: no matter how you intend your words to Delilah to be taken, what would other people think if they heard them?

The explicit threat there is: what would other people think about your actions and words in the context of the girls who disappeared? So the mysterious person isn’t actually threatening to tell your wife’s family about your conversations with Delilah. But just the worry that that sets up adds in layers: what’s the least charitable interpretation of these conversations? And how much of that least charitable interpretation would actually, ultimately, be true at some emotional level?

 

Of course, that’s all subtext; and, setting threats aside, the truth is rather different. And, honestly, I was a little disappointed by the details of the truth: I’m still not sure if we’re supposed to believe that a single crazy guy set up a listening post or if there was some other organization that set up a listening post / experiment station that, for some reason, Delilah was completely unaware of. Neither of those explanations made sense to me; and they both felt strangely pulpy.

But, setting aside the details of the listening post: on a narrative level, not only did that plot give an extra perspective on Henry’s conversations with Delilah, it also gave a perspective on at least one of the things that was troubling Delilah. Henry’s working through a very serious issue, but I assumed that Delilah had troubles of her own; and there’s a nice balance in having Henry’s troubles be frontloaded at the start of the game and then, while not getting solved over the course of the same, at least having Henry come to terms with them; while Delilah’s troubles are buried at the start of the game, and then get uncovered in the last sections of the game.

 

I’m very glad the game exists, and to have played it. Aside from what I’ve talked about above, it’s beautiful, and I really did enjoy just wandering around the environments. But, mostly: I’m not at all used to seeing this kind of adult story in games, and it’s great to see more examples of game designers turning away from games based on killing and towards other sorts of stories.

the gokhale course

December 21st, 2016

As I mentioned before, my back problems started coming back earlier this year; since I’d thought the Gokhale book made sense, I decided to give their course a try.

And, fortunately, it’s been working! Or, rather (correlation isn’t causation): I was taking 12 ibuprofen tablets a day in the summer, I’m taking 6 a day now, that number is continuing to trend downward, and behavioral changes from the Gokhale course (and, of course, from the book) are the most obvious explanation.

 

The main positioning changes from the course were:

  • The teacher in the course (Faye Alexandrakis, I thought she did a good job) pointed out that I was arching my stomach/lower back forward. In retrospect, I feel a little silly not having noticed this myself — I have mirrors in my bedroom that I could have used to figure this out myself, instead of assuming that all the mentions in the book of being swaybacked didn’t apply to me. But they did; I’d just been way too overconfident in my ability to sense whether or not my back was straight.
  • She also encouraged me to tilt the upper half of my torso forward. This is something the Gokhale course calls the “rib anchor”; I’m not sure if it’s in the book or not, but if it’s there, I don’t think it’s emphasized as much as it was in the course.
  • Going over the internal corset in the course helped me identify one of the muscles that was relevant; this same muscle is also, I think, being strengthened by the one exercise my back doctor tells me to do. (It’s right under the bottom of my rib cage, a little higher up than the muscles you use when doing sit-ups.)
  • In general, the internal corset practice got me thinking more about stretching my body upwards; at first I started trying to do it while exercising, but now I do it more routinely.

It feels to me like the above four points, when put together, are the key to the changes: by altering both the top and bottom halves of my back, my spine is straighter, and I’m using my muscles to further support it. And I think that all of this works together to put less pressure on the disks in my lower back, not just stopping its decline but allowing it to actually heal.

 

Then there were some positioning changes adjacent to the spine:

  • I’d been occasionally doing the shoulder rolls before; I started doing them more often while taking the course, and about two weeks in, something clicked, where it started to feel natural to have my arms/shoulders further back, and, when they’re in resting position, with my hands parallel to the sides of my body. That latter bit (which the book points out, too) actually feels to me more fundamental than the back/forward position, though if they’re resting and parallel, they’ll naturally be further back.
  • I’m also doing a better job of having my neck stretched up and straighter, instead of at an angle forward.
  • I’m paying a lot more attention to the previous two points (and to general back straightness) when looking at people around me and in artwork. For Love Live players, look at the difference in how Yohane hunches over compared to Yoshiko. Interesting seeing the physical positioning of the characters in Tokyo Mirage Sessions in the regular world versus in the Idolasphere, too. Though, frequently, neither position for the character is great: slumped versus swaybacked, instead of straight.

Those three points are really a continuation / refinement of the earlier ones: once you’ve gotten your spine straight, extend that to your arms hanging off of the spine, or the significant weight on top of the spine that’s your head.

 

Then there are the exercises specifically around temporarily stretching your spine:

  • I’d already been sometimes doing the “stretchlying” on your back; I picked up one or two technique refinements from the course, though I’d been basically doing it correctly, and now I try to do it every day when I come home, as well as right before going to sleep.
  • I’d mostly skipped the side version of stretchlying in the book, and the one time I tried it out before the course, it didn’t go well, I woke up feeling really stiff the next day. I’ve tried it a little since the course, but ultimately I’ve decided not to focus on side stretchlying, and in fact I’m a little worried about potential negative effects from trying to tilt my hips the way they recommend, getting it wrong, and having it squeeze my disk. So I’m mostly skipping that, though I’m trying to keep my spine a little straighter and stretched when sleeping on my side.
  • There’s also a “stretchsitting” exercise for using a chair to help stretch out your back. Basically none of the chairs that I normally use let me do this, but the Gokhale folks manufacture a chair designed for this (as well as for a different sitting technique below); after trying it out in the course, I figured I’d order a chair and give it a try at work as well. This, unlike the money on the course, was not money well spent: I actually think I temporarily made my disk problems worse by stretchsitting with the chair and (probably) doing it a bit wrong.

So, basically: the basic “lie on your back while actively trying to stretch it” technique seems like a good way to give my back a bit of a break, but beyond that, I’m not so convinced by these exercises.

 

Finally, a grab bag:

  • They have a “stacksitting” technique for sitting in a chair in a way that’s designed to keep a straight spine. I think I was probably doing that okay before the class, but I definitely learned some pointers in the class; stacksitting still took effort after the course, but it’s becoming less of an effort now, whether from habit or strengthening muscles or getting a better feel for what it means to have my back straight. (This is the other thing that their chair is designed to help; the help there, however, is minimal, and the benefits of the tilted front of the chair are, for me, outweighed by how hard the cushion is compared to the office chair that I’d already had.)
  • I was really hoping to learn their recommended walking technique from the course; but this turned out to be the one part of the course that didn’t work for me, in some ways I actually felt more confused about the technique after the course than before the course. There were a couple of walking pointers from the course that I’ve tried to follow, but in general I don’t think I understand their recommended way of walking particularly well at all.
  • Before the course, I hadn’t gotten around to reading the section of the book about bending to pick up low objects, on the theory that it was probably largely a recommendation to keep your back straight while bending from your hips. Which is true, but there were definitely some useful pointers there; probably I could have picked many up from the book, but not all. At any rate, it’s good to have an idea of how to do that, and also it’s good to be working on my (very tight) hamstrings. I don’t pick up low objects enough for this to make a big difference, though.
  • As a part of various of the techniques, the class had us arching our feet a bit more. I wasn’t sure how to work this into my day-to-day activities, but then I got a new set of shoes that turned out to transmit the shock of the ground to a disappointing extent; rather than either accept that or change shoes, I started arching my feet more, and this got the balls of my feet more involved in walking, which made a big difference. I’m still experimenting with this, I don’t think it’s quite right, but I feel like I’m going in the right direction, and hopefully I’ll gradually get less fallen arches.

 

The basic summary: after the course, I feel like I have a better idea of what it means in practice to keep my back straight, and of some of the follow-on affects for my body. I’m still not completely convinced by the recommendations for your hips, I don’t feel like I understand their walking technique enough to have an informed opinion on it, and their chair does not work for me. But I’m very glad I took the course, I feel like I have a real reason for optimism about my back for the first time since my back problems started.

bluetooth car audio

December 18th, 2016

When I got my first iPhone, it was easy to hook it up to car audio: there were a bunch of options for 30-pin-to-aux connectors. (Which would also charge your phone, useful both in itself and because most audio and map software has an option to not shut off the screen as long as the device is powered.) When I got my first lightning phone, though, doing that was harder: for some reason, there wasn’t a similar ecosystem for lightning-to-aux connectors, it seemed like the general feeling was that bluetooth was the way to go. I’d heard enough weird stories about bluetooth, though, that I didn’t want to try that, so I ended up staying with with the old connectors in our cars and buying 30-pin-to-lightning adapters.

Recently, though, for whatever reason, my phone has been slipping off the lightning adapter in the cars if you touch it at all: not good when playing the next podcast episode while driving. And, with the iPhone 7 launch, I’d been hearing more chatter around bluetooth; in particular, people saying that, despite bluetooth’s issues, it really is better not having to fiddle with wires. So I figured I’d give a bluetooth adapter a try in my car. (We have two cars: one which is the default car for the family on evenings/weekends, and which Liesl drives to work, and one which I use on the rare occasions when I drive to work and which I, or more rarely Liesl, drives when we both need to use a car on weekends.)

 

So I did a bit of research, and found a well-reviewed bluetooth adapter that supported two phones; and, as it turns out, bluetooth does feel kind of magical! I’m not sure why I like being able to hit play on my phone and hear it come out of the speakers even though I haven’t plugged in anything, but I do. So: tentative success, enough so that I was trying to figure out whether I wanted to buy a second one and convince Liesl to switch over as well.

There were a couple of times a day or two later when it didn’t connect up immediately, though; I had to go into the phone settings to tell it to re-pair. That was pretty annoying, especially because I didn’t know when it would happen: so I would hit play, hear the sound coming out of the phone speaker, hit pause, fiddle with settings, go back to the podcast client, skip back 15 seconds, and play again. If I had to do that at all regularly, then that would be a problem; maybe I could find a sequence of steps that would reliably avoid that problem, though?

But, a few days after that, I went through those steps, and the phone couldn’t see the bluetooth device at all: apparenly I’d gotten a bad device. Oops.

 

I chalked that up to probably being the problem that Amazon has with fakes; I figured the solution there was to go to the Apple store, since, with the push that they’re making to bluetooth, surely they have an adapter there that works and that comes straight from the manufacturer. But, to my surprise, Apple’s online store didn’t list anything, and when I went to a physical store, they didn’t have any, either. I asked a sales person about this; she said that most people’s cars came with bluetooth already. This may be true, but it doesn’t solve my problem, since a car (or even a new car stereo) is rather past my price range for a phone accessory! (She tried to be helpful by pointing me at something from a device manufacturer’s website; that was an FM transmitter, though. And, indeed, there are still lots of FM transmitters available: I guess the window when aux-without-bluetooth car stereos were manufactured was surprisingly small?)

At any rate, I went into Best Buy, and they had something that more or less fit the bill. Its main downside was that it only supported one phone; fine for my car, not fine for Liesl’s car. So I bought it, and it seemed to work.

The next day, though, a support person for the seller of the first device that I’d bought contacted me: apparently a one-star Amazon review gets their attention. I figured I’d give them a second chance: if they’re talking to me directly, then hopefully I won’t get a fake, and if it works well, I can potentially use two of them? So I let them send me a replacement instead of asking for a refund, and used that instead of the one I’d bought from Best Buy.

Which worked well, until it didn’t: audio dropped out while I was driving about a week later, and while it reconnected the next time I tried, the time after that, it wouldn’t reconnect. So apparently that manufacturer had a bad batch of products, or something; I’m not naming them here, because they really did seem to be trying to make things right, but ultimately, I got two devices from them and both failed after a week. (In particular, I now think I was wrong to blame this on Amazon.)

 

Fortunately, the one I got at Best Buy, an iSimple BluStream device, worked great! If I leave it plugged in, then the phone doesn’t always connect to it when I get into the car (or at least doesn’t always quickly connect to it); but I don’t actually want to leave it plugged in all the time (I don’t use that car all that often, so I don’t want any potential battery drain). And if I leave the device sitting next to the power plug, and plug it in as I sit down in my seat, then by the time I get ready to go and have the car turned on, if I hit play on my phone, it connects reliably. (Incidentally, iOS 10.2 just added a headphone indicator that shows up when the phone is connected to a bluetooth device, making it easier to tell what to expect.) And I still prefer not having wires attached to my phone, and going wireless is new enough to me that it still feels a little magical; and it’s certainly a big improvement over using a wired connection that falls out if I touch the phone!

The one downside is that the phone isn’t charging. The device does have a USB power port, though; so I ended up getting a cheap lightning connector from Amazon. That way, I can plug in if either my battery is low or if I’ll need to look at the screen while driving, and I can not worry about it otherwise; and I also don’t have to worry about the cable disconnecting, podcasts will keep on playing. (And the phone is smart enough to realize that it should send audio over bluetooth, not over lightning.)

It doesn’t solve the problem of what to do with the other car, though: I do prefer bluetooth, but not necessarily enough to try to find a device that works and that can remember two phones, and to answer questions like “if both Liesl and I are in the car, will it let either of us play music to it without doing any re-pairing, or will it only talk to the most recently used phone?” (And I would prefer to be able to use that car on weekends, it’s more gas-efficient.) Fortunately, while poking around on Amazon, I noticed that there is currently (as opposed to when I looked at this a few years ago) one lightning-to-aux connector available, the Griffin iTrip AUX. And plugging normal lightning connectors into my phone seems stable enough: I think the 30-pin adapter puts more torque on the connection or something. So I’ve ordered one of those; hopefully it will work…

 

At any rate: I like doing stuff without wires, and I didn’t run into some of the problems with bluetooth that I’d heard about. (E.g. the latency was fine; audio quality was also fine, but listening to podcasts in a car is not a good test for that.) I was surprised to see weird gaps in the ecosystem, though: I still don’t understand why Apple doesn’t sell a bluetooth car adapter in their stores, in particular.

But it also feels like there are issues to solve. Maybe I’m making up this problem about connecting multiple phones to the same bluetooth device, since I haven’t actually tried that, but I don’t think so. And, while I’ve found an order of operations that gets my phone to reliably and easily pair with the device, that took a bit of trial-and-error, with bad experiences while I was experimenting. (And I was lucky that, in the car I was using, the power plug was exposed instead of hidden in a console.)

Still, I’m tentatively optimistic about our new wireless world…

ace attorney – spirit of justice

December 17th, 2016

The latest Phoenix Wright game, Ace Attorney – Spirit of Justice, turned out to be one of my favorites in the series. Not for mechanical reasons, because the mechanics, while pleasant, are completely unsurprising to anybody familiar with the series: the same exploration, the same trials, the game keeps all the characters from the previous episodes, and they keep each character’s special mechanic while adding one new mechanic for this version (an ability to replay what the victim experienced in their last moments). In other words, nothing new, other than the new mechanic; I like the new mechanic, but not enough to really make a difference.

The plot, I think, is a better answer as to why I liked it. You spend half your time in Kurain: Maya is visiting her home country, to get more spirit medium training. They heighten the tension by, in the Kurain cases, having you be liable for the same penalty as the defendant if you lose; this felt a bit cheap at first, but they used it to get you care about a protest movements, about the legitimacy of the government. Also, you got to learn more about Apollo Justice, even meeting some family members (it turns out he’s from Kurain); I liked his first game, so I was glad to see his story fleshed out a bit more.

 

And that, in turn, feeds more directly into why I liked Spirit of Justice. First, this question of family. The series has touched on family from the beginning: Mia Fey and Maya Fey in the first game, adding in Pearl Fey (and her relationship with her mother) in the second game, and giving Phoenix an adopted daughter in the fourth game.

But biological families have never been presented as the only families that matter in the series. (And families via marriage are almost nonexistent in the game; though several actually do show up in Spirit of Justice, as frequently as negative examples as positive ones.) Phoenix and Maya are very important to each other, reacting to the loss of Mia by acting like a family of their own; and watching Phoenix and Edgeworth’s relationship deepen and evolve through the first series is one of the biggest joys that the games bring, seeing how an antagonistic, at times painfully distant friendship turns into unquestioned support based on a shared desire to get the truth. Edgeworth only has a small part in Spirit of Justice, but his appearance is my favorite surprise in the game: he’s a little older, a little mellower, but he has no question that he should be there for Maya, that he should be there to push Phoenix to uncover the truth.

So we see the Phoenix/Maya and Phoenix/Edgeworth families; and we see the Phoenix/Apollo/Trucy/Athena family deepen. And we meet Apollo’s family: he gets to know his (adoptive) father again, and he struggles with his (adoptive) brother. That latter struggle mirrors the Phoenix/Edgeworth struggle: they fight it out in the courtroom, the prosecutor is characterized by his purity, but ultimately they both want to uncover the truth, even if it leads somewhere painful.

And then there are the Kurain royal family members. It’s one of the families in the game that we don’t identify with, that falls apart; but in the process of that, the royal daughter Rayfa forges a real bond with Apollo. They fight to bring out the truth; Apollo’s faith in Rayfa, even as they’ve been fighting in the courtroom, is a key moment to bring out the best in her, to help her grow into her powers.

 

These constructed families are always there for each other: they ultimately have a fundamental faith in each other’s abilities and fundamental goodness. But they’re also united in a belief in the powers of uncovering the truth, that doing so will lead some place better, even if the journey is painful.

And, right now, that’s a particularly powerful message for me. The United States has a president-elect who willfully disregards the truth, who has no compunction against making statements that are trivially shown to be false. He’s an extreme, but the Republican Party has been on attack against the concept of facts for years; if reality has a liberal bias, then reality has to go.

It’s not that Trump and the Republicans don’t care about the concept of truth, however. On the contrary, they’re trying very hard to promote claims as being accepted as truth, regardless of what correspondence those claims have with reality. (And, of course, trying very hard to promote their position on matters of judgment; that’s a different matter, though an equally important one.)

 

So maybe Phoenix Wright is the hero that we need right now. Spirit of Justice shows a government that is so insistent on its unique right to present accepted truth that it sets up a courtroom system where arguing against the government’s version of truth is a life-or-death matter for a lawyer. And Phoenix Wright wades into that system, and argues away; he wins his cases. And, in doing so, he raises doubts in the mind of Rayfa, one of the people in charge of setting the government’s version of truth.

Then, in the last case, Apollo Justice appears, arguing directly against the queen. He pursues the truth no matter where it leads him, even if where it leads him is a distinctly personally uncomfortable place. His faith in Rayfa and his pursuit of the truth give her the courage to go forward. His pursuit of the truth wins over his brother Nahyuta from the side of the government, despite blackmail from the queen.

 

And, at the end, there’s a revolution.

 

apple music

December 6th, 2016

A few months back, I decided that I should join the modern world and start using a music streaming service, instead of (largely) only listening to music from albums that I’ve bought. Not that I have anything against buying albums, and in fact, I planned to keep on buying albums (both for archival reasons and because royalty rates for streaming services are awful); but switching to a “try before you buy” approach to buying albums seemed like a good idea, I wanted a wider range of mechanisms for music discovery, and of course having trivial access to a huge catalog of music is a good thing. Also, streaming is clearly the way of the future (heck, it’s clearly the way of the present); I might as well go with it unless I can see concrete reasons not to.

Apple Music and Spotify seemed like the obvious choices; for no particularly good reason (I’m sure Spotify is an excellent service as well), I went with the former. And, so far, it’s been great! Great mostly in the ways that I expected, but there have been a few surprises.

 

The first surprise was how I had to think about the hierarchy of music in my collection. Previously, I’d had most of my music stored in my iTunes library on my computer (though there’s still a significant amount that’s on CDs that I haven’t ripped); I don’t want all of that on my phone, though, partly because it won’t actually all fit on my phone and partly because there’s a decent amount of music that I have that I want to keep a copy of but that I don’t want to come up when I hit shuffle play. So I tell iTunes to only sync checked music.

Shortly after switching to Apple Music, my phone got full (I really need a 128GB phone…), so I went to clear stuff off; I unchecked a dozen albums in iTunes, and went to sync again. The unchecked albums stayed on my phone, though: now that I’ve enabled Apple Music on my phone, it has decided that it’s capable of making decisions itself as to what is in my library.

Once I got past my surprise, I decided that that was fine, and in fact useful and necessary: the whole point of this exercise is that I want to have access to more stuff on my phone, which means that I have to be able to manage music from my phone. (I think Apple actually wants me to drive my collection from either place; I haven’t enabled Apple Music in iTunes, though, and I’ll have to think about the consequences of doing that.)

So, concretely, what this means is that I used to have “music I own” with a subset of “music that I want on my phone”. Now, though, I have a few more options: “music that I have added to my library but don’t own”, and within that there’s “music that I’ve downloaded to my phone” versus “music that is flagged as in my library but will be streamed”. (And there’s the broader category of “music that isn’t in my library but is available to listen to if I search for it”.) And it turns out that these are all very useful categories!

 

Fleshing out those categories, my music exploration workflow is now:

  1. I run across a song that I’m curious about.
  2. I add the album that that song is from to my library, telling my phone to download it. (I still like album’s, I haven’t embraced the new song-centric world.)
  3. I listen to the album a few times over the next few weeks.
  4. Depending on how that listening goes, I might decide to remove the album from my library, I might decide to leave it in there but not downloaded, or I might decide to buy it. (Or I might decide to leave it downloaded but not buy it, but so far I’ve been generally buying albums that I like.)
  5. Repeat, with other songs, or with other albums by artists that survived step 4.

This works very well: I’m buying about the same amount of music that I was buying before signing up for Apple Music, but I like the music that I’m buying significantly more.

 

So Apple Music is working well as a “try before you buy” mechanism, but that process still depends on step 1: discovering music to try. Part of the way that Apple Music has been effective is simply in making it easier for me to follow ambient music recommendations: e.g. if I see a recommendation in Twitter, I can go and add it to my library instead of either listening to it right then (which breaks my Twitter experience) or saving it in Instapaper. But Apple Music has its own discovery tools: curated playlists, Beats One (which I’d been enjoying before but am actually listening to less now), and a weekly algorithmically generated playlist of music it recommends for me.

And that algorithmic New Music Mix has been extremely useful. A lot of its recommendations are off (I should spend some time training it by flagging songs it recommends as liked/disliked), but there’s been quite a bit of music in there that I really liked, much of which I would not have discovered any other way.

At first, it was just funny to see how much K-Pop the mix recommends to me: maybe a quarter of the songs each week are K-Pop, but for whatever reason it generally puts those near or at the top of the list, so I start my weekly listening with a bunch of K-Pop. Which is totally fine! And then I saw a song by Ga-In that I wasn’t familiar with, and learned that she’d released a new album; I would have discovered that myself soon enough, but still, happy to have it pointed out to me.

But then I came across the song New York by Mamamoo. I’d never heard of the group before, but I really like that song; and, as it turns out, they are a quite solid group. (The rest of that album is admittedly not as good as that song, but the album is decent, and I rather like their earlier albums.) Or, on a non-K-Pop note, I can’t remember which Karmin song the mix pointed out to me (Dance with You, maybe?), but Leo Rising is a fine album indeed, and I have no idea how I would have discovered it otherwise.

 

Having access to a larger music library has also been helping my guitar learning. I have a set of five songs that I practice every time I play Rocksmith; at some point, I realized I could just throw them into a playlist. (And also use them as an input to my music discovery workflow; Going to Hell is a good album!)

So now, those songs are in my ears in a way that they weren’t before. Ironically, the problem with playing them in Rocksmith is that I don’t hear the guitar part so well: I know how the songs go, of course, but when it comes to the details of the guitar parts, my playing drowns out the actual playing on the record.

And that makes a big difference. The guitar parts just get stuck in my head more, of course; but I also notice details that I didn’t before, and I find a few places where my rhythm was a bit off.

More subtly, though: the songs become less mysterious. There are parts in some of these songs that I can’t play crisply on the guitar, which gives me a feeling that they’re some sort of impossible challenge. But when I hear, say, Rush playing YYZ or Chicago playing 25 or 6 to 4, I can hear the structure of the solos or fast riffs, and the way they’re played cleanly; and that cleanness, in turn, helps me internalize the idea that these pieces aren’t some huge mountaintops to scale, that the performers aren’t superhuman: I just have to get better, and I can actually visualize what it would be like to be play those songs better. And that, in turn, motivates me to practice the tricky bits more in Riff Repeater or outside of the game, and I do in fact get better. (Though, don’t get me wrong, I still can’t play 25 or 6 to 4 crisply.)

 

I said above that I’m still buying music. Part of the reason why I’m doing that is to support artists; part is so I can share music with Miranda. (It’s nice having a daughter with similar tastes in art!) But I’m ultimately also not sure how much I should trust music that’s currently available on streaming services to continue to be available on streaming services, or even to continue to be available at all.

That last bit sounds a little paranoid. But I also remember buying the first two seasons of Legend of Korra on iTunes, and then when the third season came around, not only was the third season not available on iTunes, but I couldn’t stream / re-download the first two seasons. Fortunately, Nickelodeon and Apple came to terms a few weeks later, so that situation got fixed; but there are lots of movies that aren’t available via streaming services, or that become available and then get pulled off later. And, worse, that even happens with movies on DVD: it boggles my mind that A Taxing Woman is currently out of print in the US, but it apparently is.

Music is in a (much!) better situation in that regard than movies are, but still: I’m very fond of Zhao Rongchun’s CD Master of the Erhu, and good luck finding a new copy of that. (I assume it was self-published?) Also, from an archival point of view: while I intentionally waited on signing up for Apple Music until they got their matching algorithm correct, I nonetheless see CDs that I’ve ripped and imported as a single album being matched from multiple albums. I haven’t seriously looked at how it matches classical music recordings, but I would be surprised if it got all of those right, too.

So: ultimately, I just do not trust this service as a mechanism to represent my music library in a way that matches my archival standards. Which is fine, that’s not where its strength is, but it also means that I should have a story for how I will have an archival representation that I’ll trust if Apple Music goes away five years from now. And, for now, I’m satisfying that by buying copies of music that I care about and by not turning on Apple Music on iTunes on my desktop computer.

 

Of course, I already don’t have a good archival story for my music. CDs degrade, and this isn’t an abstract consideration: I know from experience that some of my CDs no longer play. I took a stab at copying them all up a few years back, but those copies aren’t currently well-backed-up.

Storage is significantly cheaper now than when I did that experiment, though; 500-ish CDs was once a large amount of data, but these days I could just rip them all, buy a 1TB drive and plug it into my computer, and have Backblaze back them up for me. Or I could back them up to Glacier, and spend approximately 3 cents / year / CD (if I back them up losslessly, less if backed up as MP3); $15 a year seems like a price worth paying to back up my entire CD collection, or around $20 if I throw in the music that I’ve bought online?

Though, of course, I shouldn’t limit those backups to CDs: given the above discussion, backing up my DVDs is arguably a higher priority, but a single DVD is more like 20 cents / year, which is slightly less trivial. (Still probably worth starting now; and five years from now it will be back to being trivial.) And I should back up electronic copies of books (there’s a reason why I buy books through Amazon: the encryption is breakable); fortunately, that goes back to being cheap enough to pay for with pocket change.

 

Or maybe I should accept that a) possessions are transient, and b) money can solve problems, even for out-of-print items. I dunno. For now, certainly, it’s great having access to most of the music that I can think of: Apple Music has really made a difference in my life, I’m listening to more music and more new music than I had been doing for years.

refocusing my guitar learning

November 18th, 2016

The Rocksmith team recently released a (free!) update to Rocksmith 2014 that was substantial enough to deserve a new name: Rocksmith Remastered. It’s the same game, just better: they’ve looked at how people have used it over the last three years, where the rough edges are, how they could modify it to help your learning (e.g. some tweaks to make Riff Repeater mode a little more versatile), how they could modify it to keep you playing more (e.g. giving an option to fix your tuning in Nonstop Mode).

It turns out, though, the change that they made that had the most effect on me is a very simple one: the ability to put your song in lists. Before that change, I’d use the favorites as a grab-bag: songs that I liked, plus songs that I’d recently downloaded and wanted to get to know. So I’d spend most of my time there, kind of haphazardly: I’d try to dip into recent songs to decide what I felt about them, and there would usually be a few songs that I’d play in most practice sessions, and then I’d graze a bit.

So I used lists to clarify those. Now, “favorite” means “this is a song that I would be actively happily to play if it came up in a random playthrough”. I have a separate list of recently downloaded songs; a song goes off of that list if I either decide that I like it enough to make it a favorite or if I decide I’ve had enough of it. And I also decided to formalize the concept of “a few songs that I’d play in most practice sessions”: now I have a list of songs that I am actively working at getting better at, that I play through in every Rocksmith session and that I’ll frequently dip into Riff Repeater to try to polish.

 

Or, to look at it another way: I’m trying to step up my game by focusing on those songs. Which, in turn, means: how do I want to step up my game in this context, what are the specific criteria that I’ll look for to decide whether I’ve done a good enough job with a song?

In broad strokes, I’ve decided to divide up the songs I’m actively learning into two categories. The first are songs that I think that I should be able to play well: my goal here is that I want to be able to play through these songs completely in master mode, with no notes showing on the screen, and do a credible job of that. This is something that I’ve occasionally done before, but not seriously, especially given that Rocksmith 2014 (correctly!) shifted away from forcing you in to memorizing entire songs the way its predecessor did. (Fortunately, they did leave in a way to put the entire song in master mode; I hadn’t been using it much, but I’m using it now.) The songs that I’m currently working on in this category are Heaven Knows and Chelsea Dagger.

The other category of songs are ones where I don’t actually expect to be able to play the whole song well: certainly not memorize it, maybe not even get to where the game shows me all the notes in the solos. These are songs where I want to stretch myself more, or just hard songs that I like playing and am happy to take advantage of Rocksmith‘s ability to strip down the tough bits of songs. Initially, I was thinking that two songs in this category (for a total of four) would work as well, but there were actually three songs that I’d been working on somewhat that fit into this category, so I decided to throw in all three: 25 or 6 to 4, Fly by Night, and YYZ.

So now I have five songs that I play through every time I play the game; and, each time, I’ll spend extra time on at least one of the songs, going through tricky bits in Riff Repeater to level them up or get more reliable at them. Also, I have a playlist of those songs on my phone which I try to listen to every weekday, to get them in my ear and to help me pick up phrasing issues and the like, so I get reminded what the guitar parts on those songs sound like when played well, not just how they sound when being drowned out by my playing.

 

And it’s working! I now have played through both Heaven Knows and Chelsea Dagger with no notes showing and with no strikes: no strikes doesn’t mean that I get all the notes right, but it means that I get the vast majority of them right and that there aren’t any sections of the song that I completely screw up. I think I’m close to graduating on Heaven Knows, actually: I’m pretty solid on almost all the sections, and in the one section where I’m not reliably playing the exact right notes, it’s not that I don’t understand what’s going on or can’t play it, it’s that the guitarist is messing around with minor variations of the same melody in a few different ways, and my messing around doesn’t always map exactly to the messing around on the recording. (Or, to put it another way: what I’m doing is wrong from a “classical musician playing from a score” point of view but would be perfectly fine if I were playing the song live.) I have a little farther to go on Chelsea Dagger, but my guess is that I’ll have moved on from both songs in maybe a month or so.

The other songs have been more surprising: on all three, I’m now playing at a level where Rocksmith is willing to throw all of the notes at me, instead of simplifying some sections. Honestly, I’m not sure the game is right to do so: in particular, it feels like I’m missing a lot on the hard parts of 25 or 6 to 4. But it’s also definitely the case that playing those songs repeatedly has made a significant difference.

And that playing is also opening up lots of concrete questions. For example, in YYZ there are sections where I can barely get my fingers mostly in the right place more or less quickly enough; but the game is telling me to actually pick those passages, not use HOPOs. How much do I want to be just be happy if the game gives me a pass, how much do I want to focus on having it sound fairly clear without worrying about pick usage, how much do I want to really improve my picking technique? I don’t think I have a firm answer to any of those, and certainly I’ll give different answers to different songs at different levels of difficulty, but it’s a good question to be asking. And it’s a question that’s informed by listening to the songs over and over again: one section in YYZ where I ask this question sounds just slow enough that it feels like I should be able to master it, another one sounds fast enough that I’m less optimistic, and 25 or 6 to 4 sounds quite a bit more tractable when I listen to it than I manage when I’m playing it.

So I definitely have challenges to think about: going through sections of 25 or 6 to 4 over and over again on riff repeater, thinking about hand positioning, learning to not freak out when notes come fast and trusting my hand positioning, and relaxing my right hand and using smaller movements. (Whenever I watch videos of good guitarists play, I’m always amazed by how more economical their motions are compared to mine.) And, of course, there’s the question of when I’ll decide that I’ve hit my limit with the harder songs; I actually feel like my technique is good enough to play Fly by Night in master mode but my memorization skills might not be, whereas with YYZ that’s flipped (but the game might be generous enough to let me slide), and for 25 or 6 to 4 probably neither is?

 

Good times.

what comes next?

November 13th, 2016

When I blogged about Trump before the election, I thought he was unlikely to win, though a 1-in-6 chance still scared me. And, well, I’m scared now.

So, what new bad event has a 1-in-6 chance of happening now that we add in the fact that Trump is elected? Maybe I’ve been reading too much Sarah Kendzior, but I can’t convince myself that “the United States slides into fascism” isn’t the answer. I don’t think it’s going to happen (1/6 is less than 1/2!), and of course we don’t have any FiveThirtyEight or polling data to predict the likelihood, but if it were to happen, than the beginnings would look exactly like what we’ve seen over the last year.

Just to be clear: by “fascism” I don’t mean “policies that I disagree with”. I’m not talking about policy disagreements, even very serious ones: I’m not talking about repealing Obamacare or getting rid of Social Security or slashing taxes on the wealthy or pulling out of trade deals or melting the polar ice caps. I’m talking about replacing pluralist democracy with a nationalist one-party system built around a leadership cult, promoting violence, focusing on purity (racial purity in particular), suspending the rule of law while very much maintaining the rule of police.

The United States has significantly more practice with democracy than most countries. Our democracy was, of course, seriously flawed right from the beginning, and it’s had some pretty strong shocks over the years; the advantage that that gives us is that attacks to the system are how you develop antibodies.

 

Which, in turn, is part of what scares me so much about the present moment: so many of those antibodies are directly under attack. The Republican party has been actively painting their opponents as illegitimate ever since they impeached Clinton; for the last eight years, they’ve behaved as if compromise is impossible, treated the filibuster as a norm instead of an emergency exception, and left a seat open on the Supreme Court for most of a year instead of bringing Obama’s (centrist!) nominee to a vote. As to direct defenses of democracy, the Republican party (and their court picks) have gotten rid of a very important one of those antibodies, the Voting Rights Act. The Republican party wants one-party rule; and it claims that black votes don’t count as much as white votes.

That’s bad, but it’s still mostly carrying out those attacks within the system. Trump, however, is actively bypassing the system, including those portions of the Republican Party that get in his way. (We saw this in the Republican National Convention, which was largely populated with the dregs of the party; to their discredit, the rest of the party ultimately got in line behind Trump.) Along the way, he’s also discarding good government social norms: not releasing his taxes, repeatedly calling for his opponent to be jailed, mocking people from social groups other than white men, attacking the press corps and restricting their ability to cover him.

This hasn’t changed since the election. The press corps is still on the out and Trump is still attacking them publicly. Trump’s transition team looks even more like a personality cult, containing more Trump family members than party mainstays. As I write this, he’s just named Bannon as his Chief Strategist: the attacks on minorities and women will continue, white supremacy continues to be core to his strategy.

 

Trump can’t, of course, install fascism by fiat: there’s the legislature, the courts, the police. But none of this give me any confidence, either: the legislature is dominated by a Republican party that has already shown itself to be willing to fall in line with Trump and contemptuous of two-party democracy; the courts got rid of the Voting Rights Act and there’s another seat waiting for Trump to fill; the FBI actively attacked Clinton during the election and Bush and Obama have handed Trump a surveillance system.

I saw a tweet a couple of days with me that stuck with me: it predicted that Black Lives Matter is going to be named a terrorist organization soon. I wish I could say that I didn’t believe this, but it sounds disturbingly possible, and it points at exactly why we would expect the police to help with the descent into fascism instead of working against it. We live in a country where a cop can drive up and blow away a 12-year-old-kid, and not be in jail; we live in a country where the police have, over and over, shown that maintaining power over minorities is a priority over protecting those minorities. Sure, not all cops, in fact I’m sure a majority of cops are appalled by the police killings of black citizens; but those good cops haven’t managed to make that behavior beyond the pale, and I have no reason to believe they’ll stand up against a police state being actively pushed from the presidency. Of course, getting rid of Black Lives Matter would only be one step into fascism, there will need to be more after that if Trump wants to finish the job of installing one-party rule; but if that step succeeds, more will come.

What about the press? There are some press outlets that have done good work during the election: Farenthold’s work for the Post, in particular. But even the printed press as a whole has happy to treat Clinton’s e-mail mishandling as a more serious news story than all of Trump’s problems put together; and, as for TV, CNN has hired a former Trump staff member that has a non-disparagement agreement with Trump! And those are both old media, anyways: Facebook is chasing the holy grail of engagement, and the company seems more than happy to do that without regard for truth or support for democracy.

Then there’s the people. Clinton got more votes than Trump, and still more people didn’t vote for either of them; and I do not believe at all that most people who voted for Trump want fascism. I do believe that some do, though, and others can be convinced; if, for example, the NRA were about a principled support of blanket individual gun rights as a possible bulwark against state overreach, then they would be protesting police killings of black men/kids who are carrying (real or fake) guns, but they’ve picked the other side of that fight. So that’s a potential private armed organization in support of white supremacy; and we already have private militias on our southern border.

 

I still hope and think it likely that either Trump is less dedicated to fascism than it looks (after all, the right has been making similarly extreme claims about Obama and black helicopters!) or that one or multiple of the above groups will stop him. But it scares me a lot that none of those groups feels like a particularly solid firewall; in fact, looking at them individually, none of them looks like a firewall at all, they all seem likely to fold if attacked systematically.

Or at least none of them except for the American people: I still, ultimately, have faith in our desire for democracy. Here’s some advice from Turkey that sounds right to me; let’s follow it.

sources of energy

November 8th, 2016

I’ve started paying more attention recently to what gives me more energy: evaluating experiences, places, even objects on that criterion instead of other criteria. Not necessarily physical energy—I’m as capable of falling asleep in post-lunch meetings as ever—but mental energy, a feeling that I’m building up my reserves for thinking instead of chipping away at them.

Driving, for example, is an energy sink for me, while walking and taking public transit is an energy source. I enjoyed Agile Open California last month, but I wish I hadn’t had to spend so much time in the car getting there and back; AndXP was the next day, and I decided that I’d rather leave home early and even potentially miss the beginning of the conference in order to get there via walking / Caltrain / SFMTA instead of driving. (Totally the right choice; and, as a bonus, I didn’t even miss the start after all, the program was a little misleading as to when things really began.)

This last Thursday and Friday was an offsite at work; I was annoyed at its location requiring me to drive, but actually that part wasn’t so bad. The drive was pretty short, especially in the morning, and when I got to the hotel, I realized that it had a beautiful view: of the water, of SF and the east bay mountains in the distance, of planes descending into SFO. And the shorter time from driving meant that I had time to enjoy the view, and also to do fifteen minutes of wuji meditation. The atrium in the middle of the hotel was quite nice, too; unfortunately, the conference room where I had to spend most of my time those days was soul-sucking.

On a more regular basis: my single favorite non-family weekly ritual these days is the one morning a week when I spend 15 minutes eating breakfast at Pamplemousse. It’s a very straightforward breakfast—a third of a toasted baguette, butter, jam, and coffee—but it’s straightforward in a good way, the chairs and tables are just right to suit my mood, and that extra 15 minutes where I’m sitting, eating, and reading a book makes a difference. (The other mornings, where I get a pastry from Pamplemousse that I eat while walking, also make a difference! Just a little less of one.)

And, continuing with the food theme: more and more, I default to wanting to go out for Japanese food. Most of that is because it turns out that I like Japanese food, and that we’ve been getting some good Japanese restaurants in Mountain View over the last few years, but part of it is pleasure with the experience as a whole. The food, the presentation and details of the food, the seating, the experience: a new restaurant called Kumino opened in a strip mall near us maybe four months ago, and it’s an amazing combination of a small menu that nonetheless manages to have a wide range of options, dishes where the details of the ingredients and their arrangement are done very thoughtfully (and deliciously!), quite pleasant presentation in terms of the plates and bowls that it’s served in, a physical setting that is still within a strip mall but manages to make a quite pleasant space (in a happy, bustling way) within that context, a menu that changes with the seasons (as I discovered the last time we went there) and all of this for an entirely reasonable price. I think I’d honestly be happy going there once every couple weeks pretty much indefinitely, still feeling that I was actively recharging every time I go there.

 

From a conceptual point of view, the main thing that kicked this off was reading The Nature of Order. Though, of course, there are earlier Alexander books, The Timeless Way of Building in particular; and, now that I think about it, I’m wondering how much The Arcades Project changed my thinking; it’s probably time to reread that.

At any rate, rereading The Nature of Order a year or two back had a big impact on me; and then I read Marie Kondo not too long after that. Those both ask questions that, to me, do a good job of bypassing my intellect and getting at something more fundamental: does this have life, does this bring joy? The Essence of Shinto reinforced and gave another lens on the question of what it means for a space to be alive: what spaces are sacred, are inhabited by the divine?

And I suspect that it’s not a coincidence that I’ve talked about Japanese matters twice here so far. (Or, for that matter, that our favorite discovery when we went to Paris over the summer was a Japanese patisserie! Though Paris itself is full of sources of energy for me; c.f. my Pamplemousse discussion above.) We went to Japan for the first time a few years back, and it seems to be the case that my brain had decided that we should go back there on our next overseas vacation. And, I think, next time I’ll want to spend rather less time in large cities than I normally do; though, actually, we did seem some rather nice shrines in Tokyo itself, and, in the right context, lively bustling can work even for me. We’ll see; with Miranda heading off to college soon, we won’t do any foreign trip next year, and Liesl may want to go somewhere else on our next trip.

 

That’s last paragraph is all hypothetical, though: for now, it’s my day-by-day life that matters. In particular, I spend a lot of time at work; what would I find energizing there? My best guess at an answer is focusing on the minutiae of code: I feel like I have a lot to learn there, and that, if I were to really commit to that, it would turn into a more meditative experience, and one that would give me a path towards grappling with the questions that Alexander and Kondo raise. I’m not sure that much of that is in my near-term future, though: I’m currently being useful in different ways at work, and that has its own benefits. (And deep debugging/analysis sessions are their own form of meditation.)

And, at some point, I’m going to change jobs; what should I look for then? An important question when the time comes, but it’s a question that can wait.

star realms

October 30th, 2016

Star Realms is an awful lot like Ascension. It includes the mechanic of multiple cards in the same faction reinforcing each other that Ascension didn’t add until a later expansion, some cards let you trash them for a benefit, its equivalent of constructs can be attacked, and of course many of the card effects are different, but still: you really don’t have to squint very hard at all for the two games to look the same.

So I was pretty surprised that, even though I’m good at Ascension, I was bad at Star Realms. It took me a while to come to terms with that, but: the numbers on the cards are different enough that cards that are a solid card in Ascension (e.g. 1 money + draw a card) aren’t nearly as good in Star Realms. Which was pleasant to realize, good that I can’t just coast.

And, even after realizing that, I wasn’t actually doing well: I was still losing more than half the time on medium difficulty. It took me a while to figure out the next thing I was doing wrong, because the interface didn’t make it as easy as I would have liked to watch my opponent’s play and figure out when they were making different choices than I would have. Eventually, though, I realized that they were trashing cards a lot more often than I was (not trashing bad cards through a different card’s effect, but trashing decent cards through that own card’s effect); and I realized that, in particular, trashing for money is an important accelerant early in the game.

I actually never got really good at the game: I couldn’t win reliably against the hard AI, and some of the story mode scenarios took a lot of tries. Based on those story mode scenarios, I suspect that there’s still more that I could do to accelerate my play?

Interesting experience, at any rate. I won’t say that I enjoy it more than a random Ascension expansion, and in fact I’ve been a little tired of the last few of those as well, but it’s always nice to have another set of cards to think about.

after the election

October 25th, 2016

As of two weeks before election day, it is looking like we won’t have a fascist as our next president. It’s less of a sure thing than I would like—if you trust FiveThirtyEight’s model, then the odds of a Trump presidency are about the same as the odds of rolling a 6 on a die, which scares me a lot—but Clinton’s lead at least seems quite a bit larger than it was before the first debate.

But, even if the polls turn out to be accurate and Clinton wins, we’ll still be in a country where around two-fifths of the voters think that the better candidate is the one who is male supremacist, white supremacist, Christian supremacist, hostile to democracy, and hostile to the concept of truth. And that’s not a great situation to be in.

So a big part of me is scared of what comes next, now that the lid has come off. But the flip side is that none of this is new to Trump. Congress and state legislatures are full of men, with many of them passing anti-abortion legislation that becomes more and more transparently about punishing and dominating women every year. Congress and state legislatures are full of white people, with a decent number of people in the country in such disbelief that Obama got elected that they hallucinate ideas about him not being born in the country, and with extra-judicial assassinations of black people by cops being commonplace and actively defended by many. Congress and state legislatures are full of Christians, and our nation’s response to 9/11 wasn’t “religious extremism is horrible”, it was “religious extremism is great, you just have to believe in the one true religion”. State governments are gerrymandering everywhere and passing restrictions explicitly designed to make it harder for black people to vote, and the filibuster has become normal. And people and organizations are happy to construct a web of “logic” around whatever position feels right for them; if we lose our coastal cities because of that, so be it. Other people are more informed than I am, but it feels to me like, even since the first Clinton presidency, the Republican party has been going on a path that leads straight to Trump.

 

I guess I’m glad that it’s so out in the open right now? Because I can imagine a more competent, more polished version of Trump that wouldn’t have self-destructed in the same way; that scares me a lot more, and maybe seeing Trump will start inoculating our political culture against that? But even that happy path can get very ugly as the hatred and fascism that Trump has pulled together feels like it can show itself; and there may well be smarter, more polished people who are reaching for the same goals as Trump while learning from his (many!) presentational/tactical mistakes.

And then there’s the question of what will happen to the Republican Party: it’ll be very hard for it to present itself now as a party of good government, of sober morality, of fiscal and legal conservatism. I’m not a Christian, but I suspect that it will even get harder and harder for the Republican Party to present themselves as driven by Christian morality (as opposed to Christian group dominance): Trump certainly doesn’t feel to me like anything that I remember as a positive model from the New Testament.

Parties last a long time, but not forever; it can’t feel good right now to be a good government, fiscally conservative, sober Republican and to be confronted with the number of voters in your party who are happy to burn the party down if their brand of authoritarian dominance doesn’t have complete control. (Though, of course, this isn’t new with Trump, as the House leadership struggles this decade have shown.) So the happy case from my point of view would be for the fascist segment of the Republican party to stay uncompromising but too small to win at a national level, and to dwindle in importance as the rest of the Republicans get more and more disgusted with them; and eventually the Republicans that actually believe in democracy will make peace with a subset of the Democrats, and we’ll be back to having two political parties that believe in majority rule and good government. It won’t be pleasant getting there; but the politics of the last two decades have been horrible in many ways already.

Or maybe the Republican party will pull back from the brink but stay on their current path. I have no idea what comes next in that scenario: if Trump can’t blow up the party, what can?

And, of course, if Trump inspires more a more polished Trump to follow him, then wow.

responsibly testing in production

October 17th, 2016

(This post was informed by a session at Agile Open California; many thanks to Llewellyn Falco and Matthew Carlson for their discussion and suggestions. But if there’s something in here that sounds wrong to you, blame me, not them!)

 

Agile software development has always had a strong focus on your software being correct. At the code level, Test-Driven Development requires you to provide a backstop that says that your code does what the programmer intends it to do; at the level of user interaction, the Customer has the end-user expertise to say how the software should behave, and they collaborate with programmers to develop acceptance tests to ensure that the software does in fact behave that way. These techniques are incredibly powerful by themselves, and even more powerful when combined with other Extreme Programming techniques; they provide a very solid defense against large classes of bugs.

In fact, there are a lot of bugs where I will say that, if you’ve written that bug, then you’re doing XP wrong: TDD plus pair programming plus simple design should have stopped you. But, over the course of the 2000’s, faith in the ability of the Customer lessened significantly: A/B tests, in particular, became a standard part of the design toolkit, accepting that we won’t always be able to predict in advance what sort of behavior will best meet our needs.

Of course, XP (and other agile methodologies) has many practices that work actively work to support A/B testing and related discovery mechanisms. Agile methodologies explicitly don’t say that they can predict the future indefinitely: instead, they tell you to work incrementally, in as small slices as possible, and one of the reasons for that is to give you as many situations as possible where you can try out working software in order to figure out what to do next. (That’s the whole “Responding to change over following a plan” part of the manifesto, coupled with “Working software over comprehensive documentation”.) So A/B tests slotted naturally into agile shops; I maintain, nonetheless, that A/B testing embraces uncertainty about what it means for behavior to be correct in a way that TDD does not.

Uncertainty about how humans will react to design is one thing, though; uncertainty about correctness about how computers will react to code is another thing. And I certainly would not in general recommend throwing some code out there, and running an A/B test to see if that code works! Having said, that, TDD is better at functional requirements than at non-functional requirements; you can bridge some of that gap with forms of testing other than unit testing (e.g. performance tests, though those in turn can be in conflict with short continuous integration cycle times), but over the last few years, I’ve run into some situations where even that starts to break down.

 

For example, late last year I was working on some code to partition an incoming workload across servers. We wanted to do this in a way that, as much as possible, colocated workload coming from a given customer onto as few servers as possible, while avoiding overloading individual servers so we can keep up with the incoming data stream in real time, and doing so in a way that supported autoscaling our servers up and down. I can come up with an algorithm for doing this that makes sense to me, and I can implement that algorithm in a TDD fashion; I’m a little embarrassed to say that I wrote a couple of bugs that slipped through to integration testing, but that’s not a problem with TDD, those bugs were directly attributable to my not paying enough attention to the warnings that the code was giving me that I wasn’t following simple design.

But the bigger question is whether that algorithm would actually lead to the desired system behavior: will servers handle the partitioned workload acceptably in practice, and, if they do, what are the best choices for the tuning parameters that the algorithm depends on? Will we keep up with incoming data load under normal situations, what will happen if a trial customer decides to load test us by suddenly switching from sending us data at a 15 GB/day rate to sending us data at a 5 TB/day rate (and, incidentally, the desired behavior there isn’t completely clear: in some situations customers want us to absorb all the data, while in other situations, customers want us to throttle the data so they don’t get overage charges), what will happen if some of the servers doing this processing go down, if there are network problems? And you have to consider efficiency in all of these calculations: we expect to have to overprovision somewhat in order to provide enough of a buffer to handle load spikes, but underused servers cost money.

You can, of course, simulate these scenarios. You can try simulating by sending inputs just to the partitioner component; if you do that, though, you have to somehow model how changes in the partitioner outputs will feed back into the partitioner’s input (in particular, CPU usage), and that modeling might be inaccurate. So you may instead decide to launch the entire system, with a simulated workload; that still requires you to model the variations in the customer’s data load, though, and that model in turn might be inaccurate. And there’s still the question of servers, networks, etc. going down; Chaos Monkey techniques are a good answer there, but, again, how much confidence do you have that the Chaos Monkey is going to hit all of your corner cases?

Ultimately: these are good testing techniques, but they take time, they take money, and they depend on models of non-local behavior in a way that means that they don’t provide the same level of reliability in their results that TDD provides for the local behavior of code. When we were uncertain in how real humans would react to the visual/interactive design, one answer was to test it against real humans, potentially in production; when is it responsible to test lower-level aspects of your code on production, doing so in a way that is consistent with agile (though potentially looking more like modern agile than XP); conversely, when does testing in production descend into cowboy coding?

 

Stepping back a bit, why do we test? Starting again with a TDD lens: TDD starts by forcing you to construct a precise hypothesis for what the desired behavior will be, and those precise hypotheses in turn support further experiments (refactoring, adding new functionality) that you hope won’t invalidate that behavior. But TDD also supports more imprecise feedback: for example, design feedback about how it feels to use your interfaces in practice. Also, precise questioning can be useful in situations outside of testing: in particular, numerically monitoring the state of your system (response times, queue sizes, etc.) can be crucial for understanding the behavior of running systems, as can health checks that fire off when numbers go outside of the desired range.

TDD also teaches you to work in tiny increments: this helps you quickly detect when you’ve made a bad change (instead of having to wait for days or weeks), it helps you figure out quickly exactly where the bad change was (because only one thing changed, instead of lumping together dozens or hundreds of changes at once), it makes the rollback process easy (because you only have a little bit of code to revert), and there aren’t broader consequences (because you fix the failing test before you push your code). Also, stepping back a level, it teaches you to embrace the red: a failing test isn’t a catastrophe, and, in fact, it’s a sign that you have effective monitoring in place, that your safeguards are working as expected. (At least hopefully it is: it’s good to make sure that the test went red for the expected reason!)

 

Given the above, what would responsibly testing code in production look like? You should be able to quickly detect when you’ve made a bad change: so create some precise signals to monitor, and add alarms to let you know if you’ve gone outside of the desired parameters. If there is a problem, you should be able to figure out what code caused the problem: so continuously deploy your code, with each new push only introducing a minimal amount of change. And, if there is a problem, you want rollback to be easy, so design your deploy system with that in mind. (For example, one strategy is to deploy new code to new servers while leaving the old servers running, and monitor whether the new servers are behaving as well as the old servers; if not, redirect traffic back to the old servers.)

That isn’t enough, though: it’s great to be able to detect problems quickly and roll back, but, if users are affected by the problems, that’s not enough. So you always need to keep this in mind while writing code: what are the consequences of a change in code going wrong? UI-only changes aren’t so bad: if the worst consequence of a change is that a flow of operations is a little more annoying to your users, then the downsides are temporary and recoverable, while the upside in terms of learning could be permanent. Similarly, having operations be a little bit slower is manageable as well: if you’re not sure how efficient an algorithm will be in real-world inputs, then it might well be beneficial to monitor it in production, being ready to flip the switch back if the slowdown exists and is noticeable. And slowdown that isn’t user-visible at all is even better: if you can get useful information from an experiment where the only potential downside is having to temporarily spend more on hardware resources, then go for it!

Data loss, however, is a completely different story. If code touches data, think about what extra testing you’ll need to do to get confidence before it runs on production, and think about your rollback steps: while discovering a data loss problem quickly and turning it off before it does any further harm is better than discovering it slowly, that’s cold comfort to people whose data was lost during the period while your code is in production. So think about worst-case scenarios: can an early stage in your pipeline store data someplace safe for disaster recovery purposes? Can you guarantee that data is stored redundantly by a downstream process before throwing away an upstream copy of the data? If you have to do data migrations, can you do double writes and double reads with consistency checks, enabling you to seamlessly switch back to the old store if you detect problems?

And, of course, there are intermediate scenarios: while I said that latency might be acceptable, there’s a big difference between having an operation go from one second to five seconds versus having an operation go from one second to one hour. Also, keep in mind that not all problems are caused by code pushes: machines go bad, networks go down; even worse, machines can stay up while their disks stop working well, or networks can get partitioned.

 

Done right, though, testing in production can be actively beneficial. Returning to the manifesto, we prefer working software, we prefer responding to change: so embrace incremental development, and ask yourself: if you’re uncertain about the effect of a change, is production the best place to test that? Most of the time, the answer will be no, but sometimes the answer will be yes. So, if testing in production will responsibly and quickly give you feedback about a change, then go for it.

More subtly, though: testing in production helps you build antifragile systems. If your strategy is to always get things right, then you may be able to go a long way with that strategy, but if you fail, consequences can be catastrophic, because you won’t have practice dealing with problems. In contrast, if you build a system with production monitoring and testing in the forefront, then you’ll be able to quickly detect when things have gone wrong and you’ll have practice with remediation steps. (And, again, some causes of failure aren’t under your control at all, e.g. machines going bad, customer load spikes, malicious attacks on the system: practice those as well by artificially inducing those problems!)

When talking about this in my Agile Open California session, I led off with the question “how often should your pager go off on a well-functioning agile team?” One answer is “never”, and I’m pretty sympathetic to that answer, but I prefer a different one: your goal should be that your pager never goes off in response to circumstances that the customer notices, but that your pager should occasionally go off in response to quality degradation that the customer doesn’t notice. If you do that, you’ll have monitoring and alerting that notifies you of the problem, you’ll develop monitoring and logging to help you pinpoint the cause and procedures to get you back to a good state quickly, and you’ll learn what problems are frequent enough to deserve automated remediation.

And my belief is that, done correctly, a system that has gone through that will grow stronger through antifragility: you’ll be able able to release software more quickly, you’ll be able to run experiments in the location that maximizes learning, and you’ll be able to do all of that while having your system become more and more robust over time.

fire emblem awakening

October 6th, 2016

I’d played one of the earlier Fire Emblem games, but only one. There are ways in which I like the gameplay, but I didn’t like the permadeath, the later levels got long, and the story didn’t grab me. Ultimately, I was more of a fan of Intelligent Systems’ Advance Wars games instead: I liked the levels as puzzles more than as a start of something bigger.

But Fire Emblem Awakening seemed to be trying something different compared to earlier games in the series, and people I follow on Twitter liked it; so, when Tokyo Mirage Sessions #FE caught my attention, I figured I’d give Fire Emblem Awakening a spin first to have a bit more context for the Fire Emblem aspects of Tokyo Mirage Sessions.

And it turns out: still not the series for me. Permadeath is optional, and they’ve added in friendship / romance options between characters, which could be fun. Which, initially, it was; but it ended up as yet another thing to balance. I don’t just have to solve the puzzle of each level (and the levels are still a bit long): I have to figure out which characters to use (and which characters to avoid leveling up entirely, or alternatively do extra grinding), I have to deal with expendable weapons, I have to figure out which levels work better with expendable rare weapons, I have to figure out when to level up a character’s new weapon types when they gain extra abilities at level ten, and now I have to do all of this while acting as matchmaker.

Contrast with Persona 4: in that game, there’s a much smaller cast, the social links are separated from the combat. And, of course, the plot is a zillion times better.

Don’t get me wrong: I’m not saying Fire Emblem Awakening is a bad game: if that sort of balancing act is something you enjoy, then great. And, in fact I basically enjoyed the game for the first several missions. But, eventually, the missions got a bit much; I stopped soon after the finishing the first plot arc.

rise of the tomb raider

October 3rd, 2016

I liked the first Lara Croft Bow Warrior quite a bit: very legible action platforming, a surprisingly decent story about coming into your powers, tons of collection that managed to stay on the entertaining side instead of the annoying side. Rivers of blood and not enough tombs—it’s a AAA video game—and there were too many creepy impalements, but it was a game that I was happy to have played.

But, apparently, there was something about the first game that bothered the game’s designers: they’d put in an animal killing mechanic, they forced you to do it once early on in the game, but I guess I’m not the only person who didn’t kill any animals after that first one. So the designers made sure that, in the second Lara Croft Bow Warrior, you didn’t limit your slaughter to people who were shooting at you: you have to leave a trail of furry creatures spread across the snow in your wake, you have to chase down deer and wolves that are limping away after being shot, whimpering but still trying to escape.

castro 2

September 28th, 2016

Castro has been my favorite podcast app for years. Podcast apps generally have the same basic functionality, and Castro didn’t do anything particularly special in that regard; instead, it presented an environment where I wanted to spend time. When I’m using the podcast app, I am, of course, spending most of my time listening to podcasts; and Castro’s screen while playing the podcast puts the podcast episode front and center, coloring the screen based on the podcast art, with the episode notes taking most of the space, and with the chrome arranged around the edges in minimal but functional ways.

It’s not perfect: there’s no share sheet for the liner notes, the scrubber took me a little while to figure out how to use, I couldn’t reliably predict which episodes it would clear out when I needed space, it deletes episodes when you unsubscribe from a podcast, and the badge they added for supporters felt really out-of-place with the visual design of the rest of the app. But I was happy with it for years; I tried out Overcast when it showed up and made a bit of a splash, but ultimately I just preferred spending time in Castro.

So I was glad to see that Supertop brought out a second version of Castro: I like giving money to people who make well-crafted apps (especially an app that I’ve probably spent around a thousand hours with), and I figured they’d probably smoothed out some of the issues that occasionally grated on me. Who knows, maybe they even had something big enough that it needed to be saved for a new version.

 

And, it turns out, Castro 2 really is focused on something that was missing from the first version, and that I didn’t know how much I liked until I started using it: queue management. Sometimes I’m almost caught up with my podcast backlog, at which point queue management doesn’t matter, but right now that is definitely not the case, and I can use some help reminding me of older episodes that I still actively want to listen to. Also, the original Castro sorts episodes by publication date, which means that, if I follow a link to an old episode of a podcast, then it disappears from sight as soon as I’ve downloaded it.

I’d seen a podcast app before that focused on queue ordering, namely Overcast; but, at least when Overcast launched—I have no idea what it’s like now—Overcast tried be smart about queue management instead of just asking you what you wanted, and it did a bad job of handling a situation when you started playing an episode that wasn’t at the top of the queue. Castro 2 has none of those problems: it lets me fiddle with the queue when I’m in the mood to do so, and when I’m not in the mood to fiddle with the queue, the next episode that I’ll want to play is always going to be in the top screen of the queue, usually right on top. So it really does solve a problem that I didn’t realize I had: I don’t want backlog management to be a nagging issue, I either want to be actively thinking about backlog management or not thinking about it at all. (And it also solves a problem I did know that I had, because it caches the podcasts starting at the top of the queue, going down until it hits the cache size limit, instead of caching an opaque subset of episodes.)

 

There’s a problem though, and in retrospect that supporters badge was a warning sign: when I’m actually listening to an episode, Castro 2 isn’t a particularly nice place to spend time, and it minimizes the focus on the episode. Here’s what you see when you’re playing an episode in the original Castro:

castro-episode-screen

And here’s what you see when you’re playing an episode in Castro 2:

castro-2-controls-screen

Basically, Castro 2 blows up the bottom quarter-inch of the original screen into an entire screen of its own: instead of minimal chrome, it’s all chrome. It’s a little more functional—in the original, it’s hard to discover how to change speeds, the scrubber is a little hard to use, and I have no idea if the original even has a sleep timer—but none of those differences matter to me. It mostly looks pleasant enough, except for the fake sound representation over the scrubber. (Which gets actively distracting when you skip forwards/backwards, because the sound representation jumps a lot while the scrubber barely moves.) But almost everything about the episode that you’re listening to is missing: no colors, no show notes.

 

Or at least that’s the “now playing” screen that I first noticed, which you get if you tap on the lower left. If you tap on the lower right instead, you get this:

castro-2-epsisode-notes-playing-screen

This is a lot closer to the original version: the chrome at the bottom is only a little over three times as large as in the original (or really more like two times, given the Delete / Mark Listened buttons in the original). Compared to the original, there are a few extra buttons (partly because they’re no longer depending on navigation via sliding), and a few buttons missing; but it’s similar, and of course the show notes are there.

But it’s also a screen that looks like a completely standard podcast episode screen. It’s tastefully designed, but the character is gone.

 

Because Castro 2’s focus isn’t about bringing the character out of individual episodes: it’s on setting up the stream of episodes. Those two screens aren’t the important one: the important screen is this one:

castro-2-queue-screen

It doesn’t just show you what’s playing and what’s coming up, it makes it as easy as possible to rearrange those episodes. It doesn’t even show you any of the episode notes: that could be useful in evaluating which episode you want to play next, but it would also means that only five episodes fit on screen instead of three, which makes queue management harder. (In the Inbox screen, they do show you the first few lines of the notes, because there are different tradeoffs in that context.) There’s a drag target on the right side of each row, but that’s just there as a visual suggestion that you might want to rearrange the items in the queue: you can, in fact, hold anywhere on the row to drag.

And this queue management really does matter: until using Castro 2, I didn’t realize how much time I spent wondering what to play next, or how frequently I would ignore an episode because it was older, not realizing that it was actually what I was in the mood to listen to next, or at least to listen to once I’d finished the latest episodes of my favorite two or three podcasts. Also, Castro 2 is a lot better at Castro at helping you dig into older episodes of podcasts that you run across, whether individual episodes or podcasts that you’ve decided that you want to go back to the beginning and listen to all of.

 

So the big difference between the two is that Castro 2 is actively better at queue management, and actively less welcoming when listening to individual episodes. Though, of course, there are other little things that grate at me (just as there were in the original). The biggest is the lack of persistent per-podcast playing speeds: I find it surprisingly annoying to have to change the speed most of the time when a new episode comes up, and this need to fiddle seems to actively work against Castro 2’s presentation of a seamless queue of music for you. I also don’t like it that it takes two taps to go to the show nodes for an episodes other than the topmost episode, and while I do appreciate having a button for the iOS share sheet, I don’t appreciate the fact that those buttons go to links on Castro’s web site instead of the podcast’s web site.

But, ultimately, what frustrates me most is this: I want to interact with things that bring me joy. And a big part of the reason why I’m still a little obsessed with iOS is that iOS app designers have managed to produce apps that bring me joy, that present spaces that I want to inhabit. Tweetie did that, Reeder did that, and Castro did that.

Castro 2 doesn’t do that: the queue management is great, but most of the time, I’m focused on the episode that I’m listening to. And not only does Castro 2 not have the character in that screen as Castro does, it doesn’t even show the same focus on the current piece as Apple Music does.

 

I’ve gone back to the original Castro. But now it doesn’t bring me as much joy as it did: the queue management in Castro 2 is pointing out something important in myself, too. What I really want is Castro 2 with Castro’s episode screen, and with the small issues above fixed; but I don’t think that’s too likely.

It’s probably time for me to survey other podcast clients again—maybe I’d like Overcast more now, maybe something else good has shown up? Probably not, though, I’ll probably end up back with Castro, just a little less happy with it than I was a month ago…