RSSAmplifier

Blog

mrdee.in

Recent content on mrdee.in

mrdee.inRSS feed ↗50 posts

Latest posts

Vibecoding 026 — RadioOS: the radio I grew up with, on a web page

I had a small web radio player sitting in a scratch folder — an amber-on-black thing styled like an old hi-fi tuner. It played Radio Paradise and SomaFM. What it didn’t play was the radio I actually grew up with: All India Radio, in Kannada and Hindi. So I added those, and turned it into something I’d keep open in a tab. 
 Live: mrdee.in/radio 
 What it is # One web page. No…

Building a Kernel Lab, Then a Plan to Use It

I’ve wanted to contribute to the Linux kernel for a while. The gap was never desire — it was that I had no safe place to break things. This is the note of closing that gap in an afternoon, and the plan I wrote so the momentum doesn’t evaporate. 
 
 First, finish what was half-done # The lab box was supposed to be on Debian 13 (trixie). It wasn’t — not really. base-files…

How to Spot a Cybersecurity Expert

Not everyone who talks loudly about “hacking” or collects certifications is worth listening to.
A few markers that hold up: 
 
 They say “it depends” more than they say “never” — real threats are contextual; anyone with a one-size answer is selling something. 
 They can explain why, not just what — knowing a CVE number is trivia; knowing the…

Vibecoding 025 — go.short: a custom URL shortener, admin UI, and linktree

I’ve been pasting long blog post URLs into my Mastodon bio, notes, and slide decks for months. The obvious fix was a URL shortener. The less obvious part was how much Cloudflare’s routing layers can fight each other when you’re building one. 
 Linktree: mr-dinesh-links.pages.dev · Short links: s.mrdee.in · Admin: go-admin-76o.pages.dev 
 What it does # A slug like…

Vibecoding 024 — Mindful Check-in: A Personal Practice Tracker

I wanted a check-in tool that matched how I actually think about a mindfulness practice: three specific questions, asked at specific times of day. Not a mood tracker with sliding scales, and not a journal app with a blank page. 
 Live: mindful.mrdinesh.workers.dev · Public stats: mindful.mrdinesh.workers.dev?public=1 
 The three dimensions # The check-in captures three things each session:…

Vibecoding 023 — AFL Masterclass: Coverage-Guided Fuzzing From First Principles

Coverage-guided fuzzing is one of those topics where the gap between “I’ve heard of AFL” and “I understand what AFL actually does” is larger than it appears. This is an attempt to close that gap in a structured way. 
 Live: afl-masterclass.pages.dev 
 What the document covers # Ten sections, in sequence: 
 The opening section starts with a question that…

Vibecoding 022 — PrivyRead: Read Anything, Leave Nothing Behind

Every time you click a link in a newsletter, three things happen before you’ve read a single word: the link redirector logs that you clicked, the UTM parameters tell the destination who sent you, and the tracking pixel in the email confirms you opened it. None of this is secret — it’s just how email marketing works. But knowing it happens and having to participate in it are different…

Vibecoding 021 — SIGNAL/live: A Real-Time Infosec Feed

I have a tab problem. Two social networks — Bluesky and Mastodon — that actually have useful security conversations happening on them, and I kept switching between them to track what was moving. CVE drops, breach coverage, threat intel, people arguing about something Crowdstrike did. Two feeds, two refresh cycles, one set of eyes. 
 SIGNAL/live is the obvious fix: one search box that watches…

Rooting a Lenovo TB-X605LC

My Lenovo Tab M10 FHD (TB-X605LC, 2019) was sitting at status low on memory before any apps were open. I use it for reading on Moon+Reader. An afternoon with a Debian terminal fixed that. 

 
 
 
 
 

 
 
 
 
 
 
 
 
 


 The Problem # 2GB RAM in 2026. Android 9. Google Play Services alone wants 1.2GB at baseline. The lag…

