[ Content | Sidebar ]

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:


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


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:


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:


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…

rocksmith as virtual reality

September 19th, 2016

In the September VGHVI Symposium, we talked about virtual reality, using the phrase “metaphoric presence” to describe it; we contrasted VR to immersion, which we defined as identification with a ruleset. Basically, with our definitions (or rather Roger’s definitions, though I support them) virtual reality gives the impression that you’re there, while, if you’re immersed, the “there” matters less, you’re touching the underlying systems more directly.

Current virtual reality doesn’t try to be a complete simulation of presence: it tries to simulate visuals and sound, but not the other senses. Which got me thinking: I have another game which tries to simulate two senses, namely Rocksmith. It simulates the sound of playing guitar with a band, and playing the game feels like playing a guitar because you are, in fact, playing a guitar.

So, a thought experiment: contrast a VR experience simulating being in the audience of a concert with a VR experience that simulates standing on stage at a concert with Rocksmith with Rock Band. How do these four examples stack up along the metaphoric presence dimension?


This is just a thought experiment for me: I have experience with the latter two examples but not with the former two. Having said that, my guess is that the former two really would feel more like being present than the latter two, but that that depends on what aspect of presence you’re trying to target. If you’re trying to target being at a concert, then they do better. If you’re trying to target performing at a concert, then of course the audience VR example doesn’t work, but the stage VR experience raises the question of what exactly you’re doing on stage. It would give you insight into being on the receiving end of audience attention, but without them reacting to you, something would be missing even for that interaction, and of course the experience of making music would be completely missing. (Though you could always sing along!)

Rocksmith doesn’t have the crowd react to you; this is the right choice from a pedagogical point of view, but it does mean that the concert feedback loop has a break in it. Rock Band, in contrast, has always focused on that aspect of the experience. And actually, in this example, Rock Band with a VR headset (and with more computational power backing up the crowd animation) feels to me like one possible sweet spot: it gives you enough to do to make you feel like your actions matter, and I suspect the feel of the controls is just real enough that they would help trick your brain in interesting ways compared to using a traditional controller or air guitar gestures detected with a camera.

Of course, you can also imagine Rocksmith with a VR headset, too, and with reactive crowd mechanics. (Or even reactive musicians, which are already present in the game’s Session Mode.) Which, in turn, raises the question: does the fidelity of the controls help or hurt a feeling of presence?

My first reaction to that latter question was that, actually, faithful controls might hurt a feeling of presence: unless you’re particularly good at playing guitar, there would be a disconnect between the bad notes coming out of your guitar and the crowd’s enthusiastic response. (Alternatively, the crowd could respond unenthusiastically, but that also has its down sides.) Whereas if you add a Rock Band guitar style level of indirection, then it divides the problem into two parts: having you faithfully perform the simplified actions that the game wants you to do, and having the game translate those simplified actions into something that sounds good and that the crowd reacts well to. Thinking about it more, though, Rocksmith has its own level of indirection, with the way it asks you to play a subset of the notes; Rocksmith plays the original track along with your notes, but having the crowd react to how well you play the requested notes could probably work.

But, in general, a lack of fidelity is going to be key in VR games: a game that realistically simulated fighting with guns or athletic competitions is just not going to work very well for the vast majority of us. Easing off on the negative consequences of failure in physical simulations is crucial (i.e. you don’t want players to actually get shot!); you probably also want to ease off on the physical strains (traversing difficult terrain, carrying body armor, etc.), and for players at non-expert skill levels, you probably want a level of translation from simplified actions to complex results, similarly to Rock Band. (Laser tag is another comparison point here, too.)


I also wonder whether visuals are crucial for a real sense of metaphoric presence; if so, that’s an argument against the possibility of considering Rocksmith as a form of VR. My initial reaction was “probably”, but now I don’t think so: in particular, I suspect that there are a lot of people who would prefer an audio plus tactile experience for pornographic use over an audio plus visual experience.

So maybe the way in which the Rocksmith example doesn’t seem quite like presence is the limited nature of the tactile experience: having a guitar react to your touch is important, but it’s not the same as having a simulated person react to your touch, or even having the feel of traversing a broader environment. It’s unfair to instruments, but I think your brain treats playing an instrument as almost entirely an outgrowth of your action, whereas a feeling of presence would more of a feel of you reacting to the environment.


I dunno; I still think there’s something there in the idea of Rocksmith as VR. Also, current VR is so different from a Star Trek holosuite example that I suspect that, fifty years from now, current VR will seem more like current non-VR experiences than it will look seem that future’s best simulations. And I think this question of how much fidelity in responsiveness we want is an important one, too: do we want an experience that accurately represents what the outcomes of our actions would be, or one that translates our actions into a desired experience, turning us into a more badass version of ourselves?

removing the earphone jack

September 12th, 2016

At the iPhone 7 launch event, Apple confirmed that they were removing the earphone, and justified it in the name of “courage”. Which was, of course, a ridiculous, tone-deaf thing to say; watching the blowback, though, I’ve come to the conclusion that they were at least correct in that making that choice did require courage. I’m seeing people blast Apple for the removal (not just for their choice of words) all over the place, and it’s quite possibly the single biggest story coming out of the iPhone 7 launch event; getting that amount of negative press and the corresponding potential impact on sales of their single largest-revenue item does in fact require courage. That doesn’t mean that it was a good choice, and it certainly doesn’t mean that they should have used courage as a justification or talked about it at all, but courage was in fact required to make that decision.

In particular, I was surprised just how many times the following tweets got retweeted into my Twitter feed:

When you say “the real reason”, or describe actions as “sinister and accurate as fuck”, you are engaging in conspiracy theorizing. Which doesn’t mean that you’re incorrect: there are plenty of conspiracies out there in the world! But, if you’re going to do that, at least take alternate possible explanations seriously; maybe the people I follow who quoted those tweets were doing so, but when I do, I don’t end up at the same conclusion at all.


Apple has shown over and over again over the years that:

1) They like making devices thinner and thinner.
2) They like putting new sensors into their devices.
3) They care a lot about battery life.
4) They don’t like wires.

If you put the first three together: they want to remove as much from the interior of their devices as possible, so that they can either use the space savings for thinness, for sensors, or for batteries. This is particularly true with objects that are tall (I doubt they would have removed the ethernet port when they did if it weren’t so tall), but it’s a big part of why optical drives disappeared from their laptops, why the ethernet port disappeared, why spinning hard drives disappeared, why they’re putting less travel in their most recent keyboards, why they replaced the 30-pin connector with the Lightning connector, why they moved to USB-C in their most recently designed laptop. There are other reasons for all of those choices, but they all paint a picture of Apple wanting to shrink or remove ports from their devices, in the name of either thinness or more battery.

And they don’t like wires: you can see this in Apple’s early embrace of wifi, in their eventual removal of the ethernet port, in their switch to bluetooth mice and keyboards, in the removal of a dedicated charging port in their latest laptop. I don’t know how much of this is a feeling that wires pollute the beauty of their design and how much is a feeling that wires get tangled and otherwise restrict movement and device usage, but either way I’m confident that Apple’s design team prefers to do without wires whenever possible.

So, if you put those together: we have a single-use port that takes up space inside the device (not a lot, but not nothing, either), where there’s a wireless technology that is growing in popularity. Apparently about a sixth of US headphones sold are Bluetooth; I was surprised that the percentage was that high, but if it is, maybe it really is the case that we’re about to reach a tipping point and that wired headphones are going to go the way of the floppy disk over the next few years.

To repeat, none of this means that Apple’s decision was a good one: I actually personally still don’t think that it was, though I don’t have a feel for the details of the pros and cons. (Buzzfeed had a good interview on the subject; note that the iPhone 7’s battery is 14% bigger than in its predecessors.) It doesn’t mean that we shouldn’t be concerned about the problems of closed systems. But calling a desire to lock things down “the real reason” (and then saying that the iPhone is “completely closed”, ignoring standards such as Bluetooth and WiFi), or saying this is “sinister and accurate as fuck” seems to me to be going out of your way to jump to the least charitable interpretation possible.


I’m not even sure exactly what the case is that removing the jack increases closedness in a problematic way. The headphone jack was in Apple’s control before, because it was inside a device they made; now it’s an inch outside the device, connected via an adapter they control. Is there any evidence that it behaves differently in the new location, or that they’re more able to exert control in the new location than in the old location? (The Square card reader still works.)

