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
198 from 2 Mar 2026 to 31 Oct 2026
Posting
about daily (196 in the last year)
Kind
personal blog
Feed
https://paulund.co.uk/feed.xml

2026 196

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

Undated 2

  1. Bullion API changelog
  2. Satzo changelog