Blog
Views on technology, society and personal experience, linked to the work and skills they grew from.
-
Understanding How Authenticator Apps Generate OTPs Offline
A practical walkthrough of how time-based OTPs actually work — shared secrets, HMAC-SHA1, dynamic truncation, and the 30-second window.
5 min read -
Observer Pattern with Python
A comprehensive guide to the Observer design pattern in Python, illustrated with a smart home example and full working code.
6 min read -
Strategy Pattern with Python
A practical guide to the Strategy design pattern in Python, using a payment processor as the running example.
4 min read -
About Redis
A brief overview of Redis as a key-value store and its supported data structures.
1 min read -
Getting Started with GitHub Actions
A hands-on intro to GitHub Actions: build a workflow that compiles a Python script to an exe and publishes it as a release artifact.
2 min read -
git tag
A quick reference on git tag — creating, listing, pushing, and the difference between lightweight and annotated tags.
1 min read -
How * and + Work in Regex
A clear explanation of the + and * quantifiers in regular expressions, with practical examples.
2 min read -
Movie Review: Requiem for a Dream
A reflection on addiction, pleasure, and consumerism through the lens of Darren Aronofsky's 2000 psychological drama.
3 min read -
Patch One: Recent Files Feature
Notes from my first GSoC patch — implementing the recent files feature for PDFDebugger and a lesson on Java's Preference API.
1 min read -
Code Has Begun
Coding has officially started at my GSoC project with Apache PDFBox — reflections on the first patches and plans for the summer.
2 min read -
My GSoC at PDFBox, Apache Foundation
An introduction to my Google Summer of Code project — improving the PDFDebugger tool for Apache PDFBox.
2 min read