Bulletins

6 September 2026

From recent chats

Stress-test the bridge before shopping for rates

The useful next step after understanding bridging finance is a one-page scenario model, not another representative rate. Put the same proposed purchase through an expected case, a three-month sale delay, and a sale price 10% below the appraisal. For each, show peak debt, end debt, interest at three, six, nine, and twelve months, buying and selling costs, and the cash buffer left at settlement. Then ask two or three lenders or brokers to quote that identical sheet, including whether interest can be capitalised, the maximum bridge period, how they value the old property, and what happens when the period expires.

The decision question is: at what delay or sale-price haircut does buying first become less attractive than selling first and renting briefly? That gives you a stopping rule before the emotional pull of a particular property changes the assumptions. Treat the sheet as preparation for advice from a licensed broker, solicitor or financial adviser, rather than as a substitute for it.

Keep PostgreSQL date filters friendly to a plain index

Casting a timestamp without time zone to date is perfect when you only need the value. In a large-table predicate, however, occurred_at::date = $1 applies an expression to every candidate row and may not use an ordinary B-tree index on occurred_at. Prefer a half-open range when the stored value and requested day share the same calendar semantics:

WHERE occurred_at >= $1::date
  AND occurred_at <  $1::date + INTERVAL '1 day'

Try both forms with EXPLAIN (ANALYZE, BUFFERS) against representative data. If date equality is overwhelmingly the real access pattern, an expression index on (occurred_at::date) is a reasonable alternative, with extra write and storage cost. The follow-up question worth settling in the API contract is whether “day” means the stored wall-clock date or a named time zone; timestamp without time zone cannot answer the latter by itself.

From the homepage

Test for closure before adding another Godot level

When individually satisfying levels still feel like a loose collection, another level can disguise a missing frame rather than supply it. Freeze new level work for a few days and build the cheapest possible “ending pass” around what already exists: a clear opening promise, one repeated visual or musical motif, visible progression between levels, and a short final payoff followed by credits. Give that build to three people who have not watched development and ask where they thought the game became complete, what they believed was progressing, and whether the ending needed a new challenge or simply a stronger conclusion.

Only add the extra level if the sessions independently reveal the same unresolved mechanic or idea. A useful design question is: would this level introduce, combine, test, or punctuate something already present? If the answer is merely “make the game longer”, the framing pass is probably the better route to shipping.

Re-run the serverless argument with one real workload

Serverless is easier to judge as a workload shape than as an architectural era. Take one small, bursty worker you already understand and run it for a fortnight in two forms: a function or scale-to-zero container, and the simplest long-lived process on a VM. Record monthly cost at idle and at observed traffic, p95 first-request latency, deploy and rollback time, alerting effort, and the number of provider-specific services needed. Include logs, network egress, queues, and minimum-instance charges; compute alone rarely tells the whole story.

Write the result as a tiny decision record with an exit rule. For example, choose serverless when it removes meaningful operational work and its latency is acceptable; choose the VM when load is steady, the service is already easy to operate, or portability matters more. The revealing follow-up question is: are you buying scale-to-zero, elastic bursts, or freedom from tending an operating system? Those are different benefits and do not point to the same platform.