DEV Community

Nasrul Hazim profile picture

Nasrul Hazim

Solution Architect & Software Engineer

Eight Year Club
Seven Year Club
Writing Debut
Six Year Club
Five Year Club
4 Week Writing Streak
1 Week Community Wellness Streak
Four Year Club
Three Year Club
Two Year Club
One Year Club
A Symlink Swap Is Not a Zero-Downtime Deploy

A Symlink Swap Is Not a Zero-Downtime Deploy

1
Comments
8 min read

Want to connect with Nasrul Hazim?

Create an account to connect with Nasrul Hazim. You can also sign in below to proceed if you already have an account.

Already have an account? Sign in
Dev Log: 30 August 2026 — Absence Is Not the Same as Zero

Dev Log: 30 August 2026 — Absence Is Not the Same as Zero

Comments
5 min read
A Credential Rotation Without an Overlap Is Just an Outage You Scheduled

A Credential Rotation Without an Overlap Is Just an Outage You Scheduled

Comments
6 min read
Dev Log: 29 August 2026 — Holes in the Ops Surface, and Docs That Lie

Dev Log: 29 August 2026 — Holes in the Ops Surface, and Docs That Lie

Comments
6 min read
CSP Broke Two of My Apps Today, in Opposite Directions

CSP Broke Two of My Apps Today, in Opposite Directions

Comments
4 min read
Every Card Drew Perfectly. Every Relation Was Gone.

Every Card Drew Perfectly. Every Relation Was Gone.

Comments
7 min read
All 112 Cards Drew Perfectly. All 161 Relations Were Gone.

All 112 Cards Drew Perfectly. All 161 Relations Were Gone.

Comments
6 min read
Dev Log: 27 August 2026 — Everything That Reported Success and Wasn't

Dev Log: 27 August 2026 — Everything That Reported Success and Wasn't

Comments
10 min read
My Payment Contract Was Typed on a Subscription. Ten Drivers Paid for It.

My Payment Contract Was Typed on a Subscription. Ten Drivers Paid for It.

Comments
7 min read
Dev Log: 26 August 2026 — Every Second Copy of a Rule Is a Future Disagreement

Dev Log: 26 August 2026 — Every Second Copy of a Rule Is a Future Disagreement

Comments
8 min read
I Couldn't Fix the Bug Until I Stopped Supporting the Old Major

I Couldn't Fix the Bug Until I Stopped Supporting the Old Major

Comments
5 min read
Dev Log: 25 August 2026 — Silent Failures, Double Counting, and Constraints You Can't Defend

Dev Log: 25 August 2026 — Silent Failures, Double Counting, and Constraints You Can't Defend

Comments
6 min read
My Test Suite Was Green Because Blade Never Recompiled

My Test Suite Was Green Because Blade Never Recompiled

Comments
5 min read
Dev Log: 2026-08-24 — Everything That Only Breaks in Production

Dev Log: 2026-08-24 — Everything That Only Breaks in Production

Comments
9 min read
Raw SQL in a Laravel Package? Ask the Grammar, Don't Assume MySQL

Raw SQL in a Laravel Package? Ask the Grammar, Don't Assume MySQL

Comments
5 min read
Your Package's CDN Link Is Your Host App's CSP Violation

Your Package's CDN Link Is Your Host App's CSP Violation

Comments
5 min read
Fail at Step 1, Not Step 14: Preflight Checks for Long Pipelines

Fail at Step 1, Not Step 14: Preflight Checks for Long Pipelines

Comments
6 min read
Dev Log: 2026-08-23 — Preflight Gates, a Second OS Family, and a Chess Engine Behind FFI

Dev Log: 2026-08-23 — Preflight Gates, a Second OS Family, and a Chess Engine Behind FFI

Comments
7 min read
Your OS Abstraction Isn't Real Until the Second Family Boots

Your OS Abstraction Isn't Real Until the Second Family Boots

Comments
7 min read
Dev Log: 2026-08-22 — Driver Seams, Apply-Then-Store, and Credentials That Retire

Dev Log: 2026-08-22 — Driver Seams, Apply-Then-Store, and Credentials That Retire

Comments
7 min read
Sanitize Twice: Why One Pass Isn't Enough for Rich-Text Email

Sanitize Twice: Why One Pass Isn't Enough for Rich-Text Email

Comments
5 min read
One Interface, Three Database Engines: Building the Driver Seam Before You Need It

One Interface, Three Database Engines: Building the Driver Seam Before You Need It

Comments
7 min read
Dev Log: 2026-08-21 — Native Deploys, Masked Env Vars, and Two Migration Papercuts

Dev Log: 2026-08-21 — Native Deploys, Masked Env Vars, and Two Migration Papercuts

1
Comments
6 min read
Deploying Without Docker: Model the Native Build as a Recipe, Not a Dockerfile

Deploying Without Docker: Model the Native Build as a Recipe, Not a Dockerfile

1
Comments
8 min read
Your Package's Blade View Should Not Know Your App Exists

Your Package's Blade View Should Not Know Your App Exists

1
Comments
4 min read
Three Clicks, Three Concurrent Builds: Move Long Work Out of the HTTP Request

Three Clicks, Three Concurrent Builds: Move Long Work Out of the HTTP Request

Comments
5 min read
Your SSH Command Timeout Is Probably a Budget, Not an Inactivity Window

Your SSH Command Timeout Is Probably a Budget, Not an Inactivity Window

Comments
5 min read
Dev Log: 2026-08-19 — the bugs that never threw

