Tarik Al Hadethi

I build complete products on my own.

Clarus is a screenshot and screen-recording app for Windows that I designed, built and sell. Every layer of it is mine: screen capture through DXGI, an editor in React, text extraction by a model running on your own machine, a video editor that compiles to ffmpeg, the Postgres backend, the Stripe billing, the installer, the auto-updater, ten translations and the marketing site.

Before it, a computer-vision system that watches the floor beside my bed and has never once alerted on a human — because the guarantee is geometric rather than a confidence threshold.

77,000lines of Rust, TypeScript
and SQL, shipped
4.5months from first commit
to a paid v1.0
10languages, fully
translated
1engineer — design, code,
backend, billing, support

Work

Clarus

Windows desktop app
v1.0.14 · shipping
sole engineer

A screenshot and screen-recording app for Windows, sold as a subscription. It takes Win+Shift+S over from the Snipping Tool, records the screen, reads the text out of any capture without touching the network, and carries two annotation editors — one for stills and one for video with a real timeline.

The interesting part is not any single piece, it is the span. Screen capture goes through DXGI Desktop Duplication with a GDI fallback; recording through Windows.Graphics.Capture into a Media Foundation encoder; text extraction is PaddleOCR running on a pure-Rust inference runtime with the models compiled into the binary. Underneath sits Postgres with row-level security, Stripe webhooks as the only writer of entitlement, and a share service on Cloudflare I took from 5.3 seconds to 0.6.

Rust · Tauri · Win32 · DXGI · Media Foundation · WASAPI · React 19 · TypeScript · Konva · ffmpeg · SQLite · PostgreSQL · Stripe · Cloudflare · Deno · NSIS

getclarus.dev →

Cat Sentry

Computer vision
self-hosted · running
open source

My cat has a medical problem, so he can sleep on the bed but must not be on the floor. That is an awkward specification: fire when the cat is on the floor, never for the person in the bed, work in total darkness, store no footage, and be loud enough to wake someone asleep. Every off-the-shelf camera app fails at least two of those.

The safety property is geometric rather than probabilistic. An alert needs the object labelled cat and its position inside a hand-drawn floor polygon that the bed lies entirely outside — so no confidence threshold and no model update can ever produce an alert about the sleeping human. Three hardened containers, nothing written to disk, about USD 18 of hardware, no cloud services.

Python · Frigate · TensorFlow Lite · MQTT · Docker Compose · Flask · RTSP/H.264 · container hardening

Source on GitHub →

Approach

Anyone can list a stack. What is worth showing is the debugging — the four times the obvious explanation was wrong, and what found the real one. All from shipping products.

01

I measure before I claim

Search across 1,543 screenshots felt unreliable and the OCR looked guilty. It wasn't. Normalising strips spaces from the stored text and the query, so a two-word search was joined into one string and demanded the words be adjacent.

Tested with 293 queries built from word pairs taken out of the captures themselves. Old way: 7 of 293. Per word: 293.

02

I read the library, not just its docs

Frigate rejected my config silently and booted with no camera. Upstream, it decides whether zone coordinates are fractions or pixels using p > "1.0" — a string comparison.

"1.000" sorts after "1.0", so my fractions were read as pixels and the parse threw. Nothing in the logs; I found it by reading the parser.

03

I build the instrument when there isn't one

A capture overlay sometimes drew itself shifted — but clicking where a letter should be still captured it. That asymmetry was the diagnosis: the crop was right, so only the picture was wrong.

It now logs both halves of one moment, because the native side can't see the CSS viewport and the web side can't see the window.

04

I combine tools that are each wrong

Windows' OCR gets word spacing right and characters wrong. PaddleOCR gets characters right and drops spaces entirely.

They fail in opposite directions, so the accurate pass keeps its characters and borrows the fast pass's split points — strictly better than either alone, and it repairs what no dictionary could.

Skills

Everything here appears in something I shipped, not in a course I finished.

Languages
Rust · TypeScript · Python · SQL · Bash
Systems
Win32 · DXGI Desktop Duplication · Media Foundation · WASAPI · COM · ffmpeg · multithreading
Product
React 19 · Tauri 2 · Vite · Tailwind · canvas · accessibility · internationalisation and RTL
Backend
PostgreSQL · row-level security · SQLite · Supabase · Deno · Stripe · MQTT
Infrastructure
Cloudflare Pages, Workers, KV · Docker · release engineering · code signing
Also
computer vision · on-device ML · threat modelling · CVE triage · performance profiling · technical writing

Contact

Looking for a remote role where I can ship.

I work best given a hard problem and the room to finish it. If you have one, I'd like to hear about it — and I'm happy to walk through any of the work above in as much depth as you want.