SF & Uber

I don't post much personal stuff on this blog, but I probably should have mentioned that I moved to San Francisco back in December to join the mobile team at Uber! Superpumped to be here. (p.s., we're hiring!)

Back in my hometown, the Seattle City Council is talking about effectively shutting down uberX and other rideshare services. Below is the letter I sent Councilmember Mike O'Brien describing both why I think Uber is important for Seattle, and why I decided to relocate to join the company.

Mike - I'm disappointed by your decision to limit the number of available rideshare drivers. I've been a long time supporter of providing ways for people to get around the city without needing their own car, including my direct involvement with the ST2 campaign and the Broadway streetcar/bike path project.

Rideshare provides important complementary service to mass transit. Many Seattle commuters who take transit to work still own cars that they used for all non-commute trips, but that was starting to change. I personally know many people who sold their cars because they knew they could count on services like Uber for on-demand rides. This is a big deal, leading to more support for mass transit, less demand for parking that drives up the cost of housing, and less opposition to street improvement projects that also benefit cyclists and pedestrians.

Many friends and I have found ourselves going out more, spending more money at local businesses, and exploring more of the city because we know we can get home safely.

I left Seattle to join Uber because I saw it was having such a positive impact on cities around the world and wanted to be part of it. The decision to limit available drivers takes Seattle backwards with all stated goals around climate change, alternative transportation, affordable housing, job growth, and public safety.

There are over 10,000 signatures from people who want to see Uber stay as an effective way to get around Seattle. action.uber.org/seattle Your decision does not represent the city that elected you.

I did not receive a response.

Email to Sawant Kshama Sawant

During the 2013 campaign, I asked "Socialist Alternative" Seattle City Council candidate Kshama Sawant for a clarification of her position regarding "corporate welfare" via Twitter, and ended up sparking a contentious debate. I sent her the following email in followup. I did not receive a response. She later won the election against 16-year incumbent Richard Conlin.

