41554 blogs · [ { "id": "01a08759-c7d2-7200-ae28-70e3398cfbda", "title": "Introducing django-remake-migrations", "url": "https://browniebroke.com/blog/2025-03-03-introducing-django-remake-migrations/", "published_at": "2025-03-03T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e33a28a53a", "title": "Project-level shareable live templates in PyCharm (or other IntelliJ IDEs)", "url": "https://browniebroke.com/blog/2025-02-21-project-level-shareable-live-templates-in-pycharm/", "published_at": "2025-02-21T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e33a6a18ba", "title": "Migrating from Chakra UI to Tailwind CSS", "url": "https://browniebroke.com/blog/2025-01-24-migrating-from-chakra-ui-to-tailwind-css/", "published_at": "2025-01-24T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e33ae8d8cd", "title": "Testing your Python logging like a boss", "url": "https://browniebroke.com/blog/2024-12-13-testing-your-python-logging-like-a-boss/", "published_at": "2024-12-13T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e33b8b295e", "title": "Manage deprecations with Python warnings in a Django project", "url": "https://browniebroke.com/blog/2024-11-22-manage-deprecations-with-python-warnings-in-a-django-project/", "published_at": "2024-11-22T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e33c17db63", "title": "Keep uv.lock file up-to-date with Dependabot updates", "url": "https://browniebroke.com/blog/2024-10-02-keep-uv-lock-file-up-to-date-with-dependabot-updates/", "published_at": "2024-10-02T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e33c74c341", "title": "Narrow state of a Django model using Python TypeGuard", "url": "https://browniebroke.com/blog/2024-08-31-narrow-state-of-a-django-model-using-python-typeguard/", "published_at": "2024-08-31T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e33ca271c0", "title": "Attest build provenance for a Python package in GitHub actions", "url": "https://browniebroke.com/blog/2024-08-08-attest-build-provenance-for-a-python-package-in-github-actions/", "published_at": "2024-08-08T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e33d0169fe", "title": "Bulk updating multiple repos with all-repos", "url": "https://browniebroke.com/blog/2023-07-10-bulk-updating-multiple-repos-with-all-repos/", "published_at": "2023-07-10T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e33ddbcbb9", "title": "Nested ViewSets with Django REST Framework", "url": "https://browniebroke.com/blog/2023-05-05-nested-viewsets-with-django-rest-framework/", "published_at": "2023-05-05T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e33de6debc", "title": "Migrate my site design system to Chakra UI with ChatGPT", "url": "https://browniebroke.com/blog/2023-04-27-migrate-my-site-design-system-to-chakra-ui-with-chatgpt/", "published_at": "2023-04-27T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e33e3a8a61", "title": "Enabling sudo via TouchID using Ansible", "url": "https://browniebroke.com/blog/2022-11-25-enabling-sudo-via-touchid-using-ansible/", "published_at": "2022-11-25T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e33ea1c493", "title": "Specify docs dependency groups with Poetry and Read the Docs", "url": "https://browniebroke.com/blog/2022-11-21-specify-docs-dependency-groups-with-poetry-and-read-the-docs/", "published_at": "2022-11-21T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e33f5b7403", "title": "Convert a Poetry package to the src layout", "url": "https://browniebroke.com/blog/2022-01-19-convert-existing-poetry-to-src-layout/", "published_at": "2022-01-19T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e33ffc8fcd", "title": "Convert Python requirements to Poetry format", "url": "https://browniebroke.com/blog/2021-01-07-convert-requirements-to-pyproject/", "published_at": "2021-01-07T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e340ef8c4f", "title": "Migrating a project to Poetry", "url": "https://browniebroke.com/blog/2020-10-18-migrating-project-to-poetry/", "published_at": "2020-10-18T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e341cfca80", "title": "Auto-update pre-commit hooks with GitHub Actions", "url": "https://browniebroke.com/blog/2020-07-12-gh-action-pre-commit-autoupdate/", "published_at": "2020-07-12T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e342b6d6b9", "title": "Mastering flexbox with Flexbox Zombies", "url": "https://browniebroke.com/blog/2020-05-03-flexbox-zombie/", "published_at": "2020-05-03T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e3431fb605", "title": "Self-host your Typography.js fonts with Gasby", "url": "https://browniebroke.com/blog/2020-01-05-self-host-typographyjs-fonts-with-gatsby/", "published_at": "2020-01-05T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e34345ab73", "title": "Setting up a Content Security Policy with Gatsby", "url": "https://browniebroke.com/blog/2019-11-14-setting-up-content-security-policy-gatsby/", "published_at": "2019-11-14T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e344231c4b", "title": "Making Celery work nicely with Django transactions", "url": "https://browniebroke.com/blog/2019-06-25-making-celery-work-nicely-with-django-transactions/", "published_at": "2019-06-25T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e344822214", "title": "Static vs. Media files in Django", "url": "https://browniebroke.com/blog/2019-06-18-static-vs-media-in-django/", "published_at": "2019-06-18T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e3454edbdf", "title": "Add cache-control header to an entire S3 Bucket using Boto3", "url": "https://browniebroke.com/blog/2019-05-01-add-cache-control-header-entire-s3-bucket-with-boto3/", "published_at": "2019-05-01T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e34640d10f", "title": "How I made 1000's of websites more secure with one line of code", "url": "https://browniebroke.com/blog/2019-04-24-how-i-made-1000-of-website-more-secure/", "published_at": "2019-04-24T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e3466b5db2", "title": "New year, new laptop", "url": "https://browniebroke.com/blog/2018-01-14-new-year-new-laptop/", "published_at": "2018-01-14T00:00:00+00:00" }, { "id": "01a08759-c7d2-7200-ae28-70e346e3e03e", "title": "Hello World!", "url": "https://browniebroke.com/blog/2017-11-29-hello-world/", "published_at": "2017-11-29T00:00:00+00:00" } ] posts Claim your blog
Back to browniebroke.com
Blog · corpus.blog/blogs/browniebroke.com/posts

browniebroke.com

browniebroke.com

2025

2024

2023

2022

2021

2020

2019

2018

2017