Bogdan Dragomir
/
TIL

TIL

April 3, 2026

April 3, 2026

Hardware Hacking with Claude

Asked Claude to make my USB-C wireless microphone adapter do something it wasn't designed for. It built a macOS app that listens for the button press on the wireless mic and toggles Wispr Flow dictation. Now I just press the mic button and start dictating — no reaching for the keyboard.

March 7, 2026

March 7, 2026

Wispr Flow on iPhone Action Button

Wispr Flow now lets you map the iPhone Action Button to start dictating. One press and you're talking — no keyboard switching. The catch: it copies the transcribed text to your clipboard instead of typing it directly, so you have to paste it where you need it. Minor trade-off for skipping the whole keyboard dance.

March 6, 2026

March 6, 2026

Wispr Flow Mouse Shortcuts

Wispr Flow just added mouse shortcut support. It detected my Logitech MX3S and let me bind one of its buttons to toggle dictation on/off. No more keyboard shortcuts — just press a mouse button and start talking.

February 25, 2026

February 25, 2026

Claude Code as a home lab sysadmin

Set up IMMICH on my home lab for family photos and installed Claude Code to help manage the infrastructure. Currently extending storage to my NAS for backups while I wait for a new HDD to arrive for a RAID 1 setup. The interesting part: my NAS is only accessible via SSH with key auth on the local network, and Claude handled the full security config — IP whitelisting, firewall rules, the works. Even got it to evaluate the disk health. Turns out it's very proficient at sysadmin tasks when you give it shell access to the right machine.

Pencil.dev

Used pencil.dev for some app design work. Genuinely surprised by the speed and how good the default design taste is. Worth trying if you're prototyping screens.

Performant MySQL dump and import for large databases

Two commands I used a while back to migrate a huge database without killing the server.

Step 1: Export — dump and compress in one shot:

nice -n 19 mysqldump -u user -p -h hostname --single-transaction --quick --lock-tables=false dbname | nice -n 19 gzip > dbname.sql.gz

nice -n 19 runs at lowest CPU priority so it doesn't starve other processes. --single-transaction takes a consistent snapshot without locking the whole database (InnoDB only). --quick streams rows one at a time instead of buffering the entire table in memory — critical for large tables. --lock-tables=false avoids table-level locks so reads keep working. Piping straight to gzip saves disk space and is usually faster than writing the raw SQL first.

Step 2: Transfer and decompress — move the file to the target server and unzip it:

gunzip dbname.sql.gz

This gives you the raw dbname.sql file. If you're transferring between machines, scp or rsync the .gz file first — much faster over the wire.

Step 3: Import — log into MySQL and disable autocommit before sourcing:

mysql -u user -p

Then inside the MySQL shell:

USE dbname;
SET autocommit=0;
SOURCE /path/to/dbname.sql;
COMMIT;

By default MySQL commits after every single INSERT, which is painfully slow on large dumps. SET autocommit=0 batches all the writes and COMMIT flushes them once at the end. On a multi-gigabyte dump this can be the difference between hours and minutes.

Use at your own risk.

February 18, 2026

February 18, 2026

Project-specific skills in Claude Code

The superpowers /using-superpowers skill is basically a table of contents of related skills you can use together. Good pattern to steal for your own project.

Skills in .claude/skills/ are already auto-detected — Claude picks them up and uses them when relevant. So bvdr-write, add-stack-entry, bvdr-add-til all live there and Claude will reach for them when it thinks they match the task. That's the passive mode — it works, but Claude decides when to use what.

A master command like /using-bvdr-skills flips that. Instead of waiting for Claude to recognize the context, you enforce it upfront. Load the table of contents at the start of a session and Claude knows exactly which skills are available, how they relate to each other, and when to use them. Passive availability vs active enforcement.

Two ways to think about it: reference them in CLAUDE.md if you want them always loaded for the project, or use the master command when you want granular control — load the full context for a deep session, skip it for a quick fix.

February 17, 2026

Using Claude Code superpowers

Go to Claude Code /plugins , search for superpowers and install it. Once installed restart and start a new session with /using-superpowers

February 10, 2026

February 10, 2026

Claude Code Skills

Found out the best way to create custom skills for Claude Code is by using a specialised skill that knows exactly how to build it for you. What you’re looking for:

  • To get it fire automatically when detecting some keywords
  • Agents should know how to use it

There's also a writing-skills one that applies TDD thinking to writing these. Used it to put together a tech blog writing skill. 👌

February 9, 2026

February 9, 2026

AI to ALLOW or DENY commands in Claude Code

I am following Boris Cherny and in this tweet he mentions:

c. Route permission requests to Opus 4.5 via a hook — let it scan for attacks and auto-approve the safe ones (see code.claude.com/docs/en/hooks#permissionrequest)

Based on this I steered Claude to build a plugin called smart-permissions - there are two layers, one regex search that automatically allow non harmful commands, everything else that escapes is catched by layer 2 which is an AI evaluation tool that decide ALLOW or DENY. It’s not perfect.

I’m having some trouble getting the default dialog to show when AI denies the tool call.

Notion As CRM

Using Notion as a CRM for the website is really cool! I've had this in mind for a long time, but back then the Notion API wasn't public, so it was only possible in hacky ways. Cool!

February 6, 2026

February 5, 2026

Claude code /insignts command that would show you what it knows about you