DEFAULT LOCAL / PRINCIPLES

Defaults become
architecture.

Software inherits the assumptions made at its beginning.

If the default assumption is remote compute, systems naturally accumulate APIs, infrastructure, data movement and operational complexity. We start somewhere else.

Local first.

The best network request is sometimes no network request.

If computation can happen on your device, it should. Local execution means lower latency, greater resilience and less data unnecessarily leaving your control.

We prefer systems that can continue to perform useful work when connectivity disappears.

Local is not a deployment target added later. It is an architectural constraint considered from the beginning.

Small before large.

Use the smallest system capable of doing the work correctly.

A deterministic function is preferable to a model when the answer is deterministic. A small specialised model is preferable to a general model when the task is specialised.

A large model is valuable when genuine reasoning warrants its cost.

This is not austerity. It is engineering.

Incremental
by default.

Do not recompute the world.

The world rarely changes completely between two moments. Most systems nevertheless repeatedly process information they already understand.

We prefer systems that maintain state and process changes. Reuse what is already known. Recompute only what changed.

Evidence before belief.

Intelligent software should be able to explain why it believes something.

Information should retain its source, provenance, timestamp, confidence and history.

Generated output is not automatically truth. A useful system should distinguish an observation from an inference, and an accepted fact from a disputed claim.

Portable state.

Infrastructure is replaceable.
The user’s information should not be.

Canonical state should survive model, database, index, runtime and device changes.

Keep that state understandable and portable. A better representation of a problem can eliminate enormous amounts of computation, without tying the information to the machinery used to process it.

Indexes are projections. User knowledge is not.

Cloud when useful.

Remote execution should be a decision. Not a reflex.

The cloud is extraordinarily useful. Use it for things it does better: synchronisation, collaboration, heavy optional computation, distribution, backup and global services.

The goal is to use the right computer for the job — often the one already in front of the user.

See what we're building