Blog
IT insights from the field
Engineering notes, how-tos, and lessons learned — from our team to yours.
Latest articles
Huawei vs Cisco vs MikroTik: choosing network gear for an SMB
There is no single best network vendor — there is a right fit for your budget, your team's skills, and how much you value a support contract. We run all three; here is how we decide.
MariaDB vs MySQL vs PostgreSQL: choosing an open-source database
“Which database?” is the wrong question. The right one is what the workload looks like, what your team knows, and what your stack assumes. We run all three — here is how we think it through.
AWS vs Azure for an EU SMB: which, and when both
For most EU SMBs the AWS-vs-Azure question is not which is better — both are excellent. It is fit: your estate, your skills, where data must live, and whether two clouds are worth the operational cost.
How we built a 40-GPU inference cluster in 48 hours for an AI hackathon
Infiano needed 240 AI-hackathon submissions evaluated in a week on a custom 20B model. We stood up a 40-GPU vLLM cluster on vast.ai in 48 hours — 236 submissions scored, zero 5xx, under $3,000.
What a DevOps retainer actually buys — and where outsourced DevOps goes wrong
The pitch sells a project: set up your CI/CD, write your Terraform. That finishes in weeks. The retainer is the operational tail it leaves behind — and if you cannot see what fills it, you cannot tell work from a phone number.
Merging two Jira Data Center instances: what actually collides
A merger, an acquisition, a reorg: two companies, two Jira instances, and a mandate to become one. There is no merge button, and the reason there isn't — two independently-built configuration models — is the whole story.
n8n or code your AI agent writes: the cost was never the writing
Why pay for an automation platform when Claude Code or Codex writes the integration in an afternoon? A fair question with an honest answer: the cost of an integration was never the writing — it is the running.
Wiring Asterisk to a CRM: AMI, ARI, AGI, and which one you need
"Integrate the phones with the CRM" is really three projects: click-to-call, screen-pop, and call logging. They use different parts of Asterisk, and conflating them is how integrations end up brittle.
Ollama vs vLLM in production: the decision, not the benchmark
They get compared as if interchangeable. They are not: Ollama makes running a model on one machine trivial; vLLM serves a model to many callers at once, fast. The decision is almost entirely about concurrency.
What Mimikatz reaches, and the hardening that makes it not matter
The dump has already happened. The only questions left are what the account it ran as could reach, and whether any of it mattered. Defending against Mimikatz is never one setting — it is making a successful credential dump worthless.
What ten years of Active Directory actually contains
There is no shortage of scripts that find stale accounts. What is missing is the other half: which findings are dangerous to act on. Deleting the wrong object does not raise an error — it produces a cluster that will not come online three months later.
Restructuring file server permissions without breaking access
The migration is done and the audit output says a decade of exceptions. Fixing it is not a weekend job — it is weeks, and most of that is waiting. Here is the additive method where every step can be undone on its own.
File server migration without breaking permissions
Copying the data is the part that rarely goes wrong. Monday morning is, when forty people cannot open the folder they opened every day for six years. Here is the audit to run before you copy anything.
SQL Server Always On failover: the checklist, not the theory
Microsoft documents how availability groups work. This is the other page — the one you read at 3am: what to check before moving the primary, what does not replicate with your databases, and what to verify the moment it lands.
8 JSM SLA mistakes we keep finding in audits
Atlassian documents how to configure an SLA. It cannot tell you that yours is measuring the wrong thing and that nobody believes the dashboard any more. These are the problems we find, in order of how often they appear.
pgBouncer: what breaks when you switch to transaction pooling
Session mode gives each client its own backend for as long as it stays connected. Transaction mode hands it back at every COMMIT. Every problem below follows from that single difference — and most of them appear only under load.
pfSense to OPNsense: what transfers, what you rebuild
The configuration formats are related but not compatible, and importing one into the other gives you a firewall that looks configured and is not. The migration is a rebuild — which is also the opportunity to delete the rules nobody can explain.
Virtual MikroTik CHR and OSPF: building redundant VPN networks
RouterOS as VMs on the hypervisors you already run, physical MikroTik at the branches, and OSPF deciding the paths instead of a spreadsheet of static routes. Including the MTU problem that makes these networks "mostly work".
On-prem LLM costs: when self-hosting beats paying per token
API cost is pure variable, self-hosting is almost pure fixed, and two lines like that cross exactly once. Finding where your workload sits on that chart — including the costs both sides quietly leave out.
Migrating SQL Server Agent jobs to PostgreSQL
SQL Agent is a scheduler, a retry engine, a credential store, a history database and an alerting system in one service. PostgreSQL ships none of it, and the usual mistake is to replace only the scheduler.
Patroni failover: 10 scenarios to test before production
Patroni does not prevent split-brain — the distributed configuration store does, and Patroni is the thing that respects it. Here is what to break on purpose before the cluster carries real writes.
SQL Server to PostgreSQL migration: what actually breaks
Moving the rows is the easy part. The collation change nobody noticed, the stored procedures that cannot be translated, and the forty SQL Agent jobs with no home on the other side — that is where these projects go wrong.