Also, is the complaint that Apple will prevent hardware manufacturers from using the Lightning port in some ways, or is it that they’ll charge licensing fees? Given how Apple treats the App Store, the former seems like a reasonable fear, admittedly, though I can’t quite envision what sort of uses they’d want to prevent; for the latter, I prefer open connector standards, but it’s business, and a $4 fee doesn’t seem like a reason for me personally to care: I don’t buy a lot of Lightning accessories, so those fees cost me less than $10 per phone.

Or is the complaint a cultural preservation one, that it makes it harder to make copies of audio coming out of the phone? If that’s the issue, then: 1) The Lightning port gives you higher-quality audio; 2) The headphone adapter is still there; 3) There’s never been a similar builtin capability for video, and I’m not sure why audio is more important than video; 4) Even in a dystopian world of locked-down audio output, the speaker is still there.


For that last one, what people should really be lobbying for is a way to have virtual audio devices at an OS level. That’s something that really does limit the capabilities of the phone: if you want to write a podcast mixing app, and you want to let it use Skype recordings as an input source, then you’re at Microsoft’s mercy, and Microsoft won’t let you; Apple could bypass that.

Or push on Apple to aggressively open up Siri’s capabilities, or to let you specify different default mail programs or web browsers. Or push on the big one, content limits in the App Store: I can see a justification for the existence of the App Store from a security point of view, but restrictions on the topics that art works in the store are allowed to cover?

Or just complain because you’ve got earphones you like and you think the adapter is ungainly. But really: taking the fact that Apple moved the earphone jack from inside the device to on an adapter an inch outside of the device, and seeing it as primarily motivated by an attack on openness? I do not get that one.

pokemon go

September 6th, 2016

The special thing about Pokemon Go: so many people are playing it. Parks are full of people playing it, my coworkers are talking about it, when I’m on a train I see gyms at stations change ownership before the train has even stopped. My favorite experience with the game was when Miranda asked me to meet her at the park behind the library one Friday after work; I spent an hour or two hanging out with her and some of her friends, catching Pokemon and refilling at Pokestops, and then Liesl and Widget came to meet us so we could all four walk home together.

The less special thing about Pokemon Go: the core gameplay consists of waiting for random number generators to give you the creatures you want, so you can fill in Pokedex entries. That is not a recipe for a rewarding life. Of course, I could take similarly cynical approaches towards a lot of things in life; there’s some truth to those cynical approaches, but they’re missing something important as well.


It certainly is true that, when first playing Pokemon Go, a big part of the fun (the joy, even) is that you’re frequently catching new Pokemon. Stepping back, though: you first have to figure out what’s involved in catching them in the first place. The game gives you remarkably little introduction, so just figuring out the flicking takes a bit of experimentation; and then there’s the list of nearby Pokemon (which turns out to be mostly useless for now, but you don’t know that), and these icons that you see on your map, Pokestops and even gyms. I couldn’t interact with the gyms yet (I can’t remember if you’re allowed to look at the Pokemon inside them or not?); Pokestops set up the tension of whether or not I’d be able to keep up enough of a supply of Pokeballs to be able to keep catching Pokemon. If I were in a more rural area, that could potentially actually be difficult; as-is, it added to the texture of my trip to work, because downtown Redwood City wasn’t just the place where Pamplemousse was, it was the place on my trip where I walked past the most Pokestops. (And, in particular, past more than enough to keep my supplied with balls.)

This got me varying my route, which I see as an unambiguously good thing: if I have a bit more time before my train, why not go down a different street instead of waiting longer at the station? Also good are the way that Pokestops make you a bit more aware of landmarks in the environment (or landmarks that have since disappeared!), and the AR camera is a fun toy.

While I was doing this, I also started to figure out the parameters of the Pokemon distribution as well. So many Pidgeys and Rattatas; starter Pokemon are surprisingly rare, though. Pikachus are in the middle, but harder to catch. Eevees and Growlithes seem more promising: they were maybe a little rarer than Pikachus but they seem to have a higher CP number than other Pokemon you see? Every once in a while I’d see an evolved form of a Pokemon, though I wasn’t always able to catch it. Also, I’d have these eggs which held out some sort of unclear possibility of access to rare Pokemon, while encouraging you to always keep the game open.


Once I hit level five, gyms started to tantalize. I’d see Pokemon that were a lot stronger than anything I had, but that were also evolutions of Pokemon I’d seen; clearly gathering Eevees and Growlithes seemed like a good idea. In the short term, though, I’d have to make do with much weaker Pokemon; but there were these options to level up and evolve Pokemon, so I started exploring a bit with that. And that actually allowed me to temporarily capture a few gyms: if a gym only had a couple of Pokemon in it, then my six weaklings might have a chance at beating it.

During this phase, I’d do things like keep the app open on my phone while on the train, trying to access Pokestops while pulling out of stations, fighting gym battles in stations, and occasionally capturing Pokemon there as well. I’d level up somewhat regularly; I’d find stronger Pokemon as a result. Miranda was a little bit ahead of me, so I’d hear about the joys of parks with multiple lured Pokestops right next to each other. She’d even be happy to spend time in such parks with me, if timing worked out.

One of my coworkers also pointed out to me that I shouldn’t look down on Pidgeys so much: they’re common and cheap to evolve, which makes them the most efficient way to gain experience. I didn’t want to do anything about that just yet, though: I didn’t have enough Pidgeys to match my candy supply, and I wanted to combine lots of evolving with lucky eggs. Also, during this period my Pokedex gradually increased, as I would occasionally catch rare Pokemon or hatch them from eggs. I started to hear about nests, too, and to suspect that there’s a Nidoran nest behind the library.


Eventually, I had a bunch of Pidgeys and a bit of free time on a weekend, so I fired off a lucky egg and went on an evolving spree. The first time I did that, I didn’t actually evolve very many Pidgeys: I had a lot of Pokemon types that I had enough candy to evolve one of, so I spent most of my time evolving different Pokemon for the first time. The next weekend, though, I had more time to evolve Pidgeys, and had evolved all the different types of Pokemon in my inventory that I was able to.

This brought me up to level 20, and set up the possibility of trying to make a go at gyms. Doing some reading, though, it seemed like the sort of thing that would require some effort to do seriously: I’d see pages about IV and IV calculators, and about the best moves that your Arcanine could have. So, if I really wanted to be the best at gym battles, it wouldn’t be enough to, say, evolve a Growlithe and feed it some candy: I’d have to go through my Growlithes, figure out which among the high CP ones had the best IV stats, evolve it, and hope that it acquired a good move. That seemed like a fair amount of work for a quite uncertain payoff; and gyms don’t seem to really be designed to let you hold them reliably no matter what you do.

So, while I dabbled in gyms a bit, I ultimately decided that the gym scene wasn’t for me. And, at this point, the game started being less rewarding: I felt like I’d seen most of the game’s systems, and I’d filled up my Pokedex as well as seemed plausible without going on trips to try to get access to more types that aren’t common locally.

And there are downsides to playing the game, even though I was mostly only playing it during my commutes. Having the game open meant that I couldn’t use my phone for vocabulary practice while walking; also, having it open on train rides, even if I only looked at it near stations, turned out to be a surprisingly large distraction from reading books on the train. Juggling the phone while walking Widget is occasionally less than graceful, too.


So I stopped playing the game regularly. I didn’t stop entirely: when I went to San Francisco a couple of weeks ago to meet with Roger, it was fun seeing the local Pokefauna, and also in San Francisco the advanced tracker is available, which is much much more useful. And just this afternoon Miranda and I were picking up new library books, heard some kids talking about an Onix nearby, and we pulled out our phones and caught the Onix ourselves. Also, a combination of changes over the last couple of months have gotten me taking walks over lunch instead of playing Netrunner; having Pokemon Go available while doing that (and while near water, changing the set of creatures) is a pleasant diversion.

I don’t plan to dive back into the game wholeheartedly, but I’m still pretty impressed by it. And I imagine I’ll continue to occasionally dip into it over the weeks and even months to come.

summer 2016 status

August 29th, 2016

Or: nagging annoyances from the start of the summer that I hadn’t gotten around to blogging about. Probably everything here deserves its own post, but I’ll just get this summary out now to unblock myself.

Because I would like to get writing again a little more regularly. And part of the reason why I hadn’t been doing that a few months back is that I wasn’t at an energy level where I felt drawn to writing (or doing anything that takes much thought) in the evenings. Not that things were awful, just that there was enough dragging me down that, at the end of the day, I didn’t feel like doing much.

