System
- CachyOS
- KDE Plasma
- Wayland
- zsh
- kitty
Engineering
These are the areas I move through when the product needs them.
How I Build
Decisions become technical only after the product has given them a reason to.
Technology is not the starting point. The first question is what real problem is being solved, without asking a stack, framework, or architecture to find its own reason to exist. The system begins with that answer.
Before deciding how a system works, I want to know what it should accomplish for the person using it. Intent turns a vague idea into a product with a reason to exist and gives later tradeoffs a stable direction.
A focused product needs a clear account of what it will solve and what it intentionally will not. Scope keeps adjacent problems from quietly becoming the product. What stays outside matters as much as what enters.
Expected behavior comes before technical mechanisms: what the user experiences, what state exists, what success looks like, how failure is communicated, and which expectations the product creates. Those answers become the contract implementation must uphold.
Responsibilities, ownership, state, capabilities, and failure need clear boundaries. When those lines stay vague, complexity leaks through the entire system. Clear lines make later changes easier to reason about and contain failure.
Architecture follows the boundaries. Its job is to establish contracts, data flow, lifecycle, and subsystem responsibilities that preserve the product’s intended behavior. A diagram is useful only when it makes those decisions clearer.
Only then should mechanisms dominate the conversation. Languages, frameworks, and libraries remain subordinate to the system’s needs; experiments stay isolated when possible. Stable production technology is usually the default.
Prototypes, tests, observation, live acceptance, and benchmarks resolve unknowns. Working software is evidence, not proof that every earlier decision was correct. Reality gets the final vote. When reality disagrees, the design changes.
Problem → Evidence
Working principles
Mobile work is a product boundary as much as a platform choice. I work through application architecture, user-facing state, local persistence, background work, device capabilities, permission boundaries, and offline behavior.
Project exampleIT’S SO OVER is a useful example of Android product boundaries: permissioned device signals become behavioral context on-device, while the product remains useful without a behavioral backend or runtime AI dependency. The difficult part is not collecting more data. It is extracting only the context that meaningfully changes product behavior while keeping permissions, privacy, and interruption under control.
See IT’S SO OVER →Backend systems carry contracts, persistence, state ownership, asynchronous workflows, authentication, failure boundaries, and the evidence needed to understand them in production.
Project exampleOrchestrAI explored provider and model orchestration through a production-minded backend. The product was archived, but the work remains a useful example of clear provider boundaries, streaming, persistence, and deliberate failure behavior.
Local software and background services need explicit ownership of processes, resources, lifecycle, recovery, and failure. Linux is part of the product surface when the work lives on the user’s machine.
Project exampleGeoCall is a small example: local scheduling, SQLite, and systemd turn a repeated manual check into a focused private automation without pretending it is a larger product.
Media systems make resource constraints and long-running operations impossible to ignore. Non-destructive state, local processing, progress, cancellation, and deterministic execution matter because the user’s source material matters.
Project exampleEDIP uses AI to understand editorial intent, while validated plans become deterministic local media operations. The interesting problem is not merely using AI; it is making revision understandable and execution dependable.
Explore EDIP →AI is one mechanism among others. LLM APIs, provider and model orchestration, and tools such as Codex, Claude, and Gemini can accelerate investigation and implementation, but they do not replace product judgement.
Project exampleThe question stays the same: does the mechanism improve the product, preserve clear boundaries, and give the person using it a result they can understand and control?
Tools & Environment
The languages, systems, tools, and machine I actually work with.