I’ve been writing software for twenty years. Lately that means data pipelines and tools for North Yield, the property sourcing business I run in the North East.
These are my notes: how things were built and why, what the data actually says, and plain-English write-ups when something breaks that people need to act on.
Notes
All notes- PHP2Shell, in plain EnglishSecurityA
Two critical flaws in PHP itself let attackers run code on a server without logging in. What they are, why a login page doesn’t help, and what to do.
- Is your WordPress site affected by PHP2Shell? A two-minute checkSecurityA
Find your site’s PHP version from the WordPress dashboard, then follow the path that applies to you.
- Turning off upload progress is not a PHP2Shell fixSecurityA
Setting session.upload_progress.enabled = 0 is a useful stopgap, but it blocks one route into one of the two flaws. PHP’s own advisories say so.
- Turning the EPC register into a dataset you can trustDataA
The government’s register of Energy Performance Certificates is public, but it isn’t a dataset you can count from. What it took to make it one for the Tees Valley, and the traps along the way.
- An LLM that can’t invent a quoteDevelopmentA
What I learned building ActionPoints, my first product on a language model. The guarantees worth having are the ones you enforce in code, not the ones you ask the model for.
Work
All work- Oct 2026Internal
Prospect screening tool
A first pass on a prospective property, before anyone books a viewing. It pulls the free public records together, from the EPC register, Land Registry Price Paid, postcodes.io and planning.data.gov.uk, so we can see quickly whether a property is worth the proper due diligence. It doesn’t replace that: refurb costs come from a viewing, never from the tool, and anything the data can’t settle is flagged for a person to check.
Node.js · Headless Chrome
- Jul 2026Live
ActionPoints
Paste a meeting transcript and get action points you can trust, pushed to Linear. An LLM proposes them, a person decides on each one, and a quote is only shown if it appears word for word in the transcript.
Elixir · Phoenix LiveView · PostgreSQL · Claude API · Fly.io
- Sep 2025In use
Tees Valley EPC dataset
The government’s Energy Performance Certificate register for the five Tees Valley councils, turned into a dataset North Yield can query: 244,391 homes, the latest certificate per property at each edition, and an aggregate-only API. It powers North Yield’s EPC analysis and map.
Elixir · Phoenix · PostgreSQL