Open to senior roles · Remote / hybrid · Bot detection & anti-abuse

Detection lives in the delta.

I build automation at the protocol level — TLS, HTTP/2, and the browser runtime. The request is never the interesting part. What matters is the gap between the client a connection claims to be and the signals it actually emits. I've spent years on both sides of that gap, and I ship tools that measure it.

Software Engineer · Trickle Software Solutions Production Go since 2022 B.S. CIS — Cybersecurity, Akron
tlsprint · consistency check
client claims: Chrome 124 / macOS
tls.client_hello
Cipher ordering, extension layout, GREASE placement
deviates
tls.alpn
Offered protocol set and its order
consistent
http2.settings
SETTINGS frame order, window size, priority tree
deviates
http.headers
Casing, ordering, pseudo-header sequence
consistent
tcp.stack
Initial TTL and window size vs. claimed OS
deviates
runtime.surface
Navigator props, WebGL vendor, timing behavior
deviates
› analyzing… No payload inspected. The mismatch across layers is the whole signal.
550k+
lines of Go across 25+ systems — measured, excluding vendored deps
3,500+
concurrent operations sustained per instance
4
years shipping production Go, since 2022
JA4
open-source fingerprint tooling, in Go

What I actually do

Four areas I go deep on.

Each came out of shipping production systems, not reading about them.

TLS · HTTP/2

Protocol fingerprinting

Custom TLS stacks via uTLS, ClientHello construction, HTTP/2 frame and settings behavior, header canonicalization, and how each becomes a durable client identifier.

CDP · RUNTIME

Browser runtime signals

CDP-driven instrumentation and scoped interception, hardware and environment surface, anti-virtualization checks, SSL-interception detection, and time-drift monitoring.

POW · VISION

Challenge-response systems

Proof-of-work challenge analysis, enterprise vs. standard behavior, and computer-vision classification of image challenges with custom-trained models.

GO · CONCURRENCY

High-concurrency systems

Semaphore-bounded worker pools sustaining thousands of simultaneous operations, state-machine workflows, warm process pools, real-time event fan-out.

Coverage

Systems I've worked against.

Hands-on at the protocol and runtime layer — building against them, and building the tooling that measures them.

Shape / F5 PerimeterX / HUMAN DataDome Akamai Bot Manager Imperva / Incapsula Kasada Forter ThreatMetrix Queue-it hCaptcha — incl. enterprise HSW reCAPTCHA v2 / v3

Proof, not claims

Things you can actually read.

Most of my work is proprietary. So I publish the parts that aren't — code and writing you can inspect line by line.

Open source · Go · TLS / HTTP2 / HTTP3↗

doomhttp

An HTTP client that presents as Chrome at every layer it can be measured on — TLS ClientHello, HTTP/2 frames, QUIC transport parameters, WebSocket upgrade, and header order down to the capitalisation. It also reproduces the per-connection extension shuffling that makes a real browser's JA3 differ on every handshake, so a stable hash never gives it away. The profiles aren't hand-written: they're generated from byte-exact captures of the browser and re-verified against those captures by the test suite, so a new Chrome release is a re-capture rather than a rewrite.

$ go test ./... # vs. captured Chrome 151 JA4 t13d1516h2_8daaf6152771_806a8c22fdea akamai 1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p h3 t13d0311h3_55b375c5d22e_653d80c3fe9d
Open source · Go↗

tlsprint

A TLS ClientHello parser and JA3/JA4 fingerprint analyzer that scores handshakes against reference client profiles to surface inconsistencies. Zero dependencies outside the standard library.

$ tlsprint parse -file hello.bin JA4 t13d1411h2_cbb2034c60b8 best match: go-stdlib (6/6)
Open source · Go↗

h2fp

An HTTP/2 client fingerprinter that derives Akamai-format fingerprints from SETTINGS frame values, window updates, and priority-tree ordering — the part of a connection a client can't fake without reimplementing its own stack.

