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.