Software I work with
- Read article
Web foundations
HTML
The semantic markup language that structures web documents and applications.
Build accessible, indexable, resilient content before adding behavior.
- Read article
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
Interface
Preact
A compact React alternative for reactive interfaces.
Add stateful components to applications that do not need a heavy runtime.
- Read article
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
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
Managed backend
Supabase
A PostgreSQL-based backend platform for application data and services.
Quickly provide persistence and backend services for connected products.
- Read article
Web
Next.js
A React framework for hybrid-rendered web applications.
Combine server routes, React components, and optimized delivery.
- Read article
Interface
React
A declarative library for component-based interfaces.
Model complex state and share visual systems between runtimes.
- Read article
Language
TypeScript
JavaScript with static types for safer contracts.
Catch inconsistencies early and make layer boundaries explicit.
- Read article
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
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
Backend
Go
A simple, concurrent, and efficient compiled language.
Build small, predictable operational services that are easy to deploy.
- Read article
Backend
NestJS
A Node.js framework for modular, typed APIs.
Organize controllers, validation, authentication, and use cases into maintainable services.
- Read article
Identity
Better Auth
An authentication framework for TypeScript.
Manage sessions, cookies, and trusted origins with shared contracts.
- Read article
Data
PostgreSQL
A robust, extensible relational database.
Persist transactional data with integrity, indexes, and atomic operations.
- Read article
Data
Prisma
A typed ORM for relational databases.
Model persistence, migrations, and queries with generated types.
- Read article
Local data
SQLite / SQLCipher
An embedded database; SQLCipher adds transparent encryption.
Provide transactional local persistence without depending on a server.
- Read article
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
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
Language
Rust
A systems language with memory safety and no garbage collector.
Build safe and efficient native boundaries.
- Read article
Infrastructure
Docker
Reproducible containers for services and dependencies.
Package, connect, and deploy complete stacks consistently.
- Read article
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
Systems
Linux
An open operating system for servers and workstations.
Operate services with control, automation, and observability.
- Read article
Infrastructure
Cloudflare
Edge network, DNS, and tunnels for web services.
Publish services, protect origins, and connect distributed infrastructure.
- Read article
Automation
Bash
The common shell and scripting language on Unix systems.
Automate installation, diagnostics, and repeatable operational tasks.
- Read article
Interface
Tailwind CSS
A utility-first CSS framework.
Build consistent visual systems close to the markup.
- Read article
Quality
Vitest
A test runner integrated with Vite and TypeScript.
Verify units and contracts with fast project-native configuration.
- Read article
Tooling
Vite
A fast web development server and bundler.
Deliver short development cycles and optimized builds.
- Read article
Quality
Playwright
Browser automation for end-to-end and visual testing.
Check interaction, accessibility, and regressions in a real browser.
- Read article
Motion
GSAP
An animation engine for precise web sequences.
Orchestrate motion with control over timing, easing, and state.
- Read article
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
Tooling
pnpm
An efficient package manager with strong workspace support.
Manage monorepos with reproducible installs and little duplicated storage.
- Read article
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.