Notebook
195 entries across 20 topics. A running log of what I'm building, learning, and breaking.
Topics
AI18
entries
APIS22
entries
Architecture2
entries
Career22
entries
Deployments8
entries
Design Patterns8
entries
Docker2
entries
GCP1
entry
Git12
entries
Github1
entry
Good Code10
entries
Laravel26
entries
Next.js17
entries
Observability5
entries
PHP4
entries
Project Docs7
entries
React25
entries
Tools2
entries
Typescript4
entries
Vscode1
entry
Recent entries
IDTitleTopicDateRead
#195Default Props and Optional Props in ReactReact01 May4m#194Handling Form Submission in ReactReact30 Apr3m#193Client-side validation before Server Actions in Next.jsNext.js29 Apr3m#192Type-Safe Adapter Registries with as const and satisfiesTypescript29 Apr4m#191Using Service Interfaces and Null Objects for Resilient TypeScript ScriptsTypescript29 Apr5m#190Validating Multi-Provider Credentials with Zod Discriminated UnionsTypescript27 Apr4m#189Building a URL Shortener with Next.jsNext.js22 Apr5m#188Magic Link Authentication in Next.jsAPIS22 Apr4m#187API Key Management in Next.jsAPIS21 Apr5m#186Transactional Email with Resend and React EmailNext.js21 Apr4m#185Type Annotations vs Type Inference: When to Write the TypeTypescript21 Apr4m#184The Compound Component Pattern in ReactReact20 Apr3m#183The Render Prop Pattern in ReactReact20 Apr5m#182useReducer for Complex StateReact19 Apr3m#181The React Context API: Shared State Without a LibraryReact18 Apr4m#180Dynamic OG Images in Next.js with opengraph-image.tsxNext.js17 Apr4m#179Lifting State Up in ReactReact17 Apr4m#178Conditional Rendering Patterns in ReactReact16 Apr4m#177Lists and Keys in React: Why They Actually MatterReact15 Apr5m#176Why Dyslexia Made Me a Better Software EngineerCareer15 Apr6m#175Event Handling in ReactReact14 Apr4m#174Git Commands for Reading New CodebasesGit14 Apr7m#173Props, Children, and Component Composition in ReactReact13 Apr4m#172Extracting a Queries Layer from Next.js Server ComponentsNext.js12 Apr3m#171The Virtual DOM and How React Reconciliation WorksReact12 Apr5m#170useState and the Mental Model of StateReact11 Apr4m#169Avoiding Unnecessary Rerenders in ReactReact08 Apr3m#168Composition Over Prop Drilling in ReactReact08 Apr3m#167Controlled vs Uncontrolled Forms in ReactReact08 Apr5m#166Custom Hooks: Naming and StructureReact08 Apr4m#165Deploying Next.js to Cloudflare PagesNext.js08 Apr4m#164Error and Not-Found Pages in the App RouterNext.js08 Apr4m#163Fetching Data in Server ComponentsNext.js08 Apr4m#162generateStaticParams and Static ExportNext.js08 Apr4m#161Image Optimisation in Next.jsNext.js08 Apr5m#160Incremental Static Regeneration ExplainedNext.js08 Apr4m#159Middleware Patterns in Next.jsNext.js08 Apr4m#158React Error Boundaries in PracticeReact08 Apr4m#157React Server Components vs Client ComponentsReact08 Apr3m#156Route Handlers vs Server ActionsNext.js08 Apr3m#155Server Actions in Next.js 15Next.js08 Apr4m#154State Management Without ReduxReact08 Apr4m#153Streaming and Suspense in Next.jsNext.js08 Apr4m#152Structuring Large React AppsReact08 Apr4m#151Testing React Components with Vitest and Testing LibraryReact08 Apr4m#150The Metadata API and SEO in Next.jsNext.js08 Apr3m#149The Next.js App Router Mental ModelNext.js08 Apr4m#148The React Suspense Mental ModelReact08 Apr4m#147useEffect Mistakes I Stopped MakingReact08 Apr4m#146When to Use useMemo and useCallbackReact08 Apr4m#145Docker Compose HealthchecksDocker31 Mar4m#144Template Method Design PatternDesign Patterns31 Mar5m#143Testing in LaravelLaravel27 Mar3m#142LinkedIn ProfileCareer20 Mar3m#141AI Job InterviewsAI19 Mar6m#140Everything Is Markdown NowAI19 Mar6m#139SaaS vs Open Source in the Age of AI CodingCareer19 Mar8m#138Software Engineering in the Age of AIAI19 Mar7m#137A Reusable PRD Framework for Standard SaaS FeaturesProject Docs17 Mar13m#136Project SpecProject Docs17 Mar3m#135Website Go Live ChecklistDeployments17 Mar2m#134Adapter Design PatternDesign Patterns16 Mar5m#133AI RulesAI16 Mar2m#132Contextual Attributes in LaravelLaravel16 Mar2m#131GitHub ProfileCareer16 Mar2m#130Laravel Pint: Code Style FormattingLaravel16 Mar4m#129Rector: Automated PHP Code RefactoringPHP16 Mar5m#128Scheduled Tasks in LaravelLaravel16 Mar2m#127Security Headers in LaravelLaravel16 Mar3m#126VSCode SettingsVscode16 Mar1m#125Claude SkillsAI13 Mar16m#124Claude Sub-AgentsAI13 Mar10m#123PHPStan: Static Analysis for PHPPHP08 Mar5m#122Rate Limiting in LaravelLaravel08 Mar2m#121CLAUDE.md FileAI07 Mar3m#120Builder Design PatternDesign Patterns05 Mar2m#119CI/CDDeployments05 Mar2m#118ContainerisationDeployments05 Mar4m#117Git Branching StrategiesGit05 Mar2m#116Managing Cognitive Load in CodeGood Code05 Mar5m#115Architecture DiagramsArchitecture04 Mar2m#114A/B Testing DeploymentsDeployments02 Mar3m#113Actions Pattern in PHPGood Code02 Mar1m#112AlertingObservability02 Mar2m#111API CachingAPIS02 Mar2m#110API Consistency RulesAPIS02 Mar2m#109API Deprecation ProcessAPIS02 Mar2m#108API Error HandlingAPIS02 Mar2m#107API Field Naming ConsistencyAPIS02 Mar2m#106API IdempotencyAPIS02 Mar2m#105API Rate Limiting and ThrottlingAPIS02 Mar2m#104Architecture Decision Record TemplateProject Docs02 Mar2m#103Architecture Decision Records: A Practical GuideArchitecture02 Mar5m#102Architecture DocumentationProject Docs02 Mar2m#101Authentication and TokensAPIS02 Mar2m#100Avoiding N+1 Queries in LaravelLaravel02 Mar3m#099AWS Cloud Practitioner Essentials: Module 4 - Going GlobalCareer02 Mar2m#098AWS Cloud Practitioner Essentials: Module 5 - NetworkingCareer02 Mar4m#097AWS Cloud Practitioner Essentials: Module 6 - StorageCareer02 Mar6m#096AWS Cloud Practitioner Essentials: Module 7 - DatabasesCareer02 Mar3m#095AWS Cloud Practitioner: Module 1 - Introduction to the CloudCareer02 Mar3m#094AWS Cloud Practitioner: Module 2 - Compute in the CloudCareer02 Mar4m#093AWS Cloud Practitioner: Module 3 - Exploring Compute ServicesCareer02 Mar3m#092AWS Cloud Practitioner: Module 8 - AI/ML and Data AnalyticsCareer02 Mar4m#091Blue/Green DeploymentDeployments02 Mar2m#090Bridge Design PatternDesign Patterns02 Mar3m#089Business ToolsTools02 Mar4m#088Cache Invalidation Strategies in LaravelLaravel02 Mar3m#087Caching in LaravelLaravel02 Mar3m#086Canary DeploymentDeployments02 Mar3m#085Change the Origin of a Git RepositoryGit02 Mar2m#084ChangelogProject Docs02 Mar2m#083Choosing the Right Company Size as a Software EngineerCareer02 Mar4m#082Claude CommandsAI02 Mar1m#081Claude ModelsAI02 Mar3m#080Claude Workflow: Add a New PageAI02 Mar1m#079Claude Workflow: Researching a FeatureAI02 Mar1m#078Claude Workflow: Reviewing a Pull RequestAI02 Mar1m#077Clean Up DockerDocker02 Mar2m#076Composer ScriptsPHP02 Mar1m#075Core HTTP MethodsAPIS02 Mar2m#074Create a Brag DocumentCareer02 Mar2m#073Creating a Software Developer CVCareer02 Mar6m#072Creating Pull RequestsGit02 Mar4m#071Custom Collections in LaravelLaravel02 Mar2m#070Data Transfer Objects (DTO)Good Code02 Mar2m#069Datetime Handling in REST APIsAPIS02 Mar2m#068Domain-Driven DesignGood Code02 Mar6m#067Eloquent Builder vs Scopes in LaravelLaravel02 Mar2m#066End of Contract ChecklistCareer02 Mar3m#065EnvironmentsProject Docs02 Mar3m#064Feature TogglesDeployments02 Mar2m#063Filtering, Sorting, and PaginationAPIS02 Mar2m#062Form Request Validation Patterns in LaravelLaravel02 Mar2m#061FreelancingCareer02 Mar3m#060GCP VM Port ForwardingGCP02 Mar2m#059Git HooksGit02 Mar3m#058Git ToolsTools02 Mar3m#057Gitflow Branching ModelGit02 Mar3m#056GitHub Copilot Instructions TemplateAI02 Mar5m#055Health ChecksObservability02 Mar4m#054Health Checks in LaravelLaravel02 Mar2m#053Immutable Dates in LaravelLaravel02 Mar2m#052Including Related Data in API ResponsesAPIS02 Mar2m#051Infrastructure as CodeDeployments02 Mar3m#050InterviewingCareer02 Mar2m#049Job BoardsCareer02 Mar2m#048Laravel Coding StandardsLaravel02 Mar4m#047Logging in LaravelLaravel02 Mar2m#046Logging in Your ApplicationObservability02 Mar4m#045Mass Assignment Guarding in LaravelLaravel02 Mar2m#044MonitoringObservability02 Mar5m#043Monitoring and Alerting in LaravelLaravel02 Mar3m#042Performance Improvements in LaravelLaravel02 Mar2m#041Permanent vs ContractingCareer02 Mar32m#040PHP Coding StandardsPHP02 Mar3m#039Pruning Data in LaravelLaravel02 Mar1m#038Pull Request TemplateGithub02 Mar2m#037Queues in LaravelLaravel02 Mar2m#036Read/Write Database Splitting in LaravelLaravel02 Mar2m#035Remote-Friendly CompaniesCareer02 Mar24m#034Repository PatternGood Code02 Mar3m#033REST API DocumentationAPIS02 Mar2m#032REST API HTTP Status CodesAPIS02 Mar3m#031REST API Pre-Release ChecklistAPIS02 Mar2m#030REST API Resource NamingAPIS02 Mar1m#029REST API Response ShapeAPIS02 Mar1m#028REST API Security BasicsAPIS02 Mar2m#027REST API Validation ErrorsAPIS02 Mar2m#026REST API VersioningAPIS02 Mar2m#025Reviewing Pull RequestsGit02 Mar7m#024Route Organisation and Naming in LaravelLaravel02 Mar2m#023Runbook TemplateObservability02 Mar4m#022Salary ResearchCareer02 Mar1m#021Secrets and Config Validation in LaravelLaravel02 Mar2m#020Simple Factory Design PatternDesign Patterns02 Mar1m#019Singleton Design PatternDesign Patterns02 Mar1m#018SOLID PrinciplesGood Code02 Mar4m#017Spec-Driven Development with AIAI02 Mar3m#016Stacked Pull RequestsGit02 Mar3m#015State Design PatternDesign Patterns02 Mar4m#014Strategy Design PatternDesign Patterns02 Mar5m#013Task TemplateAI02 Mar1m#012Tasks DirectoryAI02 Mar1m#011Tech Stack DocumentProject Docs02 Mar3m#010The Twelve-Factor AppGood Code02 Mar4m#009Trunk-Based DevelopmentGit02 Mar3m#008Using .env in LaravelLaravel02 Mar2m#007Using Multiple SSH KeysGit02 Mar3m#006Value ObjectsGood Code02 Mar2m#005VersioningGit02 Mar2m#004Working with Large Datasets in LaravelLaravel02 Mar3m#003Working With Third PartiesGood Code02 Mar1m#002Writing Good Commit MessagesGit02 Mar3m#001YAGNIGood Code02 Mar1m