Skip to content

Blog

Notes on building and running web apps

Practical write-ups on web development, DevOps and Linux administration, from real projects.

Latest articles

AI Invoice Processing: OCR, LLM Extraction, Human Approval
LatestWeb DevelopmentOct 11, 2026

AI Invoice Processing: OCR, LLM Extraction, Human Approval

Reliable AI invoice processing is a pipeline: read the text or OCR it, let a model fill a fixed schema, check the numbers in code, then a person approves. I've fixed money bugs where one payment was counted twice, so I don't trust any system that moves money on a guess. AI is very good at reading a

Read article →
Private AI Chatbot for Company Documents, with Sources
Web DevelopmentOct 11, 2026

Private AI Chatbot for Company Documents, with Sources

A private AI chatbot for company documents searches your own files first, answers only from what it found, cites the source and admits when it doesn't know. That technique is called retrieval-augmented generation (RAG). I run local models on my own machines (setup in my Ollama on a VPS guide ), and

Read article →
Multi-Tenant SaaS with PostgreSQL RLS, NestJS and Prisma
Web DevelopmentOct 11, 2026

Multi-Tenant SaaS with PostgreSQL RLS, NestJS and Prisma

To isolate tenants in a NestJS and Prisma SaaS, turn on PostgreSQL row-level security and set the tenant ID inside each request's transaction. On a 3PL warehouse system I built , one client seeing another client's stock is the worst bug the system can have. That app injects a clientId filter into

Read article →
European Accessibility Act: Website Checklist for 2026
Website DesignOct 10, 2026

European Accessibility Act: Website Checklist for 2026

The European Accessibility Act requires most online shops and digital services selling to EU consumers to be accessible, in practice to WCAG 2.1/2.2 level AA. The European Accessibility Act (EAA) has applied since June 28, 2025. It doesn't matter where your company is based: if you sell to consumers

Read article →
Docker Engine 25 End of Life: Upgrade to 29 Safely
DevOpsOct 10, 2026

Docker Engine 25 End of Life: Upgrade to 29 Safely

Docker Engine 25 stops getting security fixes on December 4, 2026. Upgrade to Docker Engine 29, the only other supported line, after a backup and a test run. Docker Engine 25.0 came out in January 2024 and got an unusually long life: while 26, 27 and 28 have already reached end of life, 25 kept

Read article →
Next.js 16.4 Upgrade Guide: Cache Components and More
Web DevelopmentOct 10, 2026

Next.js 16.4 Upgrade Guide: Cache Components and More

Next.js 16.4 makes Cache Components the recommended model, adds ensureStatic and smaller Turbopack builds. Upgrade with npm install next@latest, then migrate. Next.js 16.4 shipped on October 6, 2026. It is a minor release, so an app on 16.x upgrades without breaking changes, but it changes the

Read article →
Copy Fail (CVE-2026-31431): Check and Patch Linux
Linux System AdminOct 10, 2026

Copy Fail (CVE-2026-31431): Check and Patch Linux

Copy Fail (CVE-2026-31431) lets any local user become root through the algif_aead kernel module. Install the patched kernel and reboot, or block the module now. Copy Fail went public at the end of April 2026, and CISA added it to its Known Exploited Vulnerabilities catalog on May 1. Months later I

Read article →
Docker Logs Filling Up the Disk? Rotate Them Properly
DevOpsOct 10, 2026

Docker Logs Filling Up the Disk? Rotate Them Properly

Docker's default json-file log driver never rotates, so container logs grow until the disk is full. Set max-size and max-file in daemon.json and recreate. "No space left on device" on a Docker host is very often not images or volumes. It's a single -json.log file under /var/lib/docker/containers

Read article →
ERPNext Customization Cost: What You Pay For (2026)
Web DevelopmentOct 10, 2026

ERPNext Customization Cost: What You Pay For (2026)

ERPNext customization cost depends on the layer you change: settings and fields are cheap, custom apps cost more, and app or hardware integrations cost most. ERPNext itself is free and open source. What you pay for is fitting it to your business: setting it up, changing it where it doesn't fit,

Read article →
3PL Warehouse Management System: Build or Buy (2026)
Web DevelopmentOct 10, 2026

3PL Warehouse Management System: Build or Buy (2026)

A 3PL warehouse management system must keep each client's stock apart, record billable work as it happens and keep handhelds working on patchy Wi-Fi. I built a self-hosted warehouse management system for a third-party logistics business : several warehouses, several client companies, from the

Read article →
Prevent Inventory Overselling in PostgreSQL (Tested)
Web DevelopmentOct 10, 2026

Prevent Inventory Overselling in PostgreSQL (Tested)

To stop overselling in PostgreSQL, lock the stock rows with SELECT ... FOR UPDATE in a fixed order inside the allocation transaction. SKIP LOCKED is wrong here. I built the allocation engine for a third-party logistics warehouse system , where two orders taking the same units would mean a picker

Read article →
MySQL to PostgreSQL Migration Without Losing Data
Web DevelopmentOct 10, 2026

MySQL to PostgreSQL Migration Without Losing Data

To move MySQL to PostgreSQL without losing data, copy in one controlled run, reset every sequence, keep old password hashes working and compare row counts. In September 2026 I rebuilt MedicsBD , a live telemedicine platform, from Laravel and MySQL to Next.js, an Express API and PostgreSQL. All 64

Read article →