John Braden Keiser |
Renton, WA john@johnkeiser.com www.johnkeiser.com/resume.html Updated June 4, 2007 |
| Overview |
I have experience in all important aspects of engineering, including development, testing, requirements
and business analysis, and project management. Most of my development experience is in
object-oriented languages, large-scale distributed systems, network communications,
databases and Web technology.
|
| Extensive Experience |
These are some technologies I am particularly proficient in, and how long I've spent using them.
- C++ / Object-Oriented: 8 yrs. (C: 11 yrs.). Object-Oriented Design. Sockets, database, low-level GUI work.
- Large Scale Distributed Systems: 4 yrs. Scalable storage, analysis, indexing and queries. Search and general purpose.
- C#: 3 yrs.
- Web Development: 4 yrs. Database/Web Integration. HTML/JavaScript/CSS. Perl, Mason, Java Servlets, StoryServer, CGI.
- Database Development: 5 yrs. Application design, table design, some performance work. Oracle 7 through 8i, Sybase, PostgreSQL, MySQL.
- Perl: 6 yrs. Years of tools, large-scale testing, data processing, web development, object-oriented. Wrote widely-referred-to paper on Perl XS.
- Java: 2.5 yrs. Servlets. Applets. Applications. Worked on free implementation of core java.* hierarchy.
|
| Skills |
| Web |
CGI | Perl | DHTML/CSS | Applets | Servlets | JavaScript |
| DOM | Mason | StoryServer | Ruby/Rails | |
| Languages |
C++ | C# | Perl | Java | Tcl/Tk | Lex/yacc |
| C | BASIC | CORBA | JNI | Perl XS | |
| Databases |
SQL | Oracle | PL/SQL | Postgres / mysql | MS Access | PostgreSQL |
| Sybase | Progress v7.0 | RogueWave DBTools.h++ | |
| Dev. Tools |
CVS/RCS/SVN/Source Depot | GNU Make | Visual Studio | RogueWave Tools.h++ | OpenGL | |
| Shell/Unix |
Linux | GNU | Solaris/SunOS/DEC Unix | SysV | sh/csh/tcsh | |
| Environments |
UNIX | WinXP/Me | DOS | |
|
| Work History |
| Microsoft | October 2003-Present |
SDE / SDET - Distributed Storage
Developed, tested and ran a large-scale service that allowed storage and processing of extremely
large amounts of data.
- Wrote service to generate, collect and analyze important log data from extremely large number of machines
- Wrote widely-distributed internal test strategy white paper for large-scale services in general.
- Wrote the primary service monitoring system, continuously mining logging and performance data across
all computers to alert when problems occurred, and aid in diagnosing and fixing said problems.
- Sped up the release process to reduce code drift and increase turnaround time to catch problems.
- Wrote local tests that mimicked the distributed system in as many respects as possible, driving features
into the product where necessary to make it happen and ensuring the quality of the system before it was deployed.
- Wrote first installer for the distributed system.
- Designed and implemented hybrid model-based system applicable to both stress and normal tests.
SDET - Search
Developed, tested and helped run Microsoft's large-scale search service. Architected test strategy for the
entire product, managing multple people to get the core important tools and infrastructure running.
- Wrote the first version of the installation for the Search service.
- Architected the test infrastructure used by all of Search, and managed multiple people to get the work complete.
- Designed and wrote scalable build system used to build the product daily and constantly, and kick off tests and deploy to machines.
- Wrote test plans, designed and implemented automated tests for the downloading, parsing and indexing of web pages, conversion, and internationalization.
- Wrote systems allowing the automated deployment, running and
- Wrote the first automated whole-product tests.
- Architected common libraries to aid in installation, diagnosis, testing and working with the product, and worked.
- Wrote widely-used tools to aid the running of the system, running programs in parallel on many machines and performing important administrative tasks.
- Wrote universally-used tools to mine the service for crashes and display the most frequent stacks.
|
| AOL/Netscape | Jan 2002-July 2003 |
Sr. Software Engineer
Extensive C++ and web development, plus web/database integration. Worked on scripting capabilities and graphical layout for the Netscape
web rendering engine ("Gecko"), and wrote many tools to make
development life easier for the large project. A huge number of small
accomplishments can be found by searching the public Bug database; the
largest and most far-reaching changes are listed below:
- Participated in the W3C XForms Working Group
- Managed several sub-modules of the Gecko / Mozilla project, including form controls, form submission, and later, printing
- Rewrote form controls to honor display: none
- Rearchitected form submission to fix existing problems and enhance maintainability
- Rewrote printing to be simpler and less error-prone, created interface to create thumbnails of a web document (ongoing)
- Determined more modular build and directory system for entire project (ongoing)
- Made
large contributions to many other areas of product, including the event
system, JavaScript DOM, security, the base XPCOM libraries and data
structures (esp. hashtables)
- Wrote a set of developer tools for use by other members of the project
- Wrote tinderbox3, a next-generation tool for managing a widely distributed development project and detecting errors early
- Wrote enhancements to the bug system and a rule-based tool that reviews programs for common errors
|
| WrightHaven | May 2001-Jan 2002 |
Sr. Architect, Partner
Consulting, technical architecture, project management.
Projects:
- Consumer Services Website -- dynamic website written in Mason/Perl, PostgreSQL database
- Shopping Cart System -- Mason/Perl, PostgreSQL database
|
| Ideas & Effects | May 2000-April 2001 |
- Role: Director, R&D
Duties: Oversaw technical architecture, project management of all
projects in company. Sales duties, bidding for projects as well. 4
direct reports, 5 people total underneath at any given time.
Project oversight included:
- Real Estate Booking System--2-3 persons, 4 mos., Perl CGI, Java networking & threading, Oracle 8i
- Timesheet
System--(also created requirements & architecture for this) 2
persons, 2.5 mos., Java Servlets, Perl CGI, Oracle 8i
- Remote
Hardware Testing Systems--(less oversight on this one) 1 person, long
term, Java, hardware interfacing (COM ports), threading & networking
- Web Store Search Engine--2 people, 3 months, Perl CGI, Oracle 8i
- Credit Card Processing System--1 person, 1 month, Perl CGI
- Small Contracts--usu. 1 person, ~1-2 weeks, Perl CGI
Other duties included system administration, general network architecture, security measures.
Created the development, release and test process for Ideas & Effects.
|
- Project: WWW Search Engine. Roles: Customer Management, Project Management, Analyst & Programming, Sysadmin
Managed one person. Created full project plan, architecture, design,
contracts, hour tallies. Full delivery from conception to test to
production.
Wrote website in Perl hooked to Oracle 8i database, did FastCGI work as
well. DBA duties, installation & security work of all software
involved.
|
- Project: Recruiting System. Roles: Project Manager, Analyst
Internal system to assist Ideas & Effects recruiter, which it plans
to spin off as a separate company. Created a full requirements and
business analysis, project plan, and requirements document for the
system. I had a hand in a business plan for the product as well.
Finally, I created the database schema and set up Oracle to work with it.
Product uses Perl CGI, Oracle 8 database, HTML 4.0, CSS1, and some mean JavaScript.
|
- Project: Registration System. Roles: Technical & Business Analyst
Wrote general product plan, requirements document, led team on initial prototype, created database, coded some Servlets.
Prototype used Java Servlets, Oracle 8 database.
|
| Independent Consultant - Various | Jan 1997-May 2000 |
|
As a consultant I completed a variety of projects, with an emphasis on database-driven
network applications, including Web and TCP/IP, for companies such as Swiss Bank, Lycos,
the Chicago Tribune, Land's End, and Follett book publishing I made extensive use of my
skills in Java, C++, Perl, Oracle and Postgres, among others. What follows are some of
the more significant projects:
|
- Client: CSG Systems. Project: Telephony Order Tracking System
C++ and RogueWave Tools.h++ on an Oracle database. I worked on workflow
management software and some daemons using a major OO framework.
Additionally, I implemented several useful tools in Perl 5, including
software to assist with population of data for automatic testing.
Finally, I wrote an experimental Java reimplementation of some of the
technology.
|
- Client: MCI-WorldCom. Project: Telephony Order Tracking System.
Sales reps use this system to enter new local service orders. It runs
over the web on Oracle 8 PL/SQL. I worked on the Web Interface
(PL/SQL), interfaces to downstream systems
(C++/Sockets/Registry/FTP/CORBA/RogueWave). I designed and implemented
common C++ base and helper classes for the majority of the backend
systems, and restructured the group's login environment and build
process. Created a set of classes that abstract database access to
retrieve information simple, safely, and hierarchically, and created a
small macro language to make maintainance and extension of these
classes easier. Currently writing a generalized data feed program that
will allow downstream systems to choose what information they get and
how often.
|
- Client: Land's End. Project: Online Catalog.
Worked on a team of 8 programmers using Vignette StoryServer to create
a WWW online catalog. Specific responsibilities included the content
entry portion of the site, where the producer go to enter data on
products and how they will appear on the site.
|
- Client: Lycos, onhealth.com, small Internet Search Engine Firm. Project: Mentoring, Programming.
Mentored clients in use of Vignette StoryServer, with DHTML and
JavaScript programming responsibilities. Was critical factor in several
successful launches during this time.
|
- Client: Major Bank. Project: Policies Document.
Java and Metaphoria DTS to present the contents of Microsoft Word
policy documents to the Web in an indexed, searchable form consistent
with the original. Wrote a complete, tolerant HTML parser in order to
break up the document correctly. Was project lead, architect, and sole
implementor.
|
- Client: Chicago Tribune. Project: Flagship Website.
Used StoryServer templates and a Sybase database (both Unix and Win95).
Acted as a consultant to a team of 7 programmers and a number of
Chicago Tribune editors and producers. Designed and implemented
large-scale caching system to synch site content with editorial content
entry. Created columnist sections of online newspaper. Created the two
Alternate Versions of the site dynamically, pulling the same stories as
the main site. Acted as mentor to a new StoryServer programmer,
training her in StoryServer and the nuances of web programming.
|
- Client: Automatic Expense Reporting Firm.
Wrote programs in C to monitor and alert system administrators via page
and email when anything went wrong with their database server or
network, and when there were discrepancies in data. User Informix
database interfaces from C along with standard UNIX system calls.
|
- Client: Major College Textbook Company.
Wrote a Financial Aid transaction server for bookstores. I was given a
set of code that was not working, identified the architectural flaws
and rewrote the portions of code that needed rewriting. Extensive use
of sockets.
|
| Gold Eagle Company | Jun 1996-Jan 1997 |
Administered Novell network, SysV Unix Server, Progress database, 70-80
client computers with Win3.1/95. Wrote database programs in MS Access
and Progress (Symix).
|
| Knowledge Base Systems | Mar 1995-May 1996 |
Co-founder, lead software developer for WWW-based educational quizzing
system using C++, Perl, CGI, Linux web server. Initially ran in
Chemistry lab with 30 Win3.1 clients running Netscape.
|
| NCSU Computer Science Department | Mar 1995-May 1996 |
Graph theory research (including the four-color theorem) using C++,
T.A.+tutor for Discrete Mathematics; tutor for C++, Advanced Data
Structures courses.
|
| Open Source Development |
|
Open source projects involve teams of programmers and complex,
fundamental technologies like languages, web browsers, and databases.
Here are some of my most significant contributions: |
Video Game Engine: Apr 2003-Present. C++, OpenGL, Direct3D, Network Programming.
I am working on an unreleased game engine from the ground up, including 3D rendering and a full physics engine.
|
Mason: July 2001 to Present. Perl, Mason, PostgreSQL.
Mason is a middleware Web development language like PHP or StoryServer.
I write essential utilities for the language, including a generalized
login/session management system called UserLogin.
|
GNU Classpath: June 1998 to present. Java, JNI.
Working on an open-source, clean-room implementation of the java.*
class hierarchy, Specific responsibilities include JavaBeans and the
Virtual Machine Interface, which is Classpath's interface to different
Java Virtual Machines. |
OpenQubit: Mar. 1999 to Aug. 1999. C++.
Did some work on a project whose aim is to simulate quantum computers on classical ones.
|
Project 59: 1998. C++, Network Programming.
Early in my career I headed an open source project to write utilities
for Ultima Online, a massively-multiplayer online RPG (role-playing
game). These utilities used the datastream sent to/from the client and
server, which I played a key role in decoding.
|
| Activities of Interest |
|
Mathematics/Logic:
I am working on a variety of hard problems, including the four-color
theorem, combinatorial logic gates, and unitary matrix mathematics. I
have played with various applications of genetic algorithms, and wrote
a program to view three-dimensional slices of four-dimensional equation
space. |
|
Boy Scouts: I was a Scout leader for a year in Troop 777 in Colorado Springs. I earned the rank of Eagle Scout as a boy.
|
|
Other Interests: Philosophy, drumming, kayaking, tie-dye, hiking, mountain climbing
|