-
Watching Files for Changes on Linux with inotify
Watching files for changes on Linux with inotify, why it beats polling, and the watch limit that trips up large development setups.
-
Windows 11 24H2 Power User Guide: PowerShell 7 and Windows Terminal Tricks
Set up PowerShell 7, a tuned Windows Terminal profile, and Windows 11 24H2’s new sudo command for a genuinely productive Windows shell.
-
Writing Print Stylesheets with CSS
Writing print stylesheets with @media print: hiding navigation, showing link URLs, and controlling page breaks.
-
A Practical Strategy for Coding Interview Preparation
A practical strategy for coding interview preparation: focusing on patterns over volume, and why communication matters as much as the code.
-
Getting Started with Rust for Systems Programming in 2026
A practical on-ramp to Rust in 2026: installing the toolchain, a real file-watcher example, and why it’s become the default choice for new systems tools.
-
Encrypting MySQL Data at Rest
Encrypting MySQL data at rest with InnoDB tablespace encryption, and why it’s not a substitute for application-level encryption of sensitive fields.
-
Debounce vs Throttle in JavaScript, Explained with Examples
Debounce vs throttle in JavaScript explained with working implementations, and when each one is actually the right choice.
-
Mocking and Stubbing in Tests, Explained
Mocking vs stubbing in tests explained, when to use each, and the overuse trap that produces brittle, implementation-coupled tests.
-
Building a Local AI Coding Assistant with Open-Source Models
Set up a fully local AI coding assistant in VS Code using Ollama and Qwen2.5-Coder, plus a scripted pre-commit review tool built on the same local…
-
Docker and Podman on Linux: Containerization Best Practices in 2026
A practical comparison of Docker and Podman on Linux in 2026, plus Dockerfile and Compose best practices that apply to both.
-
Windows Terminal + WinGet: Automating Your Dev Machine Setup
Turn your Windows dev machine setup into a reproducible, version-controlled configuration using WinGet’s export and declarative configure features.
-
Understanding WordPress Hooks: Actions vs Filters
The difference between WordPress actions and filters, the two hook types every plugin and theme is built on.
-
WordPress Plugin Development: Your First Plugin from Scratch
Building your very first WordPress plugin from scratch: the required header, a basic shortcode, and where the file goes.
-
Edge Computing Explained for Application Developers
Edge computing explained for application developers: what genuinely benefits from running close to the user, and the real runtime constraints.
-
Running AI Models in the Browser with Transformers.js
Running real AI model inference directly in the browser with Transformers.js, no server or API key required.
-
Currying and Functional Programming Patterns in JavaScript
Currying and functional programming patterns in JavaScript, with a practical validator example showing why partial application matters.
-
React vs Vanilla JavaScript: When You Actually Need a Framework
React vs vanilla JavaScript: an honest framework for deciding when the added complexity of a framework actually pays for itself.
-
Essential MySQL Command-Line Client Commands
Essential MySQL command-line client commands for quick diagnostics, including the underused \G vertical output format.
-
The Cold Start Problem in AI Recommendation Systems
The cold start problem in recommendation systems: how to recommend anything for brand-new users or brand-new items with no history yet.
-
Setting Security Headers in Apache2
Setting essential security headers in Apache2 — X-Frame-Options, HSTS, and CSP — to add real defense-in-depth against common attacks.
-
CSS Scroll Snap: Building Carousels Without JavaScript
Building carousels and full-page scroll sections with CSS scroll-snap, no JavaScript library required.
-
Partitioning Large MySQL Tables for Performance
Partitioning large MySQL tables by date range, and why it makes purging old time-series data dramatically faster.
-
PHP 8.1 Enums Explained with Real Examples
PHP 8.1 enums explained with a real order-status example, including how backed enums map cleanly to and from a database.
-
Serverless Functions Explained: When They Make Sense
Serverless functions explained: when the pay-per-invocation model genuinely fits, and where cold starts and sustained load make it the wrong choice.
-
The CSS Box Model Explained Once and For All
The CSS box model explained: why the default content-box sizing surprises people, and why border-box has become the near-universal fix.
-
CSS Architecture: An Introduction to the BEM Methodology
An introduction to BEM (Block Element Modifier) CSS naming, and why predictable class names matter more as a codebase grows.
-
Web Components: Building Reusable Elements Without a Framework
Web Components explained: building a framework-agnostic custom element with genuine style encapsulation via Shadow DOM.
-
Writing Clean Code: Naming, Functions, and Comments
Practical clean code principles with real before/after examples: naming that eliminates the need for comments, single-responsibility functions, and comments that explain why, not what.
-
JavaScript Scope and Hoisting Explained Clearly
JavaScript scope and hoisting explained clearly, including the temporal dead zone that makes let and const behave differently from var.
-
JavaScript Modules: ESM vs CommonJS Explained
CommonJS vs ES Modules in JavaScript: the practical differences that actually cause import errors, and why browsers only ever supported one.
-
Tailwind CSS vs Writing Your Own Stylesheets
Tailwind CSS vs hand-written stylesheets: the real trade-off between build speed and markup readability, and the common hybrid approach.
-
JavaScript Closures Explained with Real Examples
JavaScript closures explained with a real private-counter example, and why every JS function forms one whether you notice or not.
-
Multi-Agent AI Systems Explained
Multi-agent AI systems explained: why specialized agents can outperform one generalist, and the real coordination and debugging cost that comes with it.
-
Optional Chaining and Nullish Coalescing in Modern JavaScript
Optional chaining and nullish coalescing in JavaScript, and the real bug that ?? fixes compared to the old || fallback pattern.
-
Building a Simple MVC Framework in PHP From Scratch
Building a minimal MVC skeleton in plain PHP to understand what frameworks like Laravel are actually doing under the hood.
-
Using AI Tools for Automated Code Review
AI-powered code review tools: what they genuinely catch well, where they fall short, and why they work best as a first pass, not a replacement for…
-
A Practical Guide to Semantic Versioning
What MAJOR.MINOR.PATCH actually promises, reading npm version ranges correctly, and why breaking that promise erodes trust in your releases.
-
Understanding Async/Await in JavaScript
From callback hell to Promises to async/await, proper error handling with try/catch, and the classic sequential-await-that-should-be-parallel performance mistake.
-
The Model Context Protocol (MCP) Explained
The Model Context Protocol explained: standardizing AI-to-tool connections to avoid the N-times-M custom integration problem.
-
Debugging Programs on Linux with strace and ltrace
Debugging misbehaving programs on Linux with strace and ltrace, and how to turn a mysterious hang into an obvious cause.
-
Setting Up MySQL Replication for Redundancy
Setting up basic MySQL primary-replica replication for read scaling and redundancy, step by step.
-
Writing Testable Code: Practical Patterns
Writing testable code: the difference between hidden dependencies that fight testing and explicit ones that make it trivial.
-
Comparing AI Agent Orchestration Frameworks
Comparing AI agent orchestration frameworks: what they actually solve, and the genuine philosophical split between graph-based and freeform agent loops.
-
Optimizing CSS for Faster Page Rendering
Optimizing CSS for rendering performance: why transform and opacity animate more cheaply than width, height, or top.
-
Working with Multidimensional Arrays in PHP
Working with multidimensional arrays in PHP: iteration, sorting by nested keys, and when to switch to objects instead.
-
Bash Scripting Fundamentals for Sysadmins
The essential Bash scripting patterns for sysadmins: strict mode, arrays and loops, functions with local variables, and structured logging.
-
Preventing SQL Injection in PHP with Prepared Statements
Why concatenating user input into SQL queries is dangerous, and how prepared statements eliminate SQL injection entirely.
-
MySQL Triggers Explained with Practical Examples
MySQL triggers explained with a price-audit and stock-validation example, and why to use them sparingly.
-
Building a To-Do App with Vanilla JavaScript
Building a persistent to-do app in vanilla JavaScript, and the state-plus-render-function pattern that underlies modern frameworks too.
-
The JavaScript Event Loop Explained
The JavaScript event loop explained, including why Promise callbacks always run before setTimeout callbacks even at 0ms.
-
var, let, and const in JavaScript: What Actually Changed
What actually changed between var, let, and const in JavaScript, including the classic loop closure bug that let fixed.
-
JavaScript Arrays vs Typed Arrays: Performance Differences
JavaScript arrays vs typed arrays: why typed arrays offer real performance gains for numeric and binary data processing.
-
A Complete Guide to CSS Flexbox
A practical guide to CSS Flexbox: the properties that matter most, and the flex shorthand that makes layouts naturally responsive.
-
Designing a Simple E-Commerce Database Schema in MySQL
Designing a simple, correctly-normalized e-commerce database schema in MySQL, including the many-to-many order_items pattern.
-
npm 101: Managing JavaScript Dependencies
npm essentials: understanding the lockfile, semver ranges in package.json, and why CI pipelines should use npm ci, not npm install.
-
phpMyAdmin vs the MySQL CLI: Pros and Cons of Each
phpMyAdmin vs the MySQL CLI: where each genuinely wins, and why an exposed phpMyAdmin install is a recurring security liability.
-
Foreign Keys and Referential Integrity in MySQL
Foreign keys and referential integrity in MySQL, and choosing the right ON DELETE behavior for each relationship.
-
JavaScript DOM Manipulation Basics Without a Framework
Vanilla JavaScript DOM manipulation basics, and the event delegation pattern that scales far better than individual listeners.
-
Feature Flags Explained: Shipping Code Safely
Feature flags explained: how they decouple deployment from release, enable instant rollback, and the cleanup discipline they require.
-
Speeding Up Bulk Inserts in MySQL
Speeding up bulk inserts in MySQL with multi-row INSERT statements, LOAD DATA, and wrapping batches in a single transaction.
-
Low-Code/No-Code Tools: A Reality Check for Developers
Low-code/no-code tools: an honest reality check on where they genuinely deliver, and where the promise breaks down against complex requirements.
-
How PHP’s Garbage Collector Actually Works
How PHP’s reference-counting garbage collector actually works, and where memory leaks realistically show up in practice.
-
PowerShell DSC: Declarative Configuration for Windows Machines
An introduction to PowerShell Desired State Configuration: writing a declarative config, applying it, and checking for configuration drift.
-
Keeping MySQL Credentials Out of Your Codebase
Keeping MySQL credentials out of your codebase with environment variables, and why a proper secrets manager beats a plain .env file at scale.
-
The Basics of Assembly Language on x86
A hands-on introduction to x86-64 assembly: registers, a minimal program, and comparing compiled C output to build real intuition about what your compiler does.
-
A Gentle Introduction to GraphQL
GraphQL’s core idea explained with a real query and Apollo server example, plus the caching and N+1 trade-offs that don’t make it into most pitches.
-
Sorting Algorithms Explained: Bubble, Merge, and Quick Sort Compared
Bubble sort, merge sort, and why quicksort tends to win in practice despite a worse theoretical worst case.
-
Fluid Typography with CSS clamp()
Building fluid typography with CSS clamp() that scales smoothly, replacing a pile of font-size media query breakpoints.
-
The N+1 Query Problem Explained
The N+1 query problem explained: why it’s invisible with small development datasets and crippling with real production data.
-
A Brief History of Programming Languages
Tracing programming language history from raw machine code through structured and object-oriented programming to today’s languages.
-
Automating Linux Server Configuration with Ansible
Automating Linux server configuration with Ansible playbooks, and why idempotency is the core concept that makes it safe to re-run.
-
Setting Up a LAMP Stack on Ubuntu 24.04
Installing and securing a LAMP stack on Ubuntu 24.04, including a minimal Apache virtual host configuration, and whether it’s still worth using in 2026.
-
Managing MySQL User Permissions Securely
Managing MySQL user permissions with least-privilege access, and why scoping both grants and host wildcards matters.
-
Task Scheduler Deep Dive: Automating Windows Maintenance
Beyond simple daily schedules: event-based triggers, scripting task creation with PowerShell, and debugging tasks that silently fail.
-
Dependency Injection Explained Without the Buzzwords
Dependency injection explained without the framework jargon: why handing dependencies in from outside makes code testable and swappable.
-
Immutability Patterns in JavaScript
Immutability patterns in JavaScript, and why frameworks like React rely on them for efficient, reference-based change detection.
-
Building a Simple Chatbot Using an LLM API
Building a working chatbot with an LLM API in a few lines of code, and the real engineering work — context management and guardrails — that…
-
MySQL vs PostgreSQL: Choosing the Right Database
MySQL vs PostgreSQL, evaluated honestly: where each one actually has an edge, without the tribal debate.
-
CSS Transforms and 3D Effects Explained
CSS transforms and 3D effects explained through a hover-flip card example, including why perspective is the piece people forget.
-
Monorepo vs Polyrepo: Trade-offs for Growing Teams
Monorepo vs polyrepo trade-offs for growing teams, and the tooling investment that big tech companies rarely mention alongside the monorepo advice.
-
API Versioning Strategies Compared
API versioning strategies compared, and why the deprecation policy behind whichever one you pick matters more than the mechanism itself.
-
Encoding and Decoding JSON in PHP
Encoding and decoding JSON in PHP correctly, including the UTF-8 encoding gotcha that silently breaks json_encode.
-
Unit Testing PHP Code with PHPUnit
Getting started with PHPUnit: installing it via Composer, writing your first test class, and where to focus first.
-
A Deep Dive into JavaScript async/await
A deeper look at JavaScript async/await, including the sequential-vs-parallel await mistake that silently doubles your load times.
-
CORS Explained Properly, Once and For All
CORS explained properly: why the Same-Origin Policy exists, and why the fix for a CORS error always belongs on the server, never the client.
-
Running Multiple PHP Versions on the Same Apache2 Server
Running multiple PHP versions side by side on one Apache2 server using PHP-FPM, one virtual host per version.
-
Building a Secure Contact Form with PHP and mail()
Building a secure PHP contact form with mail(), and the header injection vulnerability that catches most first attempts.
-
Structured Logging Best Practices
Structured logging best practices: why JSON-formatted logs beat plain text for querying at scale, and the consistency discipline it requires.
-
Microservices vs Monolith: Choosing the Right Architecture
Microservices vs monolith: an honest look at what a monolith gets right, and when the real costs of microservices actually pay off.
-
Service Workers and Building a Basic Progressive Web App
Building offline-capable functionality with Service Workers, the technology that makes Progressive Web Apps actually work offline.
-
Building a Simple Templating Engine in PHP
Building a minimal PHP templating engine using output buffering, and what real engines like Twig add on top of it.
-
How MySQL Indexes Actually Speed Up Queries
How MySQL indexes actually speed up queries, with EXPLAIN examples, and why indexing every column is the wrong instinct.
-
CSS Custom Properties (Variables) Explained
CSS custom properties explained, and why their runtime, JavaScript-changeable nature is a real advantage over Sass variables.
-
Writing Documentation Developers Actually Read
Writing documentation developers actually read: the four distinct kinds of docs, and why mixing them is the most common cause of bad documentation.
-
Table-Based Layouts: A Look Back at Pre-CSS Web Design
A look back at table-based web layouts — why they were the reliable choice before CSS positioning matured, and why they eventually died out.
-
CSS Specificity Explained: Why Your Styles Aren’t Applying
Why CSS specificity is the real reason a style “isn’t applying,” and how to debug it properly instead of reaching for !important.
-
Webhooks Explained: How Services Talk to Each Other
Webhooks explained: how services push real-time events, why signature verification is mandatory, and why handlers should respond fast and process async.
-
A Practical Cheat Sheet for PHP String Functions
A practical cheat sheet of the PHP string functions you’ll actually use, including PHP 8’s cleaner contains/starts-with helpers.
-
Building Your First AI Agent with Function Calling
Building a real function-calling agent: defining tools, running the request-execute-respond loop, and why the model never actually executes anything itself.
-
Database Normalization Explained: 1NF, 2NF, and 3NF
Database normalization explained through practical examples: 1NF, 2NF, and 3NF without the academic jargon.
-
What’s New in PHP 8.4: A Practical Overview
A practical overview of PHP 8.4’s most useful new features, including property hooks.
-
AI Text Summarization: Extractive vs Abstractive Approaches
Extractive vs abstractive text summarization: why one guarantees factual accuracy at the cost of fluency, and the other reads better but risks hallucinating details.
-
Using AI to Generate Test Cases Automatically
Using AI to generate test cases: what it genuinely excels at (edge cases, boundary conditions) versus what still needs real human judgment.
-
Validating and Sanitizing PHP Form Input Properly
Validating and sanitizing PHP form input properly with filter_input, plus why you still need to escape on output.
-
Testing JavaScript Code with Jest
Testing JavaScript code with Jest: writing assertions, mocking dependencies, and running with coverage reporting.
-
Installing and Securing MySQL on Ubuntu Server
Installing and properly securing MySQL on Ubuntu Server, including the security wizard steps that are easy to skip.
-
A Practical CSS Selectors Cheat Sheet
A practical CSS selectors cheat sheet covering combinators, attribute selectors, and the newly-usable :has() parent selector.
-
CSS Houdini: Extending CSS with JavaScript APIs
CSS Houdini explained: how registering typed custom properties finally makes them smoothly animatable.
-
PHP Basics: Variables, Types, and Type Juggling Explained
A practical look at PHP’s dynamic typing and the type juggling gotchas that trip up even experienced developers.
-
Writing Your First REST API in Python with FastAPI
Building a minimal REST API with FastAPI, understanding automatic Pydantic validation, and adding async endpoints for I/O-bound work.
-
Understanding Recursion with Real Examples
Recursion explained through a problem where it actually belongs — tree traversal — plus the stack-depth trade-off against an equivalent iterative version.
-
Code Review Best Practices That Actually Improve Quality
Code review practices that actually improve quality: PR size, automating the mechanical checks, and framing feedback concretely.
-
Rate Limiting APIs: Strategies and Trade-offs
Rate limiting strategies compared: fixed window’s burst problem vs token bucket’s smoother behavior, and how to communicate limits to API clients.
-
Introduction to Unit Testing with pytest
Writing tests with pytest: plain assert statements, reusable fixtures, parametrized test cases, and measuring coverage without gaming the metric.
-
MySQL Joins Explained: Inner, Left, Right, and Full Outer
MySQL join types explained with practical examples, including how to find orphaned rows and MySQL’s lack of FULL OUTER JOIN.
-
Common Causes of JavaScript Memory Leaks
Common causes of JavaScript memory leaks: forgotten listeners, uncleared timers, unbounded caches, and over-capturing closures.
-
Getting Started with TypeScript for JavaScript Developers
What TypeScript actually adds over plain JavaScript: type annotations, interfaces, generics, and how to adopt it gradually in an existing codebase.
-
Test-Driven Development: A Practical Introduction
A practical walkthrough of the red-green-refactor cycle with real code, plus honest guidance on where TDD genuinely pays off and where it doesn’t.
-
Understanding Memory Management in C
Stack vs heap, the two classic C memory bugs, and why the mental model of manual memory management still matters even in garbage-collected languages.
-
Message Queues Explained: An Introduction to RabbitMQ
An introduction to message queues with RabbitMQ, and how async processing smooths out traffic spikes that would otherwise overwhelm a service.
-
JavaScript Promises vs Callbacks: Escaping Callback Hell
JavaScript Promises vs the old nested-callback pattern, and why unified error handling is the real win, not just readability.
-
AI-Powered Document Processing and OCR
AI-powered document processing versus traditional OCR: understanding structure and extracting fields, not just recognizing characters.
-
MLOps Basics: Versioning Models Like You Version Code
MLOps basics: why a model needs to be versioned along with its training data and code together, not just the training script alone.
-
Event-Driven Architecture Basics
Event-driven architecture basics: how publishing events decouples services, and the real debugging trade-off it introduces.
-
Getting Started with IIS on Windows Server
Getting started with IIS on Windows Server: creating sites and app pools, and the web.config file that plays the role of .htaccess.
-
JavaScript Bundlers Compared: Webpack vs Vite
Why JavaScript needs bundlers at all, and the core architectural difference that makes Vite’s dev server feel instant compared to Webpack.
-
CSS Animations vs Transitions: What’s the Difference
CSS transitions vs animations: when a simple state-change transition is enough, and when you actually need @keyframes.
-
Managing MySQL Schema Changes with Migration Tools
Managing MySQL schema changes with versioned migration files instead of ad-hoc ALTER TABLE statements against production.
-
Working with JSON in JavaScript: parse and stringify
JSON.parse and JSON.stringify in JavaScript, including the silent-drop behavior for functions and the circular reference trap.
-
A Practical mod_rewrite Cheat Sheet for Apache
A practical mod_rewrite cheat sheet: HTTPS redirects, pretty URLs, and the [L] and [QSA] flags that show up in almost every rule.
-
Understanding PHP Generators and the yield Keyword
How PHP generators and the yield keyword let you process huge datasets without loading everything into memory at once.
-
Preventing XSS Attacks in JavaScript Applications
Preventing XSS attacks in JavaScript applications: the innerHTML vs textContent distinction, and why framework escape hatches reintroduce the same risk.
-
Blue-Green Deployments Explained
Blue-green deployments explained: eliminating deploy downtime with instant traffic cutover, and why database migrations remain the hard part.
-
PHP Error Handling: Exceptions, Try/Catch, and Custom Error Classes
Using PHP’s exception system properly: try/catch/finally, and why custom exception classes beat generic error checking.
-
MySQL Basics: Writing Your First SELECT Statements
MySQL SELECT statement fundamentals: filtering, sorting, grouping, and the WHERE vs HAVING distinction.
-
Getting Started with MySQL Stored Procedures
Getting started with MySQL stored procedures through a real fund-transfer example, and the trade-offs of putting logic in the database.
-
Why Connection Pooling Matters for MySQL Performance
Why connection pooling matters for MySQL performance, and the difference between PHP’s persistent connections and real poolers like ProxySQL.
-
Managing Technical Debt Without Grinding Development to a Halt
Managing technical debt: the difference between deliberate and accidental debt, and why making it visible and consistently funded prevents it from compounding.
-
PHP Type Declarations and declare(strict_types=1)
What declare(strict_types=1) actually changes in PHP, and why coercive type mode hides bugs instead of preventing them.
-
Writing Maintainable CSS in a Large Codebase
Practical patterns for keeping CSS maintainable at scale, and how tools like CSS Modules add the encapsulation CSS lacks natively.
-
Choosing the Right MySQL Data Types for Your Columns
Choosing the right MySQL data types for your columns, and the common mistakes (money as FLOAT, dates as VARCHAR) that cause real bugs.
-
Caching Strategies Explained: Cache-Aside, Write-Through, and More
Caching strategies explained: cache-aside, write-through, and write-behind, and how to pick based on your actual read/write pattern.
-
Async Generators and for-await-of in JavaScript
Async generators and for-await-of in JavaScript, with a practical paginated-API-fetching example.
-
Migrating Legacy PHP Code from mysql_* to mysqli or PDO
Migrating legacy PHP code off the removed mysql_* functions to mysqli or PDO, with a direct before/after comparison.
-
Git Beyond the Basics: Stash, Cherry-Pick, and Bisect
Git beyond the basics: stash for shelving work, cherry-pick for backporting fixes, and bisect for hunting down when a bug was introduced.
-
PHP Closures and Anonymous Functions Explained
PHP closures and arrow functions explained, including how variable capture with use() actually works.
-

