Writing
Notes on engineering, tools, writing, and the occasional opinion. 65 articles, oldest dated 2008.
For forty years we pretended software was the product. SaaS moved the price to the service. AI moved it past zero. The artefact is free now — what's worth paying for is knowing which code to write.
We had this amazing thing called a computer — precise, predictable, trustworthy. Then came AI, and the real danger isn't stolen jobs. It's erosion of responsibility.
An entire field of human knowledge goes stale because of one misunderstood word. Nobody can define intelligence — so what exactly is this 'Artificial Intelligence'?
Insanity is taking anything to the extreme. A manager's job is to keep the balance — let AI in, watch the people who worship it, and watch the ones who ban it.
Reading AI-generated slop at a birthday or a ceremony is the fastest way to ruin the room. People remember you by what you've done — not by a Wikipedia page.
AI-powered support and overseas outsourcing are a great way to lose your customers. Help is supposed to mean something — and a real US-based voice is easy money.
Tax every billionaire in the US and each person gets $8,700 — one time. Then nothing. So maybe the real problem isn't billionaires. Maybe it's your education.
Humans have way more than five senses. One of them — the sense of life — usually sits dormant. And then LLMs arrive and suddenly wake it up.
A 212-tape childhood VHS collection, Requiem for a Dream at 13, and then Star Wars VII. How movies turned from a filmmaker's vision into Big Data slurry.
A programmer's take on the AI hype: a system that needs constant babysitting isn't a working system. And 'AI everywhere' is just another kind of stupidity.
Out of 3,863 women, none matched the 'average.' Yet ChatGPT is designed to produce exactly that — the most average answer possible. Here's why that's a problem.
Nobody's actually writing their code anymore — the LLM is. And that's perfectly fine. Let it handle the boilerplate and stop pretending we're improving JavaScript.
LinkedIn is clutching pearls over the idea of rewriting the U.S. Social Security codebase. In 2025? With LLMs? Let's wake up — rewriting business logic costs pennies now.
A waitress served me infinite coffee. Which got me thinking: the universe doesn't accept infinity — but we do. That's the real joke, and AI isn't in on it.
Disney can't animate anymore. They ran out of ideas. Here's what that tells us about stability, creativity, and why standing still is the scariest place to be.
People keep sending me doom videos about AI taking every job. Let's cut through the hype and look at what's actually happening with the money, the market, and reality.
Yelling at inanimate objects changes nothing — and neither does yelling at your AI. If the output is wrong, you have only yourself to blame.
Life never gets easier — the better it gets, the more work comes with it. A take on resistance, cat poop, and why the path up is always more work, not less.
Think of a cat. Congratulations — you just created a state of uncertainty nothing in the universe can read. A short take on thought, AI hype, and creation.
Shove everything into Big Data and AI and you end up with gray average nothing. Hollywood, Nokia, and why instinct still beats dataset polish.
Ideas are worthless — execution and selling are what make money. A blunt take on AI, startups, and why hiding in your little hole will get you nowhere.
UI and UX have turned into fast fashion — glossy effects that burn through GPUs, batteries and millions of dollars in power every day, only to be replaced next year.
An open letter to LinkedIn's 'security' team: every report comes back 'Everything is fine' while obvious scam bots and real harassment are quietly left untouched.
Modern UI is an unpredictable mess — swipes do different things in every app, buttons jump around the screen, and SEO bros churn out '101 tips' to make it worse.
A solution to a problem is something that makes the problem go away. In IT, we skip that step — we pile on tools and processes while nobody learns the trade.
IT hiring has become a circus where common sense takes a holiday and absurdity is the norm. A short tour of the acts — from Facebook to Netflix to Jonny the junior.
A blunt rant on programmers who blame everyone but themselves: responsibility, professionalism, and why excuses are a one-way ticket to burnout.
How to clone Debian Linux by hand, without third-party tools: dd, partprobe, sgdisk, e2fsck, resize2fs, and a bit of Go — for when you wake up stranded on a desert island.
A hands-on tutorial on driving QEMU virtual machines straight from Go via libvirt — no virsh, no clunky wrappers, just clean JSON in and JSON out.
How RDP has quietly evolved over the last ten years: versions from NT 4.0 to 10, useful mstsc flags, shadow connections, security holes, and the future of Windows administration.
Round two of beating up NVMe-over-TCP. A real test bench made of two Dell PowerEdge boxes, a 10-gigabit network, kernel 5.16, and answers to the questions you raised.
Buying a brand-new HTC Touch Pro 2 on eBay for $40 in 2022 and diving back into the lost world of Windows Mobile, PDAs, Palm, Nokia, and offline dicts.
Tips and personal stories on not being a clueless bore on an international team: accents, dictionaries, idioms, jokes, emails, names, and the little things that bite.
NVMe is more than just a fast disk — it's a protocol. Here's how to expose an NVMe drive over the network through plain TCP, using nothing but your stock Linux kernel.
How to stand up your own mail server using Mailu — a curated set of docker containers with postfix, dovecot, roundcube and everything you need. Step-by-step, with the landmines marked.
A practical guide to writing articles: five elements of good writing — from storytelling and reading tons of literature to developing your own style and dealing with critics.
Grant Sanderson, creator of 3Blue1Brown, on applying math in business and programming, computing integrals in your head, and building a massive channel.
How to teach programming without killing the spark: three idiotic claims, understanding vs. rote memorization, and why 'couldn't learn' is a cop-out.
How a sysadmin turned pandemic video calls into a full-blown TV studio: Jitsi, Restreamer, BlackMagic, SDI cameras, and broadcasting to 2,000 employees for under $7,000.
Why computers can't think, what's actually dangerous about AI, and how we quietly handed machines the right to choose for us — from TikTok recommendations to hiring systems.
Why people don't read manuals, how to make docs even worse, and why you should write decent ones — a satirical reverse-advice take on documentation.
A blunt take on IT hiring: why AI resume filters are killing the process, why you should hire without idiotic interviews, and how to motivate programmers like actual human beings.
Part two on Blazor: WASM binary pitfalls, Razor gotchas, component communication struggles, lifecycle traps, and the state of the ecosystem.
Useful console services for sysadmins and developers: terminal streaming via seashells.io, file transfers through transfer.sh, and what to do in the console while you're waiting for a deploy.
Part one of how, instead of yet another ToDo list, we built a useful IoT relay control system in Blazor: Entity Framework, MVC controller, server-side rendering, and C# instead of JavaScript.
Part two of the series on Go's task scheduler: breaking down G, P, and M, thread parking, system calls, netpoll, and sysmon — all based on runtime source code.
Transcript of a live talk about building an IT career: from fixing a PHPBB forum at 14 to landing contracts without interviews — why helping people works better than any resume.
Continuing the compact-programs series: building 2048 in Rust with windows-rs, creating a native window via WinAPI, and wrangling the message queue.
Part one of a series on Go's task scheduler: what happens with OS threads, why 180,000 threads will kill your system, and what work stealing has to do with any of it.
Writing the game 2048 in x64 Assembly on Windows: from TASM memories to NASM and MinGW, fitting the entire game field into 16 bytes of memory.
Windows 11 inside and out: rounded corners, the new Start menu, TPM 2.0 requirements, telemetry, and what the scary number eleven really hides.
A deep dive into UUIDv7 — a next-generation binary-sortable identifier: why it exists, how sub-second precision works, and why it matters for databases.
A look at vugu, a young library that lets you write frontend in Go via WebAssembly. Cats, goroutines, and 500 KB of WASM payload by the finish line.
The brave new world of data privacy: The Social Dilemma documentary, the Brave browser, and why your grandparents deserve a safer, quieter internet.
A walkthrough of the Rust compiler source code — from parsing a source file to generating a binary via LLVM. We trace a program's journey through AST, HIR, and MIR.
A deep dive into the history of compilation — from processors and opcodes through C, Java, and JavaScript to LLVM and Rust. Understanding why Rust exists and when to use it for web.
A real-world experience of adopting Rust in production — from reading the documentation inside out to replacing 16 Docker containers with a 564 KB binary.
What happens when the result of your work is effectively nothing? How quality degradation — 'qualiflation' — quietly corrodes our economy and our lives.
A detailed breakdown of Windows 8 Developer Preview: WinRT, Metro UI, tablet features, IE10, and honest impressions from three months of daily use.
A sci-fi short story about Vasya the sysadmin, a 3 AM server-room emergency, and the unexpected encounter that inspired him to write his first article.
A practical PowerShell intro for beginners: cmdlets, pipelines, working with .NET objects, the Windows registry, and writing your first useful scripts.
A .NET developer's first experience with Ruby on Rails: installing the stack, setting up the project, running the first scaffold, and honest impressions.
.NET Interop in practice: using P/Invoke and DllImport to call native Windows Sockets from a managed C# app — a full example with code and pitfalls.
Two inheritance types in ADO.NET Entity Framework — Table per Type and Table per Hierarchy — walked through with common mistakes and their fixes.
A practical introduction to ADO.NET Entity Framework — from creating a data model to performing basic CRUD operations in ASP.NET.