Self-directed engineer Now screening / 2025—26

Srinivas Sivaratri

Practical AI systems, developer tools, and open-source contributions — built close to the metal and useful in the real world.

AI-assisted engineering Developer tools Open source Systems thinking AI-assisted engineering Developer tools Open source Systems thinking

Builds that leave a trace.

I like software that can explain itself: the small tools that make a system safer, the strange experiments that make an idea tangible, and the contributions that hold up under someone else's review.

This is a working archive of that practice.

Focus
AI systems / dev tools
Method
Learn by shipping
Proof
Projects + upstream contributions

Available — open to remote full-time or contract engineering roles Based in India · UTC+5:30 (IST) · comfortable overlapping APAC and European time zones

Tools for making the invisible legible.

Select a capability to jump to its closest body of work.

Systems

Services

AI

Bugs found, fixes proposed, approaches adopted.

better-auth — Email enumeration at sign-in

Signing in with an unregistered email and a compromised password returned PASSWORD_COMPROMISED instead of the generic error, revealing which emails were registered. Traced it to the haveIBeenPwned plugin throwing during the dummy-password hash, and proposed a request-scoped skip flag plus a regression test.

Status: maintainers adopted the approach and shipped it in #5998.

2025 security
go-ethereum — geth db truncate-freezer

A subcommand for archive nodes that binary-searches the merge block, preserves headers and hashes, and drops pre-merge bodies. Reviewed across three rounds by core maintainers (s1na, jwasinger, MariusVanDerWijden); revised it to batch-process rather than hold ~15GB in memory on mainnet, to move headers into a fresh freezer instead of assuming equal table lengths, and to look up merge blocks per network.

Status: core team built their own version of the command.

2025 systems

Judgment before velocity.

I start by naming the domain before I touch code, then keep that language in a maintained CONTEXT.md so the product and implementation do not drift apart. I grill the idea adversarially until the weak assumptions and unsafe edges are visible enough to cut or test. From there I break the work into vertical slices, each small enough to ship and prove end to end. Every slice gets a diff review and an explainer quiz, so I can defend not only what changed but why the design still holds. The result is a process that uses AI for speed without outsourcing judgment.

Read how POSTDATED was designed

Small systems. Strange questions.

01
Fuzz

Like writing a secret in the sand while waves wash it away, then seeing if an AI can reconstruct your original words from the remaining dots.

Bun and TypeScript, with a Python/FastAPI helper and Hugging Face inference. The hard part is degrading text in real time while capturing newly restored words at their exact fuzz level without sending the original text to the server. Each round makes at most one model call; only the final fuzz and fresh clues cross the client boundary.

AI / game
02
catBox

Like opening Schrödinger's famous box, where a split-second AI calculation decides if you find a cozy cat or an empty space.

Python, PyTorch, Diffusers, and Stable Diffusion Turbo. The hard part is capturing and serving real intermediate denoising frames while leaving outcome selection authoritative on the backend. Both outcome branches use a 512px, six-step image-to-image run, and only the selected branch is generated.

AI / image
03
SunkeLo

Like having a local shopping assistant read through hundreds of product reviews online, summarize them, and explain the verdict out loud in your regional language.

Next.js, TypeScript, Neon Postgres, Upstash Redis, Sarvam AI, Gemini, and Firecrawl. The hard part is carrying voice input through evidence-gated review synthesis, localization, and text-to-speech while streaming partial results to the browser. It supports 11 languages and caches reviews and localized results for 30 days.

AI / voice
04
SokoFlow

Like an AI puzzle master solving Sokoban warehouse games by starting from random movements and gradually refining them into a perfect path to the solution.

Python, PyTorch, NumPy, and Flask. The hard part is a conditional diffusion policy combining an 8×8 CNN board encoder with a Transformer action denoiser trained on BFS-derived solutions. It samples four 20-action candidates in 10 DDIM steps and replans for at most 20 iterations.

machine learning
05
Fixer

Like a virtual coding assistant working inside a designated project folder, writing, testing, and fixing program loops automatically until they work.

Python, Gemini 2.0 Flash, google-genai, and python-dotenv. The hard part is a function-calling loop that returns filesystem and execution results to the model while injecting a working-directory boundary. It exposes four tools, caps the agent at 20 model turns, and limits Python execution to 30 seconds.

agent

Let’s make the next useful thing.

Start a conversation
srinivas@screening-room:~

Type 'help' to see the available commands.

srinivas:~ $