Oakland Equity Indicators

In 2016, Oakland created a new Department of Race and Equity, charged with creating "a city where our diversity is maintained, racial disparities have been eliminated and racial equity has been achieved." In Oakland, that's a big ask. But the creation of the office is, I think, an honest attempt to look for ways to improve the situation. The department has just released its first Equity Indicators Report, and as you might expect, Oakland fails on a number of important indicators related to equity.

Oakland Rideout

Heading out for a fun ride yesterday, I ran into the Oakland Rideout at Oakland Technical High. Sponsored by Marshawn Lynch, this was a super-social ride from his Beast Mode store downtown, up to my neighborhood. The event included a beautiful demonstration of the transformation of public space, as a sideshow of BMX and motocross bikes, and Lime scooters took over Broadway.

Bike share and the public interest

One of the topics at the Oakland BPAC was an update on bike share progress. As part of the 2017 East Bay roll-out, Motivate created a "Bike Share 4 All" program which allows low-income individuals to obtain an annual bike share membership for $5 (instead of the regular cost of $150). But Motivate has refused to place bike share stations in Deep East, despite using the Scraper Bike Team's style as marketing for their service. The exclusive rights we granted Motivate are a give-away of public space to private interest.

Bike to Work Day

Bike to Work Day began in Oakland 25 years ago. I've always been a bit ambivalent about it, partly because I feel like bike advocacy in the U.S. tends to frame cycling as a distinct activity, and I think it would be more productive to frame it as a common activity that everyone should be able to do all the time. This year, my wife was volunteering at the pancake breakfast at Oakland City Hall, so I decided to join the pedal pool led by Mayor Libby Schaaf and Council member Abel Guillen.

Shout-out from Streetsblog

Roger Rudick of Streetsblog SF was among about 25 people who joined me on the Oakland Flatlands bike tour this weekend, and he wrote up a good summary. The short version is, we had a good group, lots of good discussion, got finished before the rain started, and I think everyone got to learn some new stuff.

Oakland neighborhoods

Oakland neighborhoods

I'm going to be leading a bike tour of Oakland's flatland neighborhoods this weekend, and in preparation I did some work on redlining maps. One of the themes of the ride is that the current racial divisions between neighborhoods is largely a function of housing policies and practices in the post-Depression era. 

Smarter cities?

Smarter cities?

The recent autonomous vehicle fatality in Arizona highlights some of the philosophical issues which our societies will need to grapple with as we transition to the post-driving world. Technical developments will allow autonomous vehicles to outperform human drivers, but the surrounding moral issues still remain to be addressed.

Map output

It's not entirely perfect yet, but I have a workflow which generates these maps right out of Python for all of my cities, with some provision for longitudinal comparisons. To do still are to deal with projection issues (they're all in "web Mercator" because that's what Leaflet uses), and centering issues caused by inconsistencies between folium, selenium, and PhantomJS. And to improve legends and captions. But it's pretty cool, if you ask me.

Auto-generating maps

I'm working on scaling up the data analysis from the thesis, and I'm making some good progress, thanks to Folium. I'm pretty close to being able to run this on an arbitrary number of cities: just need to make the code a little more robust.


I've been working on generalizing my code so that I can make comparisons for dozens (or hundreds) of cities. And of course, I've found a ton of bugs, mostly related to my own poor understanding of Python data structures and functions. But I also found a fundamental issue with the calculations I used in my thesis.

1 2 3 4 5 8