From Alan Post's c0re dump, The personal website of Alan Post.

Jump to: navigation, search

For additional information about me, please visit my main page.

Alan D. Post (alanpost@sunflowerriver.org)

I develop end-to-end, full stack analytic systems. I focus on actionable business metrics derived from both sensors and manually collected data.

Specialties Big data, data analysis, parallelization, workflow automation, exception handling, parsing, compilers & translators.
Programming languages Python (numpy, matplotlib), SQL, C, C++, Scheme, Java, Perl, Objective-C. Limited exposure to PHP, JavaScript, and C#.
Markup languages TeX & LaTeX, HTML, nroff (manpages).
Operating systems Linux (CentOS & Debian/Ubuntu), MacOS X, OpenBSD, Windows.
Software Mediawiki, Wordpress

Professional Experience

IT Manager
Electric Cloud
November 2014—current
Mountain View, CA

I eat GNU Make's lunch doing DevOps with Electric Make. Electric Make is a GNU Make compatible build cluster that produces fast, correct, fully instrumented builds.

  • Deployed a chatbot that provided build summary information for our internal chat as part of a company Hackathon.

December 2013—November 2014
Mountain View, CA

VenueView.co provides analytics in physical space. Our managed wireless access point produces a visitor log for your location, and can track unique and repeat visitors, group cohorts, and total site usage. We can generate reports, invoices, and other analytics describing how your space is used.

  • I lead a 5-person development team with a combination of embedded and cloud-based experience, designing a product for installation on-site that can be managed and interacted with remotely.
  • Developed a minilanguage and plugin system for integrating components from disparate vendors by using a consistent data model.
  • Built a continuous integration system built on Buildbot to automate the development pipeline. This system is crucial for rapid prototyping, as a developer can deploy changes automatically to systems installed on-site.
  • Designed a distributed messaging system built on RabbitMQ which allowed network-wide state transitions based on events propagating through the network.
  • Designed and built wireless access points capable of local, real-time analytics while being cost-effective to deploy at scale.

Software Developer
April 2009—November 2013
Santa Fe, NM

Qforma models physician social networks, finding early adopters and other influential doctors to focus the advertising and sales efforts of our clients to where it will have the most impact.

  • Created a template-based framework to standardize the data analysis underlying our iQMap and other products, defining an API for controlled customization of products.
  • Extended and maintained a mini-language for structured parsing of data fields from client and vendor data files, providing hooks for per-file specialization in generic data-munging routines.
  • Wrote a drop-in multiprocessing framework as a response to bottlenecks that emerged due to growth of our input data. This improved throughput of our data analysis, shortening the time it took to deliver our products to our clients.
  • Extended and maintained our internal wiki, writing reference material for common data-analysis tasks and maintaining a glossary of internal jargon.

Lead Product Developer
iniCom Networks, Inc.
February 2006—January 2009
Albuquerque, NM

iniCom Networks, Inc. provides technology solutions to the legal industry, deploying and monitoring custom infrastructure to streamline client workflows.

  • Designed and developed our extranet, which mediated all client interaction, including problem reporting, asset tracking, and billing. This system was responsible for our company's ability to efficiently satisfy client needs.
  • Deployed a revision control and issue tracking system for geographically-dispersed software developers to coordinate work on client projects.
  • Created a wiki culture to capture and retain company best practices for software development, system administration, and office management, facilitating knowledge transfer between employees as the company grew.
  • Translated user requirements into work orders and a release schedule, coordinating a six-person team consisting of software developers and systems administrators through regular product releases.

Managing Director, Data Services
Prediction Company
March 1999—January 2006
Santa Fe, NM

Prediction Company runs a fully automated trading system that uses predictive models to buy and sell stock.

  • Supported the research staff by loading, screening, and cleaning over 4 terabytes of third-party financial data. Our software system was extremely data-intensive; our data loaders often required hours or days of CPU time across multiple computers to process datasets.
  • Deployed an internal blog for capturing and distributing knowledge and information about our software systems. Introduced an instant messaging system for real-time communication between team members.
  • Managed an eight-person team of software developers and data analysts, responsible for maintaining and extending the financial data available to researchers used for running trading applications.

Sole Proprietor
Rational Machine Company
Albuquerque, NM

Rational Machine Company was my research and development company, where I explored topics with long development timelines or uncertain feasibility. The skills I learned here, along with the technologies I developed, provide me with a "code library" of interesting techniques that I often reference while solving problems. I ceased focusing on this venture to contribute more time to open source projects.

  • Wrote a high-performance parser for symbolic expressions optimized for modern CPUs with deep pipelines. It avoided pipeline flushes associated with failed branch prediction, was optimized for vector (SIMD) operations, and included dynamically generated code stubs designed to be easy for a compiler to optimize.
  • Wrote a functional replacement for the C library that includes an abstracted UNIX system call interface, dynamic strings, and buffered I/O.
  • Developed a non-recursive build system based on the dynamic generation of make-compatible makefiles.

Open-Source Contributions

Chicken Scheme

genturfa'i is a parser generator for Parsing Expression Grammars (PEG). It compiles a PEG grammar to Scheme, creating a so-called packrat parser, which converts the grammar described by that PEG into Scheme.

  • A packrat parser is a recursive descent parser with unlimited lookahead, which runs in linear time due to memoization of intermediate results.
  • The project is self-hosting: parser is written in PEG and it compiles itself to Scheme.
  • genturfa'i was written to fully parse Lojban's PEG grammar, arguably the most complex PEG grammar that has been developed.

The name genturfa'i is Lojban word that translates to "grammar structure discover."

jbogenturfa'i is a parser for the Lojban language. It builds a Scheme abstract syntax tree from Lojban text.

  • The abstract syntax tree regularizes some of the inconsistencies of the grammar introduced due to limitations in YACC parsers.
  • A regression suite is used to validate the language being parsed.
  • This parser is my proposal for the 4th baseline machine grammar proposal, replacing the YACC grammar and C based parser as the official parser for the Lojban language.

The name jbogenturfa'i is Lojban word that translates to "Lojbanic grammar structure discover."