About
Behind the work
Binary Semaphore takes its name from the simplest synchronization primitive there is, and we treat software the same way: small, well-defined parts that coordinate cleanly and hide the right details behind each interface.
We work across applied AI, distributed systems, and developer tools. We spend our effort on the essential complexity of a problem and refuse to let the accidental kind pile up, designing for reliability and maintainability from the start rather than bolting them on later. The current focus is inode, a CLI knowledge base that retrieves by meaning, written in Go.
How we work
Small parts, coordinated well
We keep the moving parts few and the boundaries between them clear. Most of a project is understanding the real problem before writing the code that solves it.
- 01
Understand the problem
We map the real problem and its constraints before writing code, so we build what is needed and not the longest feature list.
- 02
Design the shape
We decide the few well-defined parts and the boundaries between them. Most mistakes are cheaper to fix here than after the code is written.
- 03
Build it honestly
Simple, legible code with interfaces that tell the truth. We spend the effort on the essential complexity and keep the accidental kind out.
- 04
Ship and keep it reliable
We get it into production in small steps, watch how it behaves, and design for failure so it holds up as it grows.