Notebook
203 entries across 20 topics. A running log of what I'm building, learning, and breaking.
Topics
AI23
entries
APIS22
entries
Architecture1
entry
Career24
entries
Deployments8
entries
Design Patterns8
entries
Docker2
entries
GCP1
entry
Git12
entries
Github1
entry
Good Code10
entries
Laravel25
entries
Next.js17
entries
Observability5
entries
PHP3
entries
Project Docs7
entries
React29
entries
Tools2
entries
TypeScript4
entries
Vscode1
entry
Recent entries
IDTitleTopicDateRead
#203What to Do If You're Not Detail OrientedCareerCareer08 Jun3m#202How to Stay Resilient in a Difficult Engineering JobCareerCareer06 Jun9m#201Agentic Engineering PatternsAIAI05 Jun8m#200AI Ate the Translation LayerAIAI03 Jun7m#199Why Smaller Teams Will Win With AIAIAI02 Jun17m#198AI Code Review: Pre-Existing Bugs as a Side QuestAIAI01 Jun6m#197Software Factory: Build Factories, Not FeaturesAIAI01 Jun8m#196Small npm Packages Are Mostly DeadAIAI30 May7m#195The Four Levels of Working with AIAIAI30 May5m#194What Happens to Developers Who Don't Adapt to AIAIAI30 May7m#193Software Ecology and the 10x MomentAIAI29 May10m#192How AI Agents Made Me CLI-FirstAIAI27 May9m#191How I Build Software With Agent LoopsAIAI27 May10m#190Higher-Order Components and Why Hooks Replaced ThemReactReact25 May4m#189Pure Components and Why Purity Matters in ReactReactReact18 May4m#188React Fragments and When You Actually Need ThemReactReact11 May4m#187Refs and when useRef beats useStateReactReact07 May4m#186Default Props and Optional Props in ReactReactReact01 May4m#185Handling Form Submission in ReactReactReact30 Apr3m#184Client-side validation before Server Actions in Next.jsNext.jsNext.js29 Apr3m#183Type-Safe Adapter Registries with as const and satisfiesTypeScriptTypeScript29 Apr4m#182Using Service Interfaces and Null Objects for Resilient TypeScript ScriptsTypeScriptTypeScript29 Apr5m#181Validating Multi-Provider Credentials with Zod Discriminated UnionsTypeScriptTypeScript27 Apr4m#180Building a URL Shortener with Next.jsNext.jsNext.js22 Apr5m#179Magic Link Authentication in Next.jsAPISAPIS22 Apr4m#178API Key Management in Next.jsAPISAPIS21 Apr5m#177Transactional Email with Resend and React EmailNext.jsNext.js21 Apr4m#176Type Annotations vs Type Inference: When to Write the TypeTypeScriptTypeScript21 Apr4m#175The Compound Component Pattern in ReactReactReact20 Apr3m#174The Render Prop Pattern in ReactReactReact20 Apr5m#173useReducer for Complex StateReactReact19 Apr3m#172The React Context API: Shared State Without a LibraryReactReact18 Apr4m#171Dynamic OG Images in Next.js with opengraph-image.tsxNext.jsNext.js17 Apr4m#170Lifting State Up in ReactReactReact17 Apr4m#169Conditional Rendering Patterns in ReactReactReact16 Apr4m#168Lists and Keys in React: Why They Actually MatterReactReact15 Apr5m#167Why Dyslexia Made Me a Better Software EngineerCareerCareer15 Apr6m#166Event Handling in ReactReactReact14 Apr4m#165Git Commands for Reading New CodebasesGitGit14 Apr7m#164Props, Children, and Component Composition in ReactReactReact13 Apr4m#163Extracting a Queries Layer from Next.js Server ComponentsNext.jsNext.js12 Apr3m#162The Virtual DOM and How React Reconciliation WorksReactReact12 Apr5m#161useState and the Mental Model of StateReactReact11 Apr4m#160Avoiding Unnecessary Rerenders in ReactReactReact08 Apr3m#159Composition Over Prop Drilling in ReactReactReact08 Apr3m#158Controlled vs Uncontrolled Forms in ReactReactReact08 Apr5m#157Custom Hooks: Naming and StructureReactReact08 Apr4m#156Deploying Next.js to Cloudflare PagesNext.jsNext.js08 Apr4m#155Error and Not-Found Pages in the App RouterNext.jsNext.js08 Apr4m#154Fetching Data in Server ComponentsNext.jsNext.js08 Apr4m#153generateStaticParams and Static ExportNext.jsNext.js08 Apr4m#152Image Optimisation in Next.jsNext.jsNext.js08 Apr5m#151Incremental Static Regeneration ExplainedNext.jsNext.js08 Apr4m#150Middleware Patterns in Next.jsNext.jsNext.js08 Apr4m#149React Error Boundaries in PracticeReactReact08 Apr4m#148React Server Components vs Client ComponentsReactReact08 Apr3m#147Route Handlers vs Server ActionsNext.jsNext.js08 Apr3m#146Server Actions in Next.js 15Next.jsNext.js08 Apr4m#145State Management Without ReduxReactReact08 Apr4m#144Streaming and Suspense in Next.jsNext.jsNext.js08 Apr4m#143Structuring Large React AppsReactReact08 Apr4m#142Testing React Components with Vitest and Testing LibraryReactReact08 Apr4m#141The Metadata API and SEO in Next.jsNext.jsNext.js08 Apr3m#140The Next.js App Router Mental ModelNext.jsNext.js08 Apr4m#139The React Suspense Mental ModelReactReact08 Apr4m#138useEffect Mistakes I Stopped MakingReactReact08 Apr4m#137When to Use useMemo and useCallbackReactReact08 Apr4m#136Docker Compose HealthchecksDockerDocker31 Mar4m#135Template Method Design PatternDesign PatternsDesign Patterns31 Mar5m#134Testing in LaravelLaravelLaravel27 Mar3m#133LinkedIn ProfileCareerCareer20 Mar3m#132AI Job InterviewsAIAI19 Mar6m#131Everything Is Markdown NowAIAI19 Mar6m#130SaaS vs Open Source in the Age of AI CodingCareerCareer19 Mar8m#129Software Engineering in the Age of AIAIAI19 Mar7m#128A Reusable PRD Framework for Standard SaaS FeaturesProject DocsProject Docs17 Mar13m#127Project SpecProject DocsProject Docs17 Mar3m#126Website Go Live ChecklistDeploymentsDeployments17 Mar2m#125Adapter Design PatternDesign PatternsDesign Patterns16 Mar5m#124AI RulesAIAI16 Mar2m#123Contextual Attributes in LaravelLaravelLaravel16 Mar2m#122GitHub ProfileCareerCareer16 Mar2m#121Laravel Pint: Code Style FormattingLaravelLaravel16 Mar4m#120Rector: Automated PHP Code RefactoringPHPPHP16 Mar5m#119Scheduled Tasks in LaravelLaravelLaravel16 Mar2m#118Security Headers in LaravelLaravelLaravel16 Mar3m#117VSCode SettingsVscodeVscode16 Mar1m#116Agent SkillsAIAI13 Mar23m#115Claude Sub-AgentsAIAI13 Mar10m#114PHPStan: Static Analysis for PHPPHPPHP08 Mar5m#113Rate Limiting in LaravelLaravelLaravel08 Mar2m#112CLAUDE.md FileAIAI07 Mar3m#111Builder Design PatternDesign PatternsDesign Patterns05 Mar2m#110CI/CDDeploymentsDeployments05 Mar2m#109ContainerisationDeploymentsDeployments05 Mar4m#108Git Branching StrategiesGitGit05 Mar2m#107Managing Cognitive Load in CodeGood CodeGood Code05 Mar5m#106A/B Testing DeploymentsDeploymentsDeployments02 Mar3m#105Actions Pattern in PHPGood CodeGood Code02 Mar1m#104AlertingObservabilityObservability02 Mar2m#103API CachingAPISAPIS02 Mar2m#102API Consistency RulesAPISAPIS02 Mar2m#101API Deprecation ProcessAPISAPIS02 Mar2m#100API Error HandlingAPISAPIS02 Mar2m#099API Field Naming ConsistencyAPISAPIS02 Mar2m#098API IdempotencyAPISAPIS02 Mar2m#097API Rate Limiting and ThrottlingAPISAPIS02 Mar2m#096Architecture Decision Record TemplateProject DocsProject Docs02 Mar2m#095Architecture Decision Records: A Practical GuideArchitectureArchitecture02 Mar5m#094Architecture DocumentationProject DocsProject Docs02 Mar2m#093Authentication and TokensAPISAPIS02 Mar2m#092Avoiding N+1 Queries in LaravelLaravelLaravel02 Mar3m#091AWS Cloud Practitioner Essentials: Module 4 - Going GlobalCareerCareer02 Mar2m#090AWS Cloud Practitioner Essentials: Module 5 - NetworkingCareerCareer02 Mar4m#089AWS Cloud Practitioner Essentials: Module 6 - StorageCareerCareer02 Mar6m#088AWS Cloud Practitioner Essentials: Module 7 - DatabasesCareerCareer02 Mar3m#087AWS Cloud Practitioner: Module 1 - Introduction to the CloudCareerCareer02 Mar3m#086AWS Cloud Practitioner: Module 2 - Compute in the CloudCareerCareer02 Mar4m#085AWS Cloud Practitioner: Module 3 - Exploring Compute ServicesCareerCareer02 Mar3m#084AWS Cloud Practitioner: Module 8 - AI/ML and Data AnalyticsCareerCareer02 Mar4m#083Blue/Green DeploymentDeploymentsDeployments02 Mar2m#082Bridge Design PatternDesign PatternsDesign Patterns02 Mar3m#081Business ToolsToolsTools02 Mar4m#080Cache Invalidation Strategies in LaravelLaravelLaravel02 Mar3m#079Caching in LaravelLaravelLaravel02 Mar3m#078Canary DeploymentDeploymentsDeployments02 Mar3m#077Change the Origin of a Git RepositoryGitGit02 Mar2m#076ChangelogProject DocsProject Docs02 Mar2m#075Choosing the Right Company Size as a Software EngineerCareerCareer02 Mar4m#074Claude ModelsAIAI02 Mar3m#073Clean Up DockerDockerDocker02 Mar2m#072Core HTTP MethodsAPISAPIS02 Mar2m#071Create a Brag DocumentCareerCareer02 Mar2m#070Creating a Software Developer CVCareerCareer02 Mar6m#069Creating Pull RequestsGitGit02 Mar4m#068Custom Collections in LaravelLaravelLaravel02 Mar2m#067Data Transfer Objects (DTO)Good CodeGood Code02 Mar2m#066Datetime Handling in REST APIsAPISAPIS02 Mar2m#065Domain-Driven DesignGood CodeGood Code02 Mar6m#064Eloquent Builder vs Scopes in LaravelLaravelLaravel02 Mar2m#063End of Contract ChecklistCareerCareer02 Mar3m#062EnvironmentsProject DocsProject Docs02 Mar3m#061Feature TogglesDeploymentsDeployments02 Mar2m#060Filtering, Sorting, and PaginationAPISAPIS02 Mar2m#059Form Request Validation Patterns in LaravelLaravelLaravel02 Mar2m#058FreelancingCareerCareer02 Mar3m#057GCP VM Port ForwardingGCPGCP02 Mar2m#056Git HooksGitGit02 Mar3m#055Git ToolsToolsTools02 Mar3m#054Gitflow Branching ModelGitGit02 Mar3m#053GitHub Copilot Instructions TemplateAIAI02 Mar5m#052Health ChecksObservabilityObservability02 Mar4m#051Health Checks in LaravelLaravelLaravel02 Mar2m#050Immutable Dates in LaravelLaravelLaravel02 Mar2m#049Including Related Data in API ResponsesAPISAPIS02 Mar2m#048Infrastructure as CodeDeploymentsDeployments02 Mar3m#047InterviewingCareerCareer02 Mar2m#046Job BoardsCareerCareer02 Mar2m#045Laravel Coding StandardsLaravelLaravel02 Mar4m#044Logging in LaravelLaravelLaravel02 Mar2m#043Logging in Your ApplicationObservabilityObservability02 Mar4m#042Mass Assignment Guarding in LaravelLaravelLaravel02 Mar2m#041MonitoringObservabilityObservability02 Mar5m#040Monitoring and Alerting in LaravelLaravelLaravel02 Mar3m#039Performance Improvements in LaravelLaravelLaravel02 Mar2m#038Permanent vs ContractingCareerCareer02 Mar32m#037PHP Coding StandardsPHPPHP02 Mar3m#036Pull Request TemplateGithubGithub02 Mar2m#035Queues in LaravelLaravelLaravel02 Mar2m#034Read/Write Database Splitting in LaravelLaravelLaravel02 Mar2m#033Remote-Friendly CompaniesCareerCareer02 Mar24m#032Repository PatternGood CodeGood Code02 Mar3m#031REST API DocumentationAPISAPIS02 Mar2m#030REST API HTTP Status CodesAPISAPIS02 Mar3m#029REST API Pre-Release ChecklistAPISAPIS02 Mar2m#028REST API Resource NamingAPISAPIS02 Mar1m#027REST API Response ShapeAPISAPIS02 Mar1m#026REST API Security BasicsAPISAPIS02 Mar2m#025REST API Validation ErrorsAPISAPIS02 Mar2m#024REST API VersioningAPISAPIS02 Mar2m#023Reviewing Pull RequestsGitGit02 Mar7m#022Route Organisation and Naming in LaravelLaravelLaravel02 Mar2m#021Runbook TemplateObservabilityObservability02 Mar4m#020Salary ResearchCareerCareer02 Mar1m#019Secrets and Config Validation in LaravelLaravelLaravel02 Mar2m#018Simple Factory Design PatternDesign PatternsDesign Patterns02 Mar1m#017Singleton Design PatternDesign PatternsDesign Patterns02 Mar1m#016SOLID PrinciplesGood CodeGood Code02 Mar4m#015Spec-Driven Development with AIAIAI02 Mar3m#014Stacked Pull RequestsGitGit02 Mar3m#013State Design PatternDesign PatternsDesign Patterns02 Mar4m#012Strategy Design PatternDesign PatternsDesign Patterns02 Mar5m#011Tech Stack DocumentProject DocsProject Docs02 Mar3m#010The Twelve-Factor AppGood CodeGood Code02 Mar4m#009Trunk-Based DevelopmentGitGit02 Mar3m#008Using .env in LaravelLaravelLaravel02 Mar2m#007Using Multiple SSH KeysGitGit02 Mar3m#006Value ObjectsGood CodeGood Code02 Mar2m#005VersioningGitGit02 Mar2m#004Working with Large Datasets in LaravelLaravelLaravel02 Mar3m#003Working With Third PartiesGood CodeGood Code02 Mar1m#002Writing Good Commit MessagesGitGit02 Mar3m#001YAGNIGood CodeGood Code02 Mar1m