Python logo

Best practices for using Python & uv inside Docker

The ultimate guide to using uv package manager inside Docker

Python

How to run Python in production

My previous article recommended that one should reconsider using Python in production. However, there鈥檚 one category of use case where Python is the dominant option for running production workloads. And that鈥檚 data analysis and machine learning. Almost all bleeding-edge work in data analysis and machine learning, especially around LLMs, happens in Python. ...

Google Cloud

It is hard to recommend Google Cloud

Google Domains A year back, I had to migrate my domain after Google decided to shut down Google Domains. I had to, not only, painfully setup multiple side-projects subdomain mappings again on a new domain registrar but also re-verify my domain and re-create those mappings on Google Cloud Run. Google Container Registry Google Container Registry is shutting down in 2025. It has been replaced with a new project called Artifact Registry. So, why is Container Registry being shut down? Probably because it 10X cheaper than Artifact Registry. ...

Python logo

Best practices for using Python & Poetry inside Docker

The ultimate guide to using Poetry inside Docker

GitHub Actions Logo

Common pitfalls of GitHub Actions

If you create GitHub Actions via GitHub鈥檚 UI by going to the URL of the form `https://github.com///actions/new`, it provides templates for setting up the build. However, the template is broken. There are four problems with the default template

Incremental testing: save time and money on CI for monorepo

Incremental testing: save time and money on CI for monorepo

To use monorepo or not is an eternal debate. Each has its pros and cons. Let鈥檚 say you decide to go with monorepo, one major issue you will face over time is slow testing. Imagine a monorepo, consisting of an Android app, an iOS app, some backend code, some web frontend code. On only very few occasions will someone modify more than one of those simultaneously. Further, most of these projects confined to their directories would be using different build systems as well, for example, gradle for Android, yarn/npm for Javascript, go/rust/java/npm for the backend. The total build time and test time will only grow over time. It annoys developers making small modifications to their part of the codebase. And it slows down the development velocity drastically.

Circle CI

Circle CI vs Travis CI

Update: As of Mar 2022, I recommend everyone to use GitHub Actions I maintain a somewhat popular Android developer tool ( adb-enhanced). The tool is written in Python, supporting both Python 2 and 3. Testing the tool requires both Python runtime as well a running Android emulator. I, initially, used Travis CI for setting up continuous testing of this tool. Later, I felt that Travis CI was too slow and when I came across Circle CI, I decided to give it a try. As of now, both Travis and Circle CI are used for testing. Here is what I learned from my experience.