Dev Log: 2026-08-19 — the bugs that never threw

1
Comments
7 min read
Bolting a rich-text editor onto a column full of plain text

Bolting a rich-text editor onto a column full of plain text

Comments
7 min read
Brand Your Terminal: An Isometric ASCII Banner with a True-Color Gradient

Brand Your Terminal: An Isometric ASCII Banner with a True-Color Gradient

Comments
3 min read
Dev Log: 2026-08-18 — everything that had to survive being called twice

Dev Log: 2026-08-18 — everything that had to survive being called twice

Comments
6 min read
One person, one contact: deduping at the point of capture

One person, one contact: deduping at the point of capture

Comments
7 min read
Dev Log: 2026-08-13 — machines that state their own identity, and four fakes that certified nothing

Dev Log: 2026-08-13 — machines that state their own identity, and four fakes that certified nothing

Comments
8 min read
Ask the machine what it is before you change it

Ask the machine what it is before you change it

1
Comments
5 min read
Dev Log: 2026-08-11 — a tenant for every account, four frontend traps that never error, and the fourth comparison site

Dev Log: 2026-08-11 — a tenant for every account, four frontend traps that never error, and the fourth comparison site

1
Comments 1
7 min read
Dev Log: 2026-08-12 — a 96s suite that became 42s, a capability that wasn't a scope, and four steps to a passkey

Dev Log: 2026-08-12 — a 96s suite that became 42s, a capability that wasn't a scope, and four steps to a passkey

Comments
8 min read
Not Found is the wrong answer to a permission problem

Not Found is the wrong answer to a permission problem

Comments 1
10 min read
The deploy script that always said it worked

The deploy script that always said it worked

1
Comments
9 min read
Dev Log: 2026-08-10 — a toast that lied, an enum with a missing case, and a design system that finally has an address

Dev Log: 2026-08-10 — a toast that lied, an enum with a missing case, and a design system that finally has an address

1
Comments
5 min read
"3 skipped" tells the operator nothing

"3 skipped" tells the operator nothing

1
Comments
7 min read
Dev Log: 2026-08-09 — 72 classes that should have been 8 rows, and a compliance clock

Dev Log: 2026-08-09 — 72 classes that should have been 8 rows, and a compliance clock

Comments
5 min read
A driver that quietly does nothing is worse than one that isn't there

A driver that quietly does nothing is worse than one that isn't there

Comments
8 min read
Dev Log: 2026-08-08 — stubs that answer politely, and a CSS property that doesn't exist

Dev Log: 2026-08-08 — stubs that answer politely, and a CSS property that doesn't exist

Comments
4 min read
Which parts of this are real? Should be a question with an answer

Which parts of this are real? Should be a question with an answer

1
Comments
7 min read
Dev Log: 2026-08-07 — scrubbing secrets, reconciling drift, and extracting a book engine

Dev Log: 2026-08-07 — scrubbing secrets, reconciling drift, and extracting a book engine

Comments
3 min read
Drift detection and autoscaling are the same shape: ask the provider, then decide

Drift detection and autoscaling are the same shape: ask the provider, then decide

Comments
5 min read
Scrubbing secrets from logs: patterns catch what you didn't issue, literals catch the rest

Scrubbing secrets from logs: patterns catch what you didn't issue, literals catch the rest

Comments
5 min read
Dev Log: 2026-08-06 — Pest 5 everywhere, a build-preset registry, and an MCP server inside a Laravel app

Dev Log: 2026-08-06 — Pest 5 everywhere, a build-preset registry, and an MCP server inside a Laravel app

Comments
2 min read
One interface, many runtimes: a build-preset registry in Laravel

One interface, many runtimes: a build-preset registry in Laravel

Comments
3 min read
Putting an MCP server inside your Laravel app

Putting an MCP server inside your Laravel app

Comments
3 min read
Upgrading to Pest 5 and making --tia the default

Upgrading to Pest 5 and making --tia the default

Comments
3 min read
Two gotchas when your Laravel app shells out to a CLI

Two gotchas when your Laravel app shells out to a CLI

Comments
3 min read
Dev Log: 2026-08-05 — reverse proxies, email journeys, and a tenant that wasn't there

Dev Log: 2026-08-05 — reverse proxies, email journeys, and a tenant that wasn't there

Comments
2 min read
Dev Log: 2026-08-03 — a toolkit ships, drivers land, and quotas get real

Dev Log: 2026-08-03 — a toolkit ships, drivers land, and quotas get real

Comments
2 min read
Skills, Agents, Commands: turning a pile of prompts into a toolkit

Skills, Agents, Commands: turning a pile of prompts into a toolkit

Comments
3 min read
Skills Were Only Half the Answer: Upgrading to Agents, Skills and Commands

Skills Were Only Half the Answer: Upgrading to Agents, Skills and Commands

1
Comments 1
7 min read
Dev Log: 2026-07-31

Dev Log: 2026-07-31

Comments
2 min read
Stop hard-coding the model: resolve the configured one instead

Stop hard-coding the model: resolve the configured one instead

Comments
3 min read
Two IDs, One Row: Keeping Public UUIDs and Internal Keys From Leaking Into Each Other

Two IDs, One Row: Keeping Public UUIDs and Internal Keys From Leaking Into Each Other

Comments 1
3 min read
Shared-Database Multi-Tenancy in Laravel: The Foundation Layer

Shared-Database Multi-Tenancy in Laravel: The Foundation Layer

1
Comments
3 min read
loading...