Automatically scrape certain content on a website
I use “symfony/panther” to achieve the goal to scrape websites by the use of logic patterns. Install the environment Login into linux. Install “composer” to install…
-
Using MySQL’s JSON Column Type Effectively
Using MySQL’s native JSON column type effectively, including how to index into JSON paths with generated columns.
-
Debugging CSS Layout Issues with Browser DevTools
Using browser DevTools to debug CSS layout issues: the Styles panel, Computed values, and live grid/flex overlays.
-
From PHP 4 to PHP 8: How Far the Language Has Come
Tracing PHP’s evolution from PHP 4’s loosely-typed wild west to PHP 8’s modern, strictly-typeable language features.
-
ORM vs Raw SQL: Trade-offs When Working with MySQL
ORM vs raw SQL trade-offs when working with MySQL, and why the right answer for most projects is both, used deliberately.
-
OAuth 2.0 Explained Without the Jargon
OAuth 2.0 explained in plain terms: the authorization code flow, and why access and refresh tokens serve genuinely different purposes.
-
Understanding CI/CD Pipelines with GitHub Actions
Building a test-and-deploy GitHub Actions pipeline, handling secrets correctly, and using matrix builds to test multiple configurations at once.
-
Getting Started with Node.js for Backend JavaScript
Getting started with Node.js for backend JavaScript, and why its non-blocking I/O model suits APIs better than CPU-heavy work.
-
Making HTTP Requests with the JavaScript Fetch API
JavaScript Fetch API basics, request cancellation with AbortController, and the response.ok gotcha that catches new developers.
-
Building a Simple Recommendation System
Building a recommendation system: collaborative vs content-based filtering explained, and why modern systems genuinely combine both approaches.
-
CSS Logical Properties and Writing RTL-Friendly Layouts
CSS logical properties explained: writing layout CSS that automatically adapts to right-to-left languages without a separate stylesheet.
-
The Basics of SQL Joins, Explained Visually
SQL joins made unambiguous with a concrete two-table example: INNER, LEFT, RIGHT, and FULL OUTER JOIN, with exact resulting rows for each.
-
Handling File Uploads in PHP Securely
Handling file uploads securely in PHP: verifying real file content, size limits, and safe filename generation.
-
Writing a Simple Compiler: Lexers and Parsers Explained
Building a tiny arithmetic expression compiler from scratch: a lexer that tokenizes, a parser that respects operator precedence, and an evaluator for the resulting tree.
-
The JavaScript this Keyword, Finally Explained Clearly
The JavaScript this keyword finally explained clearly, including the classic “losing this in a callback” bug and how to fix it.
-
Handling Dates and Times Correctly in PHP
Handling dates and times properly in PHP with DateTimeImmutable, timezone objects, and safe user input parsing.
-
Implementing Dark Mode with CSS prefers-color-scheme
Implementing dark mode with CSS prefers-color-scheme, and layering a manual override toggle on top of the OS-level default.
-
A Practical Cheat Sheet for PHP Array Functions
A practical cheat sheet of PHP array functions that replace common manual loops with one-liners.
-
Setting Up Custom Error Pages in Apache2
Setting up custom, branded error pages in Apache2, and why they should stay dependency-free to work even during real outages.
-
The SOLID Principles Explained with Real Examples
The SOLID principles explained through what actually breaks when each one is violated, not just abstract definitions.
-
Graph Traversal Explained: BFS vs DFS
BFS vs DFS graph traversal explained, and why BFS naturally finds shortest paths while DFS suits dependency resolution.
-
CSS Container Queries: The Missing Piece for Responsive Components
CSS container queries explained: finally letting components respond to their own container’s size instead of the viewport.
-
Common Table Expressions (CTEs) in MySQL 8
MySQL 8’s Common Table Expressions explained, including recursive CTEs for walking hierarchical data like org charts.
-
JavaScript Destructuring, Spread, and Rest Operators Explained
JavaScript destructuring, spread, and rest operators explained clearly, and how to tell spread and rest apart despite identical syntax.
-
Regular Expressions: A Practical Cheat Sheet
A practical regex cheat sheet with real patterns for email extraction, date validation, named groups, and backreference substitution — plus when to skip regex entirely.
-
Data Structures 101: Trees and Binary Search Trees
Binary search trees explained, and why the balance problem is exactly what self-balancing variants like Red-Black trees solve.
-
The History of CSS: From CSS1 to Today’s Modular Spec
Tracing CSS from its 1996 origins through the CSS2 positioning era to today’s modular, incrementally-evolving specification.
-
Why Every Application Needs Connection Pooling
Why every application talking to a database needs connection pooling, and how to think about sizing a pool correctly.
-
Apache .htaccess Basics: Rewrites, Redirects, and Access Control
Apache .htaccess basics: rewrites, redirects, and access control, plus the performance trade-off of using it versus main config access.
-
Observability for LLM Applications: What to Monitor
Observability for LLM applications: why traditional latency and error-rate monitoring misses the AI-specific failure modes that actually matter.
-
MariaDB vs MySQL: What Actually Differs
How MariaDB and MySQL diverged since MariaDB’s 2009 fork, and where they’re no longer safely interchangeable.
-
Offloading Work with JavaScript Web Workers
Offloading heavy computation to a separate thread with JavaScript Web Workers, keeping the main thread responsive.
-
MySQL Character Sets: Why You Should Always Use utf8mb4
Why MySQL’s utf8 charset can’t store emoji, and why utf8mb4 should be the default for every new database.
-
Training Your Own Small Machine Learning Model from Scratch
Training your own small, task-specific machine learning model from scratch, and why data preparation — not the training code — is the real bottleneck.
-
GraphQL vs REST: Real Trade-offs, Not Just Hype
GraphQL vs REST: the real trade-offs around over-fetching, caching, and complexity — not just hype in either direction.
-
Batch Scripting Basics: Automating Tasks with .bat Files
A practical primer on Windows batch scripting: variables, conditionals, a real cleanup script, and when to graduate to PowerShell instead.
-
Using AI Tools for Automated Code Refactoring
AI-powered code refactoring tools: how they go beyond mechanical IDE refactoring, and the test coverage safety net they genuinely require.
-
Vim vs Emacs: The Editor War That Never Ends
Why the Vim vs Emacs debate has lasted decades, what each editor’s core philosophy actually is, and why both ideas ended up winning in the long…
-
Building a WebSocket Client in JavaScript
Building a WebSocket client in JavaScript for real-time, bidirectional communication, and why reconnection logic isn’t automatic.
-
Canary Releases: Rolling Out Changes Safely
Canary releases explained: rolling out changes to real traffic gradually, and why automated, metric-driven rollback is what actually makes them safe.
-
Optimizing Slow MySQL Queries with EXPLAIN
Reading MySQL’s EXPLAIN output to diagnose slow queries: the red flags to look for and what they actually mean.
-
WebAssembly Explained: Running Native Code in the Browser
What WebAssembly actually is, compiling Rust to Wasm and calling it from JavaScript, and where it genuinely outperforms plain JavaScript.
-
Speech Recognition on Your Own Machine with Whisper
Running OpenAI’s Whisper locally with faster-whisper for offline, private speech transcription, including a real-time microphone transcription example.
-
MySQL vs NoSQL: When a Relational Database Is Still the Right Choice
MySQL vs NoSQL evaluated honestly: when relational data modeling still wins, and where NoSQL genuinely solves a narrower problem better.
-
Composer 101: Managing PHP Dependencies the Right Way
Getting started with Composer: installing dependencies, understanding the lockfile, and autoloading with PSR-4.
-
localStorage vs sessionStorage vs Cookies in JavaScript
localStorage vs sessionStorage vs cookies in JavaScript: lifetimes, visibility, and which one is actually safe for sensitive data.
-
Password Hashing in PHP: password_hash() Done Right
Why password_hash() and password_verify() should be the only password hashing functions you ever use in PHP.
-
Backing Up and Restoring MySQL Databases with mysqldump
Backing up and restoring MySQL databases with mysqldump, and why –single-transaction is essential for live production backups.
-
PHP Traits vs Interfaces: When to Use Each
The real difference between PHP traits and interfaces, and when to reach for each one.
-
Debugging PHP Applications with Xdebug
Setting up Xdebug for real step-through debugging in PHP, connecting your editor, and using it for performance profiling too.
-
Building a CLI Tool in Go from Scratch
Building a real CLI tool in Go with Cobra, and cross-compiling it into single, dependency-free binaries for Linux, macOS, and Windows.
-
The History of MySQL: From a Swedish Startup to Oracle
From a 1995 Swedish startup project to the backbone of the LAMP stack: the history of MySQL, Sun’s acquisition, and the MariaDB fork.
-
Error Budgets and SRE Basics
Error budgets and SRE basics: why 100% uptime is the wrong target, and how error budgets give teams an objective ship-vs-stabilize framework.
-
AI Coding Assistants Compared: What Actually Speeds You Up
The real differences between inline autocomplete, chat-based assistance, and agentic coding tools, and the review discipline that actually determines whether they help.
-
Migrating a JavaScript Project to TypeScript Gradually
A practical, incremental path for migrating a JavaScript codebase to TypeScript without a full rewrite.
-
A Practical Introduction to eBPF for Observability
What eBPF actually is, why it’s safer than a traditional kernel module, hands-on bpftrace examples, and the major tools built on top of it.
-
Fortran and COBOL: The Languages Still Running the World’s Banks
Why Fortran and COBOL, both older than most programmers’ parents, still quietly run the world’s scientific computing and banking systems today.
-
Building a REST API in Plain PHP Without a Framework
Building a working JSON REST API in plain PHP without pulling in a framework, for small internal services.
-
From Autocomplete to AI Pair Programmer: A Short History
From mechanical autocomplete to AI pair programming: tracing how code completion technology actually evolved over roughly fifteen years.
-
JWTs Explained: What They Are and Common Mistakes
JWTs explained: what the signature actually guarantees, the critical signed-vs-encrypted misunderstanding, and the algorithm-confusion attack it enables.
-
InnoDB vs MyISAM: Choosing a MySQL Storage Engine
Why InnoDB replaced MyISAM as MySQL’s default storage engine, and how to check and convert legacy tables.
-
MySQL Transactions and ACID Properties Explained
MySQL transactions and the ACID properties explained with a real money-transfer example, and why the storage engine matters.
-
jQuery’s Rise and Fall: Why It Mattered and Why It Faded
Why jQuery dominated JavaScript development for a decade, and why modern browser standardization made it largely unnecessary.
-
Building a Simple Neural Network from Scratch in Python
Building a simple neural network from scratch in Python, and why implementing backpropagation by hand at least once genuinely clarifies what frameworks automate.
-
The Basics of Object-Oriented Programming, Revisited
Revisiting the four pillars of OOP with real code — not as things to memorize, but as tools that solve specific, concrete problems.
-
Sass vs Plain CSS: Do You Still Need a Preprocessor in 2025
Sass vs plain CSS in 2025: what native CSS has caught up on, and the genuine gaps that still justify a preprocessor.
-
Building a Simple RAG Pipeline with LangChain
Building a simple RAG pipeline with LangChain: what the framework automates, and when writing the components directly yourself is genuinely simpler.
-
CSS Grid Layout Explained with Practical Examples
CSS Grid layout explained with a real page-shell example, plus the auto-fill/minmax pattern for responsive galleries without media queries.
-
AI Coding Copilot Tools Compared
AI coding copilot tools compared on the dimensions that actually matter: context awareness, autonomy level, and underlying model quality.
-
Regular Expressions in JavaScript: The Basics
JavaScript regex basics: pattern testing, matching, named capture groups, and the g flag behavior that trips people up.
-
Finding Slow Queries with the MySQL Slow Query Log
Finding slow MySQL queries with the slow query log, and analyzing results with mysqldumpslow and pt-query-digest.
-
Data Structures 101: Linked Lists Explained
Linked lists explained, and why modern CPU cache behavior means arrays usually beat them even for insertion-heavy workloads.
-
API Pagination Strategies: Offset vs Cursor-Based
Offset vs cursor-based API pagination, and why cursor pagination is the correct choice for data that changes while being paginated.
-
Writing PHP CLI Scripts for Cron Jobs
Writing PHP CLI scripts for cron jobs, including proper database cleanup and the crontab entry to schedule it.
-
Understanding MySQL Locking and Diagnosing Deadlocks
Understanding MySQL row locking and diagnosing deadlocks, plus the consistent-lock-ordering pattern that prevents most of them.
-
Clean Architecture Principles for Backend Applications
Clean Architecture principles explained: keeping business logic independent of frameworks and databases, with a concrete order-processing example.
-
Does Pair Programming Actually Work? A Practical Look
Does pair programming actually work? An honest look at where the evidence supports it, and where it’s genuinely counterproductive.
-
PHP Namespaces and PSR-4 Autoloading Explained
How PHP namespaces work and how PSR-4 autoloading maps namespace paths directly to file locations.
-
Building a Simple Image Classifier with a Pretrained Model
Building an image classifier using transfer learning from a pretrained model, and why reusing already-learned features beats training from scratch.
-
Debugging Like a Pro: Techniques Beyond print()
Moving beyond print statements: using pdb, conditional breakpoints, reading stack traces bottom-up, and why rubber duck debugging genuinely works.
-
JavaScript Console Methods Beyond console.log
JavaScript console methods beyond console.log: table, group, time, count, and assert — genuinely useful debugging tools most developers skip.
-
PHP Performance: How OPcache Actually Speeds Things Up
How PHP’s OPcache eliminates repeated parsing overhead, and the production configuration change that matters most.
-
The TLS Handshake Explained Step by Step
The TLS handshake explained step by step, and why HTTPS uses both asymmetric and symmetric cryptography together rather than just one.
-
Building a Local RAG Chatbot Over Your Own Documents
A fully local, offline RAG chatbot using Ollama and ChromaDB: indexing your own documents and querying them with no API keys and no data leaving your…
-
Setting Up MySQL InnoDB Cluster for High Availability
Setting up MySQL InnoDB Cluster for automated failover across multiple nodes using group replication.
-
Laravel vs Plain PHP: When You Actually Need a Framework
A practical framework for deciding when plain PHP is the right call and when Laravel or Symfony actually pays for itself.
-
CSS Variables vs Sass Variables: Key Differences
CSS custom properties vs Sass variables: why one is a compile-time constant and the other a live, runtime value.
-
Database Sharding Basics: When MySQL Needs to Scale Out
Database sharding basics: how horizontal partitioning across MySQL servers works, and why it should be a last resort, not a default.
-
PHP Magic Methods: __construct, __get, __call, and More
PHP’s magic methods explained — __construct, __get, __toString, __call — and why to use them sparingly.
-
Custom Events in JavaScript: Building a Simple Pub/Sub System
Custom events in JavaScript, and building a simple decoupled pub/sub event bus on top of the native EventTarget API.
-
CSS Grid vs Flexbox: Which One Should You Use
CSS Grid vs Flexbox: the simple rule for which one to reach for, and why most real layouts genuinely use both together.
-
PHP Readonly Properties and Why Immutability Matters
PHP 8.1’s readonly properties explained through a Money value object, and why immutability eliminates a class of bugs.
-
Building Your First Chrome Extension
Building a minimal Chrome extension from scratch: the manifest, a popup that runs a script on the active tab, and loading it locally for testing.
-
CSS z-index and Stacking Context Explained
Why “just increase the z-index” often doesn’t work, and how CSS stacking contexts actually determine layering.
-
Waterfall vs Agile: How Software Development Methodology Evolved
Waterfall vs Agile: the genuine problem Waterfall originally solved, why it broke down for most software, and how far practiced “Agile” has drifted from the original…
-
MySQL Window Functions Explained with Examples
MySQL 8 window functions explained: ranking, running totals, and row comparisons without the old self-join workarounds.
-
How AI Agents Actually Use Tools and APIs
How AI agents actually use tools: the model only requests a structured tool call, never executes anything directly — and why that distinction matters for safety.
-
CSS Pseudo-Classes vs Pseudo-Elements Explained
The real difference between CSS pseudo-classes (element states) and pseudo-elements (generated content or element parts).
-
Hardening PHP Session Security Against Hijacking
Hardening PHP session security with proper cookie flags, session ID regeneration on login, and idle timeout enforcement.
-
How Hash Maps Actually Work Under the Hood
How hash maps actually achieve O(1) average lookup time, and why hash collisions are the thing that can degrade that performance.
-
Cron Jobs 101: Scheduling Tasks on Linux
Reading and writing crontab syntax, avoiding the classic missing-PATH mistake, and knowing when systemd timers are the better choice.
-
PHP Sessions vs Cookies: What to Use and When
Why sessions and cookies solve different problems in PHP, and why sensitive data should never live in a plain cookie.
-
RESTful API Design Best Practices
RESTful API design best practices: resource-based URLs, proper HTTP methods, and the status codes worth using precisely, not loosely.
-
CSS Units Explained: px, rem, em, vw, and When to Use Each
CSS units explained: why rem respects user accessibility settings in a way px never can, and when to reach for each unit.
-
ONNX Explained: Portable AI Models Across Frameworks
ONNX explained: how it lets a model trained in one framework run efficiently across genuinely diverse deployment targets.
-
A Brief History of JavaScript and ECMAScript Versions
A brief history of JavaScript and ECMAScript versions, from the abandoned ES4 through ES2015’s massive overhaul to today’s yearly releases.
-
How AI-Powered Personalization Engines Work
How AI-powered personalization engines work, and the real trade-offs — filter bubbles, explainability, cold start — compared to traditional static segmentation.
-
What AI Code Generation Still Gets Wrong
What AI code generation still genuinely gets wrong: security patterns, outdated APIs, and subtle logic errors that pass a casual glance.
-
Responsive Web Design with CSS Media Queries
Responsive design with CSS media queries, why mobile-first tends to produce cleaner CSS, and querying beyond just viewport width.
-
Content Security Policy (CSP) Explained
Content Security Policy explained: how it adds a second defense layer against XSS beyond output escaping, and how to roll one out safely.
-
Float-Based Layouts: How CSS Worked Before Flexbox and Grid
How float-based layouts worked before Flexbox and Grid, including the clearfix hack — and why they were genuinely painful.
-
An Introduction to WebSockets for Real-Time Apps
Building a minimal WebSocket server and client, handling reconnection properly, and knowing when Server-Sent Events are the simpler right tool instead.
-
ES6 Classes in JavaScript Explained
ES6 classes in JavaScript explained, including genuinely private fields and how classes relate to the underlying prototype system.
-
Git Rebase vs Merge: When to Use Which
What git merge and git rebase actually do to your commit history, the golden rule about shared branches, and a practical default for when to use…
-
Writing Accessible CSS: Focus States and Color Contrast
Writing accessible CSS: why removing focus outlines breaks keyboard navigation, and how :focus-visible fixes it properly.
-
CSS Blend Modes and Filters Explained
CSS blend modes and filters explained, including the backdrop-filter property behind the popular frosted-glass UI effect.
-
JavaScript’s Prototypal Inheritance Explained
JavaScript’s prototypal inheritance explained, and why class syntax is really just sugar over the same prototype chain lookup.
-
Understanding Big-O Notation Without the Math Anxiety
Big-O notation without the formal math: what O(1), O(log n), O(n), and O(n²) actually mean, with real code examples showing why the difference matters.
-
Idempotency in APIs: Why It Matters
Idempotency in APIs explained through payment processing, and why POST requests specifically need an explicit idempotency key.
-
Building an AI-Powered Slack Bot
Building an AI-powered Slack bot, and what turns a basic demo into something genuinely useful: grounding, thread awareness, and honest scope limits.
-
Writing Safe, Idempotent Database Migrations
Writing idempotent database migrations that are safe to re-run, and why this matters for automated deployment pipeline reliability, not just manual errors.
-
Functional Programming Concepts Every Developer Should Know
Pure functions, immutability, and higher-order functions explained with real JavaScript — and why they’re worth adopting even outside a purely functional language.
-
Observability 101: Logs, Metrics, and Traces Explained
Observability’s three pillars — logs, metrics, and traces — explained by what each one is actually good for, and why you need all three.
-
Connecting to MySQL from PHP with PDO
Connecting to MySQL from PHP with PDO, and why prepared statements should be non-negotiable for any query touching user input.
-
Writing Commit Messages That Actually Help Future You
Writing commit messages that actually help — why the message’s job is capturing the “why” the diff already can’t show.
-
Using MySQL Full-Text Search Instead of a Search Engine
Using MySQL’s built-in FULLTEXT search as a lighter alternative to Elasticsearch for small-to-medium datasets.
-
Error Handling in JavaScript: try/catch and Custom Errors
Error handling in JavaScript with try/catch, custom error classes, and handling async errors correctly around await.
-
Using Regular Expressions in PHP with the preg Functions
Using PHP’s preg_ functions for pattern matching, extraction, and replacement, with practical examples of each.
-
Fine-Tuning a Small Language Model with LoRA
How LoRA makes LLM fine-tuning practical on a single consumer GPU by training small adapter matrices instead of the full model, with a working PEFT example.
-
Understanding Design Patterns: Singleton, Factory, and Observer
Singleton, Factory, and Observer explained with real code — what problem each one actually solves, and when they’re the wrong tool.
-
An Introduction to Property-Based Testing
An introduction to property-based testing: verifying general properties across hundreds of generated inputs instead of hand-picked examples.
-
CSS Reset vs Normalize.css: What’s the Difference
CSS Reset vs Normalize.css: the philosophical difference between stripping all defaults and just making them consistent.
-
PHP Static vs Instance Methods and Properties
The practical difference between PHP static and instance methods, and when each one actually makes sense.
-
MySQL Views: What They Are and When to Use Them
MySQL views explained: hiding complex joins behind a simple name, and why views don’t cache results by default.
-
Native CSS Nesting: What Changed and How to Use It
Native CSS nesting explained: how it works without a build step, and the small parsing differences from Sass nesting to watch for.
-
Drawing Graphics with the JavaScript Canvas API
JavaScript Canvas API basics: drawing shapes and building a smooth animation loop with requestAnimationFrame.
-
Windows Remote Management (WinRM) Explained
WinRM and PowerShell Remoting explained: running commands across many Windows servers at once, and the security considerations that matter.
-
Using Generated Columns in MySQL
Using generated columns in MySQL to keep computed values automatically in sync, and the STORED vs VIRTUAL trade-off.
-
A Practical Cheat Sheet for JavaScript Array Methods
A practical cheat sheet of JavaScript’s array methods, including the sort() mutation gotcha that catches a lot of developers.
-
Knowledge Graphs vs Vector Search: Different Approaches to AI Retrieval
Knowledge graphs vs vector search: explicit structured relationships versus semantic similarity, and why modern retrieval systems increasingly combine both.
-
Client-Side Form Validation with JavaScript
Client-side form validation with JavaScript, and why native HTML validation attributes should be your first layer of defense.
-
JavaScript Strict Mode: What It Actually Changes
What JavaScript strict mode actually changes, and why ES modules and classes are automatically strict without needing the directive.
-
Every Way to Center a Div in CSS, Compared
Every practical way to center a div in CSS, compared — from the old positioning tricks to the modern one-liner with Grid.