The Curious Engineer

All blogs / Software / engineering practice

Paulund

paulund.co.uk

paulund builds and runs independent software products, sharing what they do, the decisions behind them and what he learns along the way.

Software / engineering practicePHPJavaScript / TypeScriptAI / ML

Posts
197 from 2 Mar 2026 to 29 Oct 2026
Posting
about daily (195 in the last year)
Kind
personal blog
Feed
https://paulund.co.uk/feed.xml

2026 195

  1. Tracking what the US pays in interest on its debt with the Bullion API
  2. Adding who holds US federal debt to the Bullion API
  3. Adding portfolio pages, a portfolio API and read-only MCP tools to the Bullion API
  4. Long Claude Code sessions pay for their whole history on every call
  5. Sending a prompt to a Claude Code cloud session from my terminal
  6. AI Notes
  7. Architecture decision records: a practical guide and template
  8. Building a status page for the Bullion API that explains its incidents
  9. Git branching strategies: Gitflow, trunk-based and GitHub Flow
  10. Harness engineering for coding agents
  11. Health checks in Laravel
  12. Logging in Laravel
  13. Monitoring and alerting in Laravel
  14. Props, children and component composition in React
  15. Requiring a verified email address for Bullion API keys
  16. REST API design rules for URLs, methods and fields
  17. REST API response shape, pagination and errors
  18. REST API security, authentication and rate limiting
  19. Running a REST API: caching, versioning, deprecation and release
  20. Sharing state in React without Redux
  21. Software engineering in the age of AI
  22. useState, useReducer and the mental model of state in React
  23. What happens to developers who don't adapt to AI
  24. APIs Notes
  25. Architecture Notes
  26. Git Notes
  27. Laravel Notes
  28. React Notes
  29. Adding an inflation-adjusted gold price to the Bullion API
  30. Adding nine more central banks to the Bullion API's gold data
  31. Building an MCP server for the Bullion API
  32. Building a liquidity pool simulator to understand my own DeFi positions
  33. Adding a data page for every dataset in the Bullion API
  34. My VPS got throttled to 20% CPU, so I'm buying a mini PC for home
  35. Why I use the CLI with Herdr instead of desktop apps and orchestrators
  36. Adding past metal prices to the Bullion API price request
  37. I moved my coding agents to a VPS so I could close my laptop
  38. Building one portfolio view for all my crypto wallets
  39. Infrastructure questions belong before the first line of code
  40. SEO feedback should become bounded engineering work
  41. Agent workflows should outlive their models
  42. A Modern Quality Pipeline and Testing Strategy for Frontend Projects
  43. Agents Are Cron Jobs and Markdown Files
  44. Good code Notes
  45. Measure Your Agent Skills or Delete Them
  46. What to Do If You're Not Detail Oriented
  47. Career Notes
  48. How to Stay Resilient in a Difficult Engineering Job
  49. AI Code Review: Pre-Existing Bugs as a Side Quest
  50. Software Factory: Build Factories, Not Features
  51. Small npm Packages Are Mostly Dead
  52. The Four Levels of Working with AI
  53. How AI Agents Made Me CLI-First
  54. How I Build Software With Agent Loops
  55. Higher-Order Components and Why Hooks Replaced Them
  56. Pure Components and Why Purity Matters in React
  57. React Fragments and When You Actually Need Them
  58. Refs and when useRef beats useState
  59. Default Props and Optional Props in React
  60. Handling Form Submission in React
  61. Next.js Notes
  62. TypeScript Notes
  63. Client-side validation before Server Actions in Next.js
  64. Type-Safe Adapter Registries with as const and satisfies
  65. Using Service Interfaces and Null Objects for Resilient TypeScript Scripts
  66. Validating Multi-Provider Credentials with Zod Discriminated Unions
  67. Building a URL Shortener with Next.js
  68. Magic Link Authentication in Next.js
  69. API Key Management in Next.js
  70. Transactional Email with Resend and React Email
  71. Type Annotations vs Type Inference: When to Write the Type
  72. The Compound Component Pattern in React
  73. The Render Prop Pattern in React
  74. Dynamic OG Images in Next.js with opengraph-image.tsx
  75. Conditional Rendering Patterns in React
  76. Lists and Keys in React: Why They Actually Matter
  77. Why Dyslexia Made Me a Better Software Engineer
  78. Event Handling in React
  79. Git Commands for Reading New Codebases
  80. Extracting a Queries Layer from Next.js Server Components
  81. The Virtual DOM and How React Reconciliation Works
  82. Avoiding Unnecessary Rerenders in React
  83. Controlled vs Uncontrolled Forms in React
  84. Custom Hooks: Naming and Structure
  85. Deploying Next.js to Cloudflare Pages
  86. Error and Not-Found Pages in the App Router
  87. Fetching Data in Server Components
  88. generateStaticParams and Static Export
  89. Image Optimisation in Next.js
  90. Incremental Static Regeneration Explained
  91. Middleware Patterns in Next.js
  92. React Error Boundaries in Practice
  93. React Server Components vs Client Components
  94. React Suspense: loading fallbacks, boundaries and use()
  95. Route Handlers vs Server Actions
  96. Server Actions in Next.js 15
  97. Streaming and Suspense in Next.js
  98. Structuring Large React Apps
  99. Testing React Components with Vitest and Testing Library
  100. The Metadata API and SEO in Next.js
  101. The Next.js App Router Mental Model
  102. useEffect Mistakes I Stopped Making
  103. When to Use useMemo and useCallback
  104. Design patterns Notes
  105. Docker Notes
  106. Docker Compose Healthchecks
  107. Template Method Design Pattern
  108. Testing in Laravel
  109. LinkedIn Profile
  110. AI Job Interviews
  111. Everything Is Markdown Now
  112. SaaS vs Open Source in the Age of AI Coding
  113. Deployments Notes
  114. Project docs Notes
  115. A Reusable PRD Framework for Standard SaaS Features
  116. Project Spec
  117. Website Go Live Checklist
  118. PHP Notes
  119. Adapter Design Pattern
  120. AI Rules
  121. Contextual Attributes in Laravel
  122. GitHub Profile
  123. Laravel Pint: configuration, rules and CI checks
  124. Rector: Automated PHP Code Refactoring
  125. Scheduled Tasks in Laravel
  126. Security Headers in Laravel
  127. Agent Skills
  128. Claude Sub-Agents
  129. PHPStan: Static Analysis for PHP
  130. Rate Limiting in Laravel
  131. CLAUDE.md File
  132. Builder Design Pattern
  133. Cicd
  134. Containerisation
  135. Managing Cognitive Load in Code
  136. GCP Notes
  137. GitHub Notes
  138. Observability Notes
  139. A/B Testing Deployments
  140. Actions Pattern in PHP
  141. Architecture Documentation
  142. Avoiding N+1 Queries in Laravel
  143. Blue/Green Deployment
  144. Bridge Design Pattern
  145. Cache Invalidation Strategies in Laravel
  146. Caching in Laravel
  147. Canary Deployment
  148. CarbonImmutable in Laravel: prevent date mutation bugs
  149. Change the Origin of a Git Repository
  150. Changelog
  151. Choosing the Right Company Size as a Software Engineer
  152. Clean Up Docker
  153. Create a Brag Document
  154. Creating a Software Developer CV
  155. Creating Pull Requests
  156. Custom Collections in Laravel
  157. Data Transfer Objects (DTO)
  158. Domain-Driven Design
  159. Eloquent Builder vs Scopes in Laravel
  160. End of Contract Checklist
  161. Environments
  162. Feature Toggles
  163. Form Request Validation Patterns in Laravel
  164. Freelancing
  165. GCP VM Port Forwarding
  166. Git Hooks
  167. GitHub Copilot Instructions Template
  168. Infrastructure as Code
  169. Interviewing
  170. Laravel Coding Standards
  171. Mass Assignment Guarding in Laravel
  172. Performance Improvements in Laravel
  173. Permanent vs Contracting
  174. PHP Coding Standards
  175. Pull Request Template
  176. Queues in Laravel
  177. Read/Write Database Splitting in Laravel
  178. Repository Pattern
  179. Reviewing Pull Requests
  180. Route Organisation and Naming in Laravel
  181. Runbook Template
  182. Secrets and Config Validation in Laravel
  183. SOLID Principles
  184. Spec-Driven Development with AI
  185. Stacked Pull Requests
  186. State Design Pattern
  187. Strategy Design Pattern
  188. Tech Stack Document
  189. The Twelve-Factor App
  190. Using .env in Laravel
  191. Using Multiple SSH Keys
  192. Value Objects
  193. Versioning
  194. Working with Large Datasets in Laravel
  195. Writing Good Commit Messages

Undated 2

  1. Bullion API changelog
  2. Satzo changelog