The first problem was a recurrence of my ongoing back pain. (Well, leg pain caused by my back.) It started up again in late spring, I think? Not nearly as bad as when it first occurred, but enough to show that the epidural didn’t fix things, it just temporarily improved the situation, and that Tai Chi wasn’t helping and might be hurting. I started doing a few more exercises, which may or may not have helped, and one of them (I’m not sure which, there are two candidates) seemed to have stressed a muscle somewhere in my upper back. Which wasn’t awful, but it did mean that, in our trip to Paris this summer, I wasn’t up for spending full days out. That actually was basically fine: I wasn’t planning to spend all day in museums, I’d been thinking that I’d spend more time in cafes or parks than normal this trip, so switching that to spending half of the afternoons in our hotel just meant that it was a trip with a bit more of a staycation aspect than normal. But we still had enough tourist time for me to be happy, and it didn’t interfere with dinners at all.

The actual good thing about having a problem on the trip was that I realized I needed to deal with the pain and, of course, that reminded me that my doctor had told me to take (lots of) ibuprofen when the pain first appeared, so I got back in the habit of doing that again. In retrospect, I should have started a couple of months earlier, I’ll definitely be more sensitive to that next time. After the trip I’ve also tried heating pads (helped, I think), standing meditation (probably didn’t help), doing the Gokhale lying down stretch when I came home (I think helped?), and taking the Gokhale course (pretty sure it’s helping, and it’s taught me one thing in particular about my posture that I would have had a harder time figuring out about the course). I should probably write about that once I’ve got a better feel for the course’s effects.


The other thing that was sapping energy was being tired because of allergies. I got annoyed at the PAMF allergist that I saw, so I went to see a separate specialist; and, before doing that, I went off of allergy drugs for a week so the drugs wouldn’t interfere with the skin test.

Which was super interesting, because I felt more awake after going off of drugs. This is actually something that my GP had hypothesized: the drugs themselves can make you tired! So, for now, no Claritin for me, though I am trying another drug. The scratch test results themselves were pretty strange: they showed pretty clearly that I have a dust allergy, they didn’t show environmental allergies, but also I didn’t react to the positive calibration sample as strongly as normal. The allergist wasn’t sure what to make of that, and I’m not sure—maybe somehow the Claritin was still in my system?

I’m experimenting with different allergy drugs now, with no clear results, but at any rate I don’t feel worse than before, and actually I feel a little better. I should probably tackle household dust a little more seriously: I made a few changes, but not a lot. Also my allergist agreed hat another of my GP’s hypotheses is worth considering, namely that it’s possible there’s some sleep apnea thing going on; I haven’t explored that yet.


And then there’s work. I’m more or less a free agent there, which sometimes is great and sometimes means that I don’t really know where I fit in; this summer was, unfortunately, mostly more of the latter. Which, combined with the fact that the company as a whole had a few more issues than normal in the winter/spring made me wonder what I should do; not that the issues were anything particularly unusual for startup growing pains, but it does raise the question of what my exit criteria are.

Recently, though, both of those have been getting better: the last quarter’s company results made me optimistic in a couple of different ways, and there are some signs that I’m finding a place again in the company that will let me be both interested and useful. Which is good, because I’m not looking to leave: I usually enjoy my work there, and I’m not going to have too many chances in my life to see this much of the journey of a single startup. So hopefully I’ll manage to settle back into happy productivity; and of course resolving the back issues will help with that, too.


In sum: not the best summer, but things could be a lot worse, and the trend lines are good. Also, I should write more.

deus ex go

August 28th, 2016

I basically enjoyed Deus Ex Go in the same way that I enjoyed Lara Croft Go: well-done puzzles, putting together a few elements in ways that are straightforwardly entertaining at the start but surprisingly difficult at the end, even though the levels are deterministic and only have a few dozen spaces. This game is a little shorter and doesn’t get quite as hard as its predecessor in its story mode, and it got rid of the “spot an item” collection mechanic, but it has regular downloadable puzzles that are, at times, hard enough that I haven’t managed to solve them.

Not that I’ve tried super hard: I spent a pleasant couple of hours going through the main game, then tried a few of the extra puzzles, then put it down. Happy to have played the game, but I kind of doubt I’ll play future games that they put out.


August 23rd, 2016

My first impression of Imbroglio: lovely symmetry, with a fondness for twos and fours. The playing field is a four by four square, with monsters coming out of the four corners. You fight monsters with the weapons on the playing field; those weapons come in two colors, red and blue, doing one point of damage in its color. Each of the four corners has its own type of monster; two of the monster types are easier to defeat with red weapons, one having one red / four blue hit points and one having two red / three blue, while two are easier to defeat with blue weapons, with one blue / four red and one two blue / three red. (Whereas you have four red and four blue hit points, so you can deal with either color of monster.)

Of course, at some point games need to break symmetry. And, in fact, the monsters aren’t symmetric: three of the monsters do red damage, while only one (the two blue / three red one) does blue damage. And there are so many weapons that symmetry isn’t really an issue when talking about weapons: the weapons are instead more like a series of variations. (Sixteen weapons of each color, unsurprisingly.) The weapons all gain power by defeating enemies: each time a weapon defeats four enemies, it levels up (which it does a maximum of four times); on some of those level increases, weapons do more damage and/or gain extra powers.

There are broad groupings of weapons, however. The red weapons are a little more straightforward: they almost all do extra damage at some point in the level up sequence. In contrast, most of the blue weapons never do more than one damage: they’re instead themed with more magical effects. There’s also a “curse” mechanic that several of the blue weapons interact with: a few of them give curses to monsters, and several of them have random effects against cursed monsters (e.g. blocking a percentage of hits, with the percentage increasing as the weapon levels up).

So a big part of the game is deciding what weapons you’re going to put on the board at the start of the game. If you’re in a cursey mood, then you need both curse sources and weapons that take advantage of curses. But if you’re in a mood to just bludgeon stuff to death, then a lot of red might make more sense. And, as you get more experienced with the game, you’ll play around with not just the weapon mix but the weapon placement: how you lay out red weapons versus blue weapons, how the corner with a blue monster affects things, where to put the ranged weapons (if you’re using any), etc.


There’s another factor that plays into the game, though: you have a choice of characters. (Initially, if I’m remembering correctly, three? Or four, probably given the game’s fondness for powers of two. At any rate, you unlock more characters as the game progresses.) Each character has a weakness (e.g. no ranged weapons, or only red weapons), along with a special power. Those special powers are activated by runes: you get one rune each time you level up a weapon (i.e. every four enemies the weapon defeats, stopping after four levels), and each characters has an ability that they can pay for via runes (e.g. heal yourself, or curse an enemy).

So the choice of character gives you an active encouragement (both because of their weakness and their strength) to explore a particular part of the weapon design space. Also, on a subtler note, the characters’ special powers are the only way to spend a turn without either moving or attacking, which affects the parity of the game state, switching from “this enemy will attack me before I attack them” to the other way around.

And the runes play into the rhythm of the game. There is an actual goal of the game: there’s a star on the level, and when you collect that star, you heal one red and one blue, the walls in the level change, and you get a point. When I started, I honestly didn’t worry about the points that much: I was focused on leveling up weapons, including killing enemies with weapons that I particularly wanted to level up next, and stars were a vehicle to stay alive, something to be actively pursued to maintain a health buffer but otherwise a bit more of a secondary goal.

It turns out, though: while I certainly support playing games in a way that ignores the game’s scoring system, going for stars really does make the game richer. It gives you a tradeoff that wouldn’t otherwise be there, and it makes you aware of how far you can go without focusing directly on leveling up. (And, as you take turns, the monsters come more frequently, and there are even a few new monsters that appear; so taking your time really does have a long-term cost.) The game progresses nicely from an early game where you can do almost anything you want, to a middle game where you really want to have made progress on leveling key weapons, to an end game where monsters are probably coming at you too fast for you to be able to handle but, if you’ve maxed out enough levels on the board, are thinking hard enough about the exact actions the monsters will take, and are lucky, then you’ll be able to make it through waves. (I think the monsters come in waves? I haven’t actually counted the monster spacing, though.) And runes play into this: you won’t use any runes in the early game, and only a few in the middle game, so you should have quite a lot going into the end game, until either you don’t or having them isn’t enough.


Quite a game, I’m very glad to have spent time with it, time exploring its various options and getting to know the contours of its symmetries and symmetry breaking.

love live

August 3rd, 2016

