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

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

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
Suspend a user in Laravel without deleting them

Suspend a user in Laravel without deleting them

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

Dev Log: 2026-07-14

Comments
3 min read
The Reconciler Pattern: When a Queued Job Simply Never Runs

The Reconciler Pattern: When a Queued Job Simply Never Runs

1
Comments 1
3 min read
Dev Log: 2026-07-09 — one source of truth, three times over

Dev Log: 2026-07-09 — one source of truth, three times over

Comments
2 min read
One config, three surfaces: a registry-driven sidebar switcher in Laravel

One config, three surfaces: a registry-driven sidebar switcher in Laravel

1
Comments
2 min read
When a password sync is 'partly done', it's a bug: converging on one canonical flow

When a password sync is 'partly done', it's a bug: converging on one canonical flow

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

Dev Log: 2026-07-07

1
Comments
2 min read
Killing à-la-carte: migrating a feature-gating model to plans-only

Killing à-la-carte: migrating a feature-gating model to plans-only

Comments
3 min read
Dev Log: 2026-07-06

Dev Log: 2026-07-06

Comments
2 min read
The Blade Gotcha That 500s Your Page: Directives Inside Component Attributes

The Blade Gotcha That 500s Your Page: Directives Inside Component Attributes

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

Dev Log: 2026-07-05

Comments
2 min read
A Cookie-Free Embeddable Support Widget: What Adversarial Review Caught

A Cookie-Free Embeddable Support Widget: What Adversarial Review Caught

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

Dev Log: 2026-07-04

Comments
2 min read
Offline-First Check-In: A Laravel API That Survives Venue Wi-Fi

Offline-First Check-In: A Laravel API That Survives Venue Wi-Fi

1
Comments
2 min read
Setting Up BayarCash (FPX) in Laravel the Right Way

Setting Up BayarCash (FPX) in Laravel the Right Way

Comments
6 min read
Dev Log: 2026-07-03 — idempotent syncs, mail you can trace, and drain-not-delete

Dev Log: 2026-07-03 — idempotent syncs, mail you can trace, and drain-not-delete

Comments
2 min read
Idempotent gateway sync: adopt on conflict, paginate for real, and never widen scope

Idempotent gateway sync: adopt on conflict, paginate for real, and never widen scope

Comments
3 min read
Delivered, opened, clicked: mail tracking in Laravel with zero external services

Delivered, opened, clicked: mail tracking in Laravel with zero external services

Comments 1
3 min read
Making a datatable keyboard-usable: focus traps and arrow-key row reorder

Making a datatable keyboard-usable: focus traps and arrow-key row reorder

Comments
3 min read
Dev Log: 2026-07-02 — disable means drain, and case never matters

Dev Log: 2026-07-02 — disable means drain, and case never matters

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

Dev Log: 2026-07-01

Comments
2 min read
Killing @if($isTailwind) in Blade: a theme-class seam for Livewire tables

Killing @if($isTailwind) in Blade: a theme-class seam for Livewire tables

Comments
3 min read
Dev Log: 2026-06-30

Dev Log: 2026-06-30

Comments
2 min read
Forking laravel-livewire-tables for Laravel 13 + Livewire 4

Forking laravel-livewire-tables for Laravel 13 + Livewire 4

Comments
3 min read
Resolve the tenant from the user, not the request

Resolve the tenant from the user, not the request

Comments
2 min read
When a KPI reads 163 billion instead of 819

When a KPI reads 163 billion instead of 819

Comments
2 min read
Dev Log: 2026-06-29

Dev Log: 2026-06-29

Comments
2 min read
Dev Log: 2026-06-28

Dev Log: 2026-06-28

Comments
2 min read
Dev Log: 2026-06-27

Dev Log: 2026-06-27

Comments
2 min read
loading...