Since being elected, she has suggested Boeing workers "take over" the factories, opposed a proposal to save Metro bus service, and argued against rideshare companies like Uber (where I've since started working) because she doesn't like that the list of investors includes Goldman Sachs and Jeff Bezos. After hearing about all this, I thought I'd post my letter.

Subject: Following up on Transit & Affordable Housing

Date: 10/11/13

To Kshama Sawant,

A few weeks ago a tweet from me sparked a contentious debate about your position on transportation issues. I wanted to follow up because I don't feel that everyone was able to correctly express their opinions 140 characters at a time, and it seems the conversation ended with a lot of confusion and incorrect conclusions. I also hope to clarify my understanding of your position on these important topics. Please note I will likely publish this letter and your reply.

I'd first like to explain why I consider your comment calling the First Hill Streetcar project a product of the "political establishment" and "not real transit" to be incorrect, starting with some history:

In 2007, a group representing what I consider the "political establishment" created a proposition known as "Roads and Transit". This was basically huge highway expansions coupled with some transit projects. We were told it was the last opportunity to expand the subway system anytime soon, and many pro-transit and environmental organizations supported it.

Not everyone bought the argument that transit funding had to be coupled with highway expansion. The opposition was lead by the Cascade Bicycle Club and the Sierra Club, where current City Councilmember Mike O'Brien was chair at the time. To much surprise, the measure was defeated.

Despite grim warnings that "There is no Plan B", a grassroots campaign with little funding (that I volunteered on) successfully won a transit-only package just one year later. This major victory challenged all long-established assumptions regarding voters and transit (at least until voters approved the tunnel a few years later).

Part of this package included funding for the First Hill Streetcar, which was created after a subway station on First Hill had to be ruled out due to extremely high construction risks.

In addition to the primary goal of connecting First Hill with the subway system, the streetcar will also serve the Yesler Terrace public housing community, providing a significant transit boost for this lower-income area of the city. The statement you referenced about streetcars serving "only rich parts of town" is incorrect, and also ignores the vision to build a city-wide network. Because the First Hill Streetcar project was funded by Sound Transit after being approved by voters, it is incorrect to assume money was directly repurposed from Metro bus service.

On the topic of affordable housing and density, your opponent Richard Conlin has been supportive of two issues I have personally been involved with: Microhousing and the Capitol Hill subway station development agreement.

Microhousing provides an option for people who don't need a lot of space to live in the city near employment instead of driving in. The cost of these units are significantly less than market rate for an average studio, and are successful without the direct subsidy from a housing authority.

The Capitol Hill subway station development agreement is a groundbreaking achievement that will require over 30% of the units to meet affordability standards and provide a public plaza to be used as permanent home for the Broadway farmers market, among other community benefits.

I would like to know if you disagree with your opponent's position on these issues and what you would have done differently, if anything.

I disagree strongly with your support of rent control. Two recent articles in The New York Times explain the problems rent control systems have caused in both New York City and San Francisco: reducing the supply of housing (driving rents up further), and subsidizing apartments for the wealthy. One alternative option for Seattle is adjusting the income requirements of the existing MFTE program, and I would be interested to hear your thoughts on this.

Finally, back to my original tweet, you talk on your website about "ending corporate welfare" and "tax freeloading corporations". Could you please provide specific examples of this?

I look forward to hearing from you.

The Secret Life of SIM Cards

Last year I worked with a group of people to set up a GSM cell network at the second Toorcamp, a hacker camping conference on the Washington coast. My responsibilty was to procure SIM cards that would allow phones to connect with our network.

While researching SIM cards, I learned that small apps ("applets") can be loaded onto the cards and executed separately from the phone's processor and OS. Recently at DEF CON 21 I gave a presentation with Karl Koscher about our experience working with the SIM cards, detailing how to write, build, load, and use these applets.

Lots more information at simhacks.github.io.

Android Libraries with Gradle and Android Studio

The new Gradle-based build system for Android apps is a huge improvement over older eclipse, ant, and maven-based approaches. It has a simple declarative syntax and makes building different variants of your app (e.g. staging vs. production) very easy. Gradle is also the default build system for the new Android Studio IDE, so there are lots of good reasons to migrate your apps over.

The new system also finally provides an official way to package up Android library dependencies, however I've seen a lot of confusion on IRC and G+ about how this works, so here's a quick guide.

ActionBarSherlock already has gradle build scripts, but the archive is not yet published on Maven Central so you'll have to build from source:

$ git clone -b dev https://github.com/JakeWharton/ActionBarSherlock.git
$ cd ActionBarSherlock/actionbarsherlock
$ gradle assemble

This will create an archive at build/libs/actionbarsherlock-4.3.2-SNAPSHOT.aar.

Ideally we could just copy this into our app's libs/ directory and add a File dependency, but unfortunately this currently only works for jar files.

Instead, we'll "install" the archive into a local maven repository inside our app:

$ mvn install:install-file \
    -DgroupId=com.actionbarsherlock \
    -DartifactId=actionbarsherlock \
    -Dversion=4.3.2-SNAPSHOT \
    -DgeneratePom=true \
    -Dpackaging=aar \
    -Dfile=build/libs/actionbarsherlock-4.3.2-SNAPSHOT.aar \

(Set localRepositoryPath to the full path of your app's libs directory.)

Now in your app's build.gradle simply add libs as a maven repo and add the dependency:

repositories {
    maven { url 'libs' }

dependencies {
    compile 'com.actionbarsherlock:actionbarsherlock:4.3.2-SNAPSHOT'

That's it! Be sure to commit the entire libs directory to source control so other developers (and your CI server) can easily build your project. You can also choose to host dependencies in your own remote maven repository, but that's overly complex for most projects.

ActionBarSherlock is a good example of how to add Gradle support to a library that primarily uses a dfferent build system and that does not yet have a published aar. I've done the same thing for the Facebook SDK here. Between those examples and the official docs, you should have no trouble creating aar archives for any other project you need.

Hope this helps someone!

All posts →