# Conquer the Lawn > The personal website of David Ellis, a software engineer and maker in San Antonio, Texas. Resume, project write-ups, and a blog about software and learning by building. David Ellis has 20 years of professional experience across backend, frontend, and infrastructure, including work at Loop Returns, Shopify, PagerDuty, and Rackspace. He is looking for a new software engineering role. Contact: david@conquerthelawn.com. The name comes from announcing that he has conquered or vanquished the lawn after mowing. Project pages describe personal experiments and research; their status notes identify prototypes and untested hardware designs. ## About and resume - [Home](https://conquerthelawn.com/): Introduction, hiring availability, selected projects, and recent writing. - [Resume](https://conquerthelawn.com/resume/): Work history, skills, education, and contact details. - [Resume PDF](https://conquerthelawn.com/downloads/david-ellis-resume-2026.pdf): Downloadable 2026 resume. ## Projects - [Project directory](https://conquerthelawn.com/projects/): All projects, with search and category filters. - [Able](https://conquerthelawn.com/projects/able/): An experimental language, from its syntax and type system to interpreters and a JVM compiler. Status: Active v12 development; JVM/GraalVM implementation in progress. - [TKL Keyboard](https://conquerthelawn.com/projects/tkl-keyboard/): A custom 86-key low-profile keyboard, designed across the PCB, switch fit, enclosure, and backlighting. Status: V12 design and manufacturing files; physical prototype validation pending. - [Programming Crash Course](https://conquerthelawn.com/projects/programming-crash-course/): An interactive programming course in Python, JavaScript, TypeScript, and Ruby, with a REPL alongside the lessons. Status: Interactive web prototype. - [Bible Timeline](https://conquerthelawn.com/projects/bible-timeline/): A chronology search engine that makes calendar choices, interpretive assumptions, and timing constraints explicit. Status: Research software; chronology model under active refinement. - [Autonomous Chessboard](https://conquerthelawn.com/projects/autonomous-chessboard/): A physical chessboard design with magnetic piece movement, collision-aware planning, and an interactive assembly simulator. Status: Design and simulation; physical prototype not yet tested. - [Arborist](https://conquerthelawn.com/projects/arborist/): A PEG parser combinator in Crystal, with support for left and right recursion and a command-line parser. - [SimString](https://conquerthelawn.com/projects/simstring/): Approximate string matching in Ruby. Find the near-matches that an exact lookup would miss. - [SecuritiesDB](https://conquerthelawn.com/projects/securitiesdb/): A securities master database for organizing market data, supporting backtesting, and exploring financial datasets. - [pls](https://conquerthelawn.com/projects/pls/): A Scala implementation of partial least squares regression, exploring relationships between predictors and responses. - [fsm](https://conquerthelawn.com/projects/fsm/): A finite state machine combinator library for constructing regular-language recognizers through a Ruby DSL. - [tradesim_scala](https://conquerthelawn.com/projects/tradesim-scala/): A trading simulator in Scala, built to backtest and compare trading strategies against historical data. - [stocktrader_clojure](https://conquerthelawn.com/projects/stocktrader-clojure/): A Clojure backtesting framework from my master's thesis, exploring trading strategies and genetic parameter search. ## Interactive projects - [Projects in action](https://conquerthelawn.com/in-action/): Visual portfolio with direct links to SimString search, the course, keyboard studio, chessboard, and additional design studies. - [TKL Keyboard](https://conquerthelawn.com/demos/keyboard/): Rotate the actual V12 assembly, change switch families and keycaps, separate the layers, and compare the lighting and case designs. - [Programming Crash Course](https://conquerthelawn.com/demos/programming-crash-course/): An interactive programming course in Python, JavaScript, TypeScript, and Ruby, with a REPL alongside the lessons. - [Autonomous Chessboard](https://conquerthelawn.com/demos/chessboard/): Orbit the shallow-case design, reveal the CoreXY mechanism, play a planned move sequence, or arrange the pieces by hand. - [SimString](https://conquerthelawn.com/demos/simstring/): Approximate string matching in Ruby. Find the near-matches that an exact lookup would miss. ## Blog - [Blog index](https://conquerthelawn.com/blog/): Published writing, newest first. - [Blog by year](https://conquerthelawn.com/blog/archive/): All 193 posts, organized by their original publication year. - [Resurrecting my site](https://conquerthelawn.com/blog/resurrecting-my-site/): October 28, 2026. Let me reintroduce myself - [Why Software Engineers like Other Creative Hobbies](https://conquerthelawn.com/blog/why-software-engineers-like-woodworking/): June 10, 2022. Why Software Engineers like Woodworking The smell of fresh pine sawdust filled the air, with more floating up as I sanded the last rough corner of the stool. My toddler was… - [Modular Monoliths](https://conquerthelawn.com/blog/modular-monoliths/): March 17, 2022. I just ran across a pretty good series of posts on modular monoliths: Modular Monolith: A Primer - Kamil Grzybek What is a Modular Monolith architecture - introductory post in… - [macOS key bindings in Pop!_OS](https://conquerthelawn.com/blog/macos-keybindings-in-popos/): January 9, 2022. GitHub - petrstepanov/gnome-macos-remap: Script remaps default GNOME keyboard shortcuts to macOS standards. This provides native desktop environment feel for Mac users that are… - [Self Host Everything](https://conquerthelawn.com/blog/self-host-everything/): September 3, 2021. Just ran across https://github.com/awesome-selfhosted/awesome-selfhosted and wanted to make a note of it for future me. Immediately I noticed a few things: Password Manager:… - [Building a pfsense box](https://conquerthelawn.com/blog/building-a-pfsense-box/): September 1, 2021. I'm putting together a barebones server to run pfsense on. So far, here's what I've come up with: Yanling N13L6 Dogfish 120GB M-SATA SSD Crucial RAM 8GB DDR4 2666 SODIMM In… - [How does DNS work?](https://conquerthelawn.com/blog/how-does-dns-work/): August 9, 2021. Just ran across https://www.cloudflare.com/en-ca/learning/dns/dns-server-types/ while trying to figure out the difference between the an authoritative nameserver and a root… - [If you feel useless...](https://conquerthelawn.com/blog/if-you-feel-useless/): July 28, 2021. If you feel useless... - [Dad at Comedy Barn](https://conquerthelawn.com/blog/dad-at-comedy-barn/): July 1, 2021. Watch the original video on YouTube - [Chicken farmer laughs like a chicken](https://conquerthelawn.com/blog/chicken-farmer/): July 1, 2021. Watch the original video on YouTube ## Optional - [GitHub](https://github.com/davidkellis): Public repositories by David Ellis (davidkellis). - [RSS feed](https://conquerthelawn.com/rss.xml): Published blog posts in RSS format. - [Sitemap](https://conquerthelawn.com/sitemap-index.xml): Index of the site sitemap.