$ h2fp serve :8443 akamai 1:65536;2:0;4:6291456;6:262144 order m,a,s,p
Open source · Go↗

logsentry

Log-based intrusion detection in Go: brute force and credential-stuffing detection, impossible-travel correlation across geolocated sessions, and path-enumeration scoring — the defensive counterpart to everything else here.

$ logsentry watch /var/log/auth.log impossible travel user=svc_ops 2 sessions · 4,100km · 8m apart
Writing↗

Notes from the protocol layer

Longform writeups on how detection actually works — what each layer measures, why clients fail it, and what that means for building or defeating it. Technique and analysis, not recipes.

# What a TLS ClientHello actually tells you → ordering carries more than contents → what JA3 and JA4 compress

Teardowns

What the work actually looks like.

Three representative teardowns. Targets are public commercial products; client-specific detail and working payloads are omitted.

Shape / F5 · VM & bytecode

Reversing a self-modifying bytecode VM

The challenge ships a per-seed virtual machine that rebuilds its own handler set at runtime, so nothing lifted from one session survives into the next. Work at this level means recovering the interpreter's structure rather than any single payload — identifying the dispatch mechanism, separating the WASM-backed engine from the handlers it drives, and rebuilding the cryptographic path as clean primitives validated against published known-answer vectors instead of trusting a match on live traffic.

LayerWASM-backed bytecode interpreter, table-driven opcode dispatch
ApproachRecover interpreter structure, not per-session artifacts — the VM re-seeds every load
VerificationCrypto primitives rebuilt and checked against standard test vectors before integration
ConstraintPer-session key rotation and off-thread signal collection assumed hostile by design
PerimeterX · Analysis correction

Disproving the accepted reading of a scored signal

A set of scored fields on a hold-style challenge had a widely accepted explanation — one my own earlier notes repeated. Tracing the deobfuscated bundle line by line showed the accepted model was wrong: the values originate in a different subsystem entirely, and anything built on the prior reading was fitting the wrong function. The useful output wasn't a payload; it was knowing which parts of the analysis were load-bearing and which constants shift on every build. Details stay with the work.

MethodLine-level tracing through a deobfuscated bundle, cross-checked against emitted values
ResultOverturned the prevailing model with evidence, including my own prior conclusion
DurabilitySeparated stable structure from build-fragile constants that must be re-derived, not pinned
GeneralitySame method applied across a number of production deployments to find shared structure
hCaptcha · Runtime fidelity

Environment fidelity as the real problem

Where a challenge's proof-of-work changes shape every build, reimplementing it is a treadmill. The durable approach is an execution environment faithful enough to run the vendor's own logic directly — which turns the problem from cryptography into environment engineering: enough of a browser to satisfy everything the bundle probes, without the weight or the footprint of a real one. Knowing which surfaces are actually inspected, and how deeply, is the entire job.

ShiftReimplementation replaced with faithful execution — immune to per-build payload churn
IsolationUntrusted vendor code executed across a strict process boundary
SurfaceRuntime and device APIs modelled to the depth the bundle actually probes them
Trade-offHeadless fidelity weighed against the fingerprint cost of a full browser

Selected work

Systems I designed and shipped.

Architecture and implementation on all of these. Client-specific details omitted.

PLATFORM

Trickle Bot 2.0

A cross-platform desktop platform built as two cooperating processes: a Node/Electron shell that owns the windows and supervises the runtime, and a Go engine that holds all state and does all the work. Task orchestration, profile and proxy management, a custom TCP auth protocol, and a signed, obfuscated build pipeline for macOS, Windows, and Linux.

130,000+ lines GoReact 19ElectronNode3,500+ concurrentLittle's Law sizing
FRAMEWORK

HTTP automation framework

The engine underneath the platform. Custom uTLS with per-profile fingerprint control, browser signature emulation across desktop and mobile, cryptographic session storage, dynamic proxy rotation, and an integrity layer detecting interception and clock manipulation before a session is trusted.

uTLSHTTP/2 controlSession cryptoIntegrity checks
RESEARCH

