Portfolio, volume 01 Devon 2026

Digital products
and useful systems

Work made for
the real world.

Selected product, design and web work, from shop-floor tools to evidence-led studies of small questions.

Begin with PaperWatcher
CAT. 01

Public service · paperwatcher.co.uk

PaperWatcher

Know before the till does. A single source of truth for UK newspaper prices, barcodes and the changes coming next.

Role
Product, design, engineering
Platform
Web, email, JSON API
Status
Live and public
Year
2026
FIG. 01 Two changes due, dated and counting down
The PaperWatcher home page: two price changes due in the next fortnight, each dated and counting down, above the national title list with the changing titles flagged.
Captured from the running product. Free, no account, nothing sold.
01 / Purpose

A price change
is never one change.

“The newspaper price is changing on Monday” sounds simple. It has to reach the EPOS, the shelf labels, the ordering system and the staff before a customer is charged the wrong amount.

02 / Context

Newsagents and independent retailers historically tracked this by hand: trade emails, spreadsheets, and someone remembering. Miss an update and you get till discrepancies, corrections, and a customer who trusts you slightly less.

The data existed. What was missing was somewhere to look it up quickly, see what is coming, and act before Monday.

03 / System

An event log, not a spreadsheet

01Trade file inArchived before parsing
APPEND ONLY
02Title pagesPrice and barcode
03UpcomingWhat changes when
04Email digestsThree cadences
05Exports and APICSV, XLSX, JSON
05 / Contribution

From a data problem to a public service.

Product directionTurned a recurring trade annoyance into a service with a clear, narrow promise.

Data designModelled prices as dated events so history, barcode changes and audit trails all fall out of one store.

EngineeringBuilt the ingest pipeline, alerting, exports, JSON API and a toolbox of 87 retailer utilities.

OperationsRuns as one process on one small server, with streaming off-site backup and loud failure modes.

CAT. 02

Local-first product · propertill.app

Proper Till

A proper till, in the browser you already have. No account, no subscription, and no sales record leaving the counter it was taken on.

Role
Product, design, engineering
Platform
Browser, offline-capable
Status
Live, early access
Year
2026
FIG. 03 Ringing a sale, counter tablet
The Proper Till sell screen on a landscape tablet: product tiles grouped by department (drinks, counter, grocery, bakery) beside a running basket of three lines totalling £10.35, the VAT it includes shown beneath, and one Take payment action.
Captured from Proper Till using invented demo data. Early access: live and free, new enough to still say keep your backups.
01 / Purpose

A till you own,
not one you rent.

Small-business EPOS is usually rented: a monthly fee, a terminal you cannot replace, and a sales history held somewhere you have to ask for. Proper Till inverts all three. It runs in the browser already on the counter, and the shop's own record never leaves it.

02 / Context

For a market stall, a village shop or a Saturday pop-up, the realistic alternative to a subscription till is a cash tin and a notebook. The subscription is not just the cost: it is the card reader you must buy, the account you must keep, and the export you cannot get once you stop paying.

So the promise is deliberately narrow: this is a till, not an accounting system. Every boundary it will not cross is written into the product itself rather than left for a customer to discover.

03 / System

No server to trust

01Your catalogueImported, never uploaded
THIS BROWSER
02SellCash, card, transfer
03ReceiptsNumbered, then immutable
04Session closeCash up and variance
05Backup fileEverything, downloadable
05 / Contribution

A second product from a proven engine.

Product directionHeld the promise narrow: a till, not an accounting record. Every boundary it will not cross is written into the product's own wording.

ArchitectureMade the browser the whole system: no backend, no account, and money in integer pence from the tile to the receipt.

ReuseLifted the money, VAT and sale-lifecycle rules out of an earlier product against a written reuse matrix, carrying their test cases rather than their code.

DeliveryLive at propertill.app: reachable and free, honest that it is new and unproven on a busy trading day, with the open VAT questions still tracked rather than quietly assumed closed.

CAT. 03

Windows desktop tool · open source

StorageInventory

A read-only storage inventory for Windows. It scans a drive or folder, writes every file and folder to reports you can keep, and says plainly when a scan could not see everything.

Platform
Windows 10 and 11, x64
Status
Version 1.0.0 released
Licence
MIT, source on GitHub
Year
2026
Visit
FIG. 04 Results, after a scan of a synthetic folder tree
The StorageInventory results screen after scanning a small synthetic folder tree. A Scan complete card reads: Every folder was read. The totals are exact. It lists 931 files, 15 folders, 132 MB of data, 0 locations that could not be read, 0 links skipped, and completeness Complete. Below it are buttons to open the Files, Folders and Errors reports or the report folder, tabs for Overview, Largest folders, Largest files, File types and Errors, and a table of the largest top-level folders, from Videos at 51.50 MB, 39.1 per cent of the root, down to Downloads at 534 KB, each marked complete.
  1. Completeness is statedEvery scan ends in a named outcome. This one read every folder, so the card can say the totals are exact.
  2. What was not seen is countedLocations it could not read and links it skipped sit in the summary, and each has a row in the errors report.
  3. Reports open on a clickEach button opens one of this run’s own reports or its folder, and only when you press it.
