Security professional and Army veteran with 20 years in enterprise IT currently documenting my transition into offensive security and penetration testing. Currently building SentinelFlip, a modular physical security reconnaissance platform on the Flipper Zero that sees through walls, detects hidden cameras, and produces actionable intelligence for real world pen testing engagements. Also building GameMaster AI, a from-scratch reinforcement learning system that teaches AI agents to play Steam games using Python and PyTorch.
Wifi CSI Research: The CSI Signal Problem Was Never the Environment — It Was My Firmware
Background Several sessions ago I started collecting baseline CSI captures from my desk setup: ESP32-C6 home router controlled ping traffic no intentional movement Boring by design. A stable baseline matters because every future sensing claim depends on it. Before movement detection means anything, the “nothing is happening” state has to behave predictably. Instead, the baseline looked wrong. Across three separate runs, the amplitude distribution repeatedly split into two distinct clusters: ...
Wifi CSI Research: From Raw Callbacks to Reproducible Datasets
From Raw Callbacks to Reproducible Datasets Background The question driving this research block was straightforward: Can WiFi Channel State Information (CSI) produce measurable and repeatable differences between baseline and movement conditions? Earlier sessions confirmed the ESP32-C6 could successfully capture CSI data under directed traffic conditions. The acquisition pipeline worked. Structured datasets existed. What was still unknown was whether movement actually produced a measurable signal difference — and whether that difference remained consistent across repeated captures. ...
Wifi CSI Research: First CSI Signal Capture on ESP32-C6
Background WiFi Channel State Information (CSI) captures how a wireless signal changes as it travels between a transmitter and receiver. Every object in that path be it walls, furniture, or people moving through a room they alter the signal in ways that appear inside the CSI data. The goal of this research track is determining whether those changes are detectable, repeatable, and usable in a physical security context. Before any sensing or analysis becomes possible, the ESP32-C6 first needs to reliably produce CSI output at all. ...
SentinelFlip: Day Zero
The Goal Start building SentinelFlip which is a modular physical reconnaissance platform for real-world use. Not a proof-of-concept that works once in a lab. Something that holds up in: Physical security assessments Travel security checks in Airbnbs, unfamiliar environments, unknown infrastructure Long-term environmental monitoring such as detecting unexpected devices or changes over time The system will combine embedded hardware (ESP32), wireless signal collection (WiFi and BLE), structured data capture, and tooling that can be reused without rebuilding from scratch. ...
WiFi CSI Research: Building a Foundation Before the First Signal
Background The goal of this project is to use WiFi Channel State Information (CSI) to detect physical motion and environmental changes passively with no cameras, no dedicated sensors, only distortion introduced into an existing RF signal. Before that is possible, the system needs a foundation that supports reproducible research: firmware under version control a consistent build environment CSI explicitly enabled at the hardware level This post covers the first two sessions. No CSI data was collected. The outcome here is structural and the system can now be built and configured without guessing. ...
Automating Deployments with GitHub Actions
The Goal Understand and document the GitHub Actions workflow powering this site. Not just get it working but actually understand what every line does and why it’s there. The deployment pipeline is the backbone of everything published here and I wanted to know it well enough to fix it at 2am if something breaks. What I Expected I expected GitHub Actions to be complicated. Another tool with its own syntax, its own quirks, its own documentation rabbit hole. I figured it would take a while to wrap my head around. ...
Deploying Hugo with GitHub Actions and Bluehost
The Goal Get JesseBentley.com deploying automatically every time I push to GitHub. Not the quick path but the right one. I wanted a proper CI/CD pipeline using GitHub Actions, SSH deployment to Bluehost, and Cloudflare handling DNS and security in front of everything. What I Expected Honestly I didn’t know what to expect. I’d never set up a deployment pipeline before with Github Actions. GitHub Actions was completely new territory for me. I knew Netlify was the easier option but I was already paying for Bluehost hosting and the domain, so using what I had made more sense than adding another service to the stack. ...
Building the Foundation
The Goal Get JesseBentley.com live with a proper automated deployment pipeline. Not the quick path but the right path. Every push to GitHub should automatically build and deploy the site without me touching anything manually. What I Expected I expected this to take an hour. Install Hugo, pick a theme, point a domain at something, done. That’s how most tutorials make it sound. What I actually wanted was different. A CI/CD pipeline using GitHub Actions deploying via SSH to Bluehost. Cloudflare sitting in front for DNS, CDN, and security. PaperMod as the theme because it’s fast, clean, and doesn’t look like every other developer blog. ...