Static Python type hints – advantages and drawbacks

While Python is a dynamically typed language, it is possible to add type hints to your code. This makes code more readable and allows for static analyzers to check your code for type errors, e.g. during development or in a CI pipeline. This article discusses the advantages and drawbacks of static Python type hints in … Read more

SQlite and Python caveats

Python and SQLite caveats

SQLite is a popular, relational database that you embed into your application. Python comes with official bindings to SQLite. This article examines caveats of using SQLite in Python. It demonstrates problems different versions of linked SQLite libraries can cause, how datetime objects are not properly stored, and how you need to be extra careful when … Read more

SQlite performance tuning

SQLite performance tuning

SQLite is a popular, relational database that you embed into your application. With an increasing amount of data in your database, you need to apply SQLite performance tuning. This article discusses indices and its pitfalls, the use of the query planner, the Write-Ahead-Logging (WAL) journal mode and increasing the cache size. It also elaborates on … Read more

SQlite traps and pitfalls

SQLite traps and pitfalls

SQLite is a popular, relational database that you embed into your application. However, there are many traps and pitfalls you should avoid. This article discusses several pitfalls (and how to avoid them), such as the use of ORMs, how to reclaim disk space, minding the maximum number of query variables, column data types and how … Read more

Stop It! Create audio bookmarks on Android

This posts presents my open source Android app named Stop It! which lets you create bookmarks for audio tracks you play with third party Android audio players, e.g. music or podcast apps. Introduction Bookmarks are a well-known concept from real (or virtual) books, and web sites. You have certainly used them thousands of times already. … Read more

Vagrant vs. Docker

Vagrant vs. Docker

Updated 2022-09-18 to reflect that Docker for Desktop and Virtualbox can co-exist on Windows, because Hyper-V is no longer a requirement for Docker for Desktop. Vagrant is a tool that automatically downloads and configures virtual machines, according to a recipe file. Docker does something similar, but can achieve better performance in specific situations. This article … Read more

Create a Vagrant box with Packer

How to create a Vagrant box with Packer

Vagrant is a tool that automatically downloads and configures virtual machines, according to a recipe file. Typically, the base image is downloaded from the Vagrant Cloud, a repository of user-submitted boxes. This article explains how to create a Vagrant box, which is necessary if there is no appropriate box on Vagrant Cloud, or if you … Read more

Introduction to Vagrant

The complete introduction to Vagrant

Vagrant is a tool that automatically downloads and configures virtual machines, according to a recipe file. It is similar to Docker, but with extended support for different, virtualized operating systems. Use cases include setting up virtual test beds, or CI build machines. This article provides an introduction to Vagrant’s concepts and how it works, as … Read more

best collaborative code editors

Google Docs for code: the best collaborative code editors in 2020

Collaborative code editors let developers write code together in real time, just like Google Docs. This article compares Microsoft Live Share, Atom TeleType, Floobits, CodeTogether, and CodeInterview. I clearly demonstrate the limitations and benefits of each tool, including how it integrates into existing IDEs, end-to-end encryption and pricing. I’ll conclude with recommendations for different use … Read more

git submodule tutorial

Git submodule tutorial – from zero to hero

Git allows a repository to include other Git repositories as submodules. However, the submodules mechanism is complicating several workflows that are usually straightforward, like committing or checking out changes. This Git submodule tutorial explains the concept of submodules and helps you navigate the most important workflows. All steps and commands are demonstrated by example, using … Read more