The product’s own screenshot, from its repository at v1.0.0. The scanned tree is synthetic, and no paths are on screen.
01 / Purpose

What is using
the space, kept.

Disk-space visualisers are good at “what is big right now?” on screen. StorageInventory does a slightly different job: a complete inventory you can keep, with every file and folder written to reports you can sort, filter and archive.

02 / Context

An inventory is only as useful as your sense of how much of it to trust. The awkward case is the folder that could not be read. Here it becomes a row in the errors report, and every total that includes it is marked as a lower bound: at least this much, possibly more.

It reads only the metadata a folder listing returns, such as names, sizes, dates and attributes, and never opens file contents. It ships as one self-contained executable that needs no installation, no administrator rights and no separate .NET runtime, with no telemetry, analytics or update checks.

03 / System

Checked before, counted during, stated after

  1. 01 Choose two folders The drive or folder to scan, and a separate report folder outside it.
  2. 02 Pre-flight check Missing paths, reports inside the source, links, aliases, network and OneDrive locations.
    • Ready to scan
    • Ready, with warnings
    • Blocked, and why
  3. 03 Metadata-only scan Names, sizes, dates and attributes. Links are listed, not followed. Cancel at any time.
  4. 04 Reports Three CSVs, always new files, and an Excel workbook if you ask for one.
    • Files_<run>.csv
    • Folders_<run>.csv
    • ScanErrors_<run>.csv
    • optional .xlsx
  5. 05 Result and outcome Largest folders, files, types and errors, read from the finished reports, under one explicit outcome.
04 / Outcomes

Four endings, each named.

Complete
Every folder was read. The totals are exact.
Finished but incomplete
Some folders could not be read. Each is listed in the errors report, and every total that includes one is a lower bound.
Cancelled
Stopped at a safe point when you asked. The reports it had started are closed and listed as incomplete, and nothing is deleted automatically.
Failed
The scan could not finish. As with a cancelled scan, partial reports are never presented as a result.

The progress bar follows the same rule: while the total is unknown, it does not invent a percentage.

05 / Boundaries

What 1.0 does, and does not, claim.

What it writesOnly in the report folder you choose, which must sit outside the folder being scanned. Reports are created as new files named with the date, time and a random run ID, so an existing file is not replaced.

LinksJunctions, symbolic links, mount points and cloud placeholders are listed and not intentionally followed. The README and security review document the narrow cases that remain, such as a folder swapped for a link in the middle of a scan.

PrivacyReports hold file and folder names, full paths, sizes and timestamps, which can be private. Review them before sharing. A report folder inside OneDrive or another synced location will be uploaded by that service.

CountingSizes are file lengths, not space used on disk. Hard links are counted once per link, and alternate data streams are not counted.

Not in 1.0Keeping scans as snapshots and reporting what changed between them is planned for 1.1, with no date. It is on the roadmap, not in this release.

06 / Get it

Download 1.0.0, or build it from source.

The release is one StorageInventory.exe for Windows 10 and 11 on x64. The release notes give its SHA-256, and a clean build from the tagged source is documented to reproduce the same hash.

The executable is not code-signed, so Windows SmartScreen may warn the first time it runs. Check the hash before choosing to run it anyway. Known limitations are listed in the README and the security review.

CAT. 04

Evidence-led web study · whyisthemoonsobig.com

Why is the Moon so big?

A small question taken seriously. An interactive study that separates how big a low Moon looks from how big it is, shows every receipt, and will not pretend the science is more settled than it is. Then it hands you a clicker.

Role
Research, product, design, engineering
Platform
Web, with an installable game
Status
Live and public
Year
2026
Visit
FIG. 05 The study, first screen
The first screen of whyisthemoonsobig.com: the headline Why is the Moon so big? on a deep blue sky, the short answer that a low Moon can look enormous but that this reported appearance is not its physical diameter or its measured width in a controlled photograph, and a huge pale Moon rising behind dark hills and an orange horizon, crossed by a calibration ribbon reading about half a degree across, red brackets marked Measured width, unchanged, and the note Not inflated. Not magnified. Still looks enormous.
Rendered from the live site, whyisthemoonsobig.com. Free, no account, no cookies, no tracking.
01 / Purpose

Big in
which sense?

