Articles

Notes from our day-to-day work — the breakages we ran into, the fixes that held up, and what we learned building software.

26 September 2026

All your construction sites on one screen

When a company runs several sites at once, a good part of a manager's day goes on questions: how many people are where, is a site running late, has the material…

constructisconstructionoverview+1+2
26 September 2026

What does a construction site really cost you?

On most sites, the data about cost exists, but it is spread across the whole company. Invoices are in accounting, working hours with the foreman, material stock…

constructisconstructioncosts+1+2
26 September 2026

Working hours on site without paper timesheets

On many construction sites, working hours still travel like this: the foreman writes them in a notebook or on a sheet of paper, sends a photo to the office at t…

constructisconstructionworking hours+1+2
26 September 2026

Everyone in their own language: translating records, documents and chat

On today's construction sites, it is rare for everyone to speak the same language. The site manager is Croatian or German, and the crew includes workers from Tu…

constructisoffice assistanttranslation+1+2
26 September 2026

Moving websites off the mail server without anyone noticing

For years one of our machines did everything: it was the mail server, the authoritative DNS server for our domains and our customers' domains, and the web serve…

nginxapachedns+2+3+4
19 September 2026

Pinning WeasyPrint is not enough: how one unpinned dependency broke every PDF

Our internal platform generates PDFs in more than twenty places: outgoing invoices and their specifications, travel orders, annual leave decisions, meeting reco…

weasyprintpdfpython+1+2+3
19 August 2026

The bug that only existed for our biggest customer: rate limits, loops and an empty map

Our fleet module has a live map. You open it, and every company vehicle shows up with its current position and, next to it, the name of the driver behind the wh…

apirate limitingcaching+2+3+4
5 July 2026

Why our Django migrations are not in git — and what that costs us

Django's documentation is unambiguous: migrations are source code, you commit them, they travel with the app. Almost every Django project does exactly that, and…

djangomigrationsdeployment+1+2+3
20 May 2026

Crawled 16 out of 16: how our prerender succeeded at doing nothing

Our website is a React single-page application. The articles on it — including this one — live in our internal knowledge base and are fetched through an API whe…

reactprerenderingseo+2+3+4
5 April 2026

The fake website that kept our mail server certificate alive

While cleaning up an old server, we found a web virtual host serving a single index.html from 2018. No links pointed to it, no one used it, and it had its own T…

tlsletsencryptdns+2+3+4
13 February 2023

Kako dodati swap na Linux server?

Svaki Linux server dolazi unaprijed s određenom količininom prostora na disku koji se koristi kao swap memorija (mjesto gdje se iz glavne memorije privremeno sn…

swaplinuxdebian+1+2
5 December 2022

Django 4.1: Indexing

How to index: In your model, add the following to class Meta: my_model(models.Model): field1 = .. ... class Meta : indexes = [models.Index(fields=[ 'field1' ])]…

djangoindex+1
27 November 2022

Django 4.1: Controlling Events With Signals

When we look at web applications, we often see them as well-organized systems, made out of many components that are working together in harmony. There are many…

djangosignals+1
27 November 2022

Django 4.1: Caching With Redis

Django is one of those frameworks that can do wonders if you invest enough time in them and pay attention to small details. It’s a framework that is rich in fea…

djangorediscache+1+2
27 November 2022

Django 4.1: Improving Database Accessibility

Today’s commodity in all applications, written by all manner of different programming languages, is speed. For example, how fast we get our render, send our inf…

djangodatabaseoptimization+1+2
27 November 2022

Django 4.1: Where To Apply Async

Some exciting changes are coming in the future of Django Framework’s ongoing development. One of the notable changes is updated support for asynchronous data ac…

djangoasync+1