08 July 2018


A cover of I Will Survive is playing on Jesse's laptop. We are in the lounge on our floor of the dorm. I came here to do math homework away from the distractions in my room.

It's my freshman year of college. I'm distraught. I can't remember whether there's a precipitating incident on the day this story takes place—I can think of several possibilities, but don't feel sure about any particular one—or if my feelings on that day were just part of the general malaise. Let's just say I have a protracted and unproductive crush on Jesse's roommate, and have failed to act on it. This is further complicated by my own roommate having similar feelings, but acting on them. The greatest complication, however, is that outside of one month where we hung out often, the object of this crush does not appear to like me very much at all.

The song is comforting. The song is melancholy. I remember sitting in the setting sunlight thinking that this would be an end. Life would change. It would be sad to think about, but the only way was forward. Did Jesse know any of this?

But it turns out, it wasn't a turning point at all.

26 June 2018

To Show One's Hand

"I know this is going to sound weird, but I want it to be my fault. Well, not exactly, but I want there to be some sort of fault component. I guess not even fault exactly. But like some sort of arrived-upon mutual conclusion that there was some sort of interpersonal incompatibility and that meant it could never work. It wouldn't even have to be mutual! It could have been as simple as 'you do this, and I don't like that.'"

"It's like a job interview. They have some reason why they didn't hire you, but they'll never tell you what it is."

"But I do know why!" The tone of this interjection is one of surprise, mixed with a bit of frustration. The response touches on the wrong point. The initial explanation was a meandering one, sure, but it seemed awfully clear where it landed. Maybe it wasn't, or was that an insinuation? "I do have an explanation, and I respect and believe it. It just frustrates me. It's just an explanation that I myself, or some facet of who I am, play no role in. It makes me feel like the world around me behaves in random ways that I have nothing to do with. But that doesn't mean that truth is being withheld. I don't think that would happen; there's no reason for it. It's just a shitty situation. I mean, do you think there's more to this?"

"I don't think you can know."

01 August 2017

Man On the Street

Yesterday when I turned in my Seattle mayoral primary and special election ballot, I was interviewed about my mayoral choice by Ana Sofia Knauf of The Stranger. I'm typically reserved politically—it's something that I think about (surprisingly often) but don't necessarily like to communicate. But typically if I'm a asked a direct question, I'll respond. I think Ana Sofia did a great job taking some really rambling answers and turning them into real normal-people sentences. But I think I came across as a bit of a doofus thought no fault of the reporting, just not being practiced in expressing these things orally. Let's do some director's commentary.

Article Link

"I take a lot of the Seattle Transit Blog endorsements and a lot of The Stranger's endorsements. The Stranger's endorsements are a tad left of where I am and the Seattle Transit Blog ones tend to be a tiny bit too pro-developer for me."
I wish I had more mental wherewithal to elaborate about this on the spot. I think the best example of this is that my City Council Position 8 choice, Jon Grant, supports a 25% affordable requirement for housing built by developers. Seattle Transit Blog would say that this would deter growth. The thing is, I want a government that will push the issue to find out if 25% affordability, but also be willing to consider alternate strategies to building affordable housing in the near-term if the 25% affordable rule cuts overall development. I don't think candidates are adequately incentivized to discuss their policies this way (they have to establish that they are making the correct decisions). In the absence of individual candidates applying the scientific method, I want the overall government to be forced to operate is such a way. I want my overall voting choices to reflect I think hindering development would be bad, but my perception is that developers are plenty profitable at the moment, and how would anyone know where the optimal line is. I want my choices to create an environment where experimentation and deliberation flourish.

My entire answer to "As you vote for a new mayor, what's the most important issue on your mind?"
I can't do these questions. It's embarrassing. "What did you do today?" "What are your hobbies?" Buuuuuhhhh. Somehow they trigger to me actually forget who I am as a person. It's terrible.

I wish a said something along the lines of finding creative ways/riding the state super hard to institute progressive taxes. I wish I said something about how embarrassing I find the Seattle Police, both from the perspective of their clear and fatally tragic inability to deescalate as well as how poorly they handled situations when I actually needed them.

"transit things"
Sometimes you just forget the word "policies" at a really inopportune time.