Non-Exhaustive Checklist








 
 
 
 
 
 Some people pass through your life, do their work, and move on. The impact they leave stays. R.M. was one of them. 
 He demanded more from us—consistently, and without apology. Not in theory, but in practice. He stretched himself just as hard. Sharp in thought and sharper in speech, he didn’t hesitate to point out where…

Getting Linux Audio Through VNC to Windows

VNC is excellent at showing you your Linux desktop on a Windows machine. It will faithfully deliver every pixel of your screen. What it will not deliver is sound. Your Linux machine could be playing a symphony and your Windows client would sit there in complete, smug silence. 
 This is the story of fixing that. 
 The Setup # 
 Linux machine running Debian, PipeWire/PulseAudio, TigerVNC…

Colophon

How this site is made. 
 
 The stack # Hugo — static site generator. Fast, no runtime, Markdown in, HTML out. 
 Congo — the theme. Clean, readable, sensible defaults. I’ve changed very little. 
 Cloudflare Pages — hosting and deployment. Connects to the GitHub repo; every push to main triggers a build and deploy automatically. No servers to manage. 
 Cloudflare (DNS +…

Ideas

Things I want to build, explore, or think through. No promises, no deadlines. 
 
 Security & Hacking # 
 Bad USB — build and document attacks; understand what’s actually happening at the firmware level 
 OWASP Juice Shop — already built 
 
 JuiceSec as a lighter version; go deeper with the real thing 
 OWASP MASTG — Mobile Application Security Testing Guide; pair…

Now

A /now page , in the sense Derek Sivers meant . Updated 1 August 2026. 
 
 Building # Project 26 of the Vibecoding series. The pace slowed from one-a-day to one-when-it’s-ready, which was the right call — the point was never the count. 
 The last few: an internet radio station running at /radio , a URL shortener on s.mrdee.in , a privacy-first article reader that strips trackers,…

Uses

A /uses page . Tools I actually use, not tools I think sound good. 
 
 Hardware # A laptop that does the job. Nothing exotic. The machine matters less than the habit. 
 Editor & Terminal # VS Code with the Claude Code extension — this combination has replaced a lot of what I used to do manually. The AI pair-programming workflow took some adjusting to; now I can’t imagine going…

Vibecoding 019 — HN Blackout Poetry: Found Poems from Tech Headlines

Austin Kleon takes a newspaper page and a black marker, and turns the news into poetry by erasing most of it. What’s left — the surviving words — becomes a found poem. He’s been doing this for years. It’s a surprisingly moving art form. 
 I wanted to do the same thing with Hacker News. 
 The idea # HN headlines have a particular texture. They’re dense with jargon,…

Vibecoding 020 — JuiceSec: OWASP Vulnerability Lab with AI Tutor

OWASP Juice Shop is the gold standard for learning web application security — a deliberately vulnerable Node.js app where you practice exploiting real vulnerabilities in a safe environment. I wanted to build something with the same spirit but without the setup: no Docker, no Node, no local install. Open a URL, start hacking. 
 The result is JuiceSec: ten interactive challenges covering the…

The Doctor Who Disappeared








 
 
 
 
 
 Kaveri Trail Marathon, 2013. Srirangapatna. Mile 24, and I had nothing left. 
 I didn’t slow — I stopped making sense. There’s a place past exhaustion where the body starts negotiating with you, and I was deep in it. That’s where he found me. 
 The Doc was running alongside when I hit the wall. What…

Vibecoding 018 — Rescuing 247 Notepad++ Quotes Before They Stay Hidden








 
 
 
 
 
 The itch # Notepad++ has a hidden easter egg most people never find. Type the word random anywhere in the editor, select it, and press F1. A small window pops up with a single quote — a random one, drawn from a list of 247 buried in the source code. Sometimes it’s a programming aphorism. Sometimes it’s dark humour.…

Cutting Boot Time: What systemd-analyze Actually Tells You

The machine was taking over two and a half minutes to reach a usable desktop. Not catastrophic, but long enough to notice every single time. I decided to actually look at it instead of just waiting. 
 
 Round One: 10:52 AM # systemd-analyze
Startup finished in 14.056s (firmware) + 5.690s (loader) + 7.929s (kernel) + 2min 5.335s (userspace) = 2min 33.011s
 The firmware and kernel…

Hardening a Static Blog: Headers, CSP, and One Warning I Left Alone

I ran securityheaders.com against mrdee.in recently. The grade was not good. Missing HSTS, no CSP, no framing protection — the usual neglect you accumulate when you’re focused on content and treating the hosting layer as someone else’s problem. 
 It took about 20 minutes to fix. Here’s what I did and why. 
 
 The Fix: a _headers file # Cloudflare Pages reads a…

Vibecoding 017 — YaraWeave: From Threat Intel to YARA in One Click








 
 
 
 
 
 The itch # Every SOC I’ve ever worked with has the same gap. 
 They have threat intelligence. Feeds, platforms, subscriptions — often more than they know what to do with. And they have YARA. Most mature detection teams have some rules, usually inherited, rarely updated, authorship long forgotten. 
 What they almost…

Vibecoding 016 — Argus: Steelman Any Argument Before You Commit to It

I read a lot. Substacks, security advisories, policy papers, op-eds. And I noticed a pattern in myself — I’d read something that confirmed my existing view and move on, or dismiss something that challenged it without really engaging with it. Neither is rigorous thinking. 
 Argus was built to fix that. The premise: before you commit to a position, stress-test it. Force yourself to see the…

Vibecoding 015 — A Timed Communication Drill for Security Leaders








 
 
 
 
 
 There’s a specific failure mode for CISOs that I’ve been thinking about for a while. Most of them are technically excellent. They know the threat models, they know how to build a security program, they can architect zero-trust in their sleep. What they can’t do — what most of them have never been trained to do — is…

Vibecoding 014 — A P.G. Wodehouse Quote Bot for Bluesky








 
 
 
 
 
 P.G. Wodehouse wrote 97 books. He was also, sentence for sentence, one of the funniest writers in the English language. Most people know Jeeves and Bertie Wooster. Fewer know the Blandings Castle stories, the Mulliner tales, or the sheer density of comic simile he packed into every paragraph. 
 I wanted a bot that would surface…

Vibecoding 013 — Two Years of WhatsApp Links, Sorted and Searchable








 
 
 
 
 
 The Clear Writing Community WhatsApp group has been running for over four years. Amit Varma started it, and it does what it says — a few hundred people sharing things worth reading. Good articles, podcast episodes, essays, the occasional book. I’ve been in it since a little more than two years. 
 The problem is WhatsApp.…

Vibecoding 012 — Reading The Wealth of Nations with a Paragraph-Level AI Tutor








 
 
 
 
 
 Building a personal AI reader for The Wealth of Nations # Project #12 of the 100 Vibe Coding Projects challenge 
 
 I’ve been meaning to read Adam Smith’s The Wealth of Nations for years. It sits in the cultural background of every economics conversation — the invisible hand, the division of labour, the theory of…

Vibecoding 011 — What 128 Episodes of Amit Varma's Podcast Recommend








 
 
 
 
 
 I’ve been listening to Everything is Everything — Amit Varma and Ajay Shah’s podcast — for a while now. Every episode is dense. Books, papers, essays, songs — recommendations come fast, buried in show notes that you’d have to open episode by episode to find. I kept thinking: somebody should just compile all of…

About

Hi, I’m Dinesh. # I work in cybersecurity — the part where you spend years building defences, and then watch someone click a phishing link anyway. 
 I came to security through the military, which turns out to be decent preparation: in both fields, what gets you isn’t the threat you planned for. 
 By day I think about risk, governance, and incident response. By night I build…

Clear Thinking — Book Notes








 
 
 
 
 
 Clear Thinking: Turning Ordinary Moments into Extraordinary Results by Shane Parrish 
 STOP! This is a moment when you need to think. 
 The goal: to train ourselves to identify the moments when judgment is called for in the first place, and pause to create space to think clearly. 
 The space between stimulus and response…

Essentialism — Book Notes








 
 
 
 
 
 Essentialism: The Disciplined Pursuit of Less by Greg McKeown 
 The commitment to doing only the things that were truly important — and eliminating everything else — restores the quality of your work. 
 Give yourself permission to stop trying to do it all, to stop saying yes to everyone. 
 The Essentialist way # The way…

How to Take Smart Notes — Book Notes








 
 
 
 
 
 How to Take Smart Notes by Sönke Ahrens 
 On bias and systems # If one were to attempt to identify a single problematic aspect of human reasoning that deserves attention above all others, the confirmation bias would have to be among the candidates for consideration. 
 A good system will force us to act more virtuously…

Search Inside Yourself — Book Notes








 
 
 
 
 
 Search Inside Yourself by Chade-Meng Tan
 With forewords by Daniel Goleman and Jon Kabat-Zinn 
 Emotional intelligence enables three things: stellar work performance, outstanding leadership, and the conditions for happiness. 
 EI is the ability to monitor one’s own and others’ feelings, discriminate among…

The Little Blue Reasoning Book — Book Notes








 
 
 
 
 
 The Little Blue Reasoning Book: 50 Powerful Principles for Clear and Effective Thinking by Brandon Royal 
 On perception and mindset # Selective perception is the tendency to see the world the way we would like it to be rather than how it really is. The sound thinker suspends judgment and is not unduly influenced by stereotypes,…

The Upanishads — Book Notes








 
 
 
 
 
 The Upanishads translated by Eknath Easwaran (2nd Edition) 
 We spend our days in the familiar world of our five senses, but what lies beyond that — if anything — we have no idea. 
 The real drive of these ancient texts is not so much to know the unknown as to know the knower. 
 Three texts, three formats # The…

Verbal Judo — Book Notes








 
 
 
 
 
 Verbal Judo: The Gentle Art of Persuasion by George J. Thompson, Ph.D. 
 On knowing people # To be a contact professional you must first, of course, be in contact with yourself. 
 You have to learn to read people carefully. 
 If you know yourself and you know the opponent, you can win a hundred percent of the time.

Vibecoding 010 — The APK Analyzer That Runs on Your Machine and Tells No One








 
 
 
 
 
 I’ve been doing APK security analysis manually for years — pulling the file, running jadx, grepping through decompiled source, eyeballing the manifest. It works, but it’s slow and the output lives in a terminal window that disappears the moment you close it. 
 This week’s project: wrap that entire methodology…

What the Heck Do I Do with My Life? — Book Notes








 
 
 
 
 
 What the Heck Do I Do with My Life? How to Flourish in Our Turbulent Times by Ravi Venkatesan 
 The world is becoming more fluid — volatile, uncertain, complex and ambiguous (VUCA). 
 The true potential of any person is unknown and unknowable. With a combination of intentionality, years of toil and reasonable luck, most of…

Vibecoding 009 — KaggaBot: Automating Daily Verse Posts With GitHub Actions








 
 
 
 
 
 What’s Mankutimmana Kagga # Mankutimmana Kagga — often called the Kannada Gita — is a collection of 945 philosophical verses by D.V. Gundappa (DVG). Written in the 1940s, it takes on questions about duty, death, and doubt, and does it without preaching. It deserves a wider audience. 
 KaggaBot # It’s a small…

Vibecoding 008 — I Asked AI to Help Me Build a Home Radio Server








 
 
 
 
 
 I asked an AI to help me build a home radio server. Here’s what actually happened. # I have a few hundred MP3s sitting in a folder on my laptop — old Kannada film songs,
some Tamil classics, a few English albums I ripped years ago. I wanted to stream
them to my phone, maybe share the stream with family. Simple enough…

Vibecoding 007 — Putting 945 Verses of Kannada Philosophy on the Internet








 
 
 
 
 
 Building a bot to post Mankutimmana Kagga verses to Mastodon # D.V. Gundappa’s Mankutimmana Kagga — 945 verses of Kannada philosophy, written in the 1940s — deserves a wider audience. So I built a Mastodon bot to post one verse at a time, twice a day, complete with transliteration and English explanation. Here’s how it…

Vibecoding 006 — One Page, Five Sources, Zero Noise








 
 
 
 
 
 Live: slashsec.mrdinesh.workers.dev 
 
 I wanted a single place to read cybersecurity news from the sources I already trust — SANS ISC, Bruce Schneier’s blog, Brian Krebs, Bleeping Computer, and Zack Whittaker’s This Week in Security. I wanted something purpose-built for security, with AI-generated summaries…

Vibecoding 005 — Making a 30-Year-Old Codebase Approachable With AI








 
 
 
 
 
 Curl source explorer: learn a 30-year-old codebase without getting lost # Curl has been running on virtually every computer on the planet since 1998. It’s one of the most-used pieces of software ever written, and almost nobody who uses it daily has ever read a line of its source code. 
 That’s partly because diving…

Vibecoding 004 — Building My Own Interview Coach for a Security Role

Prompt used # Build an interview simulator, for an upcoming job interview for a senior cybersecurity role. Generate flashcards which will give me appropriate vocabulary for risk, governance, leader, team building, story-telling in STAR format, context-action-impact frameworks.
The web-based app, should help me practice consistently by keep track of my effort in terms of practice time, weak…

Vibecoding 003 — Extracting One Usable Idea From Every Podcast Episode

One usable idea from every episode # Project #3 of the 100 Vibe Coding Projects challenge 
 Think Fast, Talk Smart is Matt Abrahams’ podcast on communication — 270+ episodes, each guest offering their best advice on how to speak, listen, and connect more effectively. The problem: that advice is scattered across hundreds of hours of audio. Nobody’s reading the back catalogue.

Vibecoding 002 — I Rebuilt Winamp's Visualizer in a Browser Tab

VIZMIX — a Winamp-inspired 3D audio visualizer for the browser # Project #2 of the 100 Vibe Coding Projects challenge 
 The prompt was simple: build something that visualises music the way Winamp used to — but in a browser tab, using X, Y and Z axes instead of a flat frequency bar. Claude took that constraint seriously. 
 The result is VIZMIX : five 3D visualisation modes (classic…

Vibecoding 001 — The URL Sanitizer That Strips Trackers Before You Click








 
 
 
 
 
 Two big ideas here # 
 Idea#1: Use an LLM, to create something, anything 
 Idea#2: Do it for a 100 days 
 A third, meta idea, is to write about what I’ve done (aside: why is this a meta-idea, will write about it later) 
 
 Today’s vibe-coding idea: create a browser extension for a URL sanitizer. # It…

First Steps: Static Analysis on the curl Repo

Took a first concrete step today — rather than just reading, I ran a static code analysis on the curl repository. 
 ChatGPT suggested SonarQube, so I went with that. Cloned the curl repo into my account, configured an authentication token, and let the analysis run. 
 What came up # The findings were mostly manageable for a first pass: 
 
 A flag about Python version — easily fixed…

cURL Docs: First Impressions

Started exploring the curl documentation today. The honest first reaction: it’s vast. Not in a discouraging way, but in the way that reminds you this tool has been built and maintained by real people over decades, and that depth is visible everywhere you look. 
 curl ships in billions of devices. It’s one of those pieces of software you use without thinking, and then one day you…

Pattern Matching

On the Risky.Biz #824 podcast, a GreyNoise observation was mentioned in passing: telnet traffic had dropped to near zero across the internet. Not a spike, not an anomaly — a disappearance. 
 The likely explanation: a vulnerability in the telnet protocol was about to drop publicly, and service providers had quietly been nudged into blocking it ahead of time. 
 The lesson is…