Skip to content

Technical Notes

Write-ups from deployments we have actually run, organised by section. Specific problems, the reasoning behind the approach, and what it cost to get wrong. Client names are withheld under confidentiality.

Page 4 of 8

Cloud & Infrastructure8 min read

AWS vs Azure for a growing business

Both are excellent and the comparison as usually written is unusable — hundreds of services against hundreds of services. For a business with a handful of workloads, three factors decide it, and none of them appears in a feature matrix.

AWSAzureEntra IDTerraformDocker
Read the write-up
Networking7 min read

pfSense in a business network

pfSense gives a growing business a firewall, a VPN concentrator and traffic visibility on hardware that costs a fraction of the commercial appliances. What it does not give you is a vendor to call, and that difference should decide whether it belongs in your network.

pfSenseFreeBSDCARPWireGuardOpenVPN
Read the write-up
Networking7 min read

WireGuard vs OpenVPN

These two make opposite design choices about the same problem. OpenVPN negotiates almost everything and is correspondingly flexible; WireGuard fixes almost everything and is correspondingly small. Which is right depends on what your network has to tolerate.

WireGuardOpenVPNpfSenseCurve25519ChaCha20
Read the write-up
IT Support7 min read

Zabbix for business infrastructure

Zabbix and Prometheus are both described as monitoring and are built for different jobs. Zabbix is an integrated system that arrives knowing what a server, a switch and a printer are. That difference is what should decide which one a growing business runs.

ZabbixSNMPMySQLPostgreSQLPrometheus
Read the write-up
IT Support7 min read

Centralised logging with Loki

Logs answer the questions metrics cannot, and they are the first thing an attacker deletes. Loki makes keeping them affordable by indexing labels rather than log text — which is exactly why the labels have to be chosen carefully.

LokiGrafanaPromtailS3LogQL
Read the write-up
Custom Software & CRM8 min read

How a custom CRM actually gets built

Custom software projects rarely fail on code. They fail on scope that was never bounded, data that was worse than anyone admitted, and a launch that assumed people would change how they work because they were told to.

LaravelNode.jsMySQLPostgreSQLREST API
Read the write-up
Custom Software & CRM8 min read

Choosing a technology stack for business software

Stack debates are conducted on technical merit and decided by taste. For a business commissioning software, the properties that matter are how long the platform is supported, who can be hired to work on it, and what happens when the person who built it leaves.

LaravelPHPMySQLPostgreSQLNext.js
Read the write-up
AI & Automation7 min read

Business process automation: what to automate and what to fix

Automating a bad process produces the same bad outcome faster and with less opportunity to notice. The decision that matters is not which tool to use — it is which processes should be automated, which should be simplified first, and which should be eliminated.

n8nBPMNREST APIWebhooksQueues
Read the write-up
Custom Software & CRM7 min read

Building business applications that scale

Most business applications do not fail under load. They fail under data — a query that was instant against ten thousand rows and unusable against two million. Scaling is mostly a database problem, and mostly solvable without any architectural change.

MySQLPostgreSQLRedisLaravelIndexes
Read the write-up
Communications8 min read

Call recording: the obligations nobody checks

Most businesses turn on call recording, keep everything forever, and assume that is the safe option. It is the opposite. Retaining recordings creates obligations, and one of them — card data captured in audio — is a standards violation the moment the recording is written.

AsteriskFreePBXPCI DSSEncryption at rest
Read the write-up
Communications8 min read

VICIdial in production

VICIdial will run a contact centre on hardware that costs a fraction of the commercial alternatives. What it will not do is tolerate being installed and left alone — almost every failure in a VICIdial estate traces to database growth, carrier quality or dialling configuration rather than to the software.

VICIdialAsteriskMySQLSIPLinux
Read the write-up
Communications8 min read

Scaling a contact centre

Doubling call volume does not require double the agents, and the reason it does not is the same reason a small centre feels chaotic while a large one feels calm. Staffing does not scale linearly, and planning as though it does is how centres end up simultaneously overstaffed and missing service levels.

Erlang CAsteriskVICIdialSIPWFM
Read the write-up

Have a Problem That Looks Like One of These?

We typically respond within 4–8 business hours.