"To some extent, I'm not super keen always on the idea that everyone in politics should be an outsider. I like the idea of there being some establishment people in there—look at how terrible things are federally. That's what liking an outsider got us, the country at large."

Of course this last sentence is the lead in the Facebook link to this article because it's the part that I like the least in retrospect. Way too close of an implicit Trump comparison to two mayoral candidates who I would be absolutely thrilled to vote for. What I was trying to express, in too few world was this: I find the Trump presidency to be disappointing/embarrassing in three different categories of ways. First is that the policies and proposed changes coming from it are antithetical to the political decisions I would like to see made.  Second is that it is disorganized and cannot impose its agenda, regardless of my feelings on agenda. Third is that it comes across as mean, flippant, and dismissive. I have no fear of Moon or Oliver from a way one perspective. And I don't think that either of them have given evidence of acting in ways two or three. I'm just not sold of the idea of "outsider cred" because I think there's a danger of any outsider candidate being less cautious and politic, and thus inadvertently creating type two or type three situations. I think what doesn't communicate, and I needed to communicate, was that I do there should be some outsiders in political systems. It's just useful to have a mix, and I try to ensure that my other choices create a mix.

"I moved here about six years ago. I came here for a software job, so I feel culpable in that sort of space...Even though in some ways, I'm sort of the face of the problem, I don't want to be contributing to that."
Is this weird and gross? I can't decide whether this is weird and gross. On one hand I don't want it to come across as "look at me I'm a hero because I care about people who aren't me", and I'm not sure it doesn't. On the other hand, I think it's terribly important that the city does not become a monoculture of highly compensated people in the tech industry. I think it would be a terrible circumstance, not because people in the tech industry part is terrible, the monoculture part is. I consider myself very fortunate to have friends with life experiences both like and unlike mine. Why would I want this to no longer be the case? If I'm unwilling to cease to exist, then my voting choices are my lever.

23 October 2016

Layover 2

I'm in O'Hare on a layover and I'm in motion. I'm unrushed, having made my way through passport control with plenty of time to spare. I'm making my way to a flight to Seattle. The day seems bleak, the sky is grey, and the air is cold. I'm overtired. Walking through an airport can be an overstimulating experience: the people rushing around, the din of announcements. I feel disconnected from it all, moving steadily, the rush surrounding me.

I'm changing terminals. Boarding attendants are yelling and pointing down the crowded platform trying to maximize the number of bodies they can get onto the train that connects international arrivals and domestic departures. Standing on the train, I stop for the first time since I handed my paperwork to the border patrol agent.

As the doors are closing, a man runs through. The trains run every four minutes. There's really no need to do this, but that's the way this shit is done. If four minutes is really going to make a difference, the flight has, effectively, already been missed. There's no buffer for a slow person on a moving sidewalk, an unforeseen gate change, or a broken escalator.  It's the sort of thing that I sigh inwardly at, but move on from, because it's a pattern I see again and again. I'm still in my overtired fog, standing, facing the door, feeling little, saying nothing.

Now the doors are really really on the verge of closing. There's a clatter as a woman comes barreling through. The doors close on her arm and spring back open. It's loud, jarring, and unexpected. Words cannot express the momentary shock that I feel. The fog has vanished. With the doors reopened, she gets on the train

"That door closed on me," she says to her companion, the man who just made it through the door earlier. Her voice begins to take on more of an aggrieved tone, "You didn't have to get on this train!". The man brushes it off wordlessly, and fortunately an argument does not erupt.

But I wonder what it's like to be so determined, like the man, or feel so tethered, like the woman. Each of them had an opportunity to not get on that train and if they operated in a world where the most valued elements were order and safety, they wouldn't have. They both did though, and they did it together, though not without strife.

10 October 2016

Layover 1

I'm in Heathrow, sitting at the bar at a place called Huxley's. The place makes a big fuss about being British; celebrating modern British food. When the alternative is half a lobster and champagne for some princely sum, and I'm facing three more hours before a flight to Menorca, that seems just fine. When I approached the one remaining bar stool, the young man sitting adjacent gave a friendly look as he shifted his stool over to make room, but left his headphones in. He was not the only one with headphones in. Even the people without headphones are looking at their phones. I'm not.

