Tarik Al Hadethi Let's talk

Whole products, from the OS to the checkout.

Software engineer in Dubai. I designed and built Clarus — a screenshot and screen-recording app for Windows — as a team of one, running AI agents: GPU capture and a Rust core, video editing, on-device OCR, cloud sharing, Stripe billing and the site it ships from.

77,000lines shipped
4.4months to v1.0
845commits
Tarik Al Hadethi
Open to work Remote engineering roles

Dubai · GMT+4 · Golden Visa, self-sponsored — no sponsorship needed.

  • GPU screen capture— never a black frame
  • Replaces the Snipping Tool— owns Win+Shift+S
  • Timeline video editor— compiles to ffmpeg
  • Offline OCR— nothing leaves the machine
  • 15,759-px screenshots— stitched, 1 px of drift
  • Searchable share cloud— finds the text inside uploads
  • Stripe billing— per-seat teams, plans a client can’t forge
  • Signed auto-updater— checks hourly, installs when idle
  • Custom installer— written in Rust
  • Instant replay— saves the last minutes, after the fact
  • Cat detector— sees in total darkness
  • 77,000 lines— one engineer
  • GPU screen capture— never a black frame
  • Replaces the Snipping Tool— owns Win+Shift+S
  • Timeline video editor— compiles to ffmpeg
  • Offline OCR— nothing leaves the machine
  • 15,759-px screenshots— stitched, 1 px of drift
  • Searchable share cloud— finds the text inside uploads
  • Stripe billing— per-seat teams, plans a client can’t forge
  • Signed auto-updater— checks hourly, installs when idle
  • Custom installer— written in Rust
  • Instant replay— saves the last minutes, after the fact
  • Cat detector— sees in total darkness
  • 77,000 lines— one engineer
Workflow Turns a screenshot round-trip into one keypress. Shoot, and the text is selectable in a quarter of a second — no retyping. Six shots to send? Group them, one paste attaches all six. And a scrolling page is one capture, not eight stitched by hand.
Resource use Halved the app's memory and CPU with one flag. Fifteen pre-created windows idled at 733 MB and 4.4% CPU. One line — a shared renderer — took it to 422 MB and 2%. Measured as private working set, not the comfortable number.
Payments Built billing a customer cannot cheat. The Stripe webhook is the only thing that can grant Pro — the column is locked to every client — and refund limits are keyed on the card, not the account, because a new email is free and a new card is not.
How I work

Four bugs that would have shipped. They didn't.

Every one of these is from the real product, with the number that proved it.

Found a hole that handed out free cloud storage to anyone

The app never shows a password field, but the auth backend still exposed a signup endpoint. Proved it with one request: an address that cannot receive mail came back with a live token and a 250 MB bucket. Closed it the same day, then re-probed to confirm.

HTTP 200 → refused

Caught a paid seat being given away for free

Two people accepting the same team invite at once could both pass the seat check. The fix is one line — a row lock before the count — and it reads as ordinary SQL, so a checker now asserts it is still there. Also found the invite token was a bearer credential: any account could redeem it.

4 negative controls

Fixed a bug that took 40 minutes of idle to reproduce

Leave the app alone, capture, and the overlay drew shifted — but the crop landed where you clicked. That asymmetry was the whole diagnosis: two halves each trusted a number the other could not see. Built a switch that reproduces it in seconds instead of forty minutes.

40 min → 2 s repro

Diagnosed a one-frame glitch that no browser tool could see

Six CSS attempts failed. Recorded the screen at 60 fps and correlated frames: nothing moved — Windows was presenting the previous window surface for exactly one frame. Below the web layer entirely. Fixed by never resizing the window per card.

+148 px, residual 3

How I use AI

The architect, not the typist. I design the system and set the rules the AI works inside — what gets built, in what order, and how every change is proven before it ships. Coding agents (Claude Code) do the typing under those rules; the checks decide if the work is real.

7 harnesses
Skills

All of it shipped in something real.

Languages
RustTypeScriptPythonSQLBashPowerShell
Systems
Win32DXGIWindows.Graphics.CaptureMedia FoundationWASAPICOMWebView2DPAPIffmpeg
Product
React 19Tauri 2ViteTailwindHTML & CSScanvasi18n and RTL
Backend
PostgreSQLrow-level securitySQLiteSupabaseDenoFlaskStripepasswordless authsigned URLs
Infra
Cloudflare Pages, Workers, KVDocker ComposeNSISrelease engineeringcode signingedge caching
Vision & IoT
computer visionon-device MLOCRimage processingFrigateRTSPMQTT
AI
Claude Codeagentic codingspec-driven developmentAI-assisted designMCP toolingverifying AI output
Practices
unit tests & harnessesprofilingthreat modellingCVE triagecontainer hardeningtechnical writingSEO

Let's build something that ships.

Open to remote engineering roles. Happy to walk through any of the work above in as much depth as you want.

Dubai · GMT+4 · Golden Visa, self-sponsored — no employer sponsorship needed