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()vswhereRelation(): Readability Over Shortcuts- Laravel Cache Tip: Avoid Redundant has/missing Calls
- Why
telescope:clearIs Slow and How to Reclaim Disk in Seconds - 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
whereFulltextand RefreshDatabase - Detecting Forbidden Functions in Laravel with PHPUnit
- Laravel Validation
after()- After What, Exactly?
hash_equals('', '')Is true: When an Empty Config Opens Basic Auth- bcrypt and Laravel: 72 Bytes, Not 72 Characters
- Composer Update Is Not Safe Anymore
- 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? - PHP Generics Already Exist: They're Just Hidden in PHPDoc
- 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
- Pessimistic & Optimistic Locking in Laravel
- Should You Use Laravel Seeders/Factories in Production?
- Tip for Using
incrementEachin Laravel - Reincarnating a Decade-Old jQuery Project
- Hunting Elephants Again: Reviving a Dead Travian Bot with an AI Agent
- Efficiently Managing Telescope Entries with laravel-telescope-flusher
- Managing Mailboxes in Laravel Using ImapEngine
- wayback-video: Turn Any Site's History into a Video
- 2026-04 - Why
telescope:clearIs Slow and How to Reclaim Disk in Seconds - source - 2026-04 - Laravel
whereDate()Silently Kills Your Index - source - 2026-01 -
whereHas()vswhereRelation(): Readability Over Shortcuts - source - 2025-11 - Don't Let Your Staging Server Die: Separate Task Scheduling in Laravel - source
- 2025-09 - Laravel Cache Tip: Avoid Redundant has/missing Calls - source
- 2025-08 - Optimize Vendor Folder Size - source
- 2026-01 - Why Laravel Can't Guess Your Factory Relationships - source
- 2026-01 - Stop Flaky Tests: Freeze Time in Laravel Testing - source
- 2025-11 - Laravel Validation
after()- After What, Exactly? - source - 2025-03 - Detecting Forbidden Functions in Laravel with PHPUnit - source
- 2025-02 - Using PHP Backed Enums in Laravel with Testing - source
- 2025-02 - Hidden Issue with
whereFulltextand 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
- 2026-08 -
hash_equals('', '')Is true: When an Empty Config Opens Basic Auth - source - 2026-06 - bcrypt and Laravel: 72 Bytes, Not 72 Characters - source
- 2026-06 - Composer Update Is Not Safe Anymore - source
- 2025-11 - From 20 to 24 LTS: Safe Way to Upgrade Ubuntu on DigitalOcean - source
- 2024-12 - Seamless Nuxt 2 Deployment: A Step-by-Step Guide with GitLab CI/CD and DigitalOcean - source
- 2026-06 - PHP Generics Already Exist: They're Just Hidden in PHPDoc - 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
- 2025-12 - PHP 8.5 Pipe Operator (
|>) - Is It Worth Using? - source
- 2026-07 - Hunting Elephants Again: Reviving a Dead Travian Bot with an AI Agent - source
- 2026-05 - Reincarnating a Decade-Old jQuery Project - source
- 2026-04 -
$fillableHas No Context: Why Mass Assignment Breaks Down at Scale - source - 2025-10 - Battling Laravel's Sneaky DELETEs: How I Got ORDER BY and LIMIT to Play Nice with Joins - 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-02 - Tip for Using
incrementEachin Laravel - source - 2025-02 - Detect Unused Classes in Laravel - source