Available for software and database engineering consulting, either providing advice and support to engineers and managers or doing hands-on development, tuning, and troubleshooting. Available on-site in the Los Angeles area or working remotely via Internet elsewhere.
|
BS Computer Science, Literature California Institute of Technology, Pasadena, CA GPA: 3.1 | June 1994 |
|
Data Warehousing Consultant OpenX (via Surfliner Services) | March 2010 - present (as of November 2010) |
Reviewed reporting database schemas and code for standalone ad server and online ad exchange advertiser- and publisher-facing systems (PHP/MySQL). Designed and implemented new warehouse schema and ETL (Perl/MySQL) based on that review and new requirements, integrating aggregate data from Hadoop grid processing (Java), near real-time updates from memcached-based counters (Java/Thrift), and dimension data from the administrative front-end (PHP/JSON). Supported report development and helped to improve report performance through rollups and query changes to work around limitations in MySQL.
|
Software Engineering Consultant AT&T Interactive (via Surfliner Services) | April 2010 - June 2010 |
Designed, implemented, documented, and supported a Hadoop MapReduce component (Java) used to perform a complex join with configurable output bucketing in ETL feeding into an online advertising data warehouse.
|
Software Engineering Consultant Prama Corporation | February 2010 - March 2010 |
Developed Hadoop Pig queries (Java) for basic analysis of usage data for an image metasearch engine, including a JSON-capable Pig storage UDF and integration of Python and Perl user agent parsers, and documentation for running queries in Amazon Elastic MapReduce.
|
Software Engineering Consultant Surfliner Services | September 2009 - October 2009 |
Reviewed prototype management system for Hadoop grids on behalf of potential investors/partners. Reviewed code and components used in system consisting of multiple web services and web UI involving Python, Java, Perl, PostgreSQL, MySQL, and Hadoop. Provided detailed catalog of current state of components and code functionality, along with consideration of functional areas not yet implemented in the prototype.
|
Data Warehousing Consultant AdECN (now merged into Microsoft adCenter) (via Surfliner Services) | October 2008 - June 2009 |
Worked with data warehousing team and transaction system team to build a data warehouse system capturing the activity of an online advertising exchange. Designed and implemented ETL integrating and rolling up multiple data feeds using an in-house grid-computing framework based on SQL Server Integration Services, an in-house distributed filesystem, a proprietary scripting language, and C#, including extensive testing, documentation, and support.
|
Full-time Student National Taiwan University ICLP | August 2007 - September 2008 |
Lived in Taiwan and studied Chinese full time at National Taiwan University's International Chinese Language Program.
|
Database Engineering Consultant Apani (via Surfliner Services) | May 2007 - June 2007 |
Reviewed network security management system software (Java) and database schema (Oracle) and made recommendations with respect to indexing, locking, trigger use, robustness, database tuning, and encryption support in various JDBC drivers.
|
Data Warehouse Consultant Spot Runner (via Surfliner Services) | December 2006 - September 2007 |
Worked with business users, transaction system team, and data warehousing team to build a data warehouse system capturing activity in a web-based application used by advertisers to purchase and manage advertising on cable networks. Assisted in requirements gathering and schema design. Defined and documented interface with transaction system. Designed and implemented ETL (SQL Server/C#/XML), including testing, documentation, and support.
|
Lead Developer Surfliner Systems | December 2005 - August 2006 |
Collaborated on development of a prototype web-based reporting system, adding richer AJAX-based UI features to the open source OpenReports report server. Worked with colleagues to define product requirements, developed server-side functionality in Java leveraging Spring and Hibernate, and developed dynamically configurable reporting dashboard web UI in Javascript.
|
Consultant - Senior Database Engineer Symantec Corporation | January 2003 - June 2005 |
Provided advice and technical expertise in the development of a Java-based security event data warehouse and management system. Supported developers and QA engineers as they worked with Oracle and Solaris, many for the first time. Provided technical advice to managers and architects, and worked closely with other database engineers in design, performance work, and debugging.
Added Oracle and SQL Server support to the existing DB2 support by modifying SQL, XML/XSLT, and Java servlet code to work around differences in syntax and semantics between databases as well as JDBC driver issues, ensuring robust data storage and retrieval and internationalization support. Provided scripts, config files, and migration tools, including schema conversion to support Oracle range partitioning, and materialized views and summary tables for Oracle and DB2.
Assisted in database and application performance tuning and troubleshooting, as well as a major schema re-design, modifying servlet code to hide schema changes from the rest of the application and ensure compatibility with third-party modules that plug into the system. Engaged in knowledge transfer at the end of the engagement to bring new team up to speed on the codebase.
|
Lead Developer Overture Services, Inc. (originally GoTo.com, now part of Yahoo!) | March 1998 - November 2002 |
Helped design, build, and/or scale up most of the major operational systems of the pay-per-click search pioneer, from founding of the company with only a handful of employees to pay-per-click powerhouse with $667M annual revenue and international expansion as of 2002.
Designed and built the original paid-listing database (Oracle) and the server code to query it (Java, ATG Dynamo app server), as well as nightly processes to upload listings changes from customer service. Tested and tuned performance of the server and database before the initial site launch.
Designed, built, and supported a customer database and a web-based listings management system using Apache mod_perl and Oracle, working closely with users in customer service and sales. Provided for efficient batch uploading of tens of thousands of listing changes at a time, asynchronous processing of large batches, optimistic locking to support multiple users modifying the same data, and efficient synchronization of listings data with the serving systems.
Assisted in the design and development of web-based account and listings management tools for advertisers. Helped developers integrate with the advertiser and serving databases. Built components for advertiser authentication, and developed a scheme using random tokens to solicit initial passwords from existing advertisers securely via email and web.
Architect and lead technical troubleshooter for a major multi-team development and integration project, deploying Windows-based CRM package Silknet, a Java GUI app for paid listings order processing and editorial review, and a host of Solaris-based Java EJB services to provide data persistence and sharing for the GUI app, integrate with Silknet, and track customer account balances, charging credit cards or pulling accounts offline as needed. All backed by Oracle databases. Coordinated development efforts among three different teams, worked with engineers on design and troubleshooting efforts, and got hands-on to resolve more difficult technical problems, including Windows-to-Java service integration via XML over HTTP, performance bugs in object serialization, and last-minute tuning of database queries throughout the services.
Scaled up back-end site search and click statistics processing by offloading some data aggregation processes from a multi-TB Oracle data warehouse to clusters of Linux machines. Developed a framework in Perl, C, and shell scripts to stream data through various aggregation pipelines, allowing dozens of SMP machines to safely coordinate and parallelize the analysis work before uploading aggregate results to reporting datamarts and the account monitoring system. Supported and worked closely with engineers using the framework to offload existing aggregations or create new ones, and operations engineers monitoring and maintaining finished ones. Debugged and developed patches for Linux kernel to fix robustness and stability issues, including an intermittent loss of floating point state and race-conditions, lockups, and data corruption issues in the NFS client.
|
Software Engineer Prama Corporation | October 1997 - February 1998 |
Worked with a small group of software engineering consultants to enhance a search engine prototype for Idealab, working primarily in C and Perl. Optimized performance of the initial prototype to prepare it for demos. Added support for typical search engine operators like exact phrase match and boolean AND, OR, and NOT. Developed additional prototypes that simulated editorial control of listings, user voting on results, and pay-per-click search.
|
Software Engineer Presence Information Design | April 1996 - September 1997 |
Developed Java and C interfaces to relational (Oracle), geographical (MatchWare), and intelligent text search (RetrievalWare) databases. Used these interfaces to build a multi-threaded object server in Java to provide object persistence and complex query capability for one of the first localized business search sites on the web, Pacific Bell AtHand.
Discovered and fixed bugs and performance flaws in Sun's Java Virtual Machine 1.0.2 implementation involving memory management and thread scheduling. Published a white paper explaining the problems, as well as fixes.
Also did design and code work for research projects on a dynamic HTML language and intelligent, cooperative Internet object caches.
|
Technical Staff Oracle Corporation | July 1994 - April 1996 |
Ported C code for the Oracle database kernel, network protocol adapters, and pre-compilers from Solaris to AIX. Ran and developed QA suites, resolved test failures, modified AIX-specific code modules, resolved esoteric bugs and created patches for customers. Developed and shared programs, scripts, and documentation to assist in these tasks.
|
Computer Programmer First Quadrant Corporation | December 1993 - June 1994 |
Translated financial reports from Advent to Sybase database systems to facilitate database migration. Responsibilities also included C programming, working with analysts to determine report specifications, and collaborating in the C++ design of in-house financial software.
|
Computer Programmer Caltech Economics Department Caltech Economics Department Caltech Electrical Engineering Department |
August 1993 - March 1994 June - August 1992 June - August 1991 |
Designed and implemented graphical user interfaces for game theory representation and solution software (Economics Department), for statistics software (Economics Department) and for information theory software (Electrical Engineering Department), all used in research or coursework. Wrote software in C and C++ under Unix for X Window System and Microsoft Windows.
Document last modified: Sun Oct 31 22:37:38 PDT 2010