I order a beer. A fast-talking guy, a speaker of Lithuanian as can be gleaned from the small badge of the Lithuanian flag on his nametag, assisted by two other guys, a colleague and trainee, both from India, provide efficient service, but are too busy to chat. The bar is L-shaped, and I'm sitting on the small side looking across towards the long end. Halfway down the long end, a young woman is passively rubbing her significant other's back with one hand, while in the other hand she holds her phone up to her face, giving it far more attention. At some point, the Lithuanian unsuccessfully tries to bum a smoke from his coworkers behind the bar. Unsuccessful, he heads to the kitchen and emerges with a cigarette behind his ear and leaves. I order another beer. The stool beside me opens up.

"Which of the beers has the most alcohol?" asks the 40-something American man who's sat down next to me of the trainee. The American, he's delayed, he's been at the airport awhile and will be for some longer, he announces, perhaps to bartender, perhaps to me.  The trainee doesn't know much about the beers and calls over his remaining colleague who runs through the list of lagers and ales on tap: unadventurous selections with a alcohol contents that, no lie, range only from 5.4% to 5.6%. The bartender suggests a slightly stronger Belgian beer in bottles, but the man, while he could imagine drinking said beer in a cafĂ© in Paris, decides he wants the strongest tap beer.

Something about the American makes me uneasy. There's a boisterous affability to his interactions with the staff, but it seems to be a mask over something: an angry volatility, a short fuse. Something feels like it's not going to end well. For awhile we're both silently drinking our beers.

"Is there a room or a dungeon or some place where I can smoke?" he asks the trainee.

"No..." the trainee softly intones, trailing off. I think the specification of a dungeon has thrown him. It's thrown me too. Dungeon? What the fuck? He riffs a little on the idea of a dungeon, talking a little about chains, taking things in a vaguely sexual direction. The trainee is still listening, but seems at a loss of words. The American seems almost apologetic on behalf of the trainee. His voice has conciliatory tone, as though he's fighting something back. "Can't do anything in an airport anymore. Fucking Muslims right?" The trainee gives an anxious grimace in response. Not ending well is starting. My second beer is soon finished, much faster than the first one. I eagerly pay and spend the rest of the layover sitting by the gate.


02 March 2016

Why I made a Seattle transit isochrone map generator

I made a Seattle transit isochrone map generator. You should check out this example of what it can do to fully understand what this post is about.


How do you use public transportation?

When I take the bus to work, I leave any time between 8 AM and 11 AM, more or less randomly. When I do leave, I don't check the bus schedule before I go. Once I've locked up the house, I'll put my work address into Google Maps and see which route it suggests I take. Then I'll double-check the real-time arrival times provided by OneBusAway as I start to walk to the stop, and potentially choose to reroute to another stop. When I leave work and go home, some time between 4 PM and 8 PM, I basically use the same strategy.

But that's not the only way I use public transportation. I'll go from my home in Wallingford to visit friends in Capitol Hill or the Central District using one or more buses. Sometimes I'll take a series of buses (and now a streetcar too) to Little Saigon to get produce, or a couple of buses (or potentially a bus and light rail) to get to a Grocery Outlet in Madrona or SODO for other sundries. Sometimes I'll use the bus to go directly from work to Georgetown to pick up brewing supplies and then head on home. I use public transportation to go pretty much anywhere.

For these other trips, even though they potentially involve making a connection between two different vehicles, I still do absolutely minimal planning. I rely on the public transportation system to be able to support a broad variety of largely spontaneously-timed trips and most of the time it works fine. I have a car, but outside of hiking trips, hauling building supplies and furniture, and larger grocery loads, I don't use it very often.

I think that many—perhaps even most—people do not use public transportation in this same way. Some people only rely on it to get to work, using peak-hour buses, or a ferry where there are only a few trips spaced at fairly infrequent intervals. They need to be ready by a certain time or wrap up work by a certain time in order to commute. They cannot use public transit in a spontaneous way. A lot of people are averse to transfers and only take public transportation to destinations that they can reach directly. That makes them car-dependent for a large number of trips.

