This is a list of guides I wrote on this blog. They are setup guides for some technologies, or ways to implement best programming practices.
Other educational content: a list of factoids I use in #python on Libera.Chat
-
Deploying Python Web Applications with Docker
- Topic: Python web apps and Docker
- Platform: Linux
- Updated:
Ten years ago, almost to the day, I wrote a very long blog post titled Deploying Python Web Applications with nginx and uWSGI Emperor. This week, I’ve migrated the Python web applications hosted on my VPS to Docker containers. Here are some reasons why, and all my Docker files to help you do this on your server.
-
PowerShell: the object-oriented shell you didn’t know you needed
- Topic: PowerShell
- Platform: Windows, Linux, macOS
- Updated:
PowerShell is an interactive shell and scripting language from Microsoft. It’s object-oriented — and that’s not just a buzzword, that’s a big difference to how the standard Unix shells work. And it is actually usable as an interactive shell.
-
Deploying Python Web Applications with nginx and uWSGI Emperor
- Topic: Python, web apps
- Platform: Ubuntu, Debian, Fedora, CentOS, AlmaLinux, Rocky Linux, Arch Linux
- Updated:
You’ve just written a great Python web application. Now, you want to share it with the world. In order to do that, you need a server, and some software to do that for you.
The following is a comprehensive guide on how to accomplish that, on multiple Linux-based operating systems, using nginx and uWSGI Emperor. It doesn’t force you to use any specific web framework — Flask, Django, Pyramid, Bottle will all work. Written for Ubuntu, Debian, Fedora, CentOS 7, Alma Linux, Rocky Linux and Arch Linux (should be helpful for other systems, too). Now with an Ansible Playbook.
Revision 8 (2022-02-20): works with Fedora 35, AlmaLinux 8, RockyLinux 8
While this guide is still valid, in 2026 I switched to Docker and Gunicorn for my Python web app deployments. Check out Deploying Python Web Applications with Docker for more details.
-
Python Virtual Environments in Five Minutes
- Topic: Python virtual environments
- Platform: any platform
- Updated:
In Python, virtual environments are used to isolate projects from each other (if they require different versions of the same library, for example). They let you install and manage packages without administrative privileges, and without conflicting with the system package manager. They also allow to quickly create an environment somewhere else with the same dependencies.
Virtual environments are a crucial tool for any Python developer. And at that, a very simple tool to work with.
-
Enabling Virtualization Support in Boot Camp with rEFInd
- Topic: virtualization in Boot Camp
- Platform: Intel Macs
- Updated:
You installed Windows on an Intel Mac via Boot Camp, and want to use virtualization in it. But there’s an issue — hardware virtualization extensions are not available. Luckily, this can be worked around easily with the help of rEFInd, an alternate boot manager.
-
Setting up a Python development environment
- Topic: Python
- Platform: Windows, macOS, Linux
- Updated:
Setting up Python is usually simple, but there are some places where newcomers (and experienced users) need to be careful. What versions are there? What’s the difference between Python, CPython, Anaconda, PyPy? Those and many other questions may stump new developers, or people wanting to use Python.
-
Spawning subprocesses smartly and securely
- Topic: spawning subprocesses
- Platform: Unix/Linux (and partially Windows)
- Updated:
As part of your code, you may be inclined to call a command to do something. But is it always a good idea? How to do it safely? What happens behind the scenes?
-
Python Apps the Right Way: entry points and scripts
- Topic: Python
- Platform: any platform
- Updated:
There are multiple ways to write an app in Python. However, not all of them provide your users with the best experience.
One of the problems some people encounter is writing launch scripts. The best way to handle this is the Entry Points mechanism of Setuptools, and a
__main__.pyfile. It’s quite easy to implement. If you’re interested, read on to learn more! -
Unix locales vs Unicode (‘ascii’ codec can’t encode character…)
- Topic: Locale support/Unicode
- Platform: Unix (Linux, macOS, etc.)
- Updated:
You might get unusual errors about Unicode and inability to convert to ASCII. Programs might just crash at random. Those are often simple to fix — all you need is correct locale configuration.
-
Adventures in Windows: Music Player Daemon
- Topic: MPD
- Platform: Windows
- Updated:
Recently, I had to reinstall Windows. One of the things I had to set up was MPD, the Music Player Daemon.
This is a short guide on how to do this.