I am pretty confused as to what I think about Love Live! School Idol Festival: there are three fairly distinct aspects to the game, I’m not sure what I think about those aspects individually, and the three of them pull me in different directions. It kept me playing for quite a while, and I did enjoy my time with the game; but I thought I was done with it a week and a half ago, and then a couple of days later I picked it up again (no harm in getting login bonuses), and, well, I’m chipping away at the current event and counting my Love Gems again, wondering if I’ll stick with it to get another 50 to scout more rare members.

The reason why I thought that I would enjoy the game (other than the fact that some friends of mine had been playing it for quite a while) is that it’s a rhythm game, I like rhythm games, and (though I don’t have much experience listening to it) I like J-pop as well. I wasn’t entirely impressed with the rhythm mechanic when I first started playing the game, though. My main comparison is the Rock Band series, and tapping at the screen felt a little less interesting than pressing buttons on plastic guitars. After playing more, though, I’m not nearly as sure of that evaluation: it took me a little while to learn how to visually parse the songs on hard (and I still don’t regularly get full combos on hard), it took me longer than that to be able to play songs on expert at all, and, while the location of where you’re tapping is fairly arbitrary, the choice of timing and the patterns aren’t. So there’s definitely something there as a rhythm game; I won’t say I like it more than Rock Band, and it’s certainly less interesting than the pro modes in Rock Band 3, but it’s also not a coincidence that I’ve only picked up Rock Band 4 maybe five times since buying it while I’ve played Love Live regularly over the last few months: it’s nice being able to pick up my iPad, play for a few minutes, and then move on to something else.

The flip side of that is that you have to move on to something else after a few minutes: unless you level up, you’ll run out of energy after three songs. You can pay money to keep on playing, of course, but the cost is pretty high; if you want to keep on playing continually, it’ll cost between $5/hour and $10/hour, probably closer to the lower end than the higher end? (Or even less than that, I guess, if you never use the Love Gems you earn in game to buy rare members.) Now that I type that out, I’m not actually sure $5/hour is unreasonable: I’ll happily spend $10 on a two-hour movie, or $50 on a solid 10-hour narrative game. Still, it’s expensive for an ongoing video game.

At any rate, the energy mechanic felt odd when I started playing it. But, once I’d been playing for a while, I didn’t mind, because the truth is that I usually didn’t want to play for more than a few songs at a time. Maybe that’s me adapting to the constraints of the game and accepting it for what it is; I’m really not sure. But it’s nice to have games available with different rhythms of play, to suit my time / mood / energy level. Love Live fits into briefer slots of my life than Rock Band does, and that’s totally fine.

I do wonder, though, what the pros and cons of allowing more rhythm gameplay would be both from a gameplay point of view and a business point of view. It’s certainly pretty weird that there’s an option called “Practice” that doesn’t actually let you practice the songs, it’s instead a way to make numbers go up that are unrelated to the rhythm gameplay. My tentative feeling is that they should give you a practice mode, either free or payable with the game’s soft currency, that would give you access to the rhythm gameplay but wouldn’t give you the in-game rewards that you get from the regular song sessions. That might lead to burning out of the game quickly, though, and people do seem to be able to manage to get full combos on difficult songs even with the current setup, so the current structure is clearly workable even for rhythm game fans. But it does seem like the game mostly designed to encourage you to return it multiple times a day, keeping it always in your mind, rather than as a way to lock in rhythm game fans.


The other odd aspect of the game compared to other rhythm games that I’m used to is the number of songs: it felt like, for a while, I only had the same five or so songs available to me. I generally liked the songs, but I didn’t like them that much. The funny thing, though, is that, as the game has continued, my feelings have flipped: I have a lot of songs available for me, I get a new one every two levels, and now it feels like I barely have time to get to know songs!

There are a few things going on there. One is that they tuned the leveling parameters a month or two into my playing the game, to let you level up faster; that not only means that I really do get new songs more frequently now but that I also got five or so dumped on me at once as the game force-leveled me up. A second is that I’ve started playing songs more often on Expert instead of Hard (partly because it gives you more experience and partly because sometimes I want more challenge); but the regular songs aren’t available on Expert, you have to play temporary “B-side” songs, with the result that I spend much less time on the regular songs. And the third factor is that, much of the time (half the time, maybe even two-thirds of the time?) there’s an event going on, and if you’re spending your energy on playing that, then you can’t spend your energy on playing regular songs. (There was an event going on when I started playing, but I was completely unaware of that fact until the event ended.)

The flip side of the events, though, is that it’s fun to have random songs thrown at you, and events are a way for songs to become familiar to you that you’ll later unlock through regular progression. So I’m glad a random mechanism like that is there; it’s maybe a bit of a shame that it’s only available through events, though. And I like having Expert songs available for a limited time as B-sides: that gives you a defined window in which you can try to focus on those songs and get better. But I don’t see any reason to not have Expert tiers in the regular songs: why push people away from the regular songs like that? (Especially since it’s not just a gameplay effect, Expert songs really does let you level up more efficiently, since they give you more experience for a given energy expenditure.) Of course, the game isn’t forcing me to do any of this: if I don’t really care about leveling up quickly or getting the event rewards, then I can and should spend more time playing songs that I want to play, instead of what the game is nudging me to play.


I guess there’s another way in which the game is different from most rhythm games that I’ve played (Elite Beat Agents being the only other example that comes to mind): the songs are written for this game (or at any rate for this transmedia property), so I’d never heard any of them before and won’t hear them in any other context. And it’s the same singers, though there’s a pretty broad range of musical styles.

Fortunately, in general, I enjoy listening to them. (And they let me practice my Japanese!) I am dubious about the singers, though: there’s one whose voice I quite like, a couple others whose voices are fine, and six or so whose voices range from meh to actively annoying. I realize that the singers are supposed to represent high school students, but even so I’m not convinced; I suspect that there are cultural conventions going on here that I’m not used to. (I heard some of the same vocal patterns when I ran into Stereo Japan on Ototoy.)


There’s also a narrative in the game, which I was looking forward to: I like manga and anime, and I figured it would give me a chance to practice my Japanese. And, indeed, it did give me a chance to practice my Japanese: most of the narrative bits are voiced. But wow, the story here is bad bad bad. You’re following a group of nine idols; most of them are completely forgettable, and the one who has the strongest personality is most distinctive because of her remarkable narcissism. There’s not even any serious conflict, or struggles to overcome: it’s just a group of students who exist only to act as idols.

There are also students whom you encounter outside of the core nine. Some of them show potential flashes of personality, and while it’s only in a one-dimensional way (this girl likes to swim! Just so you don’t miss that, we’ll name her Iruka, which translates as “dolphin”!), that one dimension is one more dimension than most of the main characters. But those side characters never show up in the main story, they don’t interact with each other either (other than the sisters Haruka and Kanata, another naming “joke”, with “haruka kanata” meaning “far off in the distance”, though if I’m remembering correctly, that meaning doesn’t have anything to do with the sisters’ behavior?), and the game doesn’t even let you follow individual side characters, because it throws together all the different side characters’ side stories into a single unordered list instead of letting you see multiple stories for one character in a row.

You apparently exist in the in-game world; but that’s even creepier, because you never show up in the main story, while, unpredictably, in the side stories, even side stories for the main characters, you’ll see them simpering over you for no reason whatsoever. I mean, I suppose it’s consistent for characters with no personality to apparently be in love with a character with no presence, but still: not what I look for in a narrative.


This dreadful narrative does feed into a collection mechanic, though; and, as unimpressed as I was with the narrative, I’m a dutiful enough game player to take part in that mechanic. It’s pretty weird too, though: through playing the rhythm game, you unlock cards for characters, and then you can use those cards as fodder for a “practice” mechanic that makes other cards levels go up. (Which, doesn’t actually have any significant effect on the game play, viewed purely as a rhythm game; but hey, numbers going up is good.)

The other thing those cards do is feed into an idolization mechanic: if you have two of the same card, then you can get an idolized version of that card, and then if you use the idolized version of the card enough while playing, you can unlock a portion of the side story associated to the character on the card. But it’s creepier than that: the idolized versions of characters are basically always more homogenized than the non-idolized versions of characters, so in particular the one dimension of personality that the side characters have gets squashed by idolization. And the idolized uniforms are generally more sexualized; and either the characters really really like blush or many of them are embarrassed by that.

