# Gabriel Koerich > Senior software engineer (15+ years). Solana/Rust DeFi, AI agent orchestration, and engineering workflow automation. Available for AI consulting. I'm Gabriel Koerich, a software engineer from Brazil. I started coding at 13, and I have built production software for more than 15 years. I'm also the dad of a lovely daughter. ## Pages - [About](https://gabrielkoerich.com/about.md): Gabriel Koerich, software engineer. Solana DeFi, former founder of Bulldesk, and a heavy user of coding agents. - [AI Consulting](https://gabrielkoerich.com/consulting/): AI consulting for engineering teams, startups, and companies: agent workflows, automations, and AI systems built by a senior engineer with 15+ years of experience. - [CV](https://gabrielkoerich.com/cv.md): Senior Software Engineer with 15+ years experience ## Posts - [Passbox v2, the release where I took things out](https://gabrielkoerich.com/posts/passbox-v2-is-out.md): passbox v2 opens approval windows for read-only plugin tools, drops every tool that acts for the caller, and removes get --reveal. What changed since 0.13. - [My 'quake' Ghostty terminal](https://gabrielkoerich.com/posts/my-quake-ghostty-terminal.md): After 10 years on iTerm I moved to Ghostty: a drop-down terminal on one global shortcut, with native tabs, tmux, and no useless title row on top. - [Half a websocket](https://gabrielkoerich.com/posts/half-a-websocket.md): I planned a shared Hyperliquid websocket and found I had built half of it in June. What moved off REST, what still polls, and where the 429s come from. - [Four ways to count to five](https://gabrielkoerich.com/posts/four-ways-to-count-to-five.md): A recursive Fibonacci Solana program that only ran in my tests, rebuilt four ways with split crates, Anchor 1, Anchor 2 and Pinocchio, and measured. - [Solana without the fork](https://gabrielkoerich.com/posts/solana-without-the-fork.md): I built a pinocchio program with stock nightly Rust, upstream LLVM and sbpf-linker. It passed every test and came out half the size of the platform-tools build. - [To queue or not to queue](https://gabrielkoerich.com/posts/to-queue-or-not-to-queue.md): Beanstalkd ran 500 million jobs a month for my company. When to use a queue, when not to, and leases, retries and idempotency in Rust and TypeScript. - [My finances in plain text](https://gabrielkoerich.com/posts/my-finances-in-plain-text.md): Since 2022 every real I spend goes into a Beancount ledger, about 13,400 transactions, most never typed. The importers, categories and daily jobs behind it. - [Waiting and working in Rust](https://gabrielkoerich.com/posts/waiting-and-working-in-rust.md): Rust has at least five ways to do more than one thing. Should you use async? It is three questions: is the program waiting, working or reacting? - [Is Ed25519 quantum resistant? Checking Solana's seed claim](https://gabrielkoerich.com/posts/is-ed25519-quantum-resistant.md): Breaking Ed25519 exposes the signing key, not the seed. Solana's seed claim holds, but the exposed key still signs, so Solana still needs a network upgrade. - [I thought the max was 128](https://gabrielkoerich.com/posts/i-thought-the-max-was-128.md): A Solana vault with 20 assets could be created but not withdrawn from. Three transaction limits, where 128 came from, and why a lookup table did not help. - [Running a quant book on Hyperliquid](https://gabrielkoerich.com/posts/running-a-quant-book-on-hyperliquid.md): A small systematic trading book on Hyperliquid run by one daemon on my Mac: how it is built, what backtests said, what live trading said, and the bugs. - [The alarm was dead and every monitor was green](https://gabrielkoerich.com/posts/the-alarm-was-dead-and-every-monitor-was-green.md): My home alarm was dead while every monitor showed green. What I was checking wrong, why silence has to be loud, and the failures that look like success. - [A password manager for agents](https://gabrielkoerich.com/posts/a-password-manager-for-agents.md): My agents read secrets from pass, and one passphrase opened everything. Why I built passbox, the alternatives I rejected and what I got wrong first. - [Orchestrating agents for humans](https://gabrielkoerich.com/posts/orchestrating-agents-for-humans.md): I was the slow part of running Claude Code, Codex and OpenCode side by side, so I built orch: why Rust, the design, what broke and what it costs. - [A new start](https://gabrielkoerich.com/posts/a-new-start.md): After years of silence I am restarting this blog, with short honest notes on AI coding agents, Solana and Rust, and fifteen years of engineering. ## Projects - [gabrielkoerich.github.io](https://projects.gabrielkoerich.com/): Projects & Work - [orch](https://orch.gabrielkoerich.com/): Autonomous Agents Orchestrator Experiment - [orchestrator-sh](https://orch.gabrielkoerich.com/): Superseded by orch (github.com/gabrielkoerich/orch). A lightweight bash autonomous coding agents orchestrator, no longer maintained. - [passbox](https://passbox.gabrielkoerich.com/): A password manager for AI agents. A fingerprint releases one secret into one process, not into the agent's context. - [skills](https://projects.gabrielkoerich.com/skills/): A collection of independent, self-contained skills for AI agents. - [smart-money-concepts](https://projects.gabrielkoerich.com/smart-money-concepts/): A TypeScript implementation of Smart Money Concepts (SMC) methodology for market structure analysis. Detects order blocks, fair value gaps, breaks of structure, changes of character, liquidity grabs, and more. ## Optional - [Refactoring to Events](https://gabrielkoerich.com/posts/refactoring-to-events.md): A Stripe webhook controller full of ifs and elses, refactored step by step into events and listeners, one event per webhook type, so the controller gets thin. - [How to forget mistakes and not regret the past?](https://gabrielkoerich.com/posts/how-to-forget-mistakes-and-not-regret-the-past.md): A short note on getting past a mistake: forgive yourself, own what it caused, learn from it, and swap regret for a plan for next time. - [Does the Japan case overthrow buy and hold?](https://gabrielkoerich.com/posts/does-the-japan-case-overthrow-buy-and-hold.md): The Nikkei lost money for 20 years after 1989. Does that make buy and hold a bad strategy? Valuations, dividends and how Japan then differs from Brazil now. - [Risk on the stock market [1]](https://gabrielkoerich.com/posts/risk-on-the-stock-market-1.md): What risk means for a long term stock investor. Following Benjamin Graham, a price swing is not a loss, and the real risk is paying too much for a company. - [Simple workflow with Laravel, a look behind Bulldesk](https://gabrielkoerich.com/posts/simple-workflow-with-laravel-a-look-behind-bulldesk.md): The stack and the workflow behind Bulldesk in 2016: PHP 7 and Laravel, VueJS with Laravel Elixir, tests and deploys, piece by piece. - [Please don't create unnecessary abstractions](https://gabrielkoerich.com/posts/please-dont-create-unnecessary-abstractions.md): Why a PostRepositoryInterface with one implementation is a waste, and why I start with as little code as possible and grow it when the project asks.