Scott Lamb

1509 Woodmeadow Ct.
San Jose, CA 95131
Cell phone: (319) 530-0844
Email: slamb@slamb.org
Website: http://www.slamb.org/

Objective

To spend my days designing systems and solving interesting puzzles alongside top-notch programmers, all while getting paid.

Summary

Able to blend computer science education, software engineering experience, and communication skills to build elegant, reliable, maintainable systems.

Experience

Software Developer, 2Wire (May 2005–present)

Currently member of ~10-person system software team for the HomePortal, a high-end home DSL router. Our FreeBSD-based system contains three million lines of C. As part of this team, I

  • developed new userspace code. One typical feature retained arbitrary integer statistics gathered at frequent intervals in a ring buffer for less frequent collection by 2Wire's management server (CMS).
  • adapted open source code to run on unforgiving environment—no MMU, limited RAM and CPU, long uptimes. Deglobalized, substituted custom configuration store, scrutinized every malloc(), sent error path bugs upstream where relevant.
  • designed data models and documented RPC model for upcoming iNID product, which is split into several networked units.
  • created infrastructure for our new white box testing group. Configured and enhanced Buildbot, a distributed continuous integration framework. Created robust framework for flashing new code and launching commands over a serial console after every checkin.
  • with two other busy people, administrated a dozen engineering infrastructure servers. Created Linux kickstarts and Nagios/rrdtool-based monitoring so this task would take as little time from software development as possible.

Began as member of six-person team developing CMS, a Java-based management server for millions of HomePortals and other devices. Wrote software to run on clusters of J2EE application servers. As part of this team, I

  • replaced complex threaded handler for proprietary protocol (OGMP) with much smaller asynchronous design. This doubled performance and eliminated many races and deadlocks found in production.
  • refactored (heavily trimmed, fixed) existing OGMP load tester to verify these claims, reusing new protocol code. Generated production load from single machine.
  • replaced broken 10,000-line threaded Java load tester for HTTP-based protocol (CWMP) with working 500-line Python-Twisted design. This tool has since been used by our QA team to find many performance and synchronization bugs.
  • created database and web-based graphing tool for load test results, using PostgreSQL, Python, Django, MochiKit, and gnuplot.
Database Programmer, UI Hospitals & Clinics, Internal Medicine (Sep 2001–Mar 2005)

Member of five-person team supporting Oracle database needs of over 100 active users. Gathered requirements from users, designed schemas, implemented front ends, documented systems with writing and diagrams, presented systems to users, and created database-driven reports. Maintained production systems. Trained new developers. Led team to rewrite personnel system and migrate existing data. Primary developer of financial reporting system used to make crucial business decisions for the largest clinical department of a major teaching hospital.

Open Source Developer (1998–present)

Designed and implemented several projects consisting of thousands of lines of code. My documented and released projects, available at http://www.slamb.org/projects/, include:

  • sigsafe, a C/assembly library for safe cross-platform UNIX signal handling.
  • Axamol SQL Library, a Java library used for encapsulating SQL statements and embedded descriptions. Supports calling statements with named parameters. Automatically produces well-formatted documentation.
  • NetGrowler, a simple yet popular OS X tool to notify of network changes.

My unpolished projects, code available in an open Subversion repository, include:

  • a generic load test graphing framework based on Python, SQLite, and gnuplot.
  • a Python-Twisted server for reliable gathering and short-term retention of system monitoring data. This may one day be used by a central monitoring server.
  • atoms++, a C++ object-oriented wrapper around UNIX APIs with a focus on developing network servers.

Gave and received assistance using and designing OSS projects on mailing lists. Made minor code and documentation contributions to many OSS projects (Buildbot, libevent, Apache, Subversion, gaim, Adium, etc.).

Education

B.S., Computer Science, University of Iowa (Dec 2004)
  • Physics Minor
  • National Merit Scholarship
  • Provost's Scholarship

Knowledge

Computer Science
  • Languages
    • Object-oriented imperative (Java, C++, Python); heavy use
    • Pure imperative (C, Bourne shell, assembly on eight architectures); heavy use
    • Declarative (SQL, XSLT); heavy use
    • Functional (Haskell); academic use
    • Logic (Prolog); academic use
  • Relational algebra (normalization, ACID, Codd's Twelve Rules)
  • Asymptotic efficiency (Big-Oh notation, efficiency of time and space)
  • Correctness (defining/maintaining invariants, pre-conditions, post-conditions)
  • Concurrency (threads, processes, locking/contention/deadlock, OCC, shared data structures)
Software Engineering
  • Tools
    • Version control (Perforce, Subversion, CVS)
    • Relational databases (Oracle, PostgreSQL, SQLite)
    • RAD database development (Oracle Forms & Reports, Microsoft Access)
    • API documentation (doxygen, Javadoc, pydoc)
    • Build systems (SCons, Ant, maven, make+autoconf)
    • Operating systems (Linux, FreeBSD, OS X)
    • Diagrams (OmniGraffle)
    • Collaboration (MediaWiki, bugzilla)
  • APIs
    • General-purpose (C++, boost, J2SE, UNIX)
    • Unit testing (PyUnit, JUnit, JMock, boost::test)
    • Networking (BSD sockets)
    • Non-blocking IO (Twisted, java.nio, select/poll/kqueue/epoll)
    • Concurrency (pthreads, fork, mmap)
    • Dynamic websites (Django, J2EE, JSP, Apache Struts)
    • XML (SAX, DOM, JDOM)
  • Security (SQL injection, cross-site scripting, buffer overflows)
  • XML validation (XML Schema)
  • Web design (HTML, CSS)