// case_studies
The full
breakdown.
Problem, decision, outcome. No hand-waving about what was “challenging” — just what the problem actually was, what I decided, and what happened.
SystemsSecurityFull Stack
SysKernel Auth
Hardware-Bound Licensing That Actually Holds
// the_challenge
Commercial software is trivially pirated. Existing licensing SDKs are bypassable with a debugger in under an hour. The solutions that work are either expensive SaaS with surveillance terms or black-box DRM that breaks legitimate users. Neither was acceptable.
// the_solution
Built a custom licensing stack from first principles. Hardware fingerprinting (CPU, motherboard, NIC — drift-tolerant, not brittle) bound to an encrypted token, validated against a Node.js backend with a C shared library for the hot path. Revocation happens in real time. License distribution is handled by an admin dashboard. Four SDKs so integrating into any codebase takes under an hour.
// key_decision
Hardware binding over pure crypto
Pure cryptography can be bypassed by copying a file. Hardware binding ties a license to a machine. The trick is tolerating reasonable hardware drift (RAM swaps, GPU upgrades) without false positives. I solved this with a weighted fingerprint that tolerates ≤2 component changes before requiring reactivation.
// outcomes
+3+ years zero piracy incidents
+1000+ active customers
+p99 response time <4ms
+4 language SDKs (C/C++/C#/Python)
+6+ live products protected
AIDesktopSystems
PokerSense
AI Opponent Profiling at 16ms Latency
// the_challenge
Poker HUDs show raw statistics. VPIP, PFR, 3-bet% — useful, but cognitively expensive at the table. A player needs to classify an opponent in under a second while making other decisions. Raw numbers don't do that. Archetypes do.
// the_solution
File-system watcher captures hand history as it's written by the poker client. A parser extracts player actions. A statistical model builds per-opponent profiles (sample-size-aware). An ML classifier maps profiles to archetypes: Nit, TAG, LAG, Calling Station, Fish, Maniac. Results render as a WPF overlay using a layered window — transparent to input, invisible to screenshot hooks.
// key_decision
WPF layered window over browser overlay
Browser-based overlays are detectable and blocked by most clients. A WPF layered window (WS_EX_LAYERED | WS_EX_TRANSPARENT) sits above the game window at the OS level. It's composited by DWM, not captured by GDI hooks. The poker client sees nothing.
// outcomes
+<16ms end-to-end latency
+89% archetype classification accuracy
+Live production use
+GDI/screenshot-undetectable
Next.jsPerformanceFrontend
This Portfolio
The Work That Proves the Work
// the_challenge
A portfolio is a proof of concept for every claim it makes. If I claim I build fast, accessible, production-quality software, the portfolio itself must be fast, accessible, and production-quality. The Angular version scored 99/100/100 on Lighthouse. The bar was set.
// the_solution
Next.js 15 App Router with React Server Components for near-zero JavaScript on static content. Framer Motion for fluid, GPU-accelerated animations. Tailwind CSS for design consistency. Server Actions for the contact form — no client-side fetch, no API route, no bundle cost. Streaming and Suspense for progressive rendering.
// key_decision
RSC-first, client components as leaves
React Server Components run on the server and ship zero JS to the client by default. The architecture pushes client-side JavaScript to the leaves of the component tree — only interactive elements (animations, form state, command palette) run in the browser. Everything else is server-rendered HTML.
// outcomes
+100/100 Lighthouse performance
+100/100 Lighthouse accessibility
+<0.8s FCP
+RSC-first architecture
+Zero JS for static sections
// next_steps
Want to see what this looks like on your project?
[get in touch]