I don't want to invalidate the needs or preferences of people who, for whatever reason, adhere to a rigid schedule or do not consider public transportation for all of their destinations. I don't want to say that I'm right and anyone who uses public transportation differently is wrong. But I do want to take the stand that if a public transit agency gives sole focus to these users, it will stagnate. It will serve well the people who already use it, but it will not induce people to use it for anything other than their pre-scheduled trips. In my mind, effective public transit should challenge people to view their cars as an optional convenience rather than the only thing that brings them travel flexibility. After all, if the transit network serves spontaneous trips all over the city well, it serve schedule adherents or more-than-occasional drivers just as well.

The way I use public transportation does not answer the question of why I made a Seattle transit isochrone map generator. An isochrone map generator is not really useful for deciding what bus to take on a given day. The tools for that already exist. This is a different sort of tool.


I've lived in Seattle for about four and a half years. I've been using public transit all that time. For reasons I can't fully explain, I don't just find public transportation useful but intrinsically neat and interesting.  But only recently have I gotten interested in public transit policy. I think part of that distinction is that a public transit network can seem like a static thing most of the time. Sure there have been frequency cuts and a subsequent frequency buy-back by the city, but most of the time the routes don't change very much. However, a recent set of changes known as Link Connections grabbed my attention.

For those outside of Seattle, or those who value their time enough not to follow the intrigue of transit policy, here's a brief rundown of public transit in Seattle. Bus service in Seattle is operated by King County Metro, which operates bus service for all of King County. King County Metro operates a variety of route types: point-to-point routes within the city of Seattle, peak-hour express routes designed to get commuters in and out of the city from the suburbs, and less frequent point-to-point routes outside of the city. The other big player in the region is Sound Transit. Sound Transit is a three county agency with jurisdiction in King County, Snohomish County to the north, and Pierce County to the south. Sound Transit operates longer-range commuter buses, but is best known for the its light rail line, called the Link, that runs from SeaTac Airport to downtown Seattle. In mid March, Sound Transit will open an extension that provides stations in Capitol Hill and the southeastern edge of the University of Washington campus.

Link Connections is King County Metro's attempt to better synchronize its network with the new frequent, reliable light rail service that will exist between the university, Capitol Hill, and downtown. The idea is that some bus routes that once went between or near the stations on their way downtown can be truncated at these stations. Riders can continue to their final destinations on the light rail. Even with the transfer, the hope is that operating part of the trip in a grade-separated vehicle with fewer stops will make the trip faster than the former one-seat ride.

Link Connections started with King County Metro publishing two plans for route restructures, known as Alternative 1 and Alternative 2. Alternative 1 was a pretty radical restructure. It redirected almost every route in Capitol Hill to serve the light rail station, it greatly reduced the bus capacity between downtown and Capitol Hill in anticipation of most riders using the light rail between those two locations. This had the benefit of giving many routes frequencies better than 15 minutes midday and under 10 minutes at peak times. In northeast Seattle it reduced to peak-only service many routes that connected neighborhoods to downtown, truncated many all-day routes at the light rail station, and consolidated some routes on parallel paths into single corridors with 15 minute frequencies rather than half-hour ones. Alternative 2 was far less ambitious. It terminated fewer routes at the light rail stations and generally made fewer consolidations and modifications.

Around this time, I started reading the Seattle Transit Blog and had been turned on to several talks by transit consultant Jarrett Walker. Many of the Seattle Transit Blog authors and commenters seemed to like Alternative 1. It also created a network more resembling a grid and created new high frequency corridors where few existed before. The more I thought about it, the more Alternative 1 seemed like a really inspired and forward-thinking set of changes. It made a lot of sense to me because it was extremely compatible with the way that I use public transportation. Higher frequency would mean that even if I arrived at the bus stop at the least optimal time, the bus would arrive sooner and I'll ultimately get to my destination earlier. A more grid-like network, less focused on shuttling people downtown, would better meet my desire to get anywhere in the city within a reasonable amount of time.

Alternative 1 was not without problems. Many questioned the feasibility of transfers at the University of Washington station as few buses actually stopped directly at it. There was a fear that combining certain segments of routes would hurt the reliability of currently-reliable routes. A community group was rumored to be fighting the decision that buses would no longer collectively traverse the full length of Madison Street. Some felt as though the consolidation of corridors was done without respect to the hilly geography of Capitol Hill.

