Engineering

Problems dictate the architecture, not my comfort zone.

These are the areas I move through when the product needs them.

How I Build

From problem
to evidence.

Decisions become technical only after the product has given them a reason to.

Reasoning board01 / 08
  1. 01

    Problem

    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.

  2. 02

    Product intent

    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.

  3. 03

    Scope

    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.

  4. 04

    Behavior

    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.

  5. 05

    Boundaries

    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.

  6. 06

    Architecture

    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.

  7. 07

    Implementation

    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.

  8. 08

    Evidence

    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

Complexity has to earn its place.

01

Mobile

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.

  • Android application architecture
  • Jetpack Compose and user-facing state
  • Local persistence and background scheduling
  • Permission minimization and device boundaries

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 →
02

Backend

Backend systems carry contracts, persistence, state ownership, asynchronous workflows, authentication, failure boundaries, and the evidence needed to understand them in production.

  • Java and Spring Boot
  • PostgreSQL, Redis, and Flyway
  • Streaming and SSE
  • API contracts, failures, and observability

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.

03

Systems

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.

  • Linux and Rust
  • Process orchestration and systemd
  • Resource-aware execution
  • Background services and recovery

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.

04

Media / Local Software

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.

  • FFmpeg and local processing
  • Non-destructive project state
  • Long-running operations
  • Desktop and resource constraints

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 →
05

AI-assisted systems

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.

  • LLM APIs
  • Provider and model orchestration
  • AI-assisted engineering workflows
  • Judgement remains accountable

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

Workbench

The languages, systems, tools, and machine I actually work with.

01

System

  • CachyOS
  • KDE Plasma
  • Wayland
  • zsh
  • kitty
02

Machine

  • AMD Ryzen 5 5500
  • NVIDIA RTX 3060 · 12 GB
  • 16 GB RAM
03

Languages

  • Java
  • Kotlin
  • Rust
  • Python
  • TypeScript / JavaScript
04

Backend

  • Spring Boot
  • REST APIs
  • SSE
  • PostgreSQL
  • Redis
  • Flyway
05

Android

  • Kotlin
  • Jetpack Compose
  • Room
  • WorkManager
06

Systems / Media

  • Linux
  • FFmpeg
  • Process orchestration
  • Local-first systems
  • systemd
07

Infrastructure

  • Docker
  • GitHub Actions
  • Cloudflare
  • Google Cloud
  • GitHub Pages
08

AI-assisted engineering

  • LLM APIs
  • Provider / model orchestration
  • Codex
  • Claude
  • Gemini