Bill St. Clair
Seeking
Software design and development using my senior developer skills with opportunities for learning. Telecommuting from home preferred. Elm, Erlang/Elixir, Haskell, & Clojure are my latest studies, but interesting projects are more important than programming language.
Summary
A seasoned programming professional with expertise in privacy protection, encryption, trusted systems, data structures and algorithms. Extensive experience programming in Common Lisp as well as Elm, Swift, C, JavaScript, Java, PHP, XML, and HTML. Experience programming Macintosh and iOS with the Cocoa application framework.
Professional Experience
Gib Goy Games (2017)
-
This is my own brand for my own games:
GibGoyGames.com.
It grew out of my new-found love of the Elm
programming language.
- Kakuro Dojo is an implementation of the Kakuro numeric crossword puzzle. It runs in web browsers and as an app on phones and tablets, available through the Apple iOS and Google Play app stores. Code at github.com/billstclair/kakuro-master.
- I've written a lot of Elm code since I fell in love with Elm back in October of 2016. This GitHub search shows it all. Many of my projects are published in the Elm package repository. Links in the "Personal Projects" section below.
Clozure Associates (2006-Present)
- Senior Common Lisp engineer on a variety of large mission-critical projects, including the following:
- Opusmodus, a Macintosh music composition application (opusmodus.com).
- Antenna control software for a solid-state satellite terminal, including real-time low and medium earth orbit satellite tracking from moving platforms, incorporating location and rotation sensor inputs. I packaged the sensor hardware for the team.
- A distributed, replicating, memory-resident database.
- A real-time system for aggregating and normalizing data streams.
- Language translation support, database backend, and web front-end for a disease research web site.
- Contributed to several functional areas of a large-scale airline reservation system.
- Contributed to iOS and Android application development projects.
- Steady Type, a custom iOS keyboard, written in Swift.
Shaker Computer and Management Services, Inc. (1997-2006)
- COINS: COnstruction Industry Software, RIS: Residential Information System - designed and wrote assorted code for these Enterprise systems; wrote Technical Manual for RIS.
- A Java front-end for COINS job status information - designed and coded entire system.
- Titanium User Interface Manager (UIM), a generic user interface written in Java using XML to encode screen layouts and InfoBus to pass data around. Java client, Progress 4GL server.
- Wrote and presented a series of Java programming courses to Shaker's programming staff.
Digitool, Inc. (1995-1997)
- Shipped Macintosh Common Lisp 3.9, 4.0, 4.1
- Implemented the shared library interface using CFM
- Ported the inspector, stack backtrace, and persistent object store to new architecture
- Reimplemented stack groups and implemented segmented stacks
- Made CL-HTTP OpenTransport native
- Added primary slot optimizations for CLOS.
Apple Computer, Inc (1989-1995)
- Implemented compiler database persistence, the module system, and the dependency system for the Apple Dylan programming language.
- Implemented the Common Lisp Object System (CLOS) for Macintosh Common Lisp
- Converted the MCL GUI from Object Lisp to CLOS
- Re-implemented hash tables
- Designed and implemented WOOD, a simple persistent object store using Btrees
Thinking Machines Corporation (1984-1986)
- CDL (a circuit design language used to design the CM-2), sticks editor for VLSI design. All on the Lisp Machine.
Atari Cambridge Research Lab (1984)
- Interfaced a Star Wars arcade game to the Lisp machine for use as a graphics output device, both sides of downloader for 6805, 3D turtles, maze game.
EMT Franz, in Germany's Rhine Valley (1983)
- Designed a hardware system based on Ti's first single-chip signal processor, the TMS 320.
- It included a programmable-logic-based RAS/CAS generator for dynamic RAM.
- Programmed that system to do audio delay.
Dynatron Corporation (1978-1983)
- System software for the first, experimental, two-dimensional Navy sonar array.
- System software for one of the first handwriting recognition systems.
- A limited-only-by-memory string package, written in Ratfor.
- Error correction code for a CDC 300-megabyte, ten platter disk drive (huge back then).
- System software for a custom, 2901-based, bit-slice signal processor.
- A hierarchical circuit description language that generated wirewrap lists for Ratheon's service.
- Plenty of hardware debugging with oscilloscope and logic analyzer.
Personal Projects
- 2017 An Elm package for defining web pages with JSON instead of code, with an example that illustrates a simple static web site with a scripting play page. I'm working on a WordPress-like application on top of it. (elm-html-template)
- 2017 An Elm interface to JavaScript's
window.crypto.getRamdonValues()
function (cryptographically-secure random numbers), with an example that generates Diceware passphrases. (elm-dev-random)
- 2016 An Elm interface to a subset of the Digital Ocean REST API, with an example that does display, copying, and moving of DNS records (elm-digital-ocean)
- 2016 An Elm interface to Amazon's DynamoDB key/value store, with an example that lets you login with your Amazon account, and store keys and values in a table I provide (elm-dynamodb)
- 2016 Kakuro in Elm. Playable in a web browser or as an iOS or Android app, installable from their app stores, created by using Apache Cordova to wrap the Elm-generated JavaScript (GibGoyGames.com/kakuro)
- 2016 Conway's Life in JavaScript (billstclair.com/life)
- 2016 Google Authenticator in JavaScript (billstclair.com/two-factor-authenticator)
- 2012 jsMaze, a multi-player maze game in JavaScript, with node.js server (jsmaze.com)
- 2011 Lisplog, a templating system using Hunchentoot to maintain a blog (lisplog.org)
- 2009 Truledger, a digitally-signed general ledger and trading system (truledger.com)
- 2008 loomclient, a PHP client to loom.cc (github.com/billstclair/loomclient)
- 1988 HyperArrays, a multi-dimensional array mechanism for HyperCard.
- 1985 Mandelbrot explorer for Lisp machine.
- 1979 Scheme (Lisp dialect) interpreter for the PDP-11.
Education
- MIT, 1978, BS in Mathematics. GPA 4.9/5.0. Phi Beta Kappa, Sigma Xi, Tau Beta Pi.
Technical Skills
- Proficient in: Elm, Common Lisp, Swift, Java, EMACS, Apache
- Practical experience with: C, JavaScript/Node.js, PHP, Python, Ruby, XML, Unix/Linux, HTML, MySQL, Mac OS X, iOS, Objective C
- Learning: Erlang, Elixir, Phoenix, Haskell
- Historic proficiencies: Progress 4GL/Database/AppServer, PowerPC assembler, 68K assembler, Macintosh toolbox, Symbolics Lisp Machine, RATFOR, PDP-11 assembler, RT-11, RSX-11M, oscilloscopes, logic analyzers, 8X-300, 2901, TMS-320.
- Historic practical experience: Dylan, Pascal, APL, PL/1, MS-DOS, Multics, FoxBase, RBase