Vision & challenge-response research

Machine classification of image-grid challenges: a YOLO-based classifier with a custom training pipeline, and a DINOv3 frozen-backbone probe benchmarked head-to-head against frontier vision models — paired with protocol-side proof-of-work analysis.

YOLOv8DINOv3CVAT pipelinePoW analysis
TOOLING

gorecon

An offline Go binary source-recovery pipeline built for malware analysis. Recovers symbols and moduledata from stripped binaries, reconstructs types and package structure, drives Ghidra decompilation, then maps recovered capabilities to MITRE ATT&CK and generates YARA rules. Read-only by design — it never executes the sample or touches the network.

Symbol recoveryType reconstructionGhidraMITRE ATT&CKYARA
RESEARCH

Sensor deobfuscation

Recovering the semantics of obfuscated PerimeterX and Shape sensor scripts so rotating field keys can be mapped without hand-reversing every build. Static analysis over instrumented JS sandboxes and WASM execution traces, with proxy-backed differential probing to confirm which fields the server actually validates. Runs fully offline.

PerimeterXShape VMJS sandboxingWASMOffline models
SAAS

Multi-tenant detection backend

A hosted backend where all solving and module logic lives server-side and desktop clients stay thin — no credentials or detection logic ever ship to a client. Tenant isolation, API key management, usage metering, and an admin dashboard over SQLite, with deploy tooling for self-hosting.

Multi-tenantGo / FastHTTPUsage meteringThin clients
PRODUCT

LifeLenz

A production AI platform built end to end for a client: Go/FastHTTP backend on Firestore, React and TypeScript frontend, Stripe subscription billing, email verification, and admin dashboards — deployed on a VPS behind nginx with Let's Encrypt. Full ownership from schema to TLS certificate.

Go / FastHTTPFirestoreStripe billingReact / TSnginx

Inside the platform

One product, end to end.

The system I own outright — architecture, engine, interface, and release pipeline. Described at the level of design decisions; internals and framework specifics stay private.

130k+
lines of Go in the engine
35k+
lines of React across 11 screens
8
full integrations, each a complete flow
3
operating systems, signed and shipped
PROCESS MODEL

Two processes, one app

A Node/Electron shell owns the windows and supervises a Go engine that holds all state. The interface talks to the engine over a real local TLS channel rather than shell IPC — the UI is a client, not a privileged parent. Credentials are established per launch and the shell exposes only what the engine genuinely cannot do itself.

SUPERVISION

Crash and failure handling

The engine is supervised with bounded, backing-off restarts, and the interface runs its own health loop with a retry queue so work in flight survives a restart. Integrity-triggered exits are deliberately treated differently from ordinary crashes and are never restarted.

TASK ENGINE

Orchestration & event pipelines

A single authoritative engine holds inputs, runtime state, per-task cancellation, and rate limiting. Async work reaches the interface through typed event pipelines fanned out over a persistent WebSocket, so thousands of concurrent tasks report progress without the UI polling anything.

CONCURRENCY

Bounded parallelism

Semaphore-bounded worker pools and state-machine workflows sustain 3,500+ simultaneous operations per instance, with pool sizing derived from Little's Law rather than guessed. Per-site limiters keep one slow dependency from starving the rest.

INTEGRATIONS

A pluggable site layer

Eight independent integrations behind one handler interface, each implementing a complete flow against a different target's authentication, session, and payment behavior. Shared task and session abstractions mean a new integration is a package, not a fork — with a dedicated harness for exercising flows in isolation.

CHALLENGE · VISION

Challenge-response subsystem

Proof-of-work payload analysis and challenge solving, with a token pool that decouples acquisition from consumption. Image challenges are classified by a model I trained, served by an on-device inference runtime bundled with the app and process-managed separately on each operating system.

IDENTITY · TRANSPORT

Session & device layer

Custom TLS and HTTP/2 fingerprint control, browser signature emulation, encrypted session storage, dynamic proxy rotation through a local origin-scoped proxy, device and metadata generation matching several commercial fraud-signal formats, and one-time-code handling.

