Blog
Everything I can write.
-
CI for a Static Site: What This Repository Actually Runs
The four GitHub Actions workflows behind this site and the six they replaced, read from the YAML, plus the concurrency, pinning and permission habits worth adding to any static-site pipeline.
-
just-exit: Getting a Shell by Asking for a Syscall That Is Forbidden
A write-up of the pwnable challenge just-exit from DreamHack CTF Season 7, where every modern mitigation is on and the exploit is a single byte, because the seccomp filter answers a denied syscall with SIGSYS and the program's SIGSYS handler calls system.
-
ABN Gallery: The Host a Checker Reads and the Host a Socket Dials
A write-up of the web challenge ABN Gallery from DreamHack CTF Season 7, where a hand-written host extractor and the runtime's own URL parser disagree about what "0" means, and that one character of disagreement turns an SSRF guard into a path traversal on the flag.
-
Attention in NumPy: Scaled Dot-Product, Masks and Multiple Heads
Implementing scaled dot-product and multi-head attention from scratch, explaining the square-root scaling with a measurement, and reading attention heatmaps on a toy sequence.
-
Amdahl, Gustafson and a Real Scaling Curve: Fitting the Serial Fraction of a Python Pool
Strong and weak scaling of a Python multiprocessing integration on an eight-core laptop, a fit of Amdahl's law, why a weak-scaling speed-up needs its baseline, and where the overhead comes from.
-
A Raspberry Pi Bench for UART, SPI and I²C
Turning a Raspberry Pi into a hardware lab, with wiring and logic levels, enabling the buses, reading a firmware console with pyserial, dumping an SPI flash with spidev, and the safety rules that keep both boards alive.
-
A Performance Budget for This Very Site
What it took to halve the same-origin CSS and JavaScript on every page of this Jekyll site, with the before-and-after bytes and the check that keeps it that way.
-
Convolutions, Receptive Fields, and Why Stacked 3×3 Kernels Work
A NumPy conv2d, the arithmetic of receptive-field growth, an edge-detection example on a synthetic image, and the parameter count that explains why modern CNNs use small kernels.
-
Threads, Reductions and False Sharing: Five Ways to Add Up Numbers in Parallel
A pthreads reduction measured five ways on an eight-core laptop: one shared atomic, packed per-thread counters, padded per-thread counters, register accumulators, and dynamic chunking, with a short primer on the C11 memory model that makes the fast version correct.
-
An Android App Security Assessment Checklist
A static-to-dynamic walkthrough for assessing an Android app you own, from APK structure and exported components to storage, network security config and certificate pinning, mapped to OWASP MASVS.
No posts match these filters.