{"version":"https://jsonfeed.org/version/1","title":"Micro.blog - Michael Twomey","home_page_url":"https://micro.blog","feed_url":"https://micro.blog/posts/micktwomey","_microblog":{"about":"https://micro.blog/about/api","id":"2413","username":"micktwomey","bio":"I like cats and engineering.","pronouns":"he/him","is_following":false,"is_you":false,"following_count":4,"discover_count":0},"author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://avatars.micro.blog/avatars/2025/24/2413.jpg"},"items":[{"id":"70699820","content_html":"<p>TIL there’s an RFC for the JSON content in HTTP error responses: <a href=\"https://datatracker.ietf.org/doc/html/rfc9457\">RFC 9457 Problem Details for HTTP APIs</a> (I love how there’s a <code>application/problem</code> content type).</p>\n","summary":"","url":"https://micktwomey.com/2025/08/07/til-theres-an-rfc-for/","date_published":"2025-08-07T11:39:05+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2025-08-07 11:39","date_timestamp":1754566745,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":["https://mastodon.ie/@micktwomey/114987287095844315","https://bsky.app/profile/did:plc:wzrvn52ty55e2j2z22lypq3m/post/3lvsnobrjok2r"]}},{"id":"66045126","content_html":"<p>Glyph: I Think I’m Done Thinking About genAI For Now: <a href=\"https://micktwomey.com/2025/06/05/glyph-i-think-im-done/\">micktwomey.com</a></p>","summary":"","url":"https://micktwomey.com/2025/06/05/glyph-i-think-im-done/","date_published":"2025-06-05T14:41:19+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2025-06-05 14:41","date_timestamp":1749134479,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":["https://mastodon.ie/@micktwomey/114631277743650896","https://bsky.app/profile/did:plc:wzrvn52ty55e2j2z22lypq3m/post/3lqukhxhm6h2x"]}},{"id":"62878924","content_html":"<p>\"You wouldn't steal a car\" campaign pirated content: <a href=\"https://micktwomey.com/2025/04/24/you-wouldnt-steal-a-car/\">micktwomey.com</a></p>","summary":"","url":"https://micktwomey.com/2025/04/24/you-wouldnt-steal-a-car/","date_published":"2025-04-24T10:36:10+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2025-04-24 10:36","date_timestamp":1745490970,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":["https://mastodon.ie/@micktwomey/114392497227640615","https://bsky.app/profile/did:plc:wzrvn52ty55e2j2z22lypq3m/post/3lnkj7ct4ys2v"]}},{"id":"62813026","content_html":"<p>osh is a great drop in bash replacement: <a href=\"https://micktwomey.com/2025/04/23/osh-is-a-great-drop/\">micktwomey.com</a></p>","summary":"","url":"https://micktwomey.com/2025/04/23/osh-is-a-great-drop/","date_published":"2025-04-23T14:23:21+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2025-04-23 14:23","date_timestamp":1745418201,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":["https://mastodon.ie/@micktwomey/114387728492923572","https://bsky.app/profile/did:plc:wzrvn52ty55e2j2z22lypq3m/post/3lnifgm7mzr2v"]}},{"id":"62652950","content_html":"<blockquote>\n<p>The Gist: Trans rights are Data rights <a href=\"https://www.thegist.ie/the-gist-trans-rights-are-data-rights/\">thegist.ie</a></p>\n<footer>thegist.ie <a href=\"https://www.thegist.ie/the-gist-trans-rights-are-data-rights/\" class=\"u-in-reply-to\">https://www.thegist.ie/the-gist-trans-rights-are-data-rights/</a></footer>\n</blockquote>\n<p>Great analysis of both the recent UK court ruling and a recent CJEU ruling on trans rights. The CJEU ruling is much more relevant to Ireland but got no press coverage.</p>\n","summary":"","url":"https://micktwomey.com/2025/04/21/the-gist-trans-rights-are/","date_published":"2025-04-21T11:37:10+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2025-04-21 11:37","date_timestamp":1745235430,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":["https://mastodon.ie/@micktwomey/114375750747735166","https://bsky.app/profile/did:plc:wzrvn52ty55e2j2z22lypq3m/post/3lnd37qzmi62k"]}},{"id":"62613095","content_html":"<p>Using uv for Django projects: <a href=\"https://micktwomey.com/2025/04/20/using-uv-for-django-projects/\">micktwomey.com</a></p>","summary":"","url":"https://micktwomey.com/2025/04/20/using-uv-for-django-projects/","date_published":"2025-04-20T17:12:05+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2025-04-20 17:12","date_timestamp":1745169125,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":["https://mastodon.ie/@micktwomey/114371404402538464","https://bsky.app/profile/did:plc:wzrvn52ty55e2j2z22lypq3m/post/3lnb5hbm34k2o"]}},{"id":"62425725","content_html":"<p>Pin your GitHub Actions: <a href=\"https://micktwomey.com/2025/04/17/pin-your-github-actions-just/\">micktwomey.com</a></p>","summary":"","url":"https://micktwomey.com/2025/04/17/pin-your-github-actions-just/","date_published":"2025-04-17T20:12:17+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2025-04-17 20:12","date_timestamp":1744920737,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"62426607","content_html":"<p>My First Playdate Game! <a href=\"https://micktwomey.com/2025/02/15/my-first-playdate-game/\">micktwomey.com</a></p>","summary":"","url":"https://micktwomey.com/2025/02/15/my-first-playdate-game/","date_published":"2025-02-15T11:00:00+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2025-02-15 11:00","date_timestamp":1739617200,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"62424796","content_html":"<p>Test…</p>\n","summary":"","url":"https://micktwomey.com/2025/01/24/test/","date_published":"2025-01-24T14:18:07+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2025-01-24 14:18","date_timestamp":1737728287,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"55838512","content_html":"<p>Test…\n: <a href=\"https://micktwomey.micro.blog/2025/01/24/test.html\">micktwomey.micro.blog</a></p>","summary":"","url":"https://micktwomey.micro.blog/2025/01/24/test.html","date_published":"2025-01-24T14:18:07+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2025-01-24 14:18","date_timestamp":1737728287,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"55838504","content_html":" Testing \n<div class=\"highlight\"><pre><code> \n<span>def</span> <span>foo</span>(bar: int) <span>-&gt;</span> int:\n  <span>return</span> bar <span>+</span> <span>1</span></code></pre></div>\n: <a href=\"https://micktwomey.micro.blog/2025/01/13/testing-highlight-py-def-foobar.html\">micktwomey.micro.blog</a>","summary":"","url":"https://micktwomey.micro.blog/2025/01/13/testing-highlight-py-def-foobar.html","date_published":"2025-01-13T15:47:29+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2025-01-13 15:47","date_timestamp":1736783249,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}},{"id":"62425370","content_html":"<p>PostgreSQL NOT NULL can be added without locking: <a href=\"https://micktwomey.com/2024/12/10/postgresql-not-null-can-be/\">micktwomey.com</a></p>","summary":"","url":"https://micktwomey.com/2024/12/10/postgresql-not-null-can-be/","date_published":"2024-12-10T11:00:00+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2024-12-10 11:00","date_timestamp":1733828400,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"54803053","content_html":"<p>Moved to Ghost: <a href=\"https://www.twoistoomany.com/did-something-change-around-here/\">twoistoomany.com</a></p>","summary":"","url":"https://www.twoistoomany.com/did-something-change-around-here/","date_published":"2024-03-07T23:55:44+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2024-03-07 23:55","date_timestamp":1709855744,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"55838362","content_html":"<p>About this site: <a href=\"https://micktwomey.micro.blog/2024/02/08/about-this-site.html\">micktwomey.micro.blog</a></p>","summary":"","url":"https://micktwomey.micro.blog/2024/02/08/about-this-site.html","date_published":"2024-02-08T09:38:45+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2024-02-08 09:38","date_timestamp":1707385125,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"54803052","content_html":"<p>Configuring the Pydantic Mypy Plugin in pyproject.toml: <a href=\"https://www.twoistoomany.com/configuring-the-pydantic-mypy-plugin-in-pyproject-toml/\">twoistoomany.com</a></p>","summary":"","url":"https://www.twoistoomany.com/configuring-the-pydantic-mypy-plugin-in-pyproject-toml/","date_published":"2023-04-12T15:37:00+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2023-04-12 15:37","date_timestamp":1681313820,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"54803051","content_html":"<p>pyiso8601 1.1.0: <a href=\"https://www.twoistoomany.com/pyiso8601-1-1-0/\">twoistoomany.com</a></p>","summary":"","url":"https://www.twoistoomany.com/pyiso8601-1-1-0/","date_published":"2022-09-28T11:28:00+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2022-09-28 11:28","date_timestamp":1664364480,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"54803050","content_html":"<p>Exploring boto3 Events With Mitmproxy: <a href=\"https://www.twoistoomany.com/exploring-boto3-events-with-mitmproxy/\">twoistoomany.com</a></p>","summary":"","url":"https://www.twoistoomany.com/exploring-boto3-events-with-mitmproxy/","date_published":"2022-09-21T23:00:00+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2022-09-21 23:00","date_timestamp":1663801200,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"54803049","content_html":"<p>clone-repo 0.1.1: <a href=\"https://www.twoistoomany.com/clone-repo-0-1-1/\">twoistoomany.com</a></p>","summary":"","url":"https://www.twoistoomany.com/clone-repo-0-1-1/","date_published":"2022-03-30T13:58:00+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2022-03-30 13:58","date_timestamp":1648648680,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"54803048","content_html":"<p>pyiso8601 1.0.0: <a href=\"https://www.twoistoomany.com/pyiso8601-1-0-0/\">twoistoomany.com</a></p>","summary":"","url":"https://www.twoistoomany.com/pyiso8601-1-0-0/","date_published":"2021-11-07T19:34:00+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2021-11-07 19:34","date_timestamp":1636313640,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"54803047","content_html":"<p>How I Work: Using Minikube Instead of Docker Desktop: <a href=\"https://www.twoistoomany.com/how-i-work-using-minikube-instead-of-docker-desktop/\">twoistoomany.com</a></p>","summary":"","url":"https://www.twoistoomany.com/how-i-work-using-minikube-instead-of-docker-desktop/","date_published":"2021-09-02T21:39:00+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2021-09-02 21:39","date_timestamp":1630618740,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"54803046","content_html":"<p>How I Work: pipx: <a href=\"https://www.twoistoomany.com/how-i-work-pipx/\">twoistoomany.com</a></p>","summary":"","url":"https://www.twoistoomany.com/how-i-work-pipx/","date_published":"2020-11-30T17:06:00+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2020-11-30 17:06","date_timestamp":1606755960,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"54803045","content_html":"<p>How I Work: asdf: <a href=\"https://www.twoistoomany.com/how-i-work-asdf/\">twoistoomany.com</a></p>","summary":"","url":"https://www.twoistoomany.com/how-i-work-asdf/","date_published":"2020-11-23T11:08:00+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2020-11-23 11:08","date_timestamp":1606129680,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"54803044","content_html":"<p>Make Wildcard Patterns AKA build all the files you find: <a href=\"https://www.twoistoomany.com/make-wildcard-patterns-aka-build-all-the-files-you-find/\">twoistoomany.com</a></p>","summary":"","url":"https://www.twoistoomany.com/make-wildcard-patterns-aka-build-all-the-files-you-find/","date_published":"2020-07-27T11:25:00+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2020-07-27 11:25","date_timestamp":1595849100,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"54803043","content_html":"<p>Automatically Making Build Directories in Make: <a href=\"https://www.twoistoomany.com/automatically-making-build-directories-in-make/\">twoistoomany.com</a></p>","summary":"","url":"https://www.twoistoomany.com/automatically-making-build-directories-in-make/","date_published":"2020-07-23T12:28:00+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2020-07-23 12:28","date_timestamp":1595507280,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":true,"is_mention":false,"note":"","syndication":[]}},{"id":"332372","content_html":"<p>Experimenting with RSS feeds from Pinboard and my blog, expect some post spam :)\n: <a href=\"https://micktwomey.micro.blog/2018/02/12/experimenting-with-rss.html\">micktwomey.micro.blog</a></p>","summary":"","url":"https://micktwomey.micro.blog/2018/02/12/experimenting-with-rss.html","date_published":"2018-02-12T22:12:00+00:00","author":{"name":"Michael Twomey","url":"https://micktwomey.com/","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F24%2F2413.jpg","_microblog":{"username":"micktwomey"}},"_microblog":{"date_relative":"2018-02-12 22:12","date_timestamp":1518473520,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"note":"","syndication":[]}}]}