Software I work with

  1. Web foundations

    HTML

    The semantic markup language that structures web documents and applications.

    Build accessible, indexable, resilient content before adding behavior.

    Read article
  2. Web foundations

    CSS

    The styling language for layout, typography, adaptation, and visual states.

    Create responsive interfaces and visual systems without depending on JavaScript.

    Read article
  3. Interface

    Preact

    A compact React alternative for reactive interfaces.

    Add stateful components to applications that do not need a heavy runtime.

    Read article
  4. Web

    Astro

    A content-focused web framework with server rendering and minimal client JavaScript.

    Build fast sites, SSR pages, and interactive islands without shipping a full runtime by default.

    Read article
  5. Applications

    Flutter

    A cross-platform toolkit for building mobile and desktop applications from one codebase.

    Build cross-platform native interfaces with a consistent widget system.

    Read article
  6. Managed backend

    Supabase

    A PostgreSQL-based backend platform for application data and services.

    Quickly provide persistence and backend services for connected products.

    Read article
  7. Web

    Next.js

    A React framework for hybrid-rendered web applications.

    Combine server routes, React components, and optimized delivery.

    Read article
  8. Interface

    React

    A declarative library for component-based interfaces.

    Model complex state and share visual systems between runtimes.

    Read article
  9. Language

    TypeScript

    JavaScript with static types for safer contracts.

    Catch inconsistencies early and make layer boundaries explicit.

    Read article
  10. Language

    JavaScript

    The web’s native language and the foundation of the frontend ecosystem.

    Create progressive behavior that runs directly in the browser.

    Read article
  11. Runtime

    Node.js

    A JavaScript runtime for services, tooling, and server applications.

    Run APIs and TypeScript tooling in the same ecosystem as web applications.

    Read article
  12. Backend

    Go

    A simple, concurrent, and efficient compiled language.

    Build small, predictable operational services that are easy to deploy.

    Read article
  13. Backend

    NestJS

    A Node.js framework for modular, typed APIs.

    Organize controllers, validation, authentication, and use cases into maintainable services.

    Read article
  14. Identity

    Better Auth

    An authentication framework for TypeScript.

    Manage sessions, cookies, and trusted origins with shared contracts.

    Read article
  15. Data

    PostgreSQL

    A robust, extensible relational database.

    Persist transactional data with integrity, indexes, and atomic operations.

    Read article
  16. Data

    Prisma

    A typed ORM for relational databases.

    Model persistence, migrations, and queries with generated types.

    Read article
  17. Local data

    SQLite / SQLCipher

    An embedded database; SQLCipher adds transparent encryption.

    Provide transactional local persistence without depending on a server.

    Read article
  18. Native

    Tauri

    A toolkit for desktop and mobile apps with a web frontend and Rust core.

    Share a web interface without giving up controlled native storage and capabilities.

    Read article
  19. Data and CMS

    Directus

    A data platform on top of SQL with APIs, permissions, and an admin panel.

    Expose operational data with role controls without building a back office from scratch.

    Read article
  20. Language

    Rust

    A systems language with memory safety and no garbage collector.

    Build safe and efficient native boundaries.

    Read article
  21. Infrastructure

    Docker

    Reproducible containers for services and dependencies.

    Package, connect, and deploy complete stacks consistently.

    Read article
  22. Deployment

    Dokploy

    A self-hosted platform for deploying and managing applications and services.

    Centralize deployments, configuration, and Docker stack operations from one controlled surface.

    Read article
  23. Systems

    Linux

    An open operating system for servers and workstations.

    Operate services with control, automation, and observability.

    Read article
  24. Infrastructure

    Cloudflare

    Edge network, DNS, and tunnels for web services.

    Publish services, protect origins, and connect distributed infrastructure.

    Read article
  25. Automation

    Bash

    The common shell and scripting language on Unix systems.

    Automate installation, diagnostics, and repeatable operational tasks.

    Read article
  26. Interface

    Tailwind CSS

    A utility-first CSS framework.

    Build consistent visual systems close to the markup.

    Read article
  27. Quality

    Vitest

    A test runner integrated with Vite and TypeScript.

    Verify units and contracts with fast project-native configuration.

    Read article
  28. Tooling

    Vite

    A fast web development server and bundler.

    Deliver short development cycles and optimized builds.

    Read article
  29. Quality

    Playwright

    Browser automation for end-to-end and visual testing.

    Check interaction, accessibility, and regressions in a real browser.

    Read article
  30. Motion

    GSAP

    An animation engine for precise web sequences.

    Orchestrate motion with control over timing, easing, and state.

    Read article
  31. Version control

    Git

    A distributed system for recording changes and coordinating software development.

    Maintain a verifiable history, isolate work, and review changes before integration.

    Read article
  32. Tooling

    pnpm

    An efficient package manager with strong workspace support.

    Manage monorepos with reproducible installs and little duplicated storage.

    Read article
  33. Virtualization

    Proxmox VE

    A Debian-based virtualization platform for virtual machines and LXC containers.

    Split one physical server into isolated guests without giving up control of the hardware.

    Read article
  34. Orchestration

    Kubernetes

    A container orchestrator that continuously reconciles actual state with declared state.

    Describe what a deployment should look like and let the cluster hold it there.

    Read article
  35. Infrastructure as code

    Terraform

    A declarative tool that creates resources and keeps state describing what exists.

    See an infrastructure change before applying it instead of discovering it afterwards.

    Read article
  36. Automation

    Ansible

    Agentless automation that applies configuration over SSH from playbooks and roles.

    Bring a host to a known state and repeat the operation without different results.

    Read article
  37. Continuous delivery

    Argo CD

    A GitOps controller that syncs a Kubernetes cluster with a Git repository.

    Let the repository be the only description of the cluster and notice when the two stop matching.

    Read article
  38. Continuous integration

    Jenkins

    An automation server for test, build, and publish pipelines.

    Handle the part of the process that happens before there is an image to deploy.

    Read article
  39. Continuous integration

    GitHub Actions

    Automation inside the repository, defined in workflows versioned next to the code.

    Run checks on every push and pull request without maintaining a server.

    Read article
  40. Networking

    WireGuard

    An in-kernel VPN with fixed cryptography and a short configuration.

    Have one door into a private network instead of exposing administrative interfaces.

    Read article
  41. Observability

    Prometheus

    A time-series database that collects metrics by scraping and queries them with PromQL.

    Know what was happening before a failure, not only that it happened.

    Read article
  42. Observability

    Grafana

    A query and dashboard interface over metrics and logs.

    Bring metrics and logs into one view so diagnosis does not mean switching tools.

    Read article
  43. Secrets

    Bitwarden

    Bitwarden Secrets Manager: a secrets store with per-project access and machine clients.

    Keep credentials out of the repository, out of shell history, and out of the process list.

    Read article
  44. Data

    MongoDB

    A document database with indexes, aggregations, and a schema defined by the application.

    Store documents shaped the way each query asks for, without forcing a relational model.

    Read article
  45. AI integration

    MCP

    Model Context Protocol: a contract for exposing tools and resources to a model inside a session.

    Let an assistant read data through a schemed, permissioned tool instead of inferring it from text.

    Read article
  46. Coding agents

    Claude Code

    Anthropic’s coding agent, working in the terminal against the open repository.

    Delegate exploration, bounded changes, and verification, then review the result the way a pull request is reviewed.

    Read article
  47. Web and routing

    TanStack

    A typed file-tree router and a full-stack framework for React.

    Define interface and server routes in one tree, with links verified at build time.

    Read article