08.1
Start from constraints
Data volumes, latency expectations, compliance requirements and team capacity shape the design before any diagram is drawn.
01Software engineering practice
We design, build and maintain software systems — web applications, backend services, integrations and the infrastructure they run on. The work is deliberately unglamorous: clear scope, readable code, reviewable increments.

02Introduction
HUMBLE JACKET LTD is an independent software company. We take on engineering work where the requirements are real, the constraints are known, and the result has to keep functioning after the initial delivery is over.
Most of what we do falls into a small number of categories: writing applications that did not exist before, connecting systems that were never designed to talk to each other, moving workloads onto infrastructure that can be reasoned about, and improving software that has drifted away from the way the business now works.
We describe capability rather than promise outcomes. Where an approach carries risk, we say so before the work begins, and we prefer scoping a small first piece over agreeing to a plan neither side can verify.
03Core expertise
Turning domain rules into code that expresses them plainly — data models, state transitions, validation and the boundaries between modules — so behaviour can be traced without guesswork.
Designing services that communicate over unreliable networks: idempotent operations, explicit retries, timeouts, backpressure and sensible failure modes instead of silent data loss.
Schema design, migrations, indexing strategy, query performance and the reporting paths that sit on top of transactional data.
Structured logging, metrics, tracing and alerting designed at the same time as the feature, not retrofitted after the first incident.
Authentication and authorisation models, secret handling, input validation, least-privilege access and dependency hygiene applied as routine engineering practice.

04Software development
Custom development starts with an honest description of the process being supported. We write down the entities, the rules that govern them, and the cases that break the happy path — then build the smallest version that a real user can operate end to end.
From there the system grows in reviewable increments. Each increment ships with tests, migrations and documentation, so the codebase stays in a state where the next change is cheap rather than frightening.
Increment
Delivery unit
Working software
Default output
05Web application engineering
A web application is judged on the days when the network is slow, the data is messy and the user is in a hurry. We build for those days: predictable loading states, forms that preserve input, errors that explain themselves, and URLs that can be shared and reloaded.
Semantic structure, keyboard operability and sufficient contrast treated as requirements rather than a later audit.
Payload budgets, sensible caching, lazy loading of non-critical assets and measurement on realistic devices.
Layouts designed from the narrow viewport outwards, so mobile is a first-class case rather than a compression of the desktop design.
Content and metadata available in the initial response where the project benefits from it, including for crawlers.
06Cloud and infrastructure

Infrastructure is described in configuration and kept in version control, so an environment can be recreated deliberately instead of remembered. Deployments are automated, repeatable and reversible.
07Integration & automation
Many operational problems are not missing features but missing connections: a spreadsheet re-keyed between two systems, a report assembled by hand each week, an approval that lives in an inbox.
We map the current process exactly as it runs today, identify the steps that are mechanical, and replace those with scheduled jobs, event-driven handlers or API integrations — leaving human judgement where human judgement belongs.

08System architecture
08.1
Data volumes, latency expectations, compliance requirements and team capacity shape the design before any diagram is drawn.
08.2
A modular monolith that one team can operate usually beats a distributed design that nobody can debug at 2am.
08.3
Interfaces between modules are defined in code and tested, so responsibilities do not quietly leak across them.
08.4
The parts most likely to change are isolated, so a new rule does not require touching a dozen unrelated files.
08.5
Each significant decision is captured with its context, alternatives and trade-offs, so future maintainers inherit the reasoning.
08.6
When a decision no longer fits the evidence, it is amended rather than defended.
09Delivery process
01
Read the problem, interview the people who live with it, write down what the system must do and what it must never do.
02
Agree the first slice, the interfaces, the data model and the acceptance criteria. Ambiguity is resolved here, in writing.
03
Short cycles producing running software. Code review, automated tests and migrations accompany every change.
04
Functional, integration and regression checks against the agreed criteria, plus a review on realistic data.
05
Documentation, runbooks, deployment access and a walkthrough, so the system can be operated without us.
10Quality assurance
Automated tests exist to make change safe. We aim for a layered set: fast unit tests around business rules, integration tests across real boundaries such as the database and external APIs, and a small number of end-to-end checks covering the paths a user cannot afford to lose.
Defects found in review or in production are reproduced with a failing test before they are fixed, so the same fault does not return quietly in a later release.

11Collaboration
Decisions, scope changes and open questions are confirmed in writing so both sides can refer back to them months later.
Small, frequent deliverables give you the chance to correct direction early, when correction is inexpensive.
Technical trade-offs are explained in terms of cost, risk and time rather than jargon.
If an estimate is slipping or an approach turns out to be wrong, you hear it as soon as we know it.
Where an in-house team is involved, we adopt their conventions instead of imposing ours.
12Technology principles
Mature, well-documented technology with a large support base is chosen over novelty unless novelty solves a real constraint.
Code is read far more often than it is written. Clarity outranks brevity.
Data models and export paths are designed so information can leave the system as easily as it entered.
Where a managed service is used, the dependency and the cost of leaving it are stated up front.
13Frequently asked questions
Custom business applications, web platforms, backend services and APIs, data and workflow automation, and cloud infrastructure work. Engagements range from a single well-defined component to the design and delivery of a complete system.
With a written description of the problem. We read it, ask questions, and reply with our understanding of the scope, the parts that look uncertain, and a suggested first slice of work that produces something reviewable.
Yes. Reading an existing system, documenting how it actually behaves, and improving it incrementally is a normal part of the work. We do not require a rewrite as a precondition.
Choices follow the problem rather than a fixed stack. In practice that means widely supported languages, relational databases where data integrity matters, managed cloud services where they reduce operational burden, and boring, well-documented tools over novel ones.
Ownership, licensing and handover terms are agreed in writing before work starts. We aim for a codebase another team can pick up without us.
Through working software at short intervals, plus written notes describing what changed, what was decided, and what is still open. Written records are preferred over verbal updates because they remain available later.
Yes. That includes joining an existing process, reviewing code, pairing on difficult areas, or taking ownership of a defined subsystem while the in-house team continues elsewhere.
Send an email to rosiecarter197282@gmail.com describing the system, the outcome you need, any constraints, and your timing expectations.
14Contact
A useful first message describes the system or process involved, the outcome you are trying to reach, any technical or regulatory constraints, and your timing expectations. This site contains no contact form and no submission controls — please write directly to the address above.