As straightforward as the aims of Alternative 1 and Alternative 2 seemed, the followup plans seemed increasingly confused and reactionary. An Alternative 3 largely held the Alternative 1 line in northeast Seattle, but restructured the Capitol Hill routes in strange ways, some seemingly antithetical to the goal of connecting adjacent neighborhoods to the light rail. A subsequent proposal rolled back many of these changes, in the process restoring much of the bus capacity between downtown and Capitol Hill and making several routes take a bizarre detour onto Madison Street. This proposal was submitted to the King County Council, which holds final authority on any large restructures. The chair of the transportation committee, citing community concerns, restored, in reduced capacity, two routes that had been cut in every previous plan. This further diluted the goal of consolidation, as the operating budget for these restored routes would ultimately have to come out of capacity allocated for the new consolidated routes. After approval, the planned Madison Street deviation was found to include a turn too tight for a bus to make, forcing its elimination. A later administrative change moved an additional route in Capitol Hill closer to the station. By the time everything was agreed upon, northeast Seattle resembled Alternative 1 with a couple of artifacts from the current service pattern and Capitol Hill received changes that were only slightly more ambitious than the original Alternative 2.

I felt frustrated by this. It seemed as though a well-formed plan had been watered down by well-meaning but loss-averse citizens, community groups, and politicians. It seemed as though, in the face of criticism, King County Metro had acquiesced to demands rather than responding with data to criticism rooted in anecdotes. Reading some of the comments on Seattle Transit Blog posts, I did not feel alone in this feeling of frustration and loss. What I observed among some Alternative 1 proponents was a sense of cynicism that attributed these modifications to "politics". That didn't sit well with me. Blaming "politics" seemed cheap and simplistic, falling back to the cliché of government as a blundering bureaucracy. It invalidated the positions of the individual people who felt a sense of concern and loss by the restructure and argued for modifications. As right as I felt about Alternative 1 being a better solution, I did not feel as though I was in a position that I knew enough to invalidate anyone's feelings.

While these changes were in flight, I was giving a lot of thought to how I would restructure the Capitol Hill network. I set the goals of being sensitive the hilly nature of the region,  minimizing cases where riders would need to start by going in one direction to ultimately go in the opposite direction, and holding a hard line on only running minimal capacity on paths that were well-served by the light rail. As I started drawing these networks, I realized that I had a big problem.

Even if I could draw what I envisioned to be the perfect network, I had no way to convince myself that it would actually be better in practice. Just drawing lines on a map and calculating reasonable frequencies given the existing amounts of bus service would give me an idea of this, but no concrete proof. Furthermore, if I were to propose it as a viable solution, I would not actually be demonstrating its value to skeptical observers. I would be susceptible to the same sort of commentary that, in my mind, undermined Alternative 1. I could argue that it was more grid-like and connected many neighborhoods to high frequency routes. But, when a bus route is targeted for elimination, those reasons are unlikely to resonate with people who have a bus that they consider their bus and take every day. There's so much ambiguity and very little interactivity in the typical transit map. Sure different line styles can show frequency characteristics, but having to reason about transfers with such a map requires a full timetable. Evaluating such a restructure becomes a burden to the rider, who just knows that their existing bus works well enough. 

One day, though, I was sent a video of a presentation where Jarrett Walker used an isochrone map to support a line of explanation that these sort of maps demonstrate the amount of "freedom" that a public transit network provides. That immediately resonated with me. First, it perfectly described how I use transit. I don't have set routes, so just looking at routes doesn't allow me to analyze the utility I'd get out of a transit network. Meanwhile, an isochrone map shows an abstracted view that emphasizes the extent of the network, something that is immensely useful to me.

It also raised a question about how I felt about the demise of Alternative 1. Was King County Metro's failure to implement Alternative 1 not a failure of "politics", but a data visualization problem? King County Metro's documentation on the Link Connections restructure was a collection of route maps and high level explanations of which alternate routes to use in the event that one's chosen route was on the chopping block. However, these documents were failing to answer a very critical question, if my bus goes away, can I still reach the set of places that I need to go in about the same amount of time as I could before? If a concerned citizen could consider two isochrone maps centered at their home, one of the previous transit system and the other of a proposed replacement, and check that their destinations were in the same or lower time band as before, wouldn't that be more convincing than route lines on a map? Consequently, if the isochrone map showed a marked degradation, that person could raise a well-reasoned, rather than reactionary, complaint. The agency could then consider if the network was wrong to begin with or if improvements to everyone else outweighed this case and something like carpools, an on-demand shuttle, or taxi fare reimbursements could be used as mitigation for the impacted region.

