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…
26 September 2026What 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…
26 September 2026Working 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…
26 September 2026Everyone 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…
26 September 2026Moving 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…
19 September 2026Pinning 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…
19 August 2026The 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…
5 July 2026Why 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…
20 May 2026Crawled 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…
5 April 2026The 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…
13 February 2023Kako 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…
5 December 2022Django 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' ])]…
27 November 2022Django 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…
27 November 2022Django 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…
27 November 2022Django 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…
27 November 2022Django 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…
