Seattle, Washington
hire@saul.pw
saul.pw/resume

Saul Pwanson

Senior Software Developer
Firmware Engineer
Data Wrangler

Skills

I am fluent (10+ years experience) in Python, C, and x86 assembly.
I have done extensive production work with C++, SQL, and Forth.
I have made several prototypes using HTML, CSS, Javascript, bash, and AWS.
I have used many other technologies and am interested in learning many more.

Open Source

VisiData, a powerful tool for exploring data in the terminal. Easily wrangle gigabyte datasets in many different formats (.csv, .xlsx, HDF5, sqlite, even fixed width output from various Unix commands can be piped in). Written in Python3 with very few dependencies and an extensible architecture.

The xd crossword corpus, a collection of over 70,000 crosswords scraped and cleaned for easy analysis, which exposed a plagiarism scandal. Also includes an extremely low-cost data pipeline on AWS, and a nifty visualization of the misattributed crosswords.

Experience

Jawbone 2014–2017 Systems Architect
Implemented, debugged, and optimized step counting and sleep tracking algorithms on the UP2/3 fitness trackers, based on classifiers produced by the Data Science team. Existing computational libraries could not fit in such a small footprint (48k total RAM), and the embedded versions had differences both large and subtle (overflow handling, fixed-point error accumulation, grossly approximate transcendental functions).

Created an embeddable algorithms platform that could be used to simulate exact algorithmic behavior on desktop computers. My design focused on reproducibility, making sure the algorithms had identical results on different hardware; debuggability, logging execution state and storing off intermediates in a convenient format; and automated verification, allowing the simulator to be integrated into the build process. With this system, new algorithms could be deployed in minutes, and their quality could be measured systematically over a huge amount of existing experimental data.

Developed a data pipeline that would capture training data from hardware prototypes, which would be fed directly into R/MATLAB/Python for analysis and feature development, and also directly into this algorithms platform for verification.

F5 Networks 2008–2013 Software Engineer
Designed and implemented iStats for defining and aggregating user-defined network statistics on BIG-IP. Developed several internal tools and libraries to simplify and standardize development, including a regex redirector, a curses database browser, and a C++ asynchronous daemon library.
Variamobile (AOL) 2006–2007 Principal Software Engineer
Worked on the ibiza Rhapsody portable media player. Designed and implemented version 2 of Variamobile's Screen Definition Language, using XML, XPath, and CSS. Implemented custom CSS parser and applicator using flex/bison. Implemented an error-correcting Media Metadata Database conforming to Microsoft's MTP API. Performed memory analysis and optimizations on the device.
CoCo Communications 2004–2005 Protocol Team Lead
Implemented substantial components of a proprietary mobile mesh-network protocol. Designed and implemented a protocol debugging tool to organize and visualize data collected on multiple nodes simultaneously.
Wizards of the Coast (Hasbro) 2002–2003 Senior Software Engineer
Maintained the Magic Online servers and implemented new functionality. Improved scalability and performance on a complex distributed and multi-threaded architecture. Prototyped a new server architecture to simplify scalable development.

Education

Recurse Center (Spring 2017)
A 12-week self-study program in NYC. Studied open source development practices, participated in a game jam, and led workshops on kernel development and implementing Forth.

University of Illinois at Urbana-Champaign (B.S. Computer Science)
Founded SIGOPS@UIUC
Elected ACM@UIUC chairman

Interests

I have a taste for backend servers, microkernels, data pipelines, and optimization.
I routinely create small development tools that shine light on difficult bugs.
I work to discern which technical complexities are essential and which are accidental.
I often discover design solutions to difficult technical challenges.
I design flexible and powerful platforms that expose latent potential to product developers.
I love to simplify systems for large performance improvements.
I think a lot about what makes good interfaces, tests, and documentation.

References available upon request