So I started programming an isochrone map generator over the course of a couple of months, grabbing time after work and on weekends. I used King County Metro's Generic Transit Feed Specification files for schedule data and the Google Distance Matrix API for walking distances. The algorithm itself is a fairly basic recursive one, but I spent plenty of time screwing it up. Considerable time also went into performance profiling. Originally, I would leave it overnight to compute a map for one specific time period; now it can compute a full days worth of 30-minute travel maps in a little over 5 minutes. I found out later there are other isochrone map generators out there from WalkScore and Mapnificent, but, while being quality realtime products that run circles around my comparatively pokey generator, they make simplifying assumptions or don't reveal enough about their methodology to feel comfortable abandoning my own project.

I would assume the transit planners at King County Metro have far better tools than what I can program in my spare time. So I'm surprised that the transit planners employed by the agency, who judging from Alternative 1, appear extremely competent and daring, either don't have the tools to generate isochrone maps or don't believe they'll be an effective tool to convince the public of the efficacy of the route systems they've designed. I would love to know what the actual case is. I'm only one data point, but it is something I'd find useful to see.

While the maps are a good visualization tool, they still must be interpreted subjectively. When condensed further, I think they can provide a very useful piece of data. Taking a starting point and simply counting the number of points that can be reached from that point can serve as a naive score for the transit network at that starting point. Choosing a set of randomly selected but geographically diverse points can serve as an overall network score. The score can be refined further by weighting points for their access to jobs, culture, retail, and social services. That way, when a plan is presented, it has an objective measurement, as well as compelling visuals that can back up the merit of the score.

I think using isochrone maps as a core component of transit planning has the potential to invert what is currently a process that seems like it must be frustrating to all sides. Currently, the process appears to work by first having transit planners design a network using some unknown mechanism to evaluate it. Then route maps are revealed to transit riders and community groups, who, looking at any elimination, may doubt that the transit planners understand what is important to them. They suggest changes either directly or by way of insisting the county council amend the plan. As frustrating as those revisions were to me in the case of Link Connections, I firmly believe the public must be involved in the process in a meaningful way. After all, public transportation is financed by, and more importantly is intended to serve, the people. Imagine a process where transit riders and community groups define what the high-level goals of the transit network are—what, in the abstract, are the most important things for it to serve. The politicians on the council can debate and consolidate these goals into publicized, fixed weights. Then transit planners can redraw networks without fear of later meddling, provided they increase the score of the transit network. If people are subsequently unhappy with the transit network, they can evaluate whether the transit planners did not score the network honestly or if the scoring system itself needs work. Everyone has an important role that maximizes their strengths and minimizes their biases. There's no possibility, or even the perception of the possibility, that a rogue transit planner can neglect residents in a given area or that the committee chair can drawing a line on a map to appease a voting bloc.

When I present the idea of a system based around a numeric score, one thing that I worry about is that  is that it will be perceived as inherently harsh and unfeeling. Data-driven processes, at their worst, can be ham-fisted and alienating; I've been on the other side of them. Nonetheless, I feel as though there is an ability in scoring to make less biased decisions. When I was trying to draw a new alternative for Link Connections in Capitol Hill, I was thinking about what could work for me. I try to be aware of what characteristics I have that shape the way I view and exist in the world: I'm male, fairly young, white, and without any mobility or uncorrectable vision impairments. I can climb hills, walk quickly, and run to make a bus. I can stand around at a bus stop at night with little fear of harassment or attack. No one is going to call the cops if I'm walking through their neighborhood. By encoding the restrictions that people face in their lives as selectable parameters in the map generation software, an isochrone map can show a transit planner in a clear way, what the transit network looks like from another person's point of view.

I want to improve my software so that it can make maps that halve the standard walk speed, or not permit transfers after a certain time, or impose a maximum walking distance. Scores can be generated for a transit network given each of these restrictions and factored into a larger composite score. So at this point while I have made a Seattle transit isochrone map generator, I need help to make it into a tool that can actually effect change. I need one question answered, from a diverse set of people, in order to figure out where to go from here:

How do you use public transportation?