<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>rogulski.it</title><description>Python, backend engineering, and the cloud. By Piotr Rogulski.</description><link>https://rogulski.it/</link><item><title>Knative KafkaChannel, Subscriptions, and SinkBinding</title><link>https://rogulski.it/blog/knative-channel-subscription-with-sink-binding/</link><guid isPermaLink="true">https://rogulski.it/blog/knative-channel-subscription-with-sink-binding/</guid><description>Build an event-driven pipeline with Knative KafkaChannel, Subscriptions, and SinkBinding. Compare channels with brokers and connect Python event producers.</description><pubDate>Sat, 25 Feb 2023 20:45:00 GMT</pubDate><category>knative</category><category>kubernetes</category><category>kafka</category><category>event-drive</category><category>python</category></item><item><title>Troubleshoot Knative Eventing with Kafka: Useful Commands</title><link>https://rogulski.it/blog/troubleshooting-knative-with-kafka/</link><guid isPermaLink="true">https://rogulski.it/blog/troubleshooting-knative-with-kafka/</guid><description>Debug Knative Eventing with Kafka using kn and kubectl commands. Inspect services, revisions, triggers, Kafka sources, and event delivery.</description><pubDate>Tue, 24 Jan 2023 10:45:00 GMT</pubDate><category>python</category><category>knative</category><category>kafka</category><category>kubernetes</category><category>eventing</category><category>tip</category></item><item><title>Python Mock side_effect: Return Values Based on Input</title><link>https://rogulski.it/blog/smart-mock-by-side-effect-replace/</link><guid isPermaLink="true">https://rogulski.it/blog/smart-mock-by-side-effect-replace/</guid><description>Use Python unittest.mock side_effect with a custom iterator to return different values while preserving method arguments in mocked results.</description><pubDate>Tue, 17 Jan 2023 10:45:00 GMT</pubDate><category>python</category><category>mock</category><category>tests</category><category>til</category><category>tip</category></item><item><title>Consume Kafka Events with Knative and FastAPI on Kubernetes</title><link>https://rogulski.it/blog/kafka-consumer-knative-fastapi/</link><guid isPermaLink="true">https://rogulski.it/blog/kafka-consumer-knative-fastapi/</guid><description>Build an event-driven Python service with FastAPI, Kafka, and Knative on Kubernetes. Configure Kafka sources, brokers, and triggers to route events.</description><pubDate>Thu, 15 Sep 2022 19:45:00 GMT</pubDate><category>knative</category><category>kubernetes</category><category>kafka</category><category>python</category><category>fastapi</category></item><item><title>Fix Kubernetes Resources Stuck Deleting with Finalizers</title><link>https://rogulski.it/blog/kubernetes-stuck-resource-action/</link><guid isPermaLink="true">https://rogulski.it/blog/kubernetes-stuck-resource-action/</guid><description>Diagnose a Kubernetes custom resource stuck during deletion and inspect its finalizers, using a Knative Broker example and kubectl commands.</description><pubDate>Mon, 04 Jul 2022 19:45:00 GMT</pubDate><category>kubernetes</category></item><item><title>Manage Python Versions and Virtualenvs with pyenv on Apple M1</title><link>https://rogulski.it/blog/python-virtualenv-management/</link><guid isPermaLink="true">https://rogulski.it/blog/python-virtualenv-management/</guid><description>Manage Python versions and virtual environments on Apple M1 with pyenv, pyenv-virtualenv, and virtualenvwrapper. Install tools and switch between projects.</description><pubDate>Mon, 02 May 2022 03:45:00 GMT</pubDate><category>virtualenv</category><category>pyenv</category><category>virtualenvwrapper</category><category>python</category><category>apple m1</category></item><item><title>Install psycopg2-binary on Apple M1 Macs</title><link>https://rogulski.it/blog/install-psycopg2-on-apple-m1/</link><guid isPermaLink="true">https://rogulski.it/blog/install-psycopg2-on-apple-m1/</guid><description>Install psycopg2-binary on an Apple M1 Mac with Homebrew PostgreSQL and OpenSSL. Configure compiler flags and dependencies for the Python database adapter.</description><pubDate>Sun, 01 May 2022 18:45:00 GMT</pubDate><category>PostgreSQL</category><category>psycopg2</category><category>python</category><category>apple m1</category></item><item><title>Django Admin Multi-Select Fields with ArrayField and JSONField</title><link>https://rogulski.it/django-multiselect-choice-admin/</link><guid isPermaLink="true">https://rogulski.it/django-multiselect-choice-admin/</guid><description>Add multi-select choice fields to Django admin using PostgreSQL ArrayField or JSONField. Compare default inputs, custom widgets, and admin form examples.</description><pubDate>Mon, 24 Jan 2022 15:45:00 GMT</pubDate><category>Django</category><category>Python</category><category>Django Admin Panel</category></item><item><title>Using DynamoDB with FastAPI</title><link>https://rogulski.it/dynamodb-with-fastapi/</link><guid isPermaLink="true">https://rogulski.it/dynamodb-with-fastapi/</guid><description>Connect FastAPI to AWS DynamoDB with a local Docker setup, Python application code, pytest tests, and Terraform configuration for your database table.</description><pubDate>Sat, 22 Jan 2022 12:01:58 GMT</pubDate><category>dynamoDB</category><category>Python</category><category>AWS</category><category>fastAPI</category></item><item><title>Test HTTPX Requests with pytest, RESPX, and VCR.py</title><link>https://rogulski.it/blog/pytest-httpx-vcr-respx-remote-service-tests/</link><guid isPermaLink="true">https://rogulski.it/blog/pytest-httpx-vcr-respx-remote-service-tests/</guid><description>Test async HTTPX requests with pytest and RESPX, then record and replay HTTP interactions with VCR.py. Includes fixtures, configuration, and examples.</description><pubDate>Sun, 24 Oct 2021 06:01:58 GMT</pubDate><category>Python</category><category>pytest</category><category>tests</category><category>httpx</category><category>vcr</category><category>asyncio</category></item><item><title>Python Type Hints with Generic and TypeVar</title><link>https://rogulski.it/blog/python-typing-with-generic-typevar/</link><guid isPermaLink="true">https://rogulski.it/blog/python-typing-with-generic-typevar/</guid><description>Use Python Generic and TypeVar to build reusable, typed repository classes. Follow a practical example with type annotations checked by mypy.</description><pubDate>Fri, 15 Oct 2021 06:01:58 GMT</pubDate><category>typing</category><category>Python</category></item><item><title>Configure PostgreSQL SSL with SQLAlchemy and AWS RDS</title><link>https://rogulski.it/blog/aws-rds-ssl-connection-sqlalchemy/</link><guid isPermaLink="true">https://rogulski.it/blog/aws-rds-ssl-connection-sqlalchemy/</guid><description>Configure an SSL connection to PostgreSQL with SQLAlchemy, including AWS RDS certificates, a Python SSL context, and async engine connection settings.</description><pubDate>Wed, 13 Oct 2021 10:01:58 GMT</pubDate><category>AWS</category><category>RDS</category><category>Python</category><category>SQLAlchemy</category><category>SSL</category></item><item><title>SQLAlchemy 1.4 Async ORM with FastAPI and PostgreSQL</title><link>https://rogulski.it/blog/sqlalchemy-14-async-orm-with-fastapi/</link><guid isPermaLink="true">https://rogulski.it/blog/sqlalchemy-14-async-orm-with-fastapi/</guid><description>Build an async FastAPI backend with SQLAlchemy 1.4 ORM, PostgreSQL, and asyncpg. Configure database sessions, Alembic migrations, and your project structure.</description><pubDate>Sat, 09 Oct 2021 10:01:58 GMT</pubDate><category>Python</category><category>FastAPI</category><category>SQLAlchemy</category><category>asyncio</category></item><item><title>What&apos;s New in Python 3.10: Pattern Matching and Type Hints</title><link>https://rogulski.it/blog/whats-new-in-python-3-10/</link><guid isPermaLink="true">https://rogulski.it/blog/whats-new-in-python-3-10/</guid><description>Explore Python 3.10 features with code examples, including structural pattern matching, parenthesized context managers, and improvements to type hints.</description><pubDate>Mon, 04 Oct 2021 20:01:58 GMT</pubDate><category>Python</category></item><item><title>Python pre-commit Configuration: Black, isort, Flake8, and mypy</title><link>https://rogulski.it/blog/pre-commit-python/</link><guid isPermaLink="true">https://rogulski.it/blog/pre-commit-python/</guid><description>Configure Python pre-commit hooks with Black, isort, Flake8, and mypy to format code, sort imports, and check linting and types before each commit.</description><pubDate>Thu, 10 Jun 2021 10:01:58 GMT</pubDate><category>pre-commit</category><category>git</category><category>black</category></item><item><title>FastAPI with Async PostgreSQL, SQLAlchemy Core, and Alembic</title><link>https://rogulski.it/blog/fastapi-async-db/</link><guid isPermaLink="true">https://rogulski.it/blog/fastapi-async-db/</guid><description>Configure FastAPI with async PostgreSQL using databases and SQLAlchemy Core. Set up Docker, Alembic migrations, and tests for your Python backend.</description><pubDate>Sun, 06 Jun 2021 10:01:58 GMT</pubDate><category>FastAPI</category><category>Python</category><category>PostgreSQL</category><category>asyncio</category><category>SQLAlchemy</category></item><item><title>Set Up Neovim on macOS with vim-plug</title><link>https://rogulski.it/blog/neovim-on-osx/</link><guid isPermaLink="true">https://rogulski.it/blog/neovim-on-osx/</guid><description>Install Neovim on macOS with Homebrew, manage plugins with vim-plug, and fix Python path errors by configuring the Python host in init.vim.</description><pubDate>Sun, 20 Dec 2020 10:01:58 GMT</pubDate><category>neovim</category><category>vim</category><category>configs</category></item><item><title>CI/CD for Python on App Engine with Google Cloud Build</title><link>https://rogulski.it/blog/google-cloudbuild-ci-cd/</link><guid isPermaLink="true">https://rogulski.it/blog/google-cloudbuild-ci-cd/</guid><description>Configure Google Cloud Build to test and deploy a Python App Engine application, using Docker services, pytest, and Secret Manager in your CI/CD pipeline.</description><pubDate>Mon, 19 Oct 2020 10:01:58 GMT</pubDate><category>GCP</category><category>Cloudbuild</category><category>Python</category><category>App Engine</category><category>CI &amp; CD</category></item><item><title>Render Contentful Markdown and JSX in Gatsby with MDX</title><link>https://rogulski.it/blog/gatsby-contentful-markdown-jsx-component/</link><guid isPermaLink="true">https://rogulski.it/blog/gatsby-contentful-markdown-jsx-component/</guid><description>Render Markdown from Contentful in Gatsby with MDX. Configure Contentful image processing and embed custom JSX components in your blog content.</description><pubDate>Fri, 29 May 2020 10:01:58 GMT</pubDate><category>ReactJS</category><category>markdown</category><category>blog</category><category>GatsbyJS</category></item><item><title>React Form Validation with Material-UI, React Hook Form, and Yup</title><link>https://rogulski.it/blog/react-material-checkbox-form-validation/</link><guid isPermaLink="true">https://rogulski.it/blog/react-material-checkbox-form-validation/</guid><description>Build a React registration form with Material-UI, React Hook Form, Yup, and TypeScript. Validate text inputs and a required checkbox with a code example.</description><pubDate>Sat, 16 May 2020 10:01:58 GMT</pubDate><category>ReactJS</category><category>material-ui</category><category>forms</category><category>react-hook-form</category></item><item><title>Deploy Django to AWS Elastic Beanstalk with RDS</title><link>https://rogulski.it/blog/aws-elastic-beanstalk-django/</link><guid isPermaLink="true">https://rogulski.it/blog/aws-elastic-beanstalk-django/</guid><description>Deploy a Django application to AWS Elastic Beanstalk, configure an RDS database, and run migrations, static file collection, and Django admin setup.</description><pubDate>Sun, 09 Jun 2019 10:01:58 GMT</pubDate><category>AWS</category><category>Elastic Beanstalk</category><category>Python</category><category>Django</category></item><item><title>Set Up an FTP Server on Google Compute Engine in 10 Steps</title><link>https://rogulski.it/blog/ftp-on-google-compute-engine/</link><guid isPermaLink="true">https://rogulski.it/blog/ftp-on-google-compute-engine/</guid><description>Set up a vsftpd FTP server on Google Compute Engine. Follow ten steps to configure certificates, users, passive ports, and Google Cloud firewall rules.</description><pubDate>Sat, 20 Apr 2019 10:01:58 GMT</pubDate><category>GCP</category><category>FTP</category><category>Compute Engine</category></item><item><title>Heroes 3: Horn of the Abyss on Linux and macOS with Wine</title><link>https://rogulski.it/blog/heroes-3-on-wine/</link><guid isPermaLink="true">https://rogulski.it/blog/heroes-3-on-wine/</guid><description>Install Heroes of Might and Magic 3 and Horn of the Abyss with Wine on Ubuntu Linux and macOS Mojave, using the GOG Complete edition installer.</description><pubDate>Mon, 21 Jan 2019 10:01:58 GMT</pubDate><category>HoMM3</category><category>wine</category><category>linux</category><category>games</category></item><item><title>Django REST Framework on App Engine Standard with Python 3.7</title><link>https://rogulski.it/blog/gae-standard-py37-django/</link><guid isPermaLink="true">https://rogulski.it/blog/gae-standard-py37-django/</guid><description>Build and deploy a Django REST Framework API on Google App Engine Standard with Python 3.7, Cloud SQL, Cloud Tasks, and a local Docker environment.</description><pubDate>Mon, 24 Dec 2018 10:01:58 GMT</pubDate><category>GCP</category><category>Python</category><category>Django</category><category>App Engine</category></item><item><title>How to Build an Alexa Skill with Python and Falcon</title><link>https://rogulski.it/blog/alexa-skill-in-python/</link><guid isPermaLink="true">https://rogulski.it/blog/alexa-skill-in-python/</guid><description>Build a joke-telling Alexa skill with Python and Falcon. Define intents, handle HTTP webhooks, and connect your application to the Alexa developer console.</description><pubDate>Wed, 07 Nov 2018 10:01:58 GMT</pubDate><category>alexa</category><category>Python</category><category>AWS</category></item><item><title>Hi, I&apos;m Piotr</title><link>https://rogulski.it/blog/hi-im-piotr/</link><guid isPermaLink="true">https://rogulski.it/blog/hi-im-piotr/</guid><description>Meet Piotr Rogulski, a Python developer sharing programming projects, lessons from web development, and experiments with bots, AWS, and Google Cloud.</description><pubDate>Fri, 02 Nov 2018 10:01:58 GMT</pubDate><category>blog</category></item></channel></rss>