$ ls -la ~/blog
# Blog
// notes from the trenches
Stop Cloning Your Repos: A Guide to Git Worktrees for Heavy Monoliths and AI Agents
// A practical guide to using git worktrees instead of repo clones for parallel development and AI coding agents, including a Docker/Postgres architecture for running heavy monolith stacks side-by-side without melting your laptop.
AWS Bedrock & Tool Use with Laravel
// A guide to building agentic workflows in Laravel by wiring up AWS Bedrock's Tool Use with the Converse API, letting models like Claude request PHP function calls in a loop.
OAuth 2.0 Flows Explained: SPA Authentication & Beyond
// Not all OAuth 2.0 flows are created equal — a breakdown of Authorization Code with PKCE, standard Authorization Code, Client Credentials, and why Implicit and ROPC should be avoided, with a focus on securing Single Page Applications.
Kumander: A Command-Line Tool for Managing Terminal Commands
// Transform Complex Commands into Simple Actions
Brief Guide to Integrating OpenID Connect with Laravel Passport
// A practical walkthrough for adding OpenID Connect identity features on top of Laravel Passport, from package selection to security hardening.
Simultaneously Using Python 2 and Python 3 with pyenv
// Using Python 2 and Python 3 Simultaneously with pyenv
Laravel 8 and Bootstrap
// A guide in using the old default Bootstrap 4 in Laravel 8
Laravel Syntax error or access violation: 1231 Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'
// Fixing a Laravel migration error caused by MySQL 8's deprecated NO_AUTO_CREATE_USER sql_mode.
A sneak peek into TrenchDevs
// What a registered TrenchDevs user sees