|2009 - 2011
Senior Software Engineer, Wealthfront (formerly kaChing), Palo Alto, CA
Disrupting the $10^12 mutual fund market. My main work centered on:
Infrastructure: Integrated the Apache Zookeeper coordination service for service discovery, distributed locking, leader election, etc.;
integrated RabbitMQ message queue for service decoupling and collection/consolidation of service metadata; enhanced proprietary "Query Engine" RPC system at all layers;
data center maintenance for machine consolidation, service replication and relocation; database updates and migrations; wrote lots of good code and removed lots of bad code; ....
Financial Data Analytics: For 1 year I was responsible for all daily performance, attribution analysis, risk metrics and money manager scoring calculations, third-party data integration,
monitoring and reporting systems, and improvements to analytics driven from the CEO, sales team and CTO.
Customer Analytics: Built analysis tools and reporting for understanding our customers' behavior using session classification, a generalized "funnel" analysis method, behavior correlations, custom clustering, business metrics and trending.
In addition I've been an active promoter of Wealthfront's engineering practices such as Continuous Deployment through various speaking engagements and blog posts,
mentored other engineers and tried to improve our product as much as possible by both rhetorical and rational arguments.
|2008 - 2009
Senior Software Engineer, Ning, Palo Alto, CA
Member of Platform group responsible for Ning's 30+ back-end services.
- Created a Amazon-Dynamo-style distributed hash table for a new activity stream service, which I also built. The service receives user or networks events, then contextually routes and appends them to multiple activity feeds (~1M networks, ~20M users, up to 10k event-to-feed fanout, ~30 event injections/s, ~400 feed reads/s at initial deployment). Sole engineer on the project; the initial prototype was running in production within a few months. The DHT is completely horizontally scalable and supports features like dynamic node addition/removal, read-repair and pluggable storage engines to support high write throughput and eventual consistency. (Java, Jetty, bdb)
- Created, integrated and deployed instrumentation infrastructure for understanding the performance characteristics of our back-end services. (Java, JMX)
- Enhanced custom web-chat service via protocol optimizations and performance monitoring. (Java, JRockit VM)
- Introduced custom caches for various backend services to reduce query latency. (Java)
|2005 - 2008
Engineering Lead, Sharpcast, Inc., Palo Alto, CA
Member of Platform team responsible for proprietary synchronization protocol and server components. Former lead of Web team in 2005.
- Created next-generation storage system for data center: HTTP storage service with flexible backings (NFS, MogileFS, Amazon S3) for extreme scale-out. (Java)
- Converted static thumbnail generation daemon to a stateless HTTP service for improved scale-out and flexible image conversion. (Java, C++)
- Wrote Sharpcast Native SDK: win32, linux, macosx; complete documentation; led integration with third-party photo management software vendor. (C++)
- Enhanced sync platform: secure authentication, configuration validation, protocol and agent versioning, outgoing HTTP proxy tunnelling, SSL support, Berkeley DB indexing abstraction for query performance. (C++)
- Created flexible metrics framework and monitoring system used in all data center processes. (Ruby, C++, Java, rrdtool)
- Created platform/Java bridge for web server; created web platform using standard Java frameworks: data objects, managers, controllers, views, build system. (Java, JNI, C++)
|2001 - 2005
Senior Member Of Research Staff, Palo Alto Research Center (PARC), Palo Alto, CA
(PARC is formerly Xerox PARC)
Member of Applications and Architecture Group in the Computing Science Laboratory. (also formerly member of Technology Advancement Group (TAG), formerly known as the Advanced Systems Development Laboratory)
- Architected and built an advanced and usable environment (IDE) for the development and deployment of information extraction models. Recipient of 2003 Engineering Excellence Award to team. (Java, Swing, finite state transducer package in C for regular expressions)
- Developed web-based collabrative software for a large-scale ethnographic fieldwork project. Recipient of 2004 Outstanding Performance Award to team. (25% time. 2-tier system, XML db, XQuery/XPath)
- Enhanced, tested and deployed novel traffic clustering and analysis system to compute aggregate web site user behaviors. (Perl, multi-modal clustering algorithms in C)
- Ed H. Chi, Adam Rosien, Gesara Supattanasiri, Amanda Williams, Christiaan Royer, Celia Chow, Erica Robles, Brinda Dalal, Julie Chen, Steve Cousins. The Bloodhound Project: Automating Discovery of Web Usability Issues using the InfoScent(tm) Simulator. In Proc. of ACM CHI 2003 Conference on Human Factors in Computing Systems, pp. --. ACM Press, April 2003. Fort Lauderdale, FL.
- Ed H. Chi, Adam Rosien, Jeffrey Heer. LumberJack: Intelligent
Discovery and Analysis of Web User Traffic Composition. In Proc.
ACM-SIGKDD Workshop on Web Mining for Usage Patterns and User Profiles
(WebKDD 2002), pp. --. ACM Press, July 2002. Edmonton, Canada.
|2000 - 2001
Software Engineer, Outride Inc., Redwood City, CA
Core member of Search Team tasked to create a scalable, reliable fulltext
search system to include Outride's proprietary relevance technology.
Outride was a spin-out of Xerox PARC and
was acquired by Google in 2001.
- Architected and built Outride Query Server, indexing system, Outride Relevance Engine from R&D prototype. (Java)
- Instrumented search subsystem, developed statistic gathering/graphing package. (Java, rrdtool)
- Performed detailed performance engineering on distributed system.
- Created automated test suites to ensure and maintain quality code and seach results.
|1999 - 2000
Software Engineer, Goto Guy, Engage Technologies (AdKnowledge division), Palo Alto, CA
Responsible for the technical leadership of many projects.
- Re-architected and refactored data replication system increasing performance 10x and scalability 10x (Perl, Unix tools)
- Redesigned data extraction and translation subsystem to increase performance and reliability (Perl, Java)
- Developed and managed technical support for client services division interfacing to engineering
Teaching Assistant, Computer Science Department, Oberlin College, Oberlin, OH
|1997 - 1999
Technical Lead , Unixboy Consulting, Minneapolis, MN
Designed and developed custom WWW applications such as online catalogs, stores, and survey systems. Administrator of our WWW hosting business for our clients.
|1996 - 1997
Developer, IVL Inc., Minneapolis, MN
WWW site design, Java/CGI development, "Guru" miscellanea.
|1995 - 1998
Technical Researcher, The Geometry Center, University of Minnesota, Minneapolis, MN
- Core member of the team that co-authored the W3C MathML 1.0 specification for mathematical markup
- Created the world's first renderer of MathML: the WebEQ mathematical equation renderer (Java). Designed and developed the WebEQ Equation Editor
- Designed and created a prototype Java version of the Geometry Center's vizualization software Geomview
- Designed and created hyperbolic geometry visualization tools using Java
- Architect of WWW-based image editing system
Contractor, E. H. Boeckh, New Berlin, WI
A work-in-progress (WIP) system for use in Boeckh's manufacturing assembly line using MS/Access. Various software and network administration duties.