Sheldon Lewis

The tools and patterns I actually keep coming back to.

This is less a shopping list and more a map of the environments I like working in. The exact stack changes, but the underlying preferences stay fairly consistent.

Development environment

  • macOS, Raspbian, Ubuntu, and Oracle Linux

    I move between local development on macOS and a mix of Linux environments depending on what the system actually needs to do.

  • VS Code, gedit, and vi

    The editor choice is less ideological than situational. I use the tool that matches the machine, the task, and how close I am to the system.

  • zsh, bash, and csh

    I do not have a particularly strong shell preference. If the environment works and the job gets done cleanly, that is usually enough.

Application stack

  • Node.js and Express

    Still a strong fit for backend services that need clear boundaries, practical deployment, and behavior that stays understandable over time.

  • Next.js

    Useful when I want a web interface that ships quickly without losing touch with the backend reality underneath it.

  • SQLite, MySQL, and MariaDB

    Databases are a recurring anchor in how I think about systems, whether the job calls for something embedded and lightweight or a more conventional service-backed setup.

Infrastructure and hosting

  • Cloud VMs and Raspberry Pi hardware

    A lot of the interesting work lives in the gap between small cloud systems and small physical systems that still need to be maintained properly.

  • Docker, Podman, and Docker Compose

    Containers are the default path for packaging and running services when I want repeatable deployments without making the environment opaque.

  • Cloudflare and Cloudflare Tunnels

    They sit at the edge of a lot of what I host, handling ingress, routing, and the practical side of exposing services without overcomplicating the path in.

  • Forgejo, buildx, and a private Docker registry

    I use Forgejo runners and Docker build tooling to build, tag, cache, and publish images through a private registry I host myself.

Networking and home systems

  • OpenWrt on Linksys WRT and Velop hardware

    A recurring place to learn more about upgrades, packages, tunnels, and how networks behave when the happy path stops being enough.

  • WireGuard and Unbound

    They cover two of the foundations I care about most in a personal network: private access that I can rely on and DNS behavior that I can actually reason about.

  • Home Assistant with Bluetooth presence and smart plugs

    Best when the automations are local-first, predictable, and useful enough to quietly earn their place.

Working style

  • Incremental delivery

    I prefer shipping something coherent first, then tightening the details with real usage.

  • Measured complexity

    Complexity is acceptable when it buys control, performance, or reliability that matters.

  • Visible systems

    If I cannot observe it, explain it, and repair it, I probably do not trust it yet.