[All posts](https://zcp.zsoftly.ca/blog)
Blog

# Engineering

Architecture decisions, performance, and how we build ZCP.

Engineering

October 11, 2026

### [The Restart That Hid a Libvirt Bug](https://zcp.zsoftly.ca/blog/the-restart-that-hid-a-libvirt-bug)

A seven-minute VM create, two wrong turns, a self-healing timer I built and then deleted, and the package update that fixed it.

Engineering

October 5, 2026

### [Private Desktops: Lessons from Testing](https://zcp.zsoftly.ca/blog/what-we-learned-testing-private-employee-desktops)

What to test before a private desktop rollout: daily work, video calls, network paths, storage, and offboarding.

Engineering

September 29, 2026

### [What Do Private Desktops Cost?](https://zcp.zsoftly.ca/blog/what-private-employee-desktops-cost)

Compare private desktop costs: shared services, per-person workspaces, and Windows 365 pricing.

Engineering

September 23, 2026

### [Why Use Private Desktops?](https://zcp.zsoftly.ca/blog/why-we-built-private-employee-desktops)

A business case for private employee desktops: controlled backend access from everyday employee devices.

Engineering

September 19, 2026

### [Even On-Prem, Servers Should Be Cattle, Not Pets](https://zcp.zsoftly.ca/blog/even-on-prem-servers-should-be-cattle-not-pets)

How we rebuilt our authoritative DNS design around independently operable roles, a reversible cutover, and observability that describes the system we now run.

Engineering

September 16, 2026

### [We Moved Our Own DNS onto Our Own Platform](https://zcp.zsoftly.ca/blog/migrating-our-dns-to-our-own-platform)

How we registered .ca nameserver host records, recovered from an unrequested delegation change, and moved zsoftly.ca onto the nameservers we sell to customers.