That is, admittedly, a somewhat negative spin: a positive spin is that clubs have uniforms and theatrical clubs have show-specific costumes, so of course, as people dive into clubs, they’re not going to be wearing clothes that reflect their outside interests. And it probably really is supposed to be blush rather than embarrassment. But for me personally, it was pretty odd playing a game where one of the mechanics that I’m encouraged to follow (that I have to follow to get the narrative, such as it is) makes me feel like I’m squashing people in the name of conformity every time I engage in it.


These cards come in different levels: Normal, Rare, Super-Rare, Ultra-Rare. Through normal gameplay, you almost always only get Normal cards (Rare ones show up, but only something like 1% of the time). The Normal cards are all the side characters; the core 9 characters instead show up in the three Rare grades. The main way to collect the Rare cards is by using “Love Gems”, which are the game’s hard currency (there’s also a soft currency called coins, and I cannot think of another game where the soft currency is as irrelevant is the coins are in this game); if you collect 50 Love Gems, then you’ll be able to buy 10 Rare cards plus 1 Super-Rare, with a slight chance (around 10%) of getting an Ultra-Rare card instead and/or multiple Super-Rares. There are a couple other ways of getting Super-Rare cards: things called scouting tickets can get you them, and there are special events that have specific SR cards as prizes; I don’t believe there’s any reliable way to get UR cards. And, of course, all of these cards can be idolized as well (which is how you unlock the side stories for the main characters): if you play long enough, idolizing the Rare cards happens pretty often, but idolizing SR cards is quite unlikely and I’ve only ever acquired one UR card.

(And, in a bit of irony, that one UR card is Nico; for reasons related to the game’s friend mechanic, that means that I see her all the time on the screens of the game, and hear her egotistical catch-phrases over and over and over again. Sigh. I would probably pay money to get a non-Nico UR card if that were possible and affordable, but doing so is neither.)

The game is actually quite generous with those Love Gems; I haven’t spent any money on the game, but I’ve probably done the “buy special cards” mechanic maybe 10 times so far? I’m curious what motivates people to spend money in the game: the obvious target would be acquiring UR versions of your favorite idol, but you’d have to spend hundreds of dollars to have a decent chance at a UR, with no guarantee that it will be for the idol you want (the best you can do there is narrow it down to one in three), which seems excessive? I can imagine spending money to refill your energy during events, so you can get the SRs there, but love gems are plentiful enough that you probably wouldn’t even have to do that.


Strange game. I like it as a rhythm game; and I do feel the tug of the collecting aspect. But I just do not get the appeal of the characters at all…

ipad game roundup

July 17th, 2016

Some iPad games I played on vacation:

The Room 3

The latest game in a well-done series: the puzzles are challenging without having me quite getting stuck on them, and the game is committed to those puzzles. (My favorite way that plays out: they barely pretend you you have a body, if you’re moving to something that happens to be located on the other side of a table, they’ll just move you right over that table instead of having you go around.) There is a plot, it makes no sense, and I’m not convinced the alternate plat endings are a great idea. At any rate, I definitely enjoyed playing it, and I’ll be happy to keep going with the series if they continue it.

Crypt of the NecroDancer

A roguelike with a beat: you have to make your moves in time with the music, which means that you have to think and react on your feet. Which is an interesting idea; I’m not a roguelike aficionado, and in general I like they way they let you think about how to react to situations, but having to think on a cadence is an interesting variant. And there is one character you can choose that doesn’t require you to follow the beat, so you can play that way if you prefer or just to get used to the enemies and plot patterns to use against them.

I might return to this one.

1979 Revolution

Seems like a potentially important step towards figuring out how to use game mechanics to provide a richer lens on history. Though I can’t say I have a great feel for the Iranian Revolution after playing this game, so who knows.

signing up for pokemon go

July 14th, 2016

A day or two after Pokémon Go came out, I decided to give it a try, so I downloaded and launched the game. (The iPhone version of the game, to be specific.) And, after being asked to enter my birthdate, I was given a choice of registering with a Google account or a Club Pokemon account. I didn’t think about it too hard, I simply clicked on the latter.

This put me at a screen with username/password fields and with buttons below to log in or to register a new account. So I went over to 1Password, and created a random password. Then I switched back to the app, typed in a username that I hoped wasn’t taken, and went to paste in my password.

Unfortunately, the password dialogue didn’t support paste! That was pretty annoying, but I was sitting at my computer, so I opened up 1Password on there, told it to display the password in large type, and went to type it in. At which point I discovered that the app displayed the characters that you typed as stars immediately, instead of showing you the last character that you typed; which meant that, unless I paid very close attention to the keyboard, I wasn’t very likely to accurately type in a random 30-character password. I tried to be careful; who knows if I succeeded, because when I finished and hit the “register” button, I was presented with an error screen on Club Pokemon.

Setting that error screen aside, my reaction here was: they went to the extra effort of implementing a custom control instead of using a standard password entry control, and came up with a control that was significantly worse than the standard one in two separate ways! That did not impress me too much. Thinking about it a bit more, I think that analysis is a bit off: it’s a cross-platform game, which means that the UI is probably implemented in a way that uses relatively few platform-native elements. So I’m not so convinced any more that the choice they made was more effort than using the standard iOS password box would have been, but the outcome was certainly worse.


After that failure, I still wanted to play, so I logged in with a Google account. I was a little surprised that I didn’t see a screen listing what permissions I was granting to the app; as events of the subsequent days showed, I was right to raise my eyebrows at that one. (If only I’d written this blog post on Sunday instead of tonight I would have had a Hot Take, or even a Hot Scoop! Ah well.) That worked fine, so I went out and, after a bit of effort (the game is not much for tutorials!) caught my first Pokemon.

But the next time I launched the app, I was told to log in again. This raised two problems / questions:

1) I just wanted to play a game, I didn’t want to switch over to 1Password, type in a long passphrase (and then type it in a second time when I made a typo), copy a password, switch back to the game, paste it in, then switch over to the two-factor authentication app, remember the number shown there, switch back to the game a second time, and type it in. Doing that once a month might be okay, but doing that on a regular basis is absolutely not okay.

2) Why on earth was the game asking me to re-log-in again, anyways? What happened that it lost my credentials from the first time I logged in?

I still don’t have a good hypothesis for that second issue. It did raise the question of where the credentials from the first time I logged in are stored, though: are they on the device or are they on Niantic’s servers? I would normally assume the former, but if it’s the former, I don’t see why they would go missing (though I certainly would never want to underestimate the possibility of bugs); so I guess I think it’s more likely that they’re stored on the server, and that their protocol doesn’t distinguish between “generic server connection / overload error” versus “response from the server saying that it got the request and is accurately responding that it doesn’t have the login credentials”? Who knows, though.


That latter possibility combined with the lack of specificity into what permissions I’d granted the app were pretty disturbing. And, of course, like I said above, constantly re-entering my Google creds was a pain on a purely practical level.

And, while thinking about this more, I started to wonder: the game is getting mapping data from Google, it has my Google creds, and it’s doing pretty weird stuff. What are the chances that it’s using my creds when talking to Google for mapping info, giving Google location information about me? Honestly, the answer is probably that the chances are pretty low, given that the Club Pokemon account code path can’t do that. But by this point I don’t have much faith that Niantic is doing anything correctly—I’m pretty sympathetic to them for having server problems arising from the game being the biggest smash hit I’ve seen in ages, but I’m also seeing enough signs of strangeness that I don’t feel like I can accurately predict what they’ll do. In particular, given the game’s Google / Ingress roots, there presumably was once code in there that always could assume you had a Google account, so it wouldn’t shock me if vestiges of that remained in the map communication. Not that I’m 100% against Google having location information about me, but all things being equal, I’d prefer for that not to be the case.


With all of this weirdness and with a bit more time to think about it, I decided that I didn’t want to use my Google account after all; yes, it meant that I couldn’t jump on the bandwagon immediately, I’d have to wait until I won the “am I allowed to create a Club Pokemon account” lottery, but that’s a pretty small price to pay. So I deleted and re-installed the app, revoked the app’s creds from my Google account, came up with a short password to use that I wasn’t using on any other account, and tried every few hours to register until I was allowed to. (Which took about a day and a half.)

At which point I learned something else unfortunate about that Club Pokemon login/registration screen: the values that you enter there are ignored in the registration path! Oy. (So: maybe I could have gotten away with a 30-character random password after all.) At least the Club Pokemon website is, well, a website, so it has standard UI elements; the only problem there is that they didn’t mark the various fields with the magic “don’t autocapitalize / autocorrect” attributes, which was a bit annoying: my e-mail address does not in fact start with a capital letter.

