2020-05-31 00:55:17 +03:00
|
|
|
# Project history
|
|
|
|
|
|
|
|
As of June 2020.
|
|
|
|
|
2020-05-31 01:43:26 +03:00
|
|
|
tldr: A/B Street has been in active development since June 2018, but the idea
|
|
|
|
has been festering since I was about 16.
|
2020-05-31 00:55:17 +03:00
|
|
|
|
|
|
|
<!--ts-->
|
2020-05-31 01:43:26 +03:00
|
|
|
* [Project history](#project-history)
|
|
|
|
* [Backstory](#backstory)
|
|
|
|
* [Year 1 (June 2018-2019)](#year-1-june-2018-2019)
|
|
|
|
* [Year 2 (June 2019-2020)](#year-2-june-2019-2020)
|
|
|
|
* [Retrospective](#retrospective)
|
2020-05-31 00:55:17 +03:00
|
|
|
|
2020-05-31 01:43:26 +03:00
|
|
|
<!-- Added by: dabreegster, at: Sat May 30 15:43:02 PDT 2020 -->
|
2020-05-31 00:55:17 +03:00
|
|
|
<!--te-->
|
|
|
|
|
|
|
|
## Backstory
|
|
|
|
|
2020-05-31 01:43:26 +03:00
|
|
|
I originally wanted to tell a much longer story here of how I came to work on
|
|
|
|
A/B Street, but I'm not sure this is the right time yet. So consider this the
|
|
|
|
quick version.
|
2020-05-31 00:55:17 +03:00
|
|
|
|
2020-05-31 01:43:26 +03:00
|
|
|
I grew up in Baton Rouge, where driving is effectively the only mode of
|
|
|
|
transport. (I've gone back and made a point of taking long walks to confirm how
|
|
|
|
antagonistically the city is designed towards other modes.) Very early on, I
|
|
|
|
fell in love with a Nintendo 64 game called Banjo Kazooie, which led me to the
|
|
|
|
online fan communities of the early 2000's. I wanted to create games too, so I
|
|
|
|
started learning programming via library books and lots of questions on IRC.
|
|
|
|
Because I never had any confidence in art, I wound up working on roguelikes,
|
|
|
|
which led to a fervent interest in pathfinding algorithms and
|
|
|
|
[collaborative diffusion](http://www.cs.colorado.edu/~ralex/papers/PDF/OOPSLA06antiobjects.pdf).
|
|
|
|
When I started driving in high school, I quickly realized how bad people were at
|
|
|
|
it. I remember being stuck at the intersection of
|
|
|
|
[Florida Blvd and Cloud](https://www.openstreetmap.org/node/1279204989) and
|
|
|
|
first wondering if the pathfinding algorithms could help with traffic. Can you
|
|
|
|
see where this is going?
|
2020-05-31 00:55:17 +03:00
|
|
|
|
2020-05-31 03:22:18 +03:00
|
|
|
![Impatience is a virtue](cloud_florida.jpg)
|
2020-05-31 00:55:17 +03:00
|
|
|
|
2020-05-31 01:43:26 +03:00
|
|
|
I moved to Austin for college. One of the first days of class, I shuffled down
|
|
|
|
the stairs of Gearing Hall past a crackly old speaker apocalyptically announcing
|
|
|
|
the weather forecast (details add color, right?) into a seminar demanding a
|
|
|
|
totally open-ended first assignment to do something interesting. After I left,
|
|
|
|
somebody stopped to ask me for directions, but I didn't know campus well yet. I
|
|
|
|
thought about how Google Maps gave really silly walking directions. So I decided
|
|
|
|
I'd hand-draw a map of campus, showing all of the construction, how to cut
|
|
|
|
through the labryinth that is Welch Hall on hot days, and where to find the 24/7
|
|
|
|
robot coffee machines, and hack together a routing engine to help people find
|
|
|
|
the shortest path between their classes. The feedback I got on this assignment
|
|
|
|
included something along the lines of, "I was really pretty impressed first that
|
|
|
|
you would be so stupid as to actually try to do this..."
|
2020-05-31 00:55:17 +03:00
|
|
|
|
2020-05-31 03:22:18 +03:00
|
|
|
![Hand-mapping UT Austin](ut_map.png)
|
2020-05-31 00:55:17 +03:00
|
|
|
|
2020-05-31 01:43:26 +03:00
|
|
|
But I did, and that led me to discovering OpenStreetMap, which it turns out was
|
|
|
|
pretty pivotal. (The first version of my campus map was seeded vaguely off an
|
|
|
|
official paper map, but mostly I walked around and invented half-assed surveying
|
|
|
|
methods on the spot.) Next semester, I joined a freshman research stream with
|
|
|
|
somebody who had worked on [AIM](http://www.cs.utexas.edu/~aim/), UT's
|
|
|
|
demonstration that autonomous vehicles wouldn't need traffic lights. Everything
|
|
|
|
came together, and I started a 3 year journey of building
|
|
|
|
[AORTA](https://github.com/dabreegster/aorta/), a traffic simulator for AVs.
|
|
|
|
Guided by the research lab, I explored the really bizarre idea of letting AVs
|
|
|
|
[bid to turn lights green sooner](http://www.cs.utexas.edu/~aim/papers/ITSC13-dcarlino.pdf)
|
|
|
|
and micro-tolling all roads to disincentivize congestion. Both of these
|
|
|
|
mechanisms would be incredibly unfair to people without the spare cash to back
|
|
|
|
up their high value-of-time, but I brushed this off by saying the currency could
|
|
|
|
be based on carpooling, EVs, etc.
|
2020-05-31 00:55:17 +03:00
|
|
|
|
2020-05-31 03:22:18 +03:00
|
|
|
![Approximately Orchestrated Routing and Transportation Analyzer](aorta.gif)
|
2020-05-31 00:55:17 +03:00
|
|
|
|
2020-05-31 01:43:26 +03:00
|
|
|
It was great to try research in college; I learned I _really_ dislike munging
|
|
|
|
data and compressing my work into 6 pages of conference paper LaTeX. So I moved
|
|
|
|
to Seattle to work in industry instead, on something completely unrelated to
|
|
|
|
transportation. Lots of things began unravelling for me in Seattle, but one of
|
|
|
|
them was biking. In Austin, I had picked up mountain biking, and all but stopped
|
|
|
|
driving; it was an amazing place to explore and commute by bike. Seattle was
|
|
|
|
different. There were many more cyclists around, but the experience felt more
|
|
|
|
stressful, the drivers more aggressive. I had plenty of near-misses. I kept
|
|
|
|
commuting by bike, but the joy of it was gone. I started noticing how many cars
|
|
|
|
were parked on narrow arterials and wondering why that was a fair use of space.
|
|
|
|
I started paying attention to the public discourse around bike infrastructure in
|
|
|
|
Seattle and feeling like the conversation was... chaotic.
|
|
|
|
|
2020-05-31 03:22:18 +03:00
|
|
|
![Manhattan took walkability seriously](manhattan.jpg)
|
|
|
|
|
2020-06-05 16:55:43 +03:00
|
|
|
Fast forward to late 2017. This is where I'll omit chunks of the story. I
|
|
|
|
visited London, my first experience with a city that took public transit
|
|
|
|
seriously. When I returned, lots of latent ideas stopped fermenting and started
|
|
|
|
exploding. I threw together a prototype of A/B Street and started the arduous
|
|
|
|
process at work of open-sourcing it and applying to a program to let me work it
|
|
|
|
on for a few quarters. A few months later, I wound up quitting instead, and
|
|
|
|
began to work on A/B Street in earnest.
|
2020-05-31 00:55:17 +03:00
|
|
|
|
|
|
|
## Year 1 (June 2018-2019)
|
|
|
|
|
2020-05-31 01:43:26 +03:00
|
|
|
I skimmed through git and summarized roughly what I was working on each month,
|
|
|
|
calling out milestones. "UI churn" is pretty much constantly happening.
|
|
|
|
|
|
|
|
- June: polyline geometry and lanes, building paths, protobuf -> serde
|
|
|
|
|
|
|
|
- July: pedestrians, bikes, parked cars, lane edits
|
|
|
|
- August: porting AORTA's discrete-time driving model
|
|
|
|
- September: multi-leg trips, buses, the first ezgui wizard, randomized
|
|
|
|
scenarios
|
|
|
|
|
|
|
|
- October: A/B test mode (and so per-map plugins), forking RNG for
|
|
|
|
edit-invariance, intersection geometry
|
|
|
|
- November: clipping / borders, using blockface for parking, time travel mode,
|
|
|
|
test runner framework
|
|
|
|
- December: bezier curves for turns, traffic signal editor, a first attempt at
|
|
|
|
merging intersections, right-click menus, a top menu, modal menus
|
|
|
|
- the grand colorscheme refactor: a python script scraped `cs.get_def` calls
|
|
|
|
at build-time
|
|
|
|
|
|
|
|
- January: careful f64 resolution, ezgui screencapping, synthetic map editor
|
|
|
|
- **grand refactor**: piston to glium
|
|
|
|
- February: attempting to use time-space intervals for a new driving model, new
|
|
|
|
discrete-event model instead
|
|
|
|
- **Feb 19-27**: conceiving and cutting over to the new discrete event model
|
|
|
|
- March: fleshing out DES model (laggy heads), first attempt to build on
|
|
|
|
windows, gridlock detection
|
|
|
|
|
|
|
|
- April: first public releases, splash screen and rearranging game modes
|
|
|
|
- May: fancier agent rendering, attempting to use census tracts, finding real
|
|
|
|
demand data
|
|
|
|
- **milestone**: discovered PSRC Soundcast data, much more realistic trips
|
2020-05-31 00:55:17 +03:00
|
|
|
|
|
|
|
## Year 2 (June 2019-2020)
|
|
|
|
|
2020-05-31 01:43:26 +03:00
|
|
|
![Circa October 2019](oct_2019.png)
|
|
|
|
|
|
|
|
- June: contraction hierarchies for pathfinding, stackable game states
|
|
|
|
|
|
|
|
- July: OSM turn restrictions, misc (I think I was in Europe?)
|
|
|
|
- August: pedestrian crowds, agent color schemes, parking blackholes, a big
|
|
|
|
`raw_data` refactor to store `Pt2D`, attended first hackathon
|
|
|
|
- September: offstreet parking, associating parked cars with buildings using
|
|
|
|
Soundcast (before that, anybody could use any car!), implemented texture
|
|
|
|
support for some reason, doing manual `MapFixes` at scale to fix OSM bugs
|
|
|
|
- **milestone**: got the smallest montlake map to run without gridlock
|
|
|
|
|
|
|
|
- October: parking sim fixes, opportunistic lane-changing, starting challenge
|
|
|
|
modes
|
|
|
|
- November: prebaked sim results, time-series plots, undo for edit mode, traffic
|
|
|
|
signal editor grouping turns
|
|
|
|
- **milestone**: Yuwen joins project
|
|
|
|
- December: the UI reform begins (flexbox, minimap, trip timelines, cutting over
|
|
|
|
to SVGs, info panels, scrolling), started naming releases sensibly
|
|
|
|
- Project leaked to [HN](https://news.ycombinator.com/item?id=21763636), woops
|
|
|
|
|
|
|
|
- January: UI reform continues, the modern tutorial mode appears
|
|
|
|
- Feburary: UI and tutorial, all text now pure vectors, port to glow+WASM
|
|
|
|
- March: lockdowns start in US, start grouping trips as a person, population
|
|
|
|
heatmap, left-hand driving, info panel and typography overhauls. started
|
|
|
|
engaging with Greenways, started effort to map traffic signals
|
|
|
|
|
|
|
|
- April: Orestis joins and starts the pandemic model, trip tables, the optimize
|
|
|
|
commute challenge, refactor for people's schedules and owned vehicles, trip
|
|
|
|
time dat viz, MAJOR progress fixing gridlock at the sim layer
|
|
|
|
- May: gridlock progress, upstreaming fixes in OSM, differential throughput and
|
|
|
|
first real write-up, long-lasting player edits, dedicated parking mapper,
|
|
|
|
maybe vanquished the HiDPI bugs, multi-step turn restrictions, random bios for
|
|
|
|
people, and docs like this to prep for launch ;)
|
|
|
|
- **milestone**: relying on pure OSM, no more `MapFixes`
|
|
|
|
|
|
|
|
## Retrospective
|
|
|
|
|
|
|
|
What poor judgments have cost me the most time?
|
|
|
|
|
|
|
|
- UI churn: I should've studied some UX on my own and started with a clear idea
|
|
|
|
of how to organize everything
|
|
|
|
- OSM data quality: I should've gained the confidence to upstream fixes earlier
|
|
|
|
- Intersection geometry: I should've realized sooner that simulation robustness
|
|
|
|
is more important than nice appearance.
|
|
|
|
- Geometry primitives: I sunk too much time into the polyline problem and f64
|
|
|
|
precision.
|
2020-05-31 03:22:18 +03:00
|
|
|
|
|
|
|
## Trivia
|
|
|
|
|
|
|
|
The name was almost "Unstreet" or "Superban" (superb urban)
|