I'm a Laravel/PHP backend engineer. I write about the gotchas, perf cliffs, and quiet design choices production teaches you. The stuff framework docs skip.
- Articles: dev.to/tegos
- LinkedIn: linkedin.com/in/tegos
- Personal GitHub: github.com/tegos
Each post is its own repo. Prose in 1-article.md, runnable code when it helps, MIT.
- PHP 8.5 Pipe Operator (
|>) — Is It Worth Using? — Benchmarked it inside a Laravel app. The verdict surprised me. - Why I Avoid PHP Traits (And What I Use Instead) — Look like reuse, behave like inheritance, kill testability.
- Don't Let Your Staging Server Die: Separate Task Scheduling in Laravel — One config flag that stops staging from chewing through resources for nothing.
- Battling Laravel's Sneaky DELETEs — What happens when
ORDER BY+LIMIT+ joins hit Eloquent's DELETE. - Laravel Actions and Services — When to reach for an Action vs a Service. Plus the mental model that keeps them from collapsing into each other.
- Reincarnating a Decade-Old jQuery Project — Case study. Ported a client app from jQuery + sprite atlas to Vue 3 + TS + Pinia. Side-by-side GIFs.
- Laravel
whereDate()Silently Kills Your Index - whereHas() vs whereRelation(): Readability Over Shortcuts
- Laravel Cache Tip: Avoid Redundant has/missing Calls
- Why telescope:clear Is Slow and How to Reclaim Disk in Seconds
- Efficiently Managing Telescope Entries with laravel-telescope-flusher
- Optimize Vendor Folder Size
- Don't Let Your Staging Server Die: Separate Task Scheduling
- How to Test for Equal JSON Columns in Laravel Models
- Testing Temporary URLs in Laravel Storage
- Freezing Time: Testing Laravel Temporary Storage URLs
- Stop Flaky Tests: Freeze Time in Laravel
- Using PHP Backed Enums in Laravel with Testing
- Why Laravel Can't Guess Your Factory Relationships
- Hidden Issue with whereFulltext and RefreshDatabase
- Detecting Forbidden Functions in Laravel with PHPUnit
- Laravel Validation
after()— After What, Exactly?
- From 20 to 24 LTS: Safe Way to Upgrade Ubuntu on DigitalOcean
- Seamless Nuxt 2 Deployment with GitLab CI/CD and DigitalOcean
- PHP 8.5 Pipe Operator — Is It Worth Using?
- Why I Avoid PHP Traits (And What I Use Instead)
- PHP Enums Are Not Your Bottleneck (Here's Proof)
- Laravel Actions and Services
- Battling Laravel's Sneaky DELETEs
$fillableHas No Context: Why Mass Assignment Breaks Down at Scale- Detect Unused Classes in Laravel
- Managing Hierarchical Data in Laravel
- Managing Mailboxes in Laravel Using ImapEngine
- Pessimistic & Optimistic Locking in Laravel
- Should You Use Laravel Seeders/Factories in Production?
- Tip for Using
incrementEachin Laravel - Reincarnating a Decade-Old jQuery Project
- 2026-05 — Reincarnating a Decade-Old jQuery Project — source
- 2026-04 — Why telescope:clear Is Slow and How to Reclaim Disk in Seconds — source
- 2026-04 — Laravel
whereDate()Silently Kills Your Index — source - 2026-04 —
$fillableHas No Context: Why Mass Assignment Breaks Down at Scale — source - 2026-03 — PHP Enums Are Not Your Bottleneck (Here's Proof) — source
- 2026-02 — Why I Avoid PHP Traits (And What I Use Instead) — source
- 2026-01 — Why Laravel Can't Guess Your Factory Relationships — source
- 2026-01 — Stop Flaky Tests: Freeze Time in Laravel Testing — source
- 2026-01 — whereHas() vs whereRelation(): Readability Over Shortcuts — source
- 2025-12 — PHP 8.5 Pipe Operator (
|>) — Is It Worth Using? — source - 2025-11 — Don't Let Your Staging Server Die: Separate Task Scheduling in Laravel — source
- 2025-11 — From 20 to 24 LTS: Safe Way to Upgrade Ubuntu on DigitalOcean — source
- 2025-11 — Laravel Validation
after()— After What, Exactly? — source - 2025-10 — Battling Laravel's Sneaky DELETEs — source
- 2025-09 — Laravel Cache Tip: Avoid Redundant has/missing Calls — source
- 2025-08 — Optimize Vendor Folder Size — source
- 2025-08 — Laravel Actions and Services — source
- 2025-06 — Managing Hierarchical Data in Laravel — source
- 2025-04 — Pessimistic & Optimistic Locking in Laravel — source
- 2025-04 — Should You Use Laravel Seeders/Factories in Production? — source
- 2025-03 — Managing Mailboxes in Laravel Using ImapEngine — source
- 2025-03 — Detecting Forbidden Functions in Laravel with PHPUnit — source
- 2025-03 — Efficiently Managing Telescope Entries — source
- 2025-02 — Tip for Using
incrementEachin Laravel — source - 2025-02 — Detect Unused Classes in Laravel — source
- 2025-02 — Using PHP Backed Enums in Laravel with Testing — source
- 2025-02 — Hidden Issue with whereFulltext and RefreshDatabase in Laravel — source
- 2025-01 — Freezing Time: Testing Laravel Temporary Storage URLs — source
- 2025-01 — Testing Temporary URLs in Laravel Storage — source
- 2025-01 — How to Test for Equal JSON Columns in Laravel Models — source
- 2024-12 — Seamless Nuxt 2 Deployment with GitLab CI/CD and DigitalOcean — source