After that, though, it’s been smooth sailing: the game and its servers have issues, but it does at least reliably remember who I am.

human resource machine

June 24th, 2016

Robot Odyssey was one of my favorite games growing up, so I do have a soft spot for programming-based games; so I decided to give Human Resource Machine a try.

Unfortunately, Human Resource Machine is no Robot Odyssey. The adventure game aspects are missing: no world to explore (or even to view, really: the give you cut scenes but they add nothing to the game), and the programs that you’re supposed to write feel like they could be taken straight out of assembly code tutorials. Except it’s even worse than that, because the language is crippled both in terms of primitives and in terms of a complete lack of modularity: writing divide / remainder code via repeated subtraction is interesting enough to do once, but when they give you puzzles that build on that, it would be really nice to either have that as a primitive operation or to be able to paste in chunks of code that you’ve already gotten. Also, the challenges in terms of fewest lines of code written are fun (but usually easy, it was almost always the case that my initial answer met that challenge), but the challenges to accomplish something in the fewest instructions executed frequently devolved to loop unrolling, which gets boring quickly, especially without an ability to copy and paste sections of code.

Having said that: the presentation was charming, the interface was good other than the issues above, and it was pleasantly short. So I enjoyed spending three or so hours with it, going through all the puzzles except for the last optional challenge puzzle. But it wasn’t what I had hoped for.

captain toad: treasure tracker

June 23rd, 2016

Captain Toad was the first Wii U game that caught my eye: it sounded like a well-done, charming puzzle game that was different enough mechanically to be interesting. I didn’t actually buy a Wii U then, but when I finally picked one up for Splatoon, I also got a copy of Captain Toad.

And I’ve played it, and it’s fun! But not super wonderful, and it went on a bit long. It felt to me like an idea that would be better suited as an iPad game instead of an on-disc console game: like Lare Croft Go but with higher production values.

Not really much to say about it: it’s a solid basic design, and they did a good job with the optional goals, letting me decide how obsessively I wanted to investigate each level. But in retrospect definitely not a reason for me to get the console, either.

returning to guitar

June 22nd, 2016

Through this fall or winter, I’d been playing Rocksmith for a couple of hours every Saturday and Sunday, but I’d been falling off in the last few months: partly because Saturday Tai Chi ate into my time, partly because I felt like playing guitar was putting stress on my back, and partly because my playing was in a rut.

I’m taking a break from Saturday Tai Chi, though, to give my back a break. And, apparently I can’t give my back too much of a break, because I’m practicing guitar again. And I think / hope I’m doing a better job of practicing now than I was at the end of last year?


My Tai Chi break wasn’t the only thing that nudged me to practice again: a month or so ago, Miranda asked if we could play Rock Band. Which we did, and it was fun, but I am not enjoying playing plastic guitar nearly as much as I was a few years back. And I figure Miranda knows how to sing a fair number of the songs in Rocksmith, so I suggested that, the next time she felt like singing, we might as well try Rocksmith instead of Rock Band.

Which we did a week or so later, it was fun! But it was also a little embarrassing: it’s one thing to listen to myself fumble my way through tricky bits of songs, but it’s another thing to do that while somebody else is actually paying attention! I wanted to keep on doing it, so I asked her to nominate a few songs for me to work on.

But that also got her curious about Rocksmith itself; so, a few days later, I came home and found her playing bass. And she wasn’t just messing around, either: she would start playing a song, drop into riff repeater, repeatedly level up the first section, move on to the next section, and repeat. By the end of that, she’d sound quite respectable, you would not have thought that she’d started playing the instrument that very day. She’s practiced a bunch of times since then, and we’ve also played together on guitar/bass a couple of times.


I won’t say that my recent practice has been up to Miranda’s standards yet. I do still like dipping into a range of songs, and I had a pretty big backlog of songs to work through that I’d bought while I wasn’t practicing. And, even when I do focus on improving specific songs, I frequently run into the uncomfortable fact that I’m not actually good enough to play all the sections of all the songs that I would like to focus on. (One downside of Rocksmith‘s leveling system is that it can turn into a musical version of the Peter Principle.)

But I am trying to do a better job of focusing, and I hope that I’ll do even better now that I’ve gone through all the new songs at least once. (And, honestly, I’ll have to do a better job of focusing while I’m practicing: I want to pay attention to the signs my back is sending me, which means that my practice sessions will get shorter.)


At any rate: good to be playing again, and very good to be able to play with Miranda.

listening to music

May 26th, 2016

My tastes in music delivery mechanisms are conservative. My music listening habits were established at a time when music sharing meant passing around cassette tapes, and I was straightlaced enough to not even do much of that; CDs appeared when I started having enough money to buy albums, and I stuck with that for close to two decades, I have around 500 of them around the house.

I didn’t, of course, stick with buying CDs: the iPod convinced me that I didn’t want to carry plastic disks around, my CD racks are full and I don’t want to buy any more, and it turns out that, after a few decades, CDs start to degrade physically. So MP3s are clearly the way for me to go for current purchases. But, that format detail aside, my habits are basically the same: I pay for music, and I buy albums rather than singles.

I would like to think that my tastes in music aren’t particularly conservative, however, or at least not particularly narrow—I think I’ve got a decent mix of genres at hand, for example? But since I got out of school decades ago, I’ve had to go out of my way more to expose myself to new music: to weird stuff, but I also miss stuff that’s very popular, I’m simply not in many situations where I’ll naturally be exposed to music for no other reason than because it’s popular.

In the 2000’s, I found a couple of podcasts that I like that exposed me to random songs, and of course I’ve been playing Rock Band, Rocksmith, and their sequels for most of a decade for now, and both series’ developers have very good taste in music. And there’s random stuff that comes across my twitter feed too, of course. So I do spend most of my music listening time listening to music that I wasn’t aware of a decade ago, and these days I try to buy an album every week or so to listen to. But still, my density of exposure to new music isn’t as high as I’d like.


Being an Apple fanboy, I was curious when Apple Music came out, though I wasn’t curious enough to actually sign up for it. The service’s ability to share music across devices is, even setting aside bugs, implemented in a way that I actively disagree with: I want the same bits on all my devices, I don’t want Apple to put a piece of music on my phone that Apple thinks is similar enough to a piece of music on my computer that I shouldn’t notice the difference. (Especially observing the metadata that iTunes decides to attach to classical CDs that I ask it to rip…) Streaming, however, sounds like a fine idea in general; but, like I said, I’m conservative in my music delivery habits: I’m perfectly happy to spend money on music, I like albums more than songs, and streaming royalties are pathetically small, which doesn’t make me feel great about participating in that ecosystem. Beats One radio actually caught my interest more than anything else, which is sort of funny given that I only listened to radio regularly for maybe four years of my life (when I was in high school): I do want a source of music that I wouldn’t listen to on my own, so I figure I could do worse than asking people with good taste in music to choose stuff to show up in my ears. And Apple seems like the sort of company that would hire people with good taste for their flagship radio station.

Actually, you don’t need to subscribe to Apple Music to be able to listen to Beats One (though you do need to subscribe for their other radio stations). So I’ve been listening to it for a month or two; I’m glad I have, it’s been an interesting / pleasant / educational experience. They definitely play a different genre mix than I’m used to listening to, it’s good to be exposed to popular artists that I haven’t listened to much, it’s good to hear random songs by artists I’ve never heard of. And it’s good to hear the same song over and over again, even songs that didn’t grab me the first time: I don’t think that, say, either Hungry Ham or Vroom Vroom is going to turn into a long-term favorite song of mine, but I like both songs, and I’m not sure I would have said that the first two or three or four times I listened to them.

And listening to Beats One has given me reason to think I should subscribe to a streaming service: now I’ve got significantly more artists that I’m at least curious enough to listen to if they’re freely at hand, which wasn’t the case before. It’s not the only thing that’s made me think that I should sign up for a streaming service: listening to Hamilton has gotten me reading about the music that influenced the musical, which has in turn pointed out huge gaps in my musical background. And, honestly, sometimes I’ve been buying albums and thinking that maybe that wasn’t in retrospect the best use of my money, that I should have done more of a try-before-you-buy, e.g. there are a fair number of songs on 2NE1’s two mini albums that didn’t grab me. (But there were two that did: I Am The Best, of course, but also I Don’t Care. I guess they do a really good job of being self-centered? And two good songs really isn’t a bad density of good songs for an album’s worth of music, it’s just not a great one.)


