Notebook
215 entries across 21 topics. An archive of things I learned and wanted to remember, kept as they were written. The newer thinking is in the project stories.
Topics
All entries
Building one portfolio view for all my crypto walletsProjectsEmail verification belongs at the API boundaryAPISInfrastructure questions belong before the first line of codeAISEO feedback should become bounded engineering workAIA status page should explain incidents, not just show greenObservabilityAgent workflows should outlive their modelsAIBuilding PostConductor: Why I Pivoted to MCP-FirstAIStop Blaming the ModelAIHarness EngineeringAIA Modern Quality Pipeline and Testing Strategy for Frontend ProjectsGood CodeAgents Are Cron Jobs and Markdown FilesAIMeasure Your Agent Skills or Delete ThemAIWhat to Do If You're Not Detail OrientedCareerHow to Stay Resilient in a Difficult Engineering JobCareerAgentic Engineering PatternsAIAI Ate the Translation LayerAIWhy Smaller Teams Will Win With AIAIAI Code Review: Pre-Existing Bugs as a Side QuestAISoftware Factory: Build Factories, Not FeaturesAISmall npm Packages Are Mostly DeadAIThe Four Levels of Working with AIAIWhat Happens to Developers Who Don't Adapt to AIAISoftware Ecology and the 10x MomentAIHow AI Agents Made Me CLI-FirstAIHow I Build Software With Agent LoopsAIHigher-Order Components and Why Hooks Replaced ThemReactPure Components and Why Purity Matters in ReactReactReact Fragments and When You Actually Need ThemReactRefs and when useRef beats useStateReactDefault Props and Optional Props in ReactReactHandling Form Submission in ReactReactClient-side validation before Server Actions in Next.jsNext.jsType-Safe Adapter Registries with as const and satisfiesTypeScriptUsing Service Interfaces and Null Objects for Resilient TypeScript ScriptsTypeScriptValidating Multi-Provider Credentials with Zod Discriminated UnionsTypeScriptBuilding a URL Shortener with Next.jsNext.jsMagic Link Authentication in Next.jsAPISAPI Key Management in Next.jsAPISTransactional Email with Resend and React EmailNext.jsType Annotations vs Type Inference: When to Write the TypeTypeScriptThe Compound Component Pattern in ReactReactThe Render Prop Pattern in ReactReactuseReducer for Complex StateReactThe React Context API: Shared State Without a LibraryReactDynamic OG Images in Next.js with opengraph-image.tsxNext.jsLifting State Up in ReactReactConditional Rendering Patterns in ReactReactLists and Keys in React: Why They Actually MatterReactWhy Dyslexia Made Me a Better Software EngineerCareerEvent Handling in ReactReactGit Commands for Reading New CodebasesGitProps, Children, and Component Composition in ReactReactExtracting a Queries Layer from Next.js Server ComponentsNext.jsThe Virtual DOM and How React Reconciliation WorksReactuseState and the Mental Model of StateReactAvoiding Unnecessary Rerenders in ReactReactComposition Over Prop Drilling in ReactReactControlled vs Uncontrolled Forms in ReactReactCustom Hooks: Naming and StructureReactDeploying Next.js to Cloudflare PagesNext.jsError and Not-Found Pages in the App RouterNext.jsFetching Data in Server ComponentsNext.jsgenerateStaticParams and Static ExportNext.jsImage Optimisation in Next.jsNext.jsIncremental Static Regeneration ExplainedNext.jsMiddleware Patterns in Next.jsNext.jsReact Error Boundaries in PracticeReactReact Server Components vs Client ComponentsReactRoute Handlers vs Server ActionsNext.jsServer Actions in Next.js 15Next.jsState Management Without ReduxReactStreaming and Suspense in Next.jsNext.jsStructuring Large React AppsReactTesting React Components with Vitest and Testing LibraryReactThe Metadata API and SEO in Next.jsNext.jsThe Next.js App Router Mental ModelNext.jsThe React Suspense Mental ModelReactuseEffect Mistakes I Stopped MakingReactWhen to Use useMemo and useCallbackReactDocker Compose HealthchecksDockerTemplate Method Design PatternDesign PatternsTesting in LaravelLaravelLinkedIn ProfileCareerAI Job InterviewsAIEverything Is Markdown NowAISaaS vs Open Source in the Age of AI CodingCareerSoftware Engineering in the Age of AIAIA Reusable PRD Framework for Standard SaaS FeaturesProject DocsProject SpecProject DocsWebsite Go Live ChecklistDeploymentsAdapter Design PatternDesign PatternsAI RulesAIContextual Attributes in LaravelLaravelGitHub ProfileCareerLaravel Pint: Code Style FormattingLaravelRector: Automated PHP Code RefactoringPHPScheduled Tasks in LaravelLaravelSecurity Headers in LaravelLaravelVSCode SettingsVscodeAgent SkillsAIClaude Sub-AgentsAIPHPStan: Static Analysis for PHPPHPRate Limiting in LaravelLaravelCLAUDE.md FileAIBuilder Design PatternDesign PatternsCI/CDDeploymentsContainerisationDeploymentsGit Branching StrategiesGitManaging Cognitive Load in CodeGood CodeA/B Testing DeploymentsDeploymentsActions Pattern in PHPGood CodeAlertingObservabilityAPI CachingAPISAPI Consistency RulesAPISAPI Deprecation ProcessAPISAPI Error HandlingAPISAPI Field Naming ConsistencyAPISAPI IdempotencyAPISAPI Rate Limiting and ThrottlingAPISArchitecture Decision Record TemplateProject DocsArchitecture Decision Records: A Practical GuideArchitectureArchitecture DocumentationProject DocsAuthentication and TokensAPISAvoiding N+1 Queries in LaravelLaravelAWS Cloud Practitioner Essentials: Module 4 - Going GlobalCareerAWS Cloud Practitioner Essentials: Module 5 - NetworkingCareerAWS Cloud Practitioner Essentials: Module 6 - StorageCareerAWS Cloud Practitioner Essentials: Module 7 - DatabasesCareerAWS Cloud Practitioner: Module 1 - Introduction to the CloudCareerAWS Cloud Practitioner: Module 2 - Compute in the CloudCareerAWS Cloud Practitioner: Module 3 - Exploring Compute ServicesCareerAWS Cloud Practitioner: Module 8 - AI/ML and Data AnalyticsCareerBlue/Green DeploymentDeploymentsBridge Design PatternDesign PatternsBusiness ToolsToolsCache Invalidation Strategies in LaravelLaravelCaching in LaravelLaravelCanary DeploymentDeploymentsChange the Origin of a Git RepositoryGitChangelogProject DocsChoosing the Right Company Size as a Software EngineerCareerClaude ModelsAIClean Up DockerDockerCore HTTP MethodsAPISCreate a Brag DocumentCareerCreating a Software Developer CVCareerCreating Pull RequestsGitCustom Collections in LaravelLaravelData Transfer Objects (DTO)Good CodeDatetime Handling in REST APIsAPISDomain-Driven DesignGood CodeEloquent Builder vs Scopes in LaravelLaravelEnd of Contract ChecklistCareerEnvironmentsProject DocsFeature TogglesDeploymentsFiltering, Sorting, and PaginationAPISForm Request Validation Patterns in LaravelLaravelFreelancingCareerGCP VM Port ForwardingGCPGit HooksGitGit ToolsToolsGitflow Branching ModelGitGitHub Copilot Instructions TemplateAIHealth ChecksObservabilityHealth Checks in LaravelLaravelImmutable Dates in LaravelLaravelIncluding Related Data in API ResponsesAPISInfrastructure as CodeDeploymentsInterviewingCareerJob BoardsCareerLaravel Coding StandardsLaravelLogging in LaravelLaravelLogging in Your ApplicationObservabilityMass Assignment Guarding in LaravelLaravelMonitoringObservabilityMonitoring and Alerting in LaravelLaravelPerformance Improvements in LaravelLaravelPermanent vs ContractingCareerPHP Coding StandardsPHPPull Request TemplateGithubQueues in LaravelLaravelRead/Write Database Splitting in LaravelLaravelRemote-Friendly CompaniesCareerRepository PatternGood CodeREST API DocumentationAPISREST API HTTP Status CodesAPISREST API Pre-Release ChecklistAPISREST API Resource NamingAPISREST API Response ShapeAPISREST API Security BasicsAPISREST API Validation ErrorsAPISREST API VersioningAPISReviewing Pull RequestsGitRoute Organisation and Naming in LaravelLaravelRunbook TemplateObservabilitySalary ResearchCareerSecrets and Config Validation in LaravelLaravelSimple Factory Design PatternDesign PatternsSingleton Design PatternDesign PatternsSOLID PrinciplesGood CodeSpec-Driven Development with AIAIStacked Pull RequestsGitState Design PatternDesign PatternsStrategy Design PatternDesign PatternsTech Stack DocumentProject DocsThe Twelve-Factor AppGood CodeTrunk-Based DevelopmentGitUsing .env in LaravelLaravelUsing Multiple SSH KeysGitValue ObjectsGood CodeVersioningGitWorking with Large Datasets in LaravelLaravelWorking With Third PartiesGood CodeWriting Good Commit MessagesGitYAGNIGood Code