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
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

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
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
Dev Log: 2026-07-23 — a portfolio-wide SEO pass

Dev Log: 2026-07-23 — a portfolio-wide SEO pass

Comments
2 min read
Admin-editable SEO & analytics without touching .env

Admin-editable SEO & analytics without touching .env

Comments
3 min read
One folder shape for every course: a lifecycle monorepo convention

One folder shape for every course: a lifecycle monorepo convention

Comments
3 min read
Stop Screenshotting Architecture Diagrams: Build Them as Single-File HTML

Stop Screenshotting Architecture Diagrams: Build Them as Single-File HTML

3
Comments
3 min read
Ebook Reviewer Wanted: Help Me Find What's Gone Stale

Ebook Reviewer Wanted: Help Me Find What's Gone Stale

2
Comments
4 min read
Dev Log: 2026-07-19

Dev Log: 2026-07-19

Comments
2 min read
Building an Email Broadcast Engine That Survives Retries

Building an Email Broadcast Engine That Survives Retries

Comments
2 min read
Your Seeder Should Describe a Shape, Not Your Laptop

Your Seeder Should Describe a Shape, Not Your Laptop

2
Comments
3 min read
The differentiator test: if a rival can copy the claim, it isn't one

The differentiator test: if a rival can copy the claim, it isn't one

1
Comments 1
3 min read
Dev Log: 2026-07-16

Dev Log: 2026-07-16

Comments
2 min read
Dev Log: 2026-07-15

Dev Log: 2026-07-15

Comments
2 min read
loading...