Of course, it turns out that I am inadvertently signed up for a streaming service: I was listening to a podcast episode about The Ten Duel Commandments, which got me thinking I should listen to The Ten Crack Commandments, and I remembered the existence of Amazon Music, and, sure enough, there it was!

So maybe I should just stick with free Beats One plus Amazon Music. But, now that I’m listening to Beats One, I would like to get randomly exposed to a slightly wider range of music, and Apple has other radio stations that you need to pay for. And I suspect that I’d like Apple’s streaming selection/presentation more than Amazon’s, though I’m not sure why I think that. (Especially the presentation, given iTunes.)

Really, I should just stop dithering and overanalyzing, and join the twenty-first century…

our glorious health care system

May 9th, 2016

I’ve been getting tired of my allergies recently (or, rather, getting tired of being made tired by my allergies), so after talking to my doctor, I made an appointment with an allergy specialist. That specialist gave me suggestions for different drugs to try, and also thought that allergy shots might make sense; but if I’m going to do shots, we need to know exactly what I’m allergic to and how allergic.

The standard way to do that is skin tests; unfortunately, if I want to do those, I have to go off of allergy drugs for a week, which doesn’t sound like fun. My doctor suggested that I take a blood test; if it shows me as positive, we can go ahead with the treatment, while if it turns out negative, I’ll still have to do the skin test. That seemed like a good idea to me, so I went and did that.

The blood test mostly turned out negative; that’s too bad, but not at all unexpected. What was more unexpected was when I opened up the bill from the Palo Alto Medical foundation: they billed a thousand dollars for those blood tests, which is ten times what I’d expected based on previous blood tests I’d had.

I didn’t have to pay a thousand dollars myself: my insurance has negotiated rates that are lower than the billed rates, and my insurance paid for a fair amount of what was left, so my bill was only about three hundred dollars. But there is no way that I would have paid three hundred dollars for a known-inaccurate test if I’d been aware of the price in advance; and the part that the insurance company paid for isn’t free, either, it just gets paid for by my insurance premium.

I sent my doctor a message, under the assumption that perhaps he didn’t know, suggesting that he might want to warn other patients. His response was that he was sorry that I’d gotten stuck for so much of the bill, which isn’t my point: my point is that spending a thousand bucks on a test that is known not to work without even warning me first is not a good idea. And I called the billing department: they said it’s my fault for not asking the price first. (And they, like my doctor, took the attitude that the only thing I should care about is the amount my insurance doesn’t pay for.)

So I decided to try to ask the price for my upcoming skin test. The Palo Alto Medical Foundation has a website that lists prices of some tests, but not that one. I sent a message to the billing department, saying “I’m scheduled to have skin tests done on this date, can you tell me how much it costs?” And their answer was: $25/unit, but they couldn’t tell me the number of units, and nothing in my medical record lists that number. (The blood tests were $29/unit; if I’d heard that, I would have thought that it was fine, but it turns out that those tests involved approximately 30 units.)

The amount of obfuscation here is amazing: the denial that the money paid by insurance matters, the refusal to list prices on the web site, the refusal to tell me and the lack of records to let me actually figure out the price even when I ask. (And that doesn’t even bring in the negotiation power that insurance companies bring in: the immorality of charging the most to people without insurance!) It’s very easy for a doctor to encourage you to take a test, and I would like to be able to just trust that my doctor’s recommendations are in my best interests, but I can’t do that. I don’t know which people in this system are consciously designing it to make more money for PAMF and which people in the system are just going along with the flow (and I’m sure that most of the people I talked to, possibly all the people I talked to, are in the latter category), but it’s a crappy system.


Last summer, Miranda had an appendectomy: her stomach was hurting, the PAMF triage department sent her to El Camino Hospital, and the doctor there (in consultation with us) eventually decided that there was enough risk of appendicitis that we should probably take it out. And the doctor and staff at El Camino were great, Miranda was well looked after in the hospital, she recovered quickly, and that’s one potential life-threatening problem that she’ll never have to worry about again.

So (unlike with the blood tests above), I have no regrets about making the choice for her to have that surgery. But still, there’s a bill involved; I don’t remember the exact number, but the hospital tried to bill our insurance for approximately forty thousand dollars.

Again, my insurance company didn’t pay that much, and we paid still less: it used up our deductible, and our deductible was high, but our part of the bill was something closer to two thousand dollars, maybe only one thousand? But still: forty thousand dollars is a lot of money, I remember periods in my life where I lived happily on an annual salary that was less than half of that.

Yes, I realize that appendicitis is potentially deadly; yes, I realize that multiple very skilled people were involved in the surgery and care. But she was in the hospital for less than 24 hours, and appendectomies are also completely routine surgeries. I have no idea how El Camino Hospital justifies that price, but I have a hard time imagining that I would accept whatever justification they would provide. Miranda will be going to college in a little over a year; I expect that to cost about fifty thousand dollars a year, I think that price is also too high, but that’s a place where she’ll be living for nine months a year and where many many equally highly skilled people spending much more of their time helping Miranda than El Camino Hospital did; how does a brief, routine surgery end up costing almost as much as an entire year of college?


When I moved out here and started getting allergies, I found that a nasal spray called Vancenase worked well. I eventually switched to Claritin, but I recently thought I should try Vancenase again, given my problems. These days, the same medicine is instead sold under the name Qnasl, so I tried to get a prescription for that.

My health insurance didn’t want to approve the prescription until I tried several other drugs first; given that I knew the medicine had been effective in the past, I considered paying out of pocket, so I called up the pharmacy and asked for the list price, which turned out to be $110. (Or maybe $140?) So I decided to try other drugs first: heck, maybe they’d work as well, and it would save both my insurance company and me money. (My insurance company had Qnasl listed at a $40 copayment, so they were strongly urging me to try other drugs.)

When I saw my allergist, he gave me a free sample of Qnasl. And what was interesting there was the card that came with that free sample: it’s a coupon saying that Qnasl’s manufacturer (Teva Respiratory, LLC) would pay all but $15 of my copayment, and in fact if I were uninsured, they would pay up to $90 for the drug.

I said above that I didn’t know how much Palo Alto Medical Foundation’s system was a conscious system to obfuscate pricing in order to get as much money out of me and my insurance company as possible. In contrast, I am completely confident that Teva Respiratory is consciously trying to use the insurance system to get as much money out of the drug as possible. This is an out-of-patent drug that, based on their discounts for uninsured patients, lets them make an acceptable profit at a $20 price point; they charge five times as much, and design the pricing so that, even if insurance companies try to fight back by affecting individual’s purchase decisions to accurately reflect this higher price, they’re unable to do so because Teva changes the pricing so that individuals don’t actually see that higher cost. (At least individuals that are lucky enough to be talking to a doctor with free samples; individuals who don’t do that are just collateral damage, with the uninsured who don’t have access to doctors taking the worst hit.) This American Life had a segment on this practice a few years ago; now I’m seeing it first-hand.


None of this is a sob story for me: I have a Silicon Valley tech salary, I’m part of a two-income family, so while there are many other ways that I would prefer to spend $300, we can afford it. But I also live in a company where health costs are twice as high as any other country in the world, while having no better outcomes than other industrialized companies, and where health costs are growing: this is a serious problem, and stories like the above are, I think, exactly why.

I don’t like insurance companies, but I actually think my insurance company (Anthem Blue Cross) comes off better in this than any of the other parties involved here. About once every other year, my insurer comes close to cancelling their contract with PAMF; that ends up not happening, and I don’t really want it to happen (we like our GP a lot, and she actually is good at warning us about expensive tests), but they’re right that PAMF is way too happy to spend my insurance company’s money. And Anthem actually just cancelled their contract with El Camino Hospital a couple of months ago; if you’d asked me a year back, I would have been pretty unhappy that my insurance company didn’t want me to go to the hospital that’s closest to my house, but now I’m completely willing to go a little farther away in a non-emergency situation, that could easily save tens of thousands of dollars. Anthem is pretty hard-nosed about pushing back on certain prescription drugs, wanting you to try cheaper alternatives; again, this now looks like a good thing to me.

