Victor Bona
Software systems, production-tested arguments, and notes on architecture, infra, security, and AI.Builds software systems and writes down the arguments that survive contact with production: software architecture, infrastructure, product engineering, security, AI systems, and the cost of abstractions.
Field Notes
Shipped Systems
Guara Cloud
A cloud platform for launching and operating catalog-based user services with billing, observability, backups, and Kubernetes-native deployment.
Purple Wolf
A fast, low-memory Web Application Firewall for Traefik, shipped as a WASM plugin with signed releases, SBOMs, and Kubernetes packaging.
Nidus
A modular Rust backend framework inspired by NestJS ergonomics and built on Axum, Tower, Tokio, typed DI, OpenAPI, and observability.
Longer Work
Nidus: Explicit Application Composition for Rust Backend Services
A backend application needs a composition model as well as a request handler. Its components must declare dependencies, initialize shared resources, expose routes, and coordinate operational behavior. Nidus organizes these responsibilities through explicit modules, typed providers, and controller metadata, while retaining Axum routing, Tower middleware, and Tokio execution. This paper explains the design through three separate stages: generated Rust declarations, application construction, and request execution. It describes the guarantees provided at each stage, follows a small feature from module declaration to handler invocation, and identifies the costs and limits of the abstraction. The implementation uses a runtime container keyed by Rust types and validates module structure during bootstrap. Module exports describe composition contracts; they do not enforce runtime access isolation. The account is anchored to Nidus 1.0.17 and supported by source inspection and focused executable checks.
The Exact Price of Mergeability for Capacity-Parametric Counter Replay
An exact characterization of the information needed to summarize saturating counter logs when the replay capacity is chosen later from the integers 0 through N. Final-value queries from zero have 2^N observational equivalence classes and require exactly N logical bits. Supporting the ordered merge of independently summarized chunks raises the necessary state count to N·2^N + 1, attained by a canonical, associative summary. For N ≥ 1, the minimum fixed-width information content is N + floor(log₂ N) + 1 bits: at N = 64, merging costs seven additional bits. The lower bound requires only correctness after one binary merge. Semantic, reachability, counting, and lower-bound results are checked in Lean 4. These are logical information bounds, with no claim of an optimized packed implementation or throughput improvement; historical novelty remains unestablished in light of related work on saturation and hysteresis.
Archive
The full writing archive stays organized by date and topic: clean code, scalability, APIs, concurrency, AI tooling, homelab infrastructure, and the tradeoffs behind shipped software.