 
After finishing graduate school at UC Berkeley, I joined Google.org as a software engineer. In 2015, I left Google and joined Wave, and in 2020, I joined Tech For Campaigns, where we help progressive candidates win state-level seats in the United States. Here's my CV.
- Interested in voting? See the voting page for work on electoral systems, electronic voting, and voting system security. Or check out my dissertation on electronic voting.
- Do you use Python? Try q.py, a module that helps you see what's going on in your programs; here's a quick 5-minute intro. Or check out scrape.py, a handy module for scraping content from webpages.
- Want to learn Python? Have a look at the online lab exercises and assignments for the Python course I taught at UC Berkeley.
Here's a list of some things I've done. I'm still figuring out how to organize it.
| Art | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Collaboration and hypertext | |||||||||||
| Human-computer interaction | |||||||||||
| Information design | |||||||||||
| Music | |||||||||||
| Python | |||||||||||
| Security | |||||||||||
| Teaching | |||||||||||
| Voting and elections | |||||||||||
| Websites and services | |||||||||||
| 2017 | Ramani Huria: community mapping for flood resilience | ||||||||||
| 2017 | West Africa Motorcycle Mapping: better maps, better hospital records | ||||||||||
| 2016 | neveragain.tech: a pledge against misuse of data for religious targeting and mass deportation | ||||||||||
| 2016 | Wave: mobile money transfer for East Africa | ||||||||||
| H | I | 2014 | Project Buendia: medical records for emergency relief in response to the Ebola epidemic | ||||||||
| A | 2013 | Lighting design and engineering for Truth is Beauty at Burning Man 2013 | |||||||||
| P | 2013 | q.py: quick and dirty debugging output for tired programmers | |||||||||
| 2013 | RECAP for Chrome: building a free library of public court documents | ||||||||||
| A | H | 2012 | Light Orchestra: a thousand lights respond to you, the conductor (featured at Sea of Dreams, Burning Man, and the Exploratorium) | ||||||||
| A | 2012 | Lighting design and engineering for The Serpent Twins at Burning Man 2012 | |||||||||
| H | I | W | 2011 | Google Crisis Map: a map mash-up builder and publishing tool | |||||||
| A | 2011 | Lighting design and engineering for Truth is Beauty at Burning Man 2011 | |||||||||
| S | W | 2010 | Facebook API Browser: explore what's publicly visible through the Facebook Graph API | ||||||||
| I | T | V | 2010 | Election Methods in Pictures: play with election counting methods to see how they work | |||||||
| H | W | 2010 | Google Person Finder: a public missing persons database for the earthquake in Haiti | ||||||||
| H | 2010 | Multitetris: multiplayer cooperative Tetris for a multitouch table | |||||||||
| H | I | W | 2009 | SMS for Life: using mobile phones to improve distribution of malaria supplies in Africa | |||||||
| H | I | W | 2008 | Google PowerMeter: an energy information platform for everyone | |||||||
| H | P | S | V | 2007 | Ph. D. dissertation: on electronic voting and Pvote | ||||||
| S | V | 2007 | Voting systems review (for the California Secretary of State) | ||||||||
| H | P | S | V | 2007 | Pvote: small and flexible software for voting machines | ||||||
| I | W | 2006 | Genome Enhancer: the multi-organism version of Fly Enhancer | ||||||||
| H | S | 2006 | Passpet: convenient password management and phishing protection | ||||||||
| M | 2006 | Music 148. African music ensemble | |||||||||
| A | W | 2005 | Regender: a gender-swapped view of the Web | ||||||||
| A | 2005 | Sideways Room: disorienting decor for your party guests | |||||||||
| P | T | 2005 | CS 9H. Python: a self-paced programming course | ||||||||
| I | V | 2005 | Voting visualizations: comparing the fairness of election methods | ||||||||
| C | I | 2005 | Threaded conversation map: a viewer for online discussions | ||||||||
| 2005 | PFIF: a standard for data about people missing or displaced by disasters | ||||||||||
| T | 2004 | CS 184. Computer graphics | |||||||||
| H | 2004 | Two-handed tablet interface: a multitouch hack | |||||||||
| P | T | 2003 | CS 98/198. Beautiful code: a course in the art of Python | ||||||||
| I | 2003 | SeismoSpin: an interactive visualization for browsing earthquake data | |||||||||
| H | 2003 | User-directed screen reading: screen reading as an input operation | |||||||||
| H | 2003 | Peephole displays: handheld windows on a virtual workspace | |||||||||
| A | 2003 | Figure drawings: from a class I took in Cambridge, MA | |||||||||
| I | P | W | 2002 | Flamenco: a facet-based browsing and search interface | |||||||
| S | 2002 | Auditors: an extensible code verification mechanism | |||||||||
| M | 2002 | Transcribed music for piano | |||||||||
| C | I | 2002 | Zest: an experimental viewer for e-mail discussions | ||||||||
| I | W | 2001 | Fly Enhancer: a search engine for binding sites in D. melanogaster | ||||||||
| I | 2001 | Phoebus: progressive display of database query results | |||||||||
| I | 2001 | Notes from Infovis 2001 | |||||||||
| H | S | 2001 | Secure interaction design: principles for usable secure software | ||||||||
| I | 2001 | GnuTellaVision: animated exploration of graphs with radial layout | |||||||||
| W | 2000 | Malkovich mediator: try this if you're in a wacky mood! | |||||||||
| T | 2000 | CS 61A. Structure and interpretation of computer programs | |||||||||
| P | W | 2000 | Roundup: an issue tracker for knowledge workers | ||||||||
| H | W | 1999 | Real-time chat (without Javascript, Java, or Flash) | ||||||||
| C | P | 1999 | Pyxi: a browser for Xanadu hypertext | ||||||||
| C | W | 1997 | Crit: a public annotation system for webpages | ||||||||
| W | 1996 | MINSE: enabling anyone to put math in webpages | |||||||||
| W | 1995 | Shodouka: a mediator for viewing Japanese websites | |||||||||
Random things: I also have a page of other small software projects that don't have their own project pages. Also some PortMidi and pyPortMidi binaries for Mac OS 10.6.
 
 gmail
gmail com
com