INTEGRITY

Anti-tamper layer

A runtime integrity layer watching for attached debuggers, network interception, clock manipulation, and screen capture — reporting and quarantining rather than failing silently. Log output is redacted at the boundary so diagnostics never leak session material.

RELEASE

Build & update pipeline

Signed and notarized macOS builds with entitlements, obfuscated shell code, the engine binary embedded into the installer, and CI-driven releases for all three platforms.

DELIVERY

Staged auto-update

A client-side update flow with a separate hotfix channel, so a targeted fix can reach users without a full release cycle — and a rollback path when one shouldn't have.

Experience

Where I've done it.

Four years shipping production Go, on top of a security-operations background.

OCT 2025 —
PRESENT

Software Engineer

Trickle Software Solutions
  • Sole architect of a cross-platform desktop automation platform — a Go engine paired with a React 19 interface in a Node/Electron shell, communicating over a local TLS channel with real-time WebSocket event sync and a custom TCP authentication protocol.
  • Built challenge-response infrastructure end to end: hCaptcha HSW proof-of-work payload analysis, reCAPTCHA solving, a YOLOv8 tile classifier trained on a custom CVAT annotation pipeline, and origin-scoped routing through a local proxy.
  • Engineered the protocol layer — custom uTLS/HTTP2 fingerprint control, browser signature emulation, cryptographic session storage, dynamic proxy rotation, and an integrity layer detecting SSL interception and clock manipulation.
  • Instrumented headless Chrome over the DevTools Protocol with scoped Fetch-domain interception and warm worker pools, sized using Little's Law capacity modeling.
  • Sustained 3,500+ simultaneous operations through semaphore-bounded worker pools and state-machine workflows; shipped a signed, obfuscated build pipeline for macOS, Windows, and Linux.
2022 — 2023

Software Developer

Stellar
  • Engineer on a 6–8 person team building a high-performance e-commerce automation product.
  • Built checkout modules, the core HTTP automation layer, and a major retailer integration handling authentication and payment flows.
  • Worked at the protocol level on captcha and anti-bot challenge handling under sustained concurrent load.
  • Ported production checkout automation out of Java into Go.

Before engineering

IT & security operations.

The defensive half of the background — how I learned what detection looks like from the other side of the console.

IT Support Analyst

CBTS · MAY 2025 – JUL 2025

Network Administrator

WESTMORELAND MECHANICAL TESTING & RESEARCH · JUL 2024 – NOV 2024

IT Support

THE UNIVERSITY OF AKRON · JAN 2024 – MAY 2024

IT Support Specialist

WAYNESBURG UNIVERSITY · OCT 2019 – MAY 2020
Proofpoint email threat detection Incident response Server & virtualization admin Intune / Autopilot provisioning NIST CSF ISO 27001 PCI-DSS

B.S., Computer Information Systems — Cybersecurity

THE UNIVERSITY OF AKRON

Stack

Tools I reach for.

Systems

  • Go
  • uTLS
  • Fiber
  • FastHTTP
  • WebSocket
  • TCP
  • Java
  • Python

Detection & protocol

  • JA3 / JA4
  • HTTP/2 fingerprinting
  • Chrome DevTools Protocol
  • Proof-of-work analysis
  • Proxy infrastructure

ML & vision

  • YOLOv8
  • CVAT
  • DINOv3
  • scikit-learn
  • VLM evaluation

Interface

  • React 19
  • TypeScript
  • Electron
  • Node
  • Vite
  • SCSS

Product & infra

  • Firestore
  • Stripe
  • SQLite
  • nginx
  • VPS deploys

Security & ops

  • NIST CSF
  • ISO 27001
  • PCI-DSS
  • Proofpoint
  • Azure / Intune

Contact

If you're building detection, I know where it leaks.

Open to senior engineering roles in bot detection, fraud, and anti-abuse. Remote or hybrid.