A bird, perplexed “is certainly a lovely sentence when preceded by its own quotation.” is certainly a lovely sentence when preceded by its own quotation.

Welcome!

My name is William Lewis, and I'm a programmer living in upstate South Carolina. I'm primarily interested in the design and development of user interfaces, and I greatly enjoy programming in JavaScript. I'm also intrigued by programming language design and semantics, the foundations of mathematics and computing, visual arts, and recreational math.

If you're interested, please take a look at my recent work, my CV, or my GitHub profile.

Recent Work

  • tm is a Turing Machine editor and simulator. It's written in TypeScript using React, Redux, and Redux-Saga, and it features an easy to use drag-and-drop interface, unbounded tape, some clever trickery with b├ęzier curves, and more. Try it out at wjlew.is/tm, or see a video of it in action here.
  • ramo is a port of miniKanren to JavaScript. MiniKanren (and, by extension, ramo) provides a number of abstractions for programming with relations. Relations are generalizations of functions that allow for some pretty eccentric and mind-bending behavior. For a small taste, check out the solution to the famous "Zebra Puzzle" in the documentation.
  • blox is an unconventional "hello world" experiment in the domain of networked multiplayer systems. Clients dispatch Redux actions over a WebSockets connection to a server-side store; a reducer on the server generates world updates and broadcasts them to all clients. The result is a nearly seamless system that works surprisingly well. Try it out here.
  • brief-cases brings some of the best aspects of algebraic datatypes to JavaScript in a tiny and easy-to-use package. It is particularly useful when working with "functional" datatypes, syntax trees, or any other kind of discriminated union.

CV

Education

Mathematics (BS) Furman University 2017

Physics (BS) Furman University 2017

GPA:  3.98

Professional Experience

Software Engineer @ in-tech Automotive Engineering 2017—2019

  • Wrote and maintained a collection of NodeJS microservices
  • Designed and developed numerous web UIs (React, Ionic/Angular)

Notable UI-Related Skills

  • JavaScript, its modern variants (ES*, TypeScript, etc.), and many language-related tools (Babel, WebPack, etc.)
  • React
  • Redux and Redux-Saga
  • Angular
  • Jest

Other Skills

  • Working in a team setting
  • Learning new things quickly and thoroughly
  • NodeJS and much of the server-side JavaScript ecosystem
  • Relational and nonrelational databases (MongoDB, CouchDB, PostgreSQL)
  • DevOps and CI/CD tools (Docker, Docker-Compose, Bamboo, AWS, Kubernetes)
  • General software engineering/programming tools (Unix, Git)
  • A variety of other programming languages (Scheme, Haskell, Java, Python, Rust, C, Golang, and more)
  • Mathematics and physics