Maybe I’ve been listening to too much Econtalk, but I’m also seeing the downside of health insurance: the fact that the person making treatment decisions is mostly insulated by price outcomes really does lead to a lot of waste. Don’t get me wrong, I still think that universal health insurance is table stakes for a civilized country in this day and age, but the reason why I believe that isn’t because I think it’s good to have my prescription drugs mostly be paid for by my insurance premiums instead of being paid out of pocket: it’s because insurance is important for people who really do have emergencies or unusual chronic health issues, and because people who don’t have Silicon Valley tech salaries need healthcare, too. But the current US health care system is doing a lousy job of meeting those two objectives at any sort of reasonable price.

persona 4

May 1st, 2016

I didn’t know how much I needed to play Persona 4, but wow, it really was the perfect way for me to spend my game-playing time over the last two months. (Many thanks to Dan and Adam for nudging me to play it!) I’ve gotten sick of games that present you as an all-powerful hero saving the world via buckets of blood; so, in retrospect, it’s not a big shock that a game that presents you as a surprisingly competent hero who saves a town via making friends and helping people confront their true selves turns out to be just up my alley. And of course I did enjoy Persona 3 and I’d been hearing people gush about Persona 4 for years; still, I didn’t expect to react to the game quite so strongly.

What most impresses me about Persona 4 is how it commits to showing the virtues of daily life. You’re a teenager, which means that you get up in the morning, you go to school, you spend the afternoon in a way of your choosing within constraints, you go home and see your surrogate sister and father, you spend the evening maybe with them or maybe studying or working, and then you go to bed. And you wake up the next day, and the pattern repeats. Which, written out like that, sounds boring, but the game doesn’t force you to spend time needlessly going through repetitions: a couple of button pushes and you’re through the school day, unless something surprising happens at school that day. Instead, the structure provides a context that makes your choices of actions meaningful: I’m not sure quite what the right musical analogy is, but it’s something like the way the repetition of the chorus grounds a song, or the way musical themes acquire weight on repetition.

And that repetition isn’t limited to the basic structure of your days that is given to you: it’s in the choices that you make as well. Because you don’t have an array of options for you to express your creativity (with the arguable exception of the dungeon crawling mechanic): in your afternoons, you’re going to wander around a bit through the town (or rather the few small areas in the town that the game exposes to you), you’re going to decide whom you want to spend your time with that afternoon (or, if nobody’s around, what you want to do instead), and then you’ll spend time with them. Do I feel like spending time with Yukiko, with Yumi, with Koh and Daisuke? If it’s raining, do I want to study in the library or to take a swing at the Mega Beef Bowl?

Which, in the wrong hands, could be really boring: you’re ultimately just pressing a few buttons to get the next bit of story drip. But there’s just enough interactivity for those button presses to matter: expressing what you want to do that day, expressing how you want to respond to your friend in any given situation. And the bit of space given by wandering around town is just right, too: if you were constantly in story mode, the game would feel more like a visual novel, whereas if you were almost always wandering around, then the story bits would feel like infodumps to be ignored. As is, though, it feels like you’re living your life, just in a distilled form.


And the stories are really good! Or at least I responded to them very strongly: I can’t quite figure out why, because there’s nothing really remarkable in any of them, in fact the opposite is true. But, somehow, that manages to work: the game is about celebrating the joys of daily life, and daily life isn’t filled with people living extraordinary adventures (at least for those of us who don’t have a special power of entering televisions to fight monsters buried in our collective psyche) or being in unique situations. Instead, it’s people going through the same frustrations and the same joys that billions of other people have gone through before them; but it’s their lives, their frustrations, their joys, and that turns out to matter a lot.

You can’t always advance the various stories that you’re going through with different characters. But, as frustrating as it can be to not be able to hang out with anybody on a given day, I think that too helps the game, as does the fact that the story with a given character doesn’t advance every time you hang out with them. People have their own lives; sometimes those lives intersect with yours, but not always. And even on the days when their lives do intersect with yours, sometimes it intersects in a moment of quiet companionability; that turns out to have its own impact, to be good enough. Of those quiet moments, I particularly liked the family routines: tending the garden with Nanako, or the evenings when Nanako had gone shopping and you spend your evening making a lunch for you to share with a friend the next day, with results that were sometimes excellent, sometimes mediocre, and sometimes disastrously bad. (Food preparation is a running theme: it turns out that, if you have teenagers preparing food, they will frequently not be very good at it.)

And, on a family note: Nanako is an amazing character. She’s a kid, much younger than you; she’s lonely, she’s glad you’re there, and you turn from a guest in the house into a brother for her, as important to her as anybody. And, conversely, she’s as important to you as anybody; you spend many happy hours together, but you also help her work through frustrations, help her accept and come to terms with what’s going on. And she’s fundamentally a such a good kid (but realistically good, not saccharine); she has every right to be frustrated with how little time her farther spends with her, but you help her see his good side, and you also help him realize not just how important she is but how important it is for him to show that with conviction in his actions, to not be lost in memories of his wife.

Nanako also helps show what an excellent set of friends you have: you’ll frequently run into friends during outings with Nanako, and they’re always genuinely happy to see her and to include her. The game doesn’t pretend she’s a peer, she’s a little kid surrounded by big kids: but the warmth that they show her is genuine, their lives are better because she’s around, and she glows when she’s around them. The game builds up those interactions in a way that, when the inevitable plot point comes when Nanako is in danger, your and your friends’ distress is real, she’s the furthest thing from an abstract plot point princess to be saved.


Like most games, you’re playing an idealized character. But your character isn’t idealized because they’re an all-powerful savior or because they’re an amazing fighter. Your character is idealized because they’re really good at making friends, and really good at being friends. Even the boss fights are focused on this: you help your friends or friends-to-be come to terms with the fact that the image of themselves that they’d like to present isn’t everything who they are. And with your acceptance of their hidden sides, you help them accept those hidden sides.

That ability to make and be friends in turn opens you up to the great good fortune of having a rather wonderful group of people who want to spend time with you, with their lives enriching yours, your life enriching theirs, and their lives enriching each other’s. That is a game that I can very much get behind.

alto’s adventure reconsidered

April 20th, 2016

When I wrote a paragraph about Alto’s Adventure a few months back, I really thought I was done with the game; but maybe a month or so later, I picked it up again in a free moment, and this time it stuck with me longer.

The basic issue that I had before was that it was a game that seemed like it should be about virtuosity, but the one-button gameplay didn’t support that enough. And, don’t get me wrong, Alto’s Adventure is largely about the experience of the environment. But, once you unlock the second character, your choice of actions expands just enough to be interesting: you can backflip at the crest of every hill, which means that you can always be doing tricks and chaining tricks, which increases the density of choices enough to bring in more traditionally gamey virtues. And, while I’d actually already unlocked her when I gave up on the game the first time, I hadn’t really realized the consequences of that unlocking.

For me, the major consequence was ultimately that it gave me a choice: I could try to maximize my local fun by doing tricks all the time, or I could try to maximize the duration of play sessions (which, admittedly, has its own more serene form of enjoyment) by being more restrained and only leaving the ground / backflipping when I was sure it wouldn’t have a bad effect. Of course, the ideal is to not have to make a choice between those two, and I found myself being able to avoid that choice more and more: initially because the second character let me be successful with tricks much more often, but then later because I got better at judging the risk envelope of tricks, learning when it’s safe to do a backflip (or a double backflip or a triple backflip). And, beyond that, the game starts having tricks actively help you get long runs instead of hurt you: you have to constantly do tricks to stay ahead of the later elders, and if you get far enough, the rock density gets high enough that you have to be spending most of your time time either above the rocks or smashing the rocks.

So there’s an ideal on the horizon; and there are challenges in the way. Not just in learning when a backflip is safe, but in the goals that the game throws at you as you advance (get a certain distance, acquire a number of coins, but also weirder ones like doing a rock bounce to a grind). And, even as you get better at judging your backflips, there’s still one basic tradeoff: the more time you spend in the air, the less likely you are to realize that there’s a chasm coming up that you need to avoid. And with the second character in particular the tradeoff is starker than that: she’s slow unless she’s coming right off of a trick, so she has a hard time with two of the chasm types. So, on the one hand, she wants to be jumping all the time to keep her speed high, but, on the other hand, that increases the chance of landing into a chasm instead of before it. And the game in turn supports that: letting you unlock a hover feather which gives another option for avoiding chasms, giving a visual cue of an approaching chasm by changing the visual zoom / scrolling behavior, and eventually, when you unlock the last character, letting you not only not have to choose between jumping and speed but even letting you survive one chasm misjudgment.


So: a better game for me than I thought. And, of course, the initial presentational / experiential virtues that I saw in the game are still there, and still distinguish the game from others that I’ve played.