<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Tom Wojcik</title><description>Tom Wojcik&apos;s personal blog on Python, AI, software engineering and things I learned along the way.</description><link>https://tomwojcik.com/</link><language>en-us</language><item><title>What AI coding costs you</title><link>https://tomwojcik.com/posts/2026-02-15/finding-the-right-amount-of-ai/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2026-02-15/finding-the-right-amount-of-ai/</guid><description>What&apos;s the effect of the prolonged AI usage among coders and is it tracked correctly, if it all?</description><pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate></item><item><title>I mostly stopped using Ralph</title><link>https://tomwojcik.com/posts/2026-01-15/ralph-claude-code/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2026-01-15/ralph-claude-code/</guid><description>Why I moved from autonomous Ralph loops to interactive Claude Code sessions with implement-then-review.</description><pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Connecting Unsupported Domain Extensions to Cloudflare Pages: A Case Study with .pl</title><link>https://tomwojcik.com/posts/2024-10-22/add-unsupported-domain-cloudflare/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2024-10-22/add-unsupported-domain-cloudflare/</guid><description>tl;dr it&apos;s `Custom domains`.</description><pubDate>Tue, 22 Oct 2024 00:00:00 GMT</pubDate></item><item><title>How to find the relevant attachment in Sentry, if there&apos;s no searchbar?</title><link>https://tomwojcik.com/posts/2024-06-18/sentry-search-attachment/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2024-06-18/sentry-search-attachment/</guid><description>Check all the attachment pages. Automatically!</description><pubDate>Tue, 18 Jun 2024 00:00:00 GMT</pubDate></item><item><title>Monitoring Memory Usage on Ubuntu with Bash and systemctl</title><link>https://tomwojcik.com/posts/2024-04-17/alert-memory-consumption/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2024-04-17/alert-memory-consumption/</guid><description>A guide on how Ubuntu users can set up a memory monitoring system using Bash scripting and systemctl.</description><pubDate>Wed, 17 Apr 2024 00:00:00 GMT</pubDate></item><item><title>I have analyzed all the Python user groups</title><link>https://tomwojcik.com/posts/2023-05-21/i-have-analyzed-python-user-groups/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2023-05-21/i-have-analyzed-python-user-groups/</guid><description>I scraped all 324 Python User Groups from the official wiki. Only 18.2% were still alive.</description><pubDate>Sun, 21 May 2023 00:00:00 GMT</pubDate></item><item><title>A primer on creating custom types in Python</title><link>https://tomwojcik.com/posts/2023-03-12/creating-types-for-type-annotation/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2023-03-12/creating-types-for-type-annotation/</guid><description>Adding type annotations to the existing codebase without altering the classes themselves.</description><pubDate>Sun, 12 Mar 2023 00:00:00 GMT</pubDate></item><item><title>StrEnum(str, enum.Enum) is not backwards compatible starting with Python 3.11</title><link>https://tomwojcik.com/posts/2023-01-02/python-311-str-enum-breaking-change/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2023-01-02/python-311-str-enum-breaking-change/</guid><description>How to support all Python 3.x versions?</description><pubDate>Mon, 02 Jan 2023 00:00:00 GMT</pubDate></item><item><title>How to deploy Django project on fly.io for free</title><link>https://tomwojcik.com/posts/2022-09-02/django-app-on-fly/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2022-09-02/django-app-on-fly/</guid><description>After Heroku abandoned their free tier, I&apos;ve decided to migrate my side projects to fly.io. I&apos;m happy with this change!</description><pubDate>Fri, 02 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Fix NextCloud login on Android app</title><link>https://tomwojcik.com/posts/2022-08-13/nextcloud-mobile-app-android-login/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2022-08-13/nextcloud-mobile-app-android-login/</guid><description>Fix the &apos;Strict mode: No HTTP connection allowed&apos; error when logging into NextCloud Android app behind a reverse proxy.</description><pubDate>Sat, 13 Aug 2022 00:00:00 GMT</pubDate></item><item><title>Training OCR Model for Diablo 2 Font</title><link>https://tomwojcik.com/posts/2022-05-01/training-ocr-for-diablo2/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2022-05-01/training-ocr-for-diablo2/</guid><description>Fine-tuning Tesseract to read Exocet, the iconic Diablo typeface.</description><pubDate>Sun, 01 May 2022 00:00:00 GMT</pubDate></item><item><title>Mapping container volumes on Synology NAS</title><link>https://tomwojcik.com/posts/2022-04-24/mapping-docker-volume-on-synology-nas/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2022-04-24/mapping-docker-volume-on-synology-nas/</guid><description>How to correctly map Docker container volumes on Synology NAS with Portainer.</description><pubDate>Sun, 24 Apr 2022 00:00:00 GMT</pubDate></item><item><title>Two ways to block internet connection in Python tests</title><link>https://tomwojcik.com/posts/2021-08-18/globally-block-internet-connection-in-django/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2021-08-18/globally-block-internet-connection-in-django/</guid><description>Comparing httpretty and responses.</description><pubDate>Wed, 18 Aug 2021 00:00:00 GMT</pubDate></item><item><title>To eager or not to eager - how to properly test your Celery tasks</title><link>https://tomwojcik.com/posts/2021-03-02/testing-celery-without-eager-tasks/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2021-03-02/testing-celery-without-eager-tasks/</guid><description>Celery docs mention it&apos;s not recommended to use eager mode for testing. If so, how to test it properly without it?</description><pubDate>Tue, 02 Mar 2021 00:00:00 GMT</pubDate></item><item><title>Fix broken PyCharm environment with docker</title><link>https://tomwojcik.com/posts/2021-01-20/filenotfound-fragmentpy-pycharm/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2021-01-20/filenotfound-fragmentpy-pycharm/</guid><description>How to fix the FileNotFoundError for fragment.py when PyCharm&apos;s Docker helpers get corrupted.</description><pubDate>Wed, 20 Jan 2021 00:00:00 GMT</pubDate></item><item><title>Make Django tests rebuild the database if it exists</title><link>https://tomwojcik.com/posts/2020-11-04/make-pycharm-rebuild-django-db/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2020-11-04/make-pycharm-rebuild-django-db/</guid><description>How to fix &apos;database already exists&apos; errors when running Django tests from PyCharm with Docker.</description><pubDate>Wed, 04 Nov 2020 00:00:00 GMT</pubDate></item><item><title>Local S3 with Django and MinIO</title><link>https://tomwojcik.com/posts/2020-09-18/local-s3-with-django-and-minio/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2020-09-18/local-s3-with-django-and-minio/</guid><description>How to use MinIO to simulate AWS S3 locally in your Django project with docker-compose.</description><pubDate>Fri, 18 Sep 2020 00:00:00 GMT</pubDate></item><item><title>Pre-commit hooks</title><link>https://tomwojcik.com/posts/2020-08-08/pre-commit-hooks/</link><guid isPermaLink="true">https://tomwojcik.com/posts/2020-08-08/pre-commit-hooks/</guid><description>A practical guide to flake8, black, mypy, and pre-commit hooks in Python projects.</description><pubDate>Sat, 08 Aug 2020 00:00:00 GMT</pubDate></item></channel></rss>