A low Moon can look enormous. The study starts by pulling that word apart: how big the Moon is reported to look is not its physical diameter, and not its measured width in a controlled photograph. Five measurements, one coat.

02 / Context

Most answers to this question pick one tidy cause. The research does not allow that. No single perceptual mechanism currently gives an uncontested, complete explanation of the natural Moon illusion, so the page lists the proposed contributors as proposals, not verdicts, and every demonstration carries a line saying what it does not show.

Every factual sentence comes from an independently reviewed claim ledger, and the site’s own tests reject single-cause phrasings before they can ship. Nothing loops, nothing auto-plays past three seconds, and reduced motion removes all of it with the meaning intact.

03 / System

Claims before copy, even in the game

01Claim ledgerIndependently reviewed
NO NEW FACTS
02The answerBig, in five senses
03DemonstrationsEach with its limits
04ReceiptsWhat each does not show
05Moon ClickerReports, never a bigger Moon
04 / The game · whyisthemoonsobig.com/game/

Moon Clicker

A complete idle clicker where the currency is Bigness: how enormous the Moon is reported to be. You employ departments, and every department produces reports. Not one of them produces a larger Moon.

Play Moon Clicker
Moon Clicker on a desktop screen, mid-game: 4.27 million reported bigness, earning 23 thousand a second, above a large pale Moon and a skyline of telescopes and trees; beside it the Grow the operation panel lists the departments from Amateur Astronomer to a still-locked Moon Enlargement Division, under the line More reports. Same Moon. Play the game The same game on a phone, laid out for one thumb: the reported bigness and the Moon at the top, a progress bar toward the next department, the Orbital Perspective Manipulator, and the departments list starting below.
FIG. 06 Rendered from the live game, desktop and phone, with a game already in progress.

“The Moon Enlargement Division has never enlarged the Moon.”

It is the study’s answer turned into a mechanic. The article separates how big the Moon looks from how big it is; the game lets you industrialise the first while the second never moves. Telescopes crop the sky, a perspective manipulator moves the observer, a PR agency does what PR agencies do, and the Moon says it has not changed size at every opportunity.

It is found rather than advertised. Poke the Moon at the end of the article and a Bigness counter appears; keep going and the Moon suggests, not warmly, that somebody else could be doing this. Readers who never play carry about three kilobytes of it.

The game obeys the study’s rules: it may state no fact the article has not already made. Its engine is pure and deterministic, with no page, clock or randomness inside it, which is what lets hostile saves, keyboard-only play, reduced motion and a missing script all be tested end to end.

Suspiciously Powerful Telescope
Crops the sky. Does not enlarge the Moon. Feels like it does.
Orbital Perspective Manipulator
Moves the observer. Never the Moon.
Moon Enlargement Division
Has never enlarged the Moon. Budget renewed annually.
Second Moon
Legally distinct. Also the same size.
  • 10departments
  • 25upgrades
  • 43record entries
  • 12hof offline work, with a Morning Report
  • PWAinstallable, saves locally, exports as text
05 / Contribution

A playground question, answered properly.

EditorialClaims first, copy second: every factual sentence traces to a reviewed claim, and the site’s tests refuse single-cause answers and words like “solved”.

InteractionDemonstrations that teach by doing: a horizon comparator, a framing model that is plainly “not your phone”, a crop test, each with its limits beside it.

Art directionA lunar calibration desk: a chalk Moon breaking a sodium horizon, and a perforated ribbon that locks onto its width.

GameMoon Clicker, from economy and writing to a deterministic engine, offline progress, versioned saves and an installable shell.

CAT. 05

Evidence-led web study · whydoesrainsmellgood.com

Why does rain smell so good?

One raindrop, followed onto dry ground. An interactive study of a smell nearly everyone loves, built to keep apart two words the internet keeps merging, and to say plainly where the evidence stops.

Role
Research, product, design, engineering
Platform
Web, with a small persistent game
Status
Live and public
Year
2026
Visit
FIG. 07 The study, first screen
The first screen of whydoesrainsmellgood.com: the headline Why does rain smell so good? on warm sand, the direct answer that rain can help move material from a suitable surface into air but does not give every storm one fixed smell, molecule or story, and beside it a single falling drop, a green sprout holding a bead of water above layered soil with worms underneath, and the note Not a forecast. Not a recipe. One drop, then the ground.
Rendered from the live site, whydoesrainsmellgood.com. No backend, no tracking, no cookies.
01 / Purpose

One drop,
then the ground.

Rain can help move material from a suitable surface into the air. That physical transport does not give every storm one fixed smell, molecule or story, and the study is built around holding both halves of that sentence at once.

02 / Context

