// Writing · think out loud

Wordsabout the work

Engineering, design, infra, and the occasional strong opinion. Long-form, hand-written, zero SEO sludge.

RTFM # WORKS IN THEORY # PREMATURE OPTIMIZATION IS... # CACHE INVALIDATION & NAMING THINGS # JUST ONE MORE REFACTOR # NO I WON'T ADD DARK MODE # IT'S NOT A BUG, IT'S UNDOCUMENTED BEHAVIOUR # STRONG OPINIONS # HAVE YOU TRIED TURNING IT OFF AND ON AGAIN? # THIS IS FINE #
★ Latest #

Neovim · Debugging · 6 min read

Debugging JS/TS from Neovim: JS/TS, the NestJS special & the React Native drama queen

Real breakpoints in Neovim — not console.log. Plain Node/TS is almost boringly simple, NestJS throws a small curveball, and React Native decides it's the main character.

Read it →

Aug 11, 2026

// Archive · Medium

Older stuff

KDE · Arch1 min

Get KDE Plasma 6 on Arch

Two methods for upgrading to Plasma 6 via the extra-testing repository — quick or selective.

Read →

Feb 29, 2024

Engineering4 min

Managing tech debt

Measure it, schedule time for it, track progress. Three steps that make debt manageable instead of demoralising.

Read →

Jan 24, 2024

Arch Linux5 min

Submitting a package to the AUR — full tutorial

Full guide: GPG setup, PKGBUILD creation, git source packaging, and QA before pushing to the AUR.

Read →

Nov 24, 2023

Neovim6 min

Neovim config from scratch

Telescope, Treesitter, lsp-zero, and Catppuccin — a complete from-scratch setup walkthrough.

Read →

Oct 24, 2023

Arch Linux3 min

Submitting a package to the AUR

First-time experience publishing dracut-numlock to the AUR — from research to quality checks to submission.

Read →

Oct 20, 2023

KDE1 min

Add a real tiling window manager in KDE

Set up Bismuth for automatic tiling and dynamic layout switching inside KDE Plasma.

Read →

Oct 11, 2023

KDE1 min

Add custom touch gestures in KDE

Install touchegg and touché to define your own touchpad gestures for browser nav, desktop switching and more.

Read →

Sep 21, 2023

KDE · Linux3 min

Debugging kwin forceblur — SITREP 1

Why blurredwallpaper stopped working after a KDE update — investigating the kwin script lifecycle for newly launched windows.

Read →

Aug 24, 2023

React Native1 min

Adding value when you reach the start of a FlatList

Detect scroll-to-top on a horizontal FlatList and prepend data without jumping the user's position.

Read →

Jul 18, 2023

React Native1 min

Adding value when you reach the end of a FlatList

Infinite scroll in React Native using onEndReached and onEndReachedThreshold.

Read →

Jul 18, 2023

React Native5 min

Horizontal calendar slider in React Native with FlatList

A scrollable weekly calendar with auto-snapping, dynamic month loading, and a "today" button built on FlatList and Luxon.

Read →

Jul 3, 2023

Linux2 min

Replace Nouveau by Nvidia

Switch from the open-source Nouveau driver to Nvidia's proprietary one on Arch-based systems using nvidia-inst and envycontrol.

Read →

Jun 12, 2023

Electron1 min

Electron React hot reload & multi launch script

Add hot reload and a single npm command to run both Parcel and Electron concurrently.

Read →

Apr 6, 2021

Electron1 min

React TypeScript & Electron — the one minute setup

Boilerplate for a desktop app with React, TypeScript and Electron using Parcel as bundler.

Read →

Apr 6, 2021

NestJS1 min

NestJS & Pino — the one minute setup

Swap NestJS's default logger for Pino: pretty-printed in dev, compact in prod.

Read →

Jun 11, 2020