Petrichor and geosmin are routinely used as one word. They are not. Petrichor is the name Bear and Thomas proposed in 1964 for an odour released when dry rocks, clays and soils are moistened; geosmin is one specific earthy-smelling compound made by microorganisms such as Streptomyces. The page gives the difference its own section, stamped Not the same word.

Where the review could not verify a general cause, for the smell before rain or off a warm pavement, the claim is blocked, and the site says so on its receipts page rather than letting it quietly disappear.

The First Drop on the rain study, stepped to its fifth and last step, Burst and aerosols: a diagram of a drop splashing onto dry, layered ground with air trapped in the soil and droplets thrown upward, a key for water, trapped air and surface, and all five steps listed beside it with the last one highlighted, above the note The experiment shows transport, not a chemical inventory, and the Drop one, Previous, Next step and Show all steps controls.
FIG. 08The First Drop, stepped to its fifth step on the live site.
03 / Interaction

One impact. Five bounded steps.

The First Drop walks one impact through dry surface, impact, trapped air, a bubble at the interface, and the burst that throws up aerosols. It runs from buttons or arrow keys, announces every step, and a full run takes under three seconds. It is labelled for what it is: an illustrated experimental mechanism, not a chemical inventory, a weather model or a smell simulator.

The daft parts are allowed to be daft because they carry nothing. Catchable drops, a pokeable worm, a button that tries to merge the two words and watches them spring apart: none of them states a fact the page has not already made.

Petrichor Garden in the browser, early in a new garden: a readout of growth, soil and sky above the message Clover is in the ground, a green hillside with one planted bed and the Rainflower's seed growing in the middle, a common earthworm working the soil underneath, and a field guide beside it with every plant and worm still to be found.
FIG. 09Petrichor Garden on the live site, just after planting.
04 / The game · whydoesrainsmellgood.com/game/

Petrichor Garden

A tiny garden that grows on its own. Plant something, let it rain, watch the worms work the soil underneath, and find out what turns up. Rain on ground that has been dry a while gives petrichor, the rare currency, and the one place the study’s subject becomes the mechanic.

Nothing punishes absence: no streaks, no timed events, nothing daily. The field notes can only quote the study’s approved wording, looked up by claim, and the blocked claims are unreachable by design. The worm takes credit for the rain. He is wrong.

Visit Petrichor Garden
05 / Contribution

A loved smell, kept honest.

EditorialKept petrichor and geosmin apart, and published blocked claims openly instead of dropping them; the site’s tests reject the phrasings the review would not sign.

InteractionThe First Drop: five bounded steps, keyboard and button driven, with a live announcement for each and no run longer than three seconds.

Art directionKiln dust to storm: a warm serif and a typewriter mono over an authored SVG shower, soil-edge dividers and rubber stamps.

GamePetrichor Garden, a small persistent world where the voice is split: the worm jokes and carries no fact; the readout is dry and official.

The next chapter · whyindex.fyi

Two questions down. The rest keep interrupting.

The Moon and the rain are the first two studies from The WHY Index: a small publication for the questions that interrupt your day, each answered on its own site, with its evidence in plain sight and its limits said out loud.

Live now
whyindex.fyi, the front door, pointing to the two published studies.
In the making
More questions, researched one at a time behind it. They go up when they are finished and not before.
Visit whyindex.fyi
The whyindex.fyi holding page: The WHY Index wordmark, the line A new publication, in the making, the headline Something big is on its way, and two cards marked Live for Why is the moon so big? and Why does rain smell so good?
FIG. 10The front door as it stands today.

Selected work

The index will grow.

  1. 01PaperWatcherNewspaper pricing serviceLive
  2. 02Proper TillLocal-first browser tillLive
  3. 03StorageInventoryRead-only storage inventory for Windows1.0
  4. 04Why is the Moon so big?Evidence-led study and Moon ClickerLive
  5. 05Why does rain smell so good?Evidence-led study and Petrichor GardenLive
  6. NextThe WHY IndexA publication for questions like theseIn the making

Correspondence · Open to work

Work with me.

I design and build digital products end to end, and I am taking on new work.

The five case studies above are the evidence. PaperWatcher is a live public service, Proper Till puts a till in any browser, StorageInventory is an open-source Windows tool that inventories a drive and says when it could not see everything, and two evidence-led studies turn small questions into interactive sites with games of their own. PaperWatcher, Proper Till and the two studies each went from problem to working software with one person doing the product thinking, the design and the engineering.

I work best on small, real problems: operational tools, internal systems, products that have to survive daily use by people who did not choose them. Working software arrives early, and progress is reported plainly, including the problems.

What I buildWeb products, operational tools and quiet services, designed and engineered as one piece.

How I workRemotely from Devon, in short iterations, with something running by the end of the first one.

AvailabilityOpen to freelance projects and product roles now.

Or use the post box