<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2026-10-27T02:14:21Z</updated>
  <generator>https://nostr.now</generator>

  <title>Nostr notes by Anže</title>
  <author>
    <name>Anže</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.now/npub15wdfr9znyzrrucep9sa57p4p823cpue65gch3r83wtn8qxax2l6qw8rte4.rss" />
  <link href="https://nostr.now/npub15wdfr9znyzrrucep9sa57p4p823cpue65gch3r83wtn8qxax2l6qw8rte4" />
  <id>https://nostr.now/npub15wdfr9znyzrrucep9sa57p4p823cpue65gch3r83wtn8qxax2l6qw8rte4</id>
  <icon>https://cdn.fosstodon.org/accounts/avatars/109/298/191/316/533/288/original/083b1245649c37d0.jpeg</icon>
  <logo>https://cdn.fosstodon.org/accounts/avatars/109/298/191/316/533/288/original/083b1245649c37d0.jpeg</logo>




  <entry>
    <id>https://nostr.now/nevent1qqstea62jhyd4l5rxdvwfmgevqp9dlf3uh0kw6dnwhrlxkpjgtdataszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg0fjlge</id>
    
      <title type="html">I am the bottleneck 🫠 ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqstea62jhyd4l5rxdvwfmgevqp9dlf3uh0kw6dnwhrlxkpjgtdataszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg0fjlge" />
    <content type="html">
      I am the bottleneck 🫠&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/529/783/286/993/461/original/c45e0c7c9f9c407b.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-10-30T12:09:32Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsgfsex0x06437dr0pjee9daclhst542pphjcka3vqjtf5lefjzcfczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlggd5emu</id>
    
      <title type="html">Does anyone know the Checkov maintainers? I opened a PR that ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsgfsex0x06437dr0pjee9daclhst542pphjcka3vqjtf5lefjzcfczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlggd5emu" />
    <content type="html">
      Does anyone know the Checkov maintainers?&lt;br/&gt;&lt;br/&gt;I opened a PR that fixes a fork storm: Checkov’s object runners started a fresh pool of worker processes for every directory scanned (~56k forks for a scan of Checkov’s own repo). Loading the files in one batch gives:&lt;br/&gt;&lt;br/&gt;• ~80% less total CPU on a full scan&lt;br/&gt;• ~98% less kernel time&lt;br/&gt;• 40x fewer processes&lt;br/&gt;• identical results&lt;br/&gt;&lt;br/&gt;A review would be much appreciated 🙏&lt;br/&gt;&lt;a href=&#34;https://github.com/bridgecrewio/checkov/pull/7756&#34;&gt;https://github.com/bridgecrewio/checkov/pull/7756&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;#OpenSource #Python #DevSecOps
    </content>
    <updated>2026-10-30T09:19:07Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs9yepj83vrpshlnal3mzp8a0tk9zs25qx3x9flx7sqeqk542k28yqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgu4v4k7</id>
    
      <title type="html">Hm... maybe, but I&amp;#39;m not sure about deployments. For a dev ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs9yepj83vrpshlnal3mzp8a0tk9zs25qx3x9flx7sqeqk542k28yqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgu4v4k7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqafchu3xmr4p7cgpq3gzy4dm86yf2j5qsc5u2q6myuqqq4g8p4yg8d45jx&#39;&gt;nevent1q…45jx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Hm... maybe, but I&amp;#39;m not sure about deployments. For a dev tools like django-tui it&amp;#39;s not a big deal if discovery gets the wrong virtualenv, but for production deployments we can&amp;#39;t pick the wrong one so it has to be explicit imo.
    </content>
    <updated>2026-10-28T09:56:06Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsduekctjy9j2qnq79lt0tgsatz8xr5mq6mejucjjwj3fu58ucja8qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgugc7t0</id>
    
      <title type="html">django-tui 26.2 needs no setup 🎉 cd into any Django project ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsduekctjy9j2qnq79lt0tgsatz8xr5mq6mejucjjwj3fu58ucja8qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgugc7t0" />
    <content type="html">
      django-tui 26.2 needs no setup 🎉&lt;br/&gt;&lt;br/&gt;cd into any Django project and run:&lt;br/&gt;&lt;br/&gt;uvx django-tui&lt;br/&gt;&lt;br/&gt;No pip install, no INSTALLED_APPS. It finds your manage.py (even from a subdirectory), loads your .env files and uses the project’s own virtualenv, so your Django version and apps are the ones running.&lt;br/&gt;&lt;br/&gt;Then browse and run your management commands, or query your models in the shell.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/anze3db/django-tui&#34;&gt;https://github.com/anze3db/django-tui&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;#Django #Python #uv&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/514/455/139/014/608/original/06bc77451ee5329f.mp4&#34;&gt;&lt;/video&gt;&lt;br/&gt;
    </content>
    <updated>2026-10-27T19:14:24Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqstl356px89tmgzgmjpu4mhg3kj0djfgg48mhhd06pzez97zf6dkagzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg4nrjmj</id>
    
      <title type="html">After this crazy week I’ve spent my Saturday away from ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqstl356px89tmgzgmjpu4mhg3kj0djfgg48mhhd06pzez97zf6dkagzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg4nrjmj" />
    <content type="html">
      After this crazy week I’ve spent my Saturday away from computers. &lt;br/&gt;&lt;br/&gt;It felt great and I already feel recharged for whatever next week throws at us💪&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/497/372/207/045/419/original/e0e77b1ed94127d1.png&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/497/372/393/975/978/original/0f4aa967eae9f483.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-10-24T18:47:10Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsdgauhgl2kn3uyr3cqa082ns8hpu5u7czk5c4p9v4wsy55d4425sczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgvfrn0e</id>
    
      <title type="html">potatoq has a dashboard now 🥔 The first question after launch ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsdgauhgl2kn3uyr3cqa082ns8hpu5u7czk5c4p9v4wsy55d4425sczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgvfrn0e" />
    <content type="html">
      potatoq has a dashboard now 🥔&lt;br/&gt;&lt;br/&gt;The first question after launch was &amp;#34;where&amp;#39;s the Flower equivalent?&amp;#34;, so here it is:&lt;br/&gt;&lt;br/&gt;• Live workers and the tasks they&amp;#39;re running&lt;br/&gt;• Queue sizes and periodic tasks&lt;br/&gt;• Dead letters with the traceback, and a Retry button&lt;br/&gt;&lt;br/&gt;It reads the broker directly: no events to turn on, nothing lost on restart. No extra dependencies either: `potatoq dashboard`, or mount it in Django, FastAPI or Flask.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://anze3db.github.io/potatoq/guide/dashboard/&#34;&gt;https://anze3db.github.io/potatoq/guide/dashboard/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;#Python #Django&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/487/166/321/289/192/original/3804d325afdcfc1d.png&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/487/166/650/431/761/original/1b5c28cbb0ff3c63.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-10-22T23:31:58Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs24z4e9rwuydk6ej4ysdh2ply9z40sdjmln5g28nvjlaz7jvev7aszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgwselcv</id>
    
      <title type="html">yeah max risk, upgrade everything. 😞</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs24z4e9rwuydk6ej4ysdh2ply9z40sdjmln5g28nvjlaz7jvev7aszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgwselcv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdy0n6xweznhx3acparpyzfwm5gcr7805p43phds2d5c20akatq8skkjc83&#39;&gt;nevent1q…jc83&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;yeah max risk, upgrade everything. 😞
    </content>
    <updated>2026-10-20T20:11:59Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs2eq38gt7fetewrdd3kz4344vtgp9mkh48alkmcgxdrtykat9p56szyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgu56xkt</id>
    
      <title type="html">yes, still waiting for patches for node, bun, debian, but that ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs2eq38gt7fetewrdd3kz4344vtgp9mkh48alkmcgxdrtykat9p56szyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgu56xkt" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2zts3hz92trd6938p4lewevs6k5m2p6l4ffzcem9eljgdkd3g8aqwazu8z&#39;&gt;nevent1q…zu8z&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;yes, still waiting for patches for node, bun, debian, but that shouldn&amp;#39;t stop you upgrading what you can now!&lt;br/&gt;&lt;br/&gt;Fun times indeed! 🫠
    </content>
    <updated>2026-10-20T18:56:17Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs2s7pdj7gk90t3s55h2d8lxv7g3zfcfrj90vpzynmhw0ejm2vjsjqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg9w5xcf</id>
    
      <title type="html">Some other things to upgrade: * Go: 1.27.3 or 1.26.10, then ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs2s7pdj7gk90t3s55h2d8lxv7g3zfcfrj90vpzynmhw0ejm2vjsjqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg9w5xcf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9maa8ce3zaaast0mn06psleulvm3qr2qe85tut8u5v5kagndn3fgfrsk6k&#39;&gt;nevent1q…sk6k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Some other things to upgrade:&lt;br/&gt;&lt;br/&gt; * Go: 1.27.3 or 1.26.10, then rebuild your Go programs&lt;br/&gt; * rustls-webpki: 0.103.16&lt;br/&gt; * webpki-roots / webpki-root-certs: 1.0.10&lt;br/&gt; * Electron: 44.9.1, 43.8.1 or 42.11.16&lt;br/&gt; * NSS: 3.131.1&lt;br/&gt; * Firefox: 158.0.1 (ESR: 153.5.1 or 115.43.1)&lt;br/&gt; * Ubuntu ca-certificates: 20260816ubuntu0.&amp;lt;release&amp;gt;.1 (for 22.04, 24.04, 26.04 and 26.10)&lt;br/&gt; * Homebrew ca-certificates: 2026-09-25_1&lt;br/&gt; * Chrome, Apple, Windows: nothing to do, they’re blocked automatically
    </content>
    <updated>2026-10-20T18:47:31Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs9maa8ce3zaaast0mn06psleulvm3qr2qe85tut8u5v5kagndn3fgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg90ery7</id>
    
      <title type="html">🚨Python friends, upgrade (or have your agent upgrade) every ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs9maa8ce3zaaast0mn06psleulvm3qr2qe85tut8u5v5kagndn3fgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg90ery7" />
    <content type="html">
      🚨Python friends, upgrade (or have your agent upgrade) every certifi package across all your projects and machines!&lt;br/&gt;&lt;br/&gt;uv self update&lt;br/&gt;uv lock --upgrade-package certifi&lt;br/&gt;&lt;br/&gt;Private keys from 8 intermediate CA certs have been compromised!&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://x.com/astuyve/status/2112559796914167931&#34;&gt;https://x.com/astuyve/status/2112559796914167931&lt;/a&gt;
    </content>
    <updated>2026-10-20T18:47:20Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsg2qyzd488t48kd0k26m8hzq09p2w70k7gez269aj8km9xcynrqlqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgh4qzr7</id>
    
      <title type="html">I’ve been frustrated with Celery, so I ran an experiment: could ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsg2qyzd488t48kd0k26m8hzq09p2w70k7gez269aj8km9xcynrqlqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgh4qzr7" />
    <content type="html">
      I’ve been frustrated with Celery, so I ran an experiment: could today’s LLMs build a better Python task queue?&lt;br/&gt;&lt;br/&gt;My wish list:&lt;br/&gt;• Defaults that don’t lose your jobs&lt;br/&gt;• Free-threaded Python&lt;br/&gt;• Django tasks&lt;br/&gt;• Native broker features (SKIP LOCKED, quorum queues…)&lt;br/&gt;• Celery-compatible&lt;br/&gt;&lt;br/&gt;A couple of weeks later, it runs all my projects in production. 🎉&lt;br/&gt;&lt;br/&gt;I called it potatoq 🥔 It’s still in alpha, but feedback welcome!&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://anze3db.github.io/potatoq/&#34;&gt;https://anze3db.github.io/potatoq/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;#Python #Django
    </content>
    <updated>2026-10-20T11:15:28Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsfkfa04ahuq8pgzqxutqyfw6645x4cpv9dz0lqhrh9vm45gqs7urczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgu8qahz</id>
    
      <title type="html">django-tui 26.1 is out, the first release in two years! 🎉 ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsfkfa04ahuq8pgzqxutqyfw6645x4cpv9dz0lqhrh9vm45gqs7urczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgu8qahz" />
    <content type="html">
      django-tui 26.1 is out, the first release in two years! 🎉&lt;br/&gt;&lt;br/&gt;It&amp;#39;s a complete redesign! You can now type a command like in your shell and the form fills in as you go.&lt;br/&gt;&lt;br/&gt;pip install -U django-tui&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/434/142/157/443/921/original/fce9c44d644667aa.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-10-13T14:46:44Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs9x8v0qc65reglgugnstz96hy4mpz9e4gka0shgpyfll5lh8tjj6czyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgyctcvr</id>
    
      <title type="html">What else is new: • Run multiple commands without restarting ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs9x8v0qc65reglgugnstz96hy4mpz9e4gka0shgpyfll5lh8tjj6czyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgyctcvr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfkfa04ahuq8pgzqxutqyfw6645x4cpv9dz0lqhrh9vm45gqs7urcmptw6q&#39;&gt;nevent1q…tw6q&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;What else is new:&lt;br/&gt;• Run multiple commands without restarting the tui&lt;br/&gt;• A complete redesign&lt;br/&gt;• Feels much snappier&lt;br/&gt;• Slimmed down dependencies&lt;br/&gt;• Python 3.11–3.15 and Django 5.2–6.1&lt;br/&gt;&lt;br/&gt;On PyPI: &lt;a href=&#34;https://pypi.org/project/django-tui/&#34;&gt;https://pypi.org/project/django-tui/&lt;/a&gt;
    </content>
    <updated>2026-10-13T14:46:44Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsvnuf2hfmce4e6rvlyk27l26s8937awfn0926dwzskt0dktn40anszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgl2vu2h</id>
    
      <title type="html">Python 3.15 has been released 🎉 Grab it while it&amp;#39;s fresh ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsvnuf2hfmce4e6rvlyk27l26s8937awfn0926dwzskt0dktn40anszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgl2vu2h" />
    <content type="html">
      Python 3.15 has been released 🎉&lt;br/&gt;&lt;br/&gt;Grab it while it&amp;#39;s fresh 😉&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://www.python.org/downloads/release/python-3150/&#34;&gt;https://www.python.org/downloads/release/python-3150/&lt;/a&gt;
    </content>
    <updated>2026-10-09T15:26:02Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsdc92kckyl3ndm9yq4dywur5l5cjr52caunhw99wykl43aq45kuwgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgjws7zp</id>
    
      <title type="html">RSVP on Meetup: ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsdc92kckyl3ndm9yq4dywur5l5cjr52caunhw99wykl43aq45kuwgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgjws7zp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg22s9650a9607rxazefhhhu64asktasslqkplsxh2clr99g2eswcytnnxw&#39;&gt;nevent1q…nnxw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;RSVP on Meetup: &lt;a href=&#34;https://www.meetup.com/python-lisbon-meetup/events/316776712/?slug=python-lisbon-meetup&amp;amp;eventId=316776712&amp;amp;isFirstPublish=true&#34;&gt;https://www.meetup.com/python-lisbon-meetup/events/316776712/?slug=python-lisbon-meetup&amp;amp;eventId=316776712&amp;amp;isFirstPublish=true&lt;/a&gt;&lt;br/&gt;Or RSVP on Luma: &lt;a href=&#34;https://luma.com/c72p4hb0&#34;&gt;https://luma.com/c72p4hb0&lt;/a&gt;&lt;br/&gt;Join us on Discord: &lt;a href=&#34;https://discord.gg/ZQWZK6AXRk&#34;&gt;https://discord.gg/ZQWZK6AXRk&lt;/a&gt;
    </content>
    <updated>2026-09-30T10:18:14Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsg22s9650a9607rxazefhhhu64asktasslqkplsxh2clr99g2eswczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgekn9z3</id>
    
      <title type="html">🐍 Python Lisbon Meetup is tomorrow! 🎤 Talk by ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsg22s9650a9607rxazefhhhu64asktasslqkplsxh2clr99g2eswczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgekn9z3" />
    <content type="html">
      🐍 Python Lisbon Meetup is tomorrow!&lt;br/&gt;&lt;br/&gt;🎤 Talk by &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1c0xr3j087rl7lgwm8ph4h99agxnjwnjdc5cja792vqfgu8z9w6esy2ptl2&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Rodrigo 🐍🚀&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1c0x…ptl2&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;br/&gt;⚡ Lightning talks&lt;br/&gt;🍻 Socializing&lt;br/&gt;&lt;br/&gt;📍 IST, Sala Multiusos, Torre Norte (new room, not the Pavilhão de Matemática!)&lt;br/&gt;🕖 Thu, 1 Oct, 19:00&lt;br/&gt;&lt;br/&gt;RSVP links below 👇&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/359/476/222/855/559/original/3e394b45aae5d6a1.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-09-30T10:18:13Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs0y27q55xkrgtfzrrrkn7vrglf7892203tj3qaeeydej9tg9r2dnqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgvengwc</id>
    
      <title type="html">Fun fact, I gave a lightning talk about chess and then got caught ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs0y27q55xkrgtfzrrrkn7vrglf7892203tj3qaeeydej9tg9r2dnqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgvengwc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9pesz32twpc29s0xgghkqvxdlqadn7zdtcxesqmc88gaqmwgvjzcgn3cu8&#39;&gt;nevent1q…3cu8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Fun fact, I gave a lightning talk about chess and then got caught solving a chess puzzle during one the workshops 😅&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/318/692/491/278/191/original/213136eff1b419af.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-09-23T05:26:22Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs9pesz32twpc29s0xgghkqvxdlqadn7zdtcxesqmc88gaqmwgvjzczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgeca9y7</id>
    
      <title type="html">PyCon Portugal continues to be my favorite PyCon. This year it ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs9pesz32twpc29s0xgghkqvxdlqadn7zdtcxesqmc88gaqmwgvjzczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgeca9y7" />
    <content type="html">
      PyCon Portugal continues to be my favorite PyCon. This year it was in Aveiro (a better Venice 😉) and we had a blast!&lt;br/&gt;&lt;br/&gt;I enjoyed giving my talk on lazy imports, but the best part was meeting new people and catching up with friends.&lt;br/&gt;&lt;br/&gt;Looking forward to it again next year!&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/318/691/986/648/672/original/31b93d2558f20028.jpeg&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/318/692/095/034/384/original/ad8d61c2499abbe0.jpeg&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/318/692/186/719/439/original/f94c5fe86e99baa9.jpeg&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/318/692/309/929/475/original/3d3602059baa17d8.jpeg&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-09-23T05:26:19Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs2kdwtpcuyz3z780lj8hm5emk0qecas3f2cq7mt6ljae0vc0gc4zczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgkw4sct</id>
    
      <title type="html">We opened a support ticket, and the AI immediately identified the ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs2kdwtpcuyz3z780lj8hm5emk0qecas3f2cq7mt6ljae0vc0gc4zczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgkw4sct" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2wkfzdxraphrlvh723n82dfj2703q8qm5wm5xjay5h8e8yyxxheq6vgjl0&#39;&gt;nevent1q…gjl0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;We opened a support ticket, and the AI immediately identified the issue as being on their end.&lt;br/&gt;&lt;br/&gt;No answer to the ticket yet, but we no longer see the 30k charge in Cost Explorer 😮‍💨&lt;br/&gt;&lt;br/&gt;If you are using Grok 4.6 through Bedrock Mantle, double-check how much you are spending!&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/168/886/298/053/796/original/e5c9c597eada4648.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-27T18:28:41Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs2wkfzdxraphrlvh723n82dfj2703q8qm5wm5xjay5h8e8yyxxheqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgly9yy8</id>
    
      <title type="html">I had a bit of a heart attack this morning when we noticed that ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs2wkfzdxraphrlvh723n82dfj2703q8qm5wm5xjay5h8e8yyxxheqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgly9yy8" />
    <content type="html">
      I had a bit of a heart attack this morning when we noticed that my Grok 4.6 benchmark experiment using Amazon Bedrock would cost $28,044.59 instead of ~$28.00 that I was expecting 😱&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/168/886/167/885/848/original/a1d1a08885051c89.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-27T18:28:39Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs2nsgeq6e80nsa8mg8z3x6atqk58fl5vmcug9gm6cmelr65xl7s0szyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgeqh6lg</id>
    
      <title type="html">Because I&amp;#39;ve written a similar snippet many times in the ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs2nsgeq6e80nsa8mg8z3x6atqk58fl5vmcug9gm6cmelr65xl7s0szyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgeqh6lg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfqq3c8gxkykck328wvemq3mht8hvq398lr9dqkmdm3cg28zjjguqtmm9el&#39;&gt;nevent1q…m9el&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Because I&amp;#39;ve written a similar snippet many times in the past, the first thing I did when I got home was write an open grep rule so our existing tools could catch it.&lt;br/&gt;&lt;br/&gt;Blog post on why this can be very bad and how to protect yourself on my company blog: &lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://www.fencer.dev/blog/python-class-pollution-opengrep-rule&#34;&gt;https://www.fencer.dev/blog/python-class-pollution-opengrep-rule&lt;/a&gt;
    </content>
    <updated>2026-08-26T14:01:48Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsfqq3c8gxkykck328wvemq3mht8hvq398lr9dqkmdm3cg28zjjguqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgyv6ynz</id>
    
      <title type="html">One of the many things that I learned at DEF CON a few weeks ago ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsfqq3c8gxkykck328wvemq3mht8hvq398lr9dqkmdm3cg28zjjguqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgyv6ynz" />
    <content type="html">
      One of the many things that I learned at DEF CON a few weeks ago is about Python Class Pollution and how a harmless snippet like the one below can cause a huge issue if an attacker controls it!&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/162/174/531/496/860/original/833f08f2e10c7a47.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-08-26T14:01:48Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs9h7c9rvny3kt6cl8gpjvecxm75rrw2j2kh0vh8nd3gzvgkarrlkgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgem55xx</id>
    
      <title type="html">If you want to go straight to the source and see the original ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs9h7c9rvny3kt6cl8gpjvecxm75rrw2j2kh0vh8nd3gzvgkarrlkgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgem55xx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2nsgeq6e80nsa8mg8z3x6atqk58fl5vmcug9gm6cmelr65xl7s0s7s3d96&#39;&gt;nevent1q…3d96&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;If you want to go straight to the source and see the original research:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://class-pollution.github.io/&#34;&gt;https://class-pollution.github.io/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://jackfromeast.github.io/assets/Pyrl.pdf&#34;&gt;https://jackfromeast.github.io/assets/Pyrl.pdf&lt;/a&gt;
    </content>
    <updated>2026-08-26T14:01:48Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsvrdtksa4hpjjeusv0qw42jv36vpt3k8y3p4y4x90atpdw4427kpgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg4lduxs</id>
    
      <title type="html">My dog kept me in Zone 2 for 3kms. Then I had to drop him off and ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsvrdtksa4hpjjeusv0qw42jv36vpt3k8y3p4y4x90atpdw4427kpgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg4lduxs" />
    <content type="html">
      My dog kept me in Zone 2 for 3kms. Then I had to drop him off and immediately made bad decisions. 💛&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/013/904/948/875/953/original/b0a12612b975d9e4.jpeg&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/117/013/905/038/809/914/original/542466ef2c7cc40b.jpeg&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-07-31T09:34:55Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsydprvsy4uzg6n8llwwjcvsxq3w5zdjwssyqdg33ehwqp80rtjpcczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgl5l8sw</id>
    
      <title type="html">We benchmarked 15 models for triaging vulnerabilities. * Kimi K3 ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsydprvsy4uzg6n8llwwjcvsxq3w5zdjwssyqdg33ehwqp80rtjpcczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgl5l8sw" />
    <content type="html">
      We benchmarked 15 models for triaging vulnerabilities.&lt;br/&gt;&lt;br/&gt;* Kimi K3 came out on top but marked a true positive as a false positive ☠️&lt;br/&gt;* Opus 5 refused to give a verdict on 11 vulnerabilities&lt;br/&gt;* Sonnet 5 and Luna outperformed Terra and Sol &lt;br/&gt;&lt;br/&gt;Full post 👇&lt;br/&gt;&lt;a href=&#34;https://www.fencer.dev/blog/llm-triage-sast-false-positives&#34;&gt;https://www.fencer.dev/blog/llm-triage-sast-false-positives&lt;/a&gt;
    </content>
    <updated>2026-07-31T09:04:46Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqstp08afaxeasdxv6gdkwg38ejxldjdl8c36z6tdk2vgamfer8j87gzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgz42jz6</id>
    
      <title type="html">I committed all known licenses! Working on a license classifier ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqstp08afaxeasdxv6gdkwg38ejxldjdl8c36z6tdk2vgamfer8j87gzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgz42jz6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp708vr6s8l9rpxh6ws9a73z5cvqe2ruewzyj87a8hyzvwgajsl2qxzudvc&#39;&gt;nevent1q…udvc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I committed all known licenses! Working on a license classifier PyPI package that I&amp;#39;m I&amp;#39;ll hoping to publish later this week 🤞
    </content>
    <updated>2026-07-27T16:45:21Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsyayynnjr2732yqj53d550e065glcdxdq4uhh2ugmhpthwar30ylqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgyzx9nq</id>
    
      <title type="html">Quite a way to start a Monday 😅 ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsyayynnjr2732yqj53d550e065glcdxdq4uhh2ugmhpthwar30ylqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgyzx9nq" />
    <content type="html">
      Quite a way to start a Monday 😅&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/991/570/873/109/953/original/5b456785b0f1ebb1.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-07-27T10:55:03Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsqn9nshnrquvml67ddu6lynaumar0al3rnwxhrdpr6sl98xul7j4czyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgclqh66</id>
    
      <title type="html">I might have to try that but I don&amp;#39;t think we&amp;#39;d be able ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsqn9nshnrquvml67ddu6lynaumar0al3rnwxhrdpr6sl98xul7j4czyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgclqh66" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspd7tz0l23hrmqgeulswxwxzpe8v39lrljdelqc3f5p37azvkfz4gcw86yy&#39;&gt;nevent1q…86yy&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I might have to try that but I don&amp;#39;t think we&amp;#39;d be able to remove the LLM voice, no matter how many times we ask the LLM to rewrite :(
    </content>
    <updated>2026-07-21T12:20:30Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqstk9grzcjy7l0h9cryqd5v9shf5q229vzw4q9429pp7slnq52dn5qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg3hqwvu</id>
    
      <title type="html">I do think it nailed my voice though! ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqstk9grzcjy7l0h9cryqd5v9shf5q229vzw4q9429pp7slnq52dn5qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg3hqwvu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyyjjarsd6q2kxuc3u63t9andy23emagmney456xldlgkscdl9qac5xhdp3&#39;&gt;nevent1q…hdp3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I do think it nailed my voice though!&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/957/712/109/420/840/original/aaacc672850b0eb3.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-07-21T11:24:54Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsyyjjarsd6q2kxuc3u63t9andy23emagmney456xldlgkscdl9qaczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgn2c4xe</id>
    
      <title type="html">I asked Claude to come up with writing guidelines based on my ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsyyjjarsd6q2kxuc3u63t9andy23emagmney456xldlgkscdl9qaczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgn2c4xe" />
    <content type="html">
      I asked Claude to come up with writing guidelines based on my blog posts:&lt;br/&gt;&lt;br/&gt;&amp;gt; A few things I deliberately did not encode as guidelines: the frequent typos (characteristic of your fast publishing cadence)&lt;br/&gt;&lt;br/&gt;88 blog post in 14 years is not fast publishing cadence 😅
    </content>
    <updated>2026-07-21T11:13:55Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsfs83ffu79zdsldgdy9snecp9hcmf4rh908gv2nvwftwugz24vyqgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgxhhwfm</id>
    
      <title type="html">We hade a few team discussions on this and felt that mypy in ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsfs83ffu79zdsldgdy9snecp9hcmf4rh908gv2nvwftwugz24vyqgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgxhhwfm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqz9tdsr5u9yfsjan6s7k40d7lxc3wqm0ac292gef0gf3amdxes5q2zvr04&#39;&gt;nevent1q…vr04&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;We hade a few team discussions on this and felt that mypy in tests could still be useful in certain cases. But now I found actual data showing that it&amp;#39;s just false positives so we finally excluded all test files!
    </content>
    <updated>2026-07-06T12:42:07Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsvtrpfnpa0xn338s46akeu5u02p5z2cnng0kwqdj0nfwy9ts2924gzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlghapj2n</id>
    
      <title type="html">2. Turn on the DRF-type stubs we’d already installed but never ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsvtrpfnpa0xn338s46akeu5u02p5z2cnng0kwqdj0nfwy9ts2924gzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlghapj2n" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrzxp3rac6uxdhga0h666dqkhp3n2dxu4f2mf7h5hyrq0knrzwxgs2qhqg4&#39;&gt;nevent1q…hqg4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;2. Turn on the DRF-type stubs we’d already installed but never wired up. It was flagging serializer-field errors, and we never figured it out until now.&lt;br/&gt;&lt;br/&gt;Yes, mypy is slow, but I think there is value in running it on Django codebases!
    </content>
    <updated>2026-07-06T12:28:02Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsrzxp3rac6uxdhga0h666dqkhp3n2dxu4f2mf7h5hyrq0knrzwxgszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgx6e8hn</id>
    
      <title type="html">It was also very useful to look at the false positives, and we ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsrzxp3rac6uxdhga0h666dqkhp3n2dxu4f2mf7h5hyrq0knrzwxgszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgx6e8hn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszsgfs97y0sx7pg22sph7jlqmecc0ya6j5tc8mstnfu99hj7aeuwcx4etnw&#39;&gt;nevent1q…etnw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;It was also very useful to look at the false positives, and we were able to make two changes that reduced them by half:&lt;br/&gt;&lt;br/&gt;1. Stop type-checking test files. No true positives were ever caught by this, and dynamic attrs from baker/setUpTestData are a common source of false positives
    </content>
    <updated>2026-07-06T12:28:02Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqszsgfs97y0sx7pg22sph7jlqmecc0ya6j5tc8mstnfu99hj7aeuwczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgv3s6fq</id>
    
      <title type="html">We reviewed 4,978 mypy runs in our Django app: • 4,731 green ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqszsgfs97y0sx7pg22sph7jlqmecc0ya6j5tc8mstnfu99hj7aeuwczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgv3s6fq" />
    <content type="html">
      We reviewed 4,978 mypy runs in our Django app:&lt;br/&gt;&lt;br/&gt;• 4,731 green&lt;br/&gt;• 246 failed&lt;br/&gt;&lt;br/&gt;Of the 246 failures:&lt;br/&gt;• 173 false positives&lt;br/&gt;• 73 real issues&lt;br/&gt;• 39 caught only by mypy and no other check!&lt;br/&gt;&lt;br/&gt;Some noise, but it prevented real bugs from reaching production. 🎉
    </content>
    <updated>2026-07-06T12:28:02Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqspglkfqyqurwuy4czly8x8clkdq0gm387d73s2u03mqvma52hvfaczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgn2g4g2</id>
    
      <title type="html">Our Go wrapper rebuilt an expensive index on every call. Python ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqspglkfqyqurwuy4czly8x8clkdq0gm387d73s2u03mqvma52hvfaczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgn2g4g2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsy4ttkkash956mjlfql3st66z56vecctc4rj33gcym58u4naapllcne7z82&#39;&gt;nevent1q…7z82&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Our Go wrapper rebuilt an expensive index on every call. Python version builds it at package build time.&lt;br/&gt;&lt;br/&gt;Yes, we could fix the indexing problem, and then Go would be ~16x faster than Python (0.04ms vs 0.63ms), but we’ll happily trade 0.6ms to remove the whole Go-Python bridge.&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/856/410/504/787/981/original/dbbe96b00b4f7d96.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-07-03T14:01:59Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsy4ttkkash956mjlfql3st66z56vecctc4rj33gcym58u4naapllczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlglwndks</id>
    
      <title type="html">Today I migrated some Go code to Python and made it 590x FASTER ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsy4ttkkash956mjlfql3st66z56vecctc4rj33gcym58u4naapllczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlglwndks" />
    <content type="html">
      Today I migrated some Go code to Python and made it 590x FASTER 😎&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/856/410/405/187/959/original/0897e42bcf0e92d5.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-07-03T14:01:57Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsw3nsujvqkaewa0jcrz5tv3mlg0kcaaup80fw4t9c2nvx95yym76gzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgmk5fay</id>
    
      <title type="html">After 9 meetups full of talks, lightning talks, and even ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsw3nsujvqkaewa0jcrz5tv3mlg0kcaaup80fw4t9c2nvx95yym76gzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgmk5fay" />
    <content type="html">
      After 9 meetups full of talks, lightning talks, and even lightning turtles, it&amp;#39;s time for the Python Lisbon Meetup to take it easy.&lt;br/&gt;&lt;br/&gt;Join us at Linha d&amp;#39;Água on Thursday to relax and enjoy the summer in Lisbon with Python friends 🐢&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://www.meetup.com/python-lisbon-meetup/events/315420890/&#34;&gt;https://www.meetup.com/python-lisbon-meetup/events/315420890/&lt;/a&gt;
    </content>
    <updated>2026-06-29T08:00:06Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs93993k6jx5jnnfnlatap0y0a89dkxmcrzplsln49ksufsc82aeaczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgnfcscm</id>
    
      <title type="html">A bug that survived 15 years of upgrades. One of my servers lost ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs93993k6jx5jnnfnlatap0y0a89dkxmcrzplsln49ksufsc82aeaczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgnfcscm" />
    <content type="html">
      A bug that survived 15 years of upgrades.&lt;br/&gt;&lt;br/&gt;One of my servers lost DNS after every reboot. ping 8.8.8.8 worked; ping &lt;a href=&#34;https://google.com&#34;&gt;https://google.com&lt;/a&gt; didn&amp;#39;t resolve. I&amp;#39;d been &amp;#34;fixing&amp;#34; it by hand-editing /etc/resolv.conf, which, of course, was reset on the next boot. 🙈&lt;br/&gt;&lt;br/&gt;Turned out to be a config from 2010. I finally debugged it properly with Claude.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://blog.pecar.me/the-15-year-old-iptables-rule-that-broke-my-dns&#34;&gt;https://blog.pecar.me/the-15-year-old-iptables-rule-that-broke-my-dns&lt;/a&gt;
    </content>
    <updated>2026-06-08T08:57:00Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsvz03kptz79e4cskv5e3ssmgdl7k9pcuxu6nu76smtm3x57xxguvgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlglhgsc0</id>
    
      <title type="html">good point. I think the cooldown period works for regular updates ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsvz03kptz79e4cskv5e3ssmgdl7k9pcuxu6nu76smtm3x57xxguvgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlglhgsc0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxzx7gknnsfk330usgzx5c0kyrwz0xv8n3g53fuxd5p3v6a5g54xggwa0zl&#39;&gt;nevent1q…a0zl&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;good point. I think the cooldown period works for regular updates but not for security updates. If you are impacted by a security vuln you should upgrade immediately. That&amp;#39;s not something you can easily automate though...&lt;br/&gt;&lt;br/&gt;What you can do is set a lower cooldown period for packages you trust more. E.g. we have a general 3 day cooldown for all packages but 1 day for Django so that we bring in security updates the same week. We would patch immediately if  the CVE was impacting us.
    </content>
    <updated>2026-06-06T12:05:53Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsrrvlxwmr9svmjpj53h04zesufpqxwwmzqf9048nw8r6zs54zk5jgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg2wqxn5</id>
    
      <title type="html">The Claude usage page is very confusing. Since Sonnet has a ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsrrvlxwmr9svmjpj53h04zesufpqxwwmzqf9048nw8r6zs54zk5jgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg2wqxn5" />
    <content type="html">
      The Claude usage page is very confusing. Since Sonnet has a separate bar I thought I&amp;#39;d be able to switch to it after I max out Opus, but nope.&lt;br/&gt;&lt;br/&gt;Of course this all makes sense if you actually read the tooltip/labels but who does that today anyway? 😅&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/641/316/338/079/984/original/0c19472d6147aa6e.png&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/641/316/526/313/288/original/05e52427a48fe299.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-05-26T14:20:45Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqspvuzlhxvwysphdug6dlp7vs3u7xwvsyrps430ue2uxcuvz2lwgmqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg7xkn49</id>
    
      <title type="html">Speaking about reading the labels. It says that I spent the limit ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqspvuzlhxvwysphdug6dlp7vs3u7xwvsyrps430ue2uxcuvz2lwgmqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg7xkn49" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrrvlxwmr9svmjpj53h04zesufpqxwwmzqf9048nw8r6zs54zk5jg77up3r&#39;&gt;nevent1q…up3r&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Speaking about reading the labels. It says that I spent the limit for this month but it&amp;#39;s actually a weekly limit, lol.
    </content>
    <updated>2026-05-26T14:20:45Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqswkpe52flfutl4ayrdgngqrumnsl24zzxmnw9df3hhs4408wvel7czyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg9x9g56</id>
    
      <title type="html">Oh, I didn’t know GitHub doesn’t have pagination in the ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqswkpe52flfutl4ayrdgngqrumnsl24zzxmnw9df3hhs4408wvel7czyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg9x9g56" />
    <content type="html">
      Oh, I didn’t know GitHub doesn’t have pagination in the Commits tab of a pull request. 😅&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/634/613/696/689/943/original/935e38e3ef4ad07c.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-05-25T09:56:08Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsr28wmgac2t94nd6tw52pzrsyjzyzsmccpqgtr4h9vaxkk4lvgm0qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgt59zg5</id>
    
      <title type="html">Make sure to always reuse your botoclients. Initializing a fresh ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsr28wmgac2t94nd6tw52pzrsyjzyzsmccpqgtr4h9vaxkk4lvgm0qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgt59zg5" />
    <content type="html">
      Make sure to always reuse your botoclients. Initializing a fresh one on each task has A LOT of overhead!&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/618/581/464/100/294/original/7800f6c3992c57a6.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-05-22T13:58:56Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsxl8jzmn0kqkvylmdf2ds42p2wu2fvduz6duwjfux2cslmujxfe7gzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgsa4aey</id>
    
      <title type="html">Running Claude in a loop to push our test coverage. After 24&#43; ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsxl8jzmn0kqkvylmdf2ds42p2wu2fvduz6duwjfux2cslmujxfe7gzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgsa4aey" />
    <content type="html">
      Running Claude in a loop to push our test coverage.&lt;br/&gt;&lt;br/&gt;After 24&#43; hours and 22,000 new lines of tests, coverage climbed from 92% to 95%. No clue if it’ll get merged, but it&amp;#39;s a really fun experiment 👀&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/607/245/689/266/897/original/d99f74dca94743fd.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-05-20T13:56:06Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqstvc66tlrfl4he7du6yemypav405rq3xnu5qsfs83flsew3gd24wczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgakpmyd</id>
    
      <title type="html">Fun fact, I was reviewing for 3 hours straight on Saturday while ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqstvc66tlrfl4he7du6yemypav405rq3xnu5qsfs83flsew3gd24wczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgakpmyd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsra7g7fym7e30q9p4q9l7egf4cyqxaju8xz9rtt97krh59j8qgguqhwpmyx&#39;&gt;nevent1q…pmyx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Fun fact, I was reviewing for 3 hours straight on Saturday while the Raglan surf competition was on. There was A LOT of waiting between sets, so I could focus on proposals for most of it!&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/592/266/145/427/865/original/f042e4b21c57941b.jpeg&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-05-17T22:26:35Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsra7g7fym7e30q9p4q9l7egf4cyqxaju8xz9rtt97krh59j8qgguqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgy27pwp</id>
    
      <title type="html">Over the last week, I&amp;#39;ve been reviewing PyCon Portugal talk ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsra7g7fym7e30q9p4q9l7egf4cyqxaju8xz9rtt97krh59j8qgguqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgy27pwp" />
    <content type="html">
      Over the last week, I&amp;#39;ve been reviewing PyCon Portugal talk and workshop proposals, and I just finished reviewing them all! 😎&lt;br/&gt;&lt;br/&gt;Some really good ones in the mix that got me really excited about the conference in September. Make sure to grab your ticket!&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://2026.pycon.pt&#34;&gt;https://2026.pycon.pt&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/592/266/029/133/351/original/bd36ecf32cd57a02.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-05-17T22:26:34Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsd84rxxd7u2mwuquma2kdvmrzwlqxk7unsyrr5uy4th0f0ee346nczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgxn3gtv</id>
    
      <title type="html">here it is! https://blog.pecar.me/fedidevs-postmortem/</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsd84rxxd7u2mwuquma2kdvmrzwlqxk7unsyrr5uy4th0f0ee346nczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgxn3gtv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgj4xsma5xjena0flrgujw47kzsjp37e00u3ad28f6xzwl9qfqs0set70x4&#39;&gt;nevent1q…70x4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;here it is! &lt;a href=&#34;https://blog.pecar.me/fedidevs-postmortem/&#34;&gt;https://blog.pecar.me/fedidevs-postmortem/&lt;/a&gt;
    </content>
    <updated>2026-05-13T09:21:12Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsgj4xsma5xjena0flrgujw47kzsjp37e00u3ad28f6xzwl9qfqs0szyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgstmj67</id>
    
      <title type="html">when Claude figures out the root cause 😂</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsgj4xsma5xjena0flrgujw47kzsjp37e00u3ad28f6xzwl9qfqs0szyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgstmj67" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstd6rm734aar4tnv3w4a4c5qn8fala0hhzw6azey79fwxrrpf84xg6yl065&#39;&gt;nevent1q…l065&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;when Claude figures out the root cause 😂
    </content>
    <updated>2026-05-13T08:46:55Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsr4rft9g00w7t2uvxza5pnjvygylnjcemh9qnvcmdtrvg9eef89tqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgrgdsj2</id>
    
      <title type="html">Fedidevs had quite an outage today. It went offline just as I ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsr4rft9g00w7t2uvxza5pnjvygylnjcemh9qnvcmdtrvg9eef89tqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgrgdsj2" />
    <content type="html">
      Fedidevs had quite an outage today. It went offline just as I went to bed and I didn&amp;#39;t see it until I woke up this morning 🫣&lt;br/&gt;&lt;br/&gt;Still better uptime than GitHub 😅&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/566/362/502/471/567/original/d3909dcf9cd5a3f4.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-05-13T08:38:57Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsde5mg70h3he7hshumt76sapn56frz0hk9hnqejw3qjw8dmhdrc7czyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgl2s70z</id>
    
      <title type="html">dogs are the best!</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsde5mg70h3he7hshumt76sapn56frz0hk9hnqejw3qjw8dmhdrc7czyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgl2s70z" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8kapsvam27dvcwh753lrvmrcux926nmhf76up98nq9elzrnz5vqs4aeyxv&#39;&gt;nevent1q…eyxv&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;dogs are the best!
    </content>
    <updated>2026-05-12T20:34:19Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs2qefuyn4u82cppjcxmmpy83v6gwtvuwd90y82ks787hn8cjrr35szyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgz776lq</id>
    
      <title type="html">Months of training runs with my dog. Went solo today and broke ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs2qefuyn4u82cppjcxmmpy83v6gwtvuwd90y82ks787hn8cjrr35szyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgz776lq" />
    <content type="html">
      Months of training runs with my dog. Went solo today and broke almost every PR I had. He’s the real coach 🐕&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/563/496/146/287/929/original/98e3cc8c1ef38170.png&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/563/496/416/761/260/original/e8bb10fbc88ec998.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-05-12T20:30:10Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsyzktyntx2frdf6df8llzfkuksdyzpm6x7arsxcskcpu0vdw2wwcszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgp8zxjf</id>
    
      <title type="html">RE: https://fosstodon.org/@anze3db/116558364408886679 The supply ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsyzktyntx2frdf6df8llzfkuksdyzpm6x7arsxcskcpu0vdw2wwcszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgp8zxjf" />
    <content type="html">
      RE: &lt;a href=&#34;https://fosstodon.org/@anze3db/116558364408886679&#34;&gt;https://fosstodon.org/@anze3db/116558364408886679&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The supply chain attack has now spread to PyPI:&lt;br/&gt;&lt;br/&gt;mistralai: 2.4.6 &lt;br/&gt;guardrails-ai: 0.10.1&lt;br/&gt;&lt;br/&gt;Pause your dependency updates or use package cooldowns (--uploaded-prior-to flag in latest pip)&lt;br/&gt;&lt;br/&gt;Stay safe!&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/note1f243e89zfsc85gj9ykv0kaet2dqkmv2pxx6lsxkrtm8cn63gu64ql4nz9h&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;note1f24…nz9h&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; 🚨 There was another supply chain attack, this time affecting tanstack npm packages. Make sure you haven&#39;t installed the compromised packages either in your CI or locally.&lt;br/&gt;&lt;br/&gt;I would also hold off on updating any dependency for the next week or so until the dust settles from this.&lt;br/&gt;&lt;br/&gt;Blog post with more information on all of this. Stay safe out there!&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack&#34;&gt;https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack&lt;/a&gt; &lt;/blockquote&gt;
    </content>
    <updated>2026-05-12T09:13:20Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsy42cunj3ycvr6yfzjtx8mwu44xstdk9qnrd0crtp4anufag5wd2szyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgkfjyvw</id>
    
      <title type="html">🚨 There was another supply chain attack, this time affecting ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsy42cunj3ycvr6yfzjtx8mwu44xstdk9qnrd0crtp4anufag5wd2szyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgkfjyvw" />
    <content type="html">
      🚨 There was another supply chain attack, this time affecting tanstack npm packages. Make sure you haven&amp;#39;t installed the compromised packages either in your CI or locally.&lt;br/&gt;&lt;br/&gt;I would also hold off on updating any dependency for the next week or so until the dust settles from this.&lt;br/&gt;&lt;br/&gt;Blog post with more information on all of this. Stay safe out there!&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack&#34;&gt;https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack&lt;/a&gt;
    </content>
    <updated>2026-05-11T22:44:55Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsv2m4nh5qrcftgj808zh8e3ed8eex5ullsd00mr0ut0xgyp7c9s6qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg0rkpvu</id>
    
      <title type="html">Claude had to force-remove conflicting packages, reinstall the ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsv2m4nh5qrcftgj808zh8e3ed8eex5ullsd00mr0ut0xgyp7c9s6qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg0rkpvu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfm4tlhcjn6n6x0vcxjlm5fd58d2qyehdxa2kagq0qfgms8nwh5eq4j4q0c&#39;&gt;nevent1q…4q0c&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Claude had to force-remove conflicting packages, reinstall the Trixie versions, and use dpkg -i --force-overwrite where the metadata still disagreed about file ownership. I would have given up and reinstalled.&lt;br/&gt;&lt;br/&gt;Full write-up in my latest blog post 👇&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://blog.pecar.me/letting-claude-upgrade-my-raspberry-pi/&#34;&gt;https://blog.pecar.me/letting-claude-upgrade-my-raspberry-pi/&lt;/a&gt;
    </content>
    <updated>2026-05-11T09:59:13Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsfm4tlhcjn6n6x0vcxjlm5fd58d2qyehdxa2kagq0qfgms8nwh5eqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgawea59</id>
    
      <title type="html">I told Claude to upgrade my Raspberry Pi from Debian 12 to 13 and ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsfm4tlhcjn6n6x0vcxjlm5fd58d2qyehdxa2kagq0qfgms8nwh5eqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgawea59" />
    <content type="html">
      I told Claude to upgrade my Raspberry Pi from Debian 12 to 13 and went to enjoy my Sunday.&lt;br/&gt;&lt;br/&gt;It wasn&amp;#39;t an easy upgrade. apt kept tripping over Debian&amp;#39;s t64 transition, but Claude managed to unstuck it. When I came back, the box rebooted cleanly into Debian 13. 😲
    </content>
    <updated>2026-05-11T09:59:13Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs2kwyp0fngsz2af8pjck20lupa2ywtlp0xl3f3d3ml49zlp9w4yyszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgzjf3nw</id>
    
      <title type="html">Meetup page for the event: ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs2kwyp0fngsz2af8pjck20lupa2ywtlp0xl3f3d3ml49zlp9w4yyszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgzjf3nw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr2pw3tazm4fve0wyfhrggx2sljx8cdm2l6ldgsg2cjwvnt68sqxca6fgxy&#39;&gt;nevent1q…fgxy&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Meetup page for the event: &lt;a href=&#34;https://www.meetup.com/python-lisbon-meetup/events/314097850/&#34;&gt;https://www.meetup.com/python-lisbon-meetup/events/314097850/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;More info: &lt;a href=&#34;https://python-lisbon-meetup.github.io/&#34;&gt;https://python-lisbon-meetup.github.io/&lt;/a&gt;
    </content>
    <updated>2026-05-04T08:49:39Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsr2pw3tazm4fve0wyfhrggx2sljx8cdm2l6ldgsg2cjwvnt68sqxczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgakenyc</id>
    
      <title type="html">We have another Python Lisbon Meetup coming up on Thursday 🐍 ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsr2pw3tazm4fve0wyfhrggx2sljx8cdm2l6ldgsg2cjwvnt68sqxczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgakenyc" />
    <content type="html">
      We have another Python Lisbon Meetup coming up on Thursday 🐍&lt;br/&gt;&lt;br/&gt;This time Yulia will be giving a talk on strong and weak references!&lt;br/&gt;&lt;br/&gt;See you on May 7 @ 19:00 at IST, Pavilhão de Matemática, room 3.10!
    </content>
    <updated>2026-05-04T08:49:39Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsq7cgwrx27pn24zrzutlh2qqe2wp0e68vx8jvhnz4rjfsyt7q7g8szyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg3cqnmf</id>
    
      <title type="html">I haven&amp;#39;t heard it until now but out of the box it seems to ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsq7cgwrx27pn24zrzutlh2qqe2wp0e68vx8jvhnz4rjfsyt7q7g8szyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg3cqnmf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswuprhjk6tk4wu5rtddaxscf97vuxz0q0tj7y4f9nwt9z8f2f3afqfd07ly&#39;&gt;nevent1q…07ly&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I haven&amp;#39;t heard it until now but out of the box it seems to have the same limitations as pyright, ty, pyrefly that I describe in the blog post.&lt;br/&gt;&lt;br/&gt;With zuban I&amp;#39;m seeing over 7k type errors in my codebase where mypy &#43; django-stubs has 0.&lt;br/&gt;&lt;br/&gt;I&amp;#39;ll play around a bit more with it when I have more time, but I think the general rule of the blog post still stands: You either choose completeness with mypy&#43;django-stubs or you choose speed but then have to deal with attr-defined errors.
    </content>
    <updated>2026-04-28T14:11:58Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs23fl5ms4wkp7m427arp9ys3rufdx7ejs370w4r03d9g75vthrjgqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgc0hsq4</id>
    
      <title type="html">Finally wrote up my notes from DjangoCon Europe 2026 in Athens ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs23fl5ms4wkp7m427arp9ys3rufdx7ejs370w4r03d9g75vthrjgqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgc0hsq4" />
    <content type="html">
      Finally wrote up my notes from DjangoCon Europe 2026 in Athens 🇬🇷&lt;br/&gt;&lt;br/&gt;I climbed the Acropolis, ate great food, hung out with amazing people, gave a lightning talk, and fixed one regression in Django main during the sprints.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://blog.pecar.me/djangocon-europe-2026/&#34;&gt;https://blog.pecar.me/djangocon-europe-2026/&lt;/a&gt;
    </content>
    <updated>2026-04-28T10:02:03Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsd0pqd80zpk6r7rshhh8rjl9ccghfmjn04kcajd3ajymhenfevkgqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgu9ytkl</id>
    
      <title type="html">With all the supply chain attacks going around, we have to be ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsd0pqd80zpk6r7rshhh8rjl9ccghfmjn04kcajd3ajymhenfevkgqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgu9ytkl" />
    <content type="html">
      With all the supply chain attacks going around, we have to be very careful about how we update our dependencies. I&amp;#39;ve written a full blog post about it, but here is the TLDR:&lt;br/&gt;&lt;br/&gt;1. Pin to hashes, not just versions&lt;br/&gt;2. Automate the updates&lt;br/&gt;3. Use dependency cooldowns&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://blog.pecar.me/how-to-safely-update-your-dependencies/&#34;&gt;https://blog.pecar.me/how-to-safely-update-your-dependencies/&lt;/a&gt;
    </content>
    <updated>2026-04-20T09:57:05Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs05d7kt377crax2qqatzltkme6snpzky59avklgmcxyhg04hjssvqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgurh37n</id>
    
      <title type="html">Everyone’s favorite web framework is now also in the gelato ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs05d7kt377crax2qqatzltkme6snpzky59avklgmcxyhg04hjssvqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgurh37n" />
    <content type="html">
      Everyone’s favorite web framework is now also in the gelato business 🤤&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/391/837/651/603/616/original/4c38e6851495dee2.jpeg&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-04-12T12:55:00Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs9mrg6ruqcrslmk7yhnnu3qa2n6gdajdm3efrgnksnwvgrjwd53jczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg2933g2</id>
    
      <title type="html">Another Python Lisbon Meetup in the books! Looking forward to the ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs9mrg6ruqcrslmk7yhnnu3qa2n6gdajdm3efrgnksnwvgrjwd53jczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg2933g2" />
    <content type="html">
      Another Python Lisbon Meetup in the books! Looking forward to the next one on May 7 👀&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/340/099/622/197/792/original/049a178112d5ce06.jpg&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/340/100/510/163/139/original/eef571212bb29f43.jpeg&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/340/100/515/738/206/original/0a42bc059b7f0f6b.jpeg&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2026-04-03T09:37:38Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs0fl0xvxzg2kl7xnvwn6w30vs3kz8v8mn3y7aw7ctsnhtztzrgexqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgg0usqq</id>
    
      <title type="html">I&amp;#39;ll be giving a talk about lazy imports at the next Python ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs0fl0xvxzg2kl7xnvwn6w30vs3kz8v8mn3y7aw7ctsnhtztzrgexqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgg0usqq" />
    <content type="html">
      I&amp;#39;ll be giving a talk about lazy imports at the next Python Lisbon Meetup!&lt;br/&gt;&lt;br/&gt;See you there? 😀&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://www.meetup.com/python-lisbon-meetup/events/313903112/?eventOrigin=home_next_event_you_are_attending&#34;&gt;https://www.meetup.com/python-lisbon-meetup/events/313903112/?eventOrigin=home_next_event_you_are_attending&lt;/a&gt;
    </content>
    <updated>2026-03-30T09:02:02Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs29r3k6mqtcmehwgexepppf3y8uctmpg7ehset42e4fn2vmjcrl8czyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlglzv2gm</id>
    
      <title type="html">With recent Python supply chain attacks (Trivy/LiteLLM), it’s ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs29r3k6mqtcmehwgexepppf3y8uctmpg7ehset42e4fn2vmjcrl8czyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlglzv2gm" />
    <content type="html">
      With recent Python supply chain attacks (Trivy/LiteLLM), it’s worth mentioning uv’s `exclude-newer = &amp;#34;x days&amp;#34;` config.&lt;br/&gt;&lt;br/&gt;It forces uv to only installs packages published more than x days ago, reducing risks since problematic packages should be yanked by then.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://docs.astral.sh/uv/reference/settings/#exclude-newer&#34;&gt;https://docs.astral.sh/uv/reference/settings/#exclude-newer&lt;/a&gt;
    </content>
    <updated>2026-03-25T15:11:50Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqst4zpq9ymhevrcpwyjaz92kg0daratvn9rcpgksg2xrqf4pe9eklszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgxyhcfn</id>
    
      <title type="html">I wrote a post on how we tracked down slow imports in our Django ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqst4zpq9ymhevrcpwyjaz92kg0daratvn9rcpgksg2xrqf4pe9eklszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgxyhcfn" />
    <content type="html">
      I wrote a post on how we tracked down slow imports in our Django app, fixed them by making imports lazy, and added a lint check to prevent regressions.&lt;br/&gt;&lt;br/&gt;Now I’m waiting for Python 3.15 to make all of this easier! 🚀&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://blog.pecar.me/speeding-up-django-startup-times-with-lazy-imports/&#34;&gt;https://blog.pecar.me/speeding-up-django-startup-times-with-lazy-imports/&lt;/a&gt;
    </content>
    <updated>2026-03-23T10:59:03Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsrd9dp8h2zy5h09d4pkj3zz9u3s0l20esynp0h8my8sjhrd5nl24czyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgtyk79c</id>
    
      <title type="html">yes, lazy imports are used heavily in larger web applications. ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsrd9dp8h2zy5h09d4pkj3zz9u3s0l20esynp0h8my8sjhrd5nl24czyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgtyk79c" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0wfw3stxa36p8rxa3stqadzdyvpjnapp3e8nhcxanlw40wvq0npq6e4d5a&#39;&gt;nevent1q…4d5a&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;yes, lazy imports are used heavily in larger web applications. Although they are a double edged sword becasue they can offload slow imports into the request/response cycle. So in prod you usually have to then &amp;#34;warm up&amp;#34; the process before it starts serving requests.&lt;br/&gt;&lt;br/&gt;In our case, most of those heavy imports are used by celery tasks so nothing to really no need to import them when starting the web server.
    </content>
    <updated>2026-03-16T10:25:07Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqszl5y5er46vsth9ty8x0ze8a6dlc8x0x0566zvl8zd9uw8ue6pgdczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgwzk754</id>
    
      <title type="html">I agree. I would even go as far and say that imports should have ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqszl5y5er46vsth9ty8x0ze8a6dlc8x0x0566zvl8zd9uw8ue6pgdczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgwzk754" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvennmxeeucd0qjtlu78gp2stmr9p6qsqm59lfw3knwzuxfvr775cxe2a5e&#39;&gt;nevent1q…2a5e&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I agree. I would even go as far and say that imports should have been lazy by default. But having the ability to opt into lazy imports by not needing to move imports into functions is going to be a great addition!
    </content>
    <updated>2026-03-15T22:21:55Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsgxaypsgpx8vc593vpce6k98t9za84tcvag5q3vmyzsqskgdq9fhqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgeud6n0</id>
    
      <title type="html">Can&amp;#39;t wait for lazy imports in Python 3.15! I spent a bunch ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsgxaypsgpx8vc593vpce6k98t9za84tcvag5q3vmyzsqskgdq9fhqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgeud6n0" />
    <content type="html">
      Can&amp;#39;t wait for lazy imports in Python 3.15! I spent a bunch of time and tokens over the weekend inlining heavy imports so that they don&amp;#39;t get loaded during initial start of a Django app.&lt;br/&gt;&lt;br/&gt;The `&lt;a href=&#34;https://manage.py&#34;&gt;https://manage.py&lt;/a&gt; check` command is now 3.8x faster (9.45s down to 2.48s).&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://cdn.fosstodon.org/media_attachments/files/116/234/867/539/065/013/original/7293437898250f63.mp4&#34;&gt;&lt;/video&gt;&lt;br/&gt;
    </content>
    <updated>2026-03-15T19:35:30Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsrny60s28d2vds4r33az74avdtmgtpvzyt4q0tytf3yt8lx2dtnegzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg6jym7d</id>
    
      <title type="html">cool talk, thanks for the link! I&amp;#39;ve also added it to the ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsrny60s28d2vds4r33az74avdtmgtpvzyt4q0tytf3yt8lx2dtnegzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg6jym7d" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8sz6m70xcrfhxf2svudw8yg2a9mcnxgnqdutzhp3sujp8mj4cvdsfmyeql&#39;&gt;nevent1q…yeql&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;cool talk, thanks for the link! I&amp;#39;ve also added it to the blog post.
    </content>
    <updated>2026-03-14T15:31:48Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqszvavvy47dl8kfgnpjnml6mp89c3uqprlpkmrc55kns7nzpg4fc7gzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgn638cr</id>
    
      <title type="html">I wrote a blog post about some of the options for adding type ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqszvavvy47dl8kfgnpjnml6mp89c3uqprlpkmrc55kns7nzpg4fc7gzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgn638cr" />
    <content type="html">
      I wrote a blog post about some of the options for adding type checking to your Django project!&lt;br/&gt;&lt;br/&gt;Historically, Django projects have been tough to type-check, but the future feels bright, especially if PEP 827 gets accepted!&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://blog.pecar.me/typing-your-django-project-in-2026/&#34;&gt;https://blog.pecar.me/typing-your-django-project-in-2026/&lt;/a&gt;
    </content>
    <updated>2026-03-13T11:59:02Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqstjvzwvdgnulfj2hhzyl6x7lky7fzfr5g2syhfr6s92mrkq6ymclszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgf8f923</id>
    
      <title type="html">Like pretty much everyone with a static blog site in the last 6 ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqstjvzwvdgnulfj2hhzyl6x7lky7fzfr5g2syhfr6s92mrkq6ymclszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgf8f923" />
    <content type="html">
      Like pretty much everyone with a static blog site in the last 6 months, I asked Claude to migrate it to a different static site generator.&lt;br/&gt;&lt;br/&gt;Here&amp;#39;s a blog post about it, along with some of my general thoughts on agentic code.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://blog.pecar.me/agentic-adventures/&#34;&gt;https://blog.pecar.me/agentic-adventures/&lt;/a&gt;
    </content>
    <updated>2026-03-05T12:02:04Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsdmlu3hwm89m0ez0x7a8qa9uynqn4v7nq2ersfh0gs52afeh0gnyqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgj043kk</id>
    
      <title type="html">Hey all! It&amp;#39;s almost time for the next Python Lisbon Meetup! ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsdmlu3hwm89m0ez0x7a8qa9uynqn4v7nq2ersfh0gs52afeh0gnyqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgj043kk" />
    <content type="html">
      Hey all! It&amp;#39;s almost time for the next Python Lisbon Meetup! 🐍&lt;br/&gt;&lt;br/&gt;On Thursday, pyctrl will be talking about exceptions. We&amp;#39;ll cover the origin of exceptions, their usage in OOP, how best to manage them, and more. It&amp;#39;s going to be exceptional! 💎
    </content>
    <updated>2026-02-27T12:46:31Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsdq3avu7chacnwg0vhsqsm8a3ew3lgtrg3n4q0rh3tynd2n47elpgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg6usrr5</id>
    
      <title type="html">See you on Mar 5 @ 19:00 at IST, Pavilhão de Matemática, room ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsdq3avu7chacnwg0vhsqsm8a3ew3lgtrg3n4q0rh3tynd2n47elpgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg6usrr5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdmlu3hwm89m0ez0x7a8qa9uynqn4v7nq2ersfh0gs52afeh0gnyqzaddf0&#39;&gt;nevent1q…ddf0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;See you on Mar 5 @ 19:00 at IST, Pavilhão de Matemática, room 3.10!&lt;br/&gt;&lt;br/&gt;Check out our website for more info on how to join our community!&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://python-lisbon-meetup.github.io/&#34;&gt;https://python-lisbon-meetup.github.io/&lt;/a&gt;
    </content>
    <updated>2026-02-27T12:46:31Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsg68f9g77e78jdcwkwqpgtxyhrd3twlmnjsfjx6gw9ahu2m24pvggzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg6ymwft</id>
    
      <title type="html">hey thank you for reaching out and sorry the follow button ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsg68f9g77e78jdcwkwqpgtxyhrd3twlmnjsfjx6gw9ahu2m24pvggzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg6ymwft" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspftd8v0jgr9hpylx3ygl4ud6dqyjzk98697emagvgve64c6p6mfsyyarad&#39;&gt;nevent1q…arad&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;hey thank you for reaching out and sorry the follow button didn&amp;#39;t work.&lt;br/&gt;&lt;br/&gt;I see in the logs that the following the account failed because of a Mastodon API error, but I don&amp;#39;t see what the API error was.&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve added some more logging that will hopefully give me a hint. Could you try to follow one or more accounts again?
    </content>
    <updated>2026-01-26T23:34:07Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsqf2e0rlzuqk8rljdrj8styunj2wf8xgjswmh77qzu8knhvldqgtqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgf52rka</id>
    
      <title type="html">Hey, yes I&amp;#39;m hoping to add support for pixelfed accounts ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsqf2e0rlzuqk8rljdrj8styunj2wf8xgjswmh77qzu8knhvldqgtqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgf52rka" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx4kdxhktnzwzdwaen0gfpu5jaccuvcmvs6v5vs3dpcj2ptw2e8zc7v5hg3&#39;&gt;nevent1q…5hg3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Hey, yes I&amp;#39;m hoping to add support for pixelfed accounts eventually but I don&amp;#39;t have a timeline.&lt;br/&gt;&lt;br/&gt;Here is the GitHub issue about it: &lt;a href=&#34;https://github.com/anze3db/fedidevs/issues/98&#34;&gt;https://github.com/anze3db/fedidevs/issues/98&lt;/a&gt;
    </content>
    <updated>2026-01-23T11:02:18Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsyu5ena3w97q9kydaetn6ea8jsr5g84usf2ep62rpf006h6pqnthqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg2mlyc9</id>
    
      <title type="html">New board! ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsyu5ena3w97q9kydaetn6ea8jsr5g84usf2ep62rpf006h6pqnthqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg2mlyc9" />
    <content type="html">
      New board!&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/758/519/567/162/839/original/a390a719722b3b71.jpeg&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/758/519/722/898/555/original/7fb4ef821d298730.jpeg&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-12-21T16:33:56Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsqc5xcm42j2yn2ahvrwsewqdun36sa0dm4cukt457pynsay3xpdmszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlguj6dhu</id>
    
      <title type="html">Nice! I really like your solution for day 7. Very clean!</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsqc5xcm42j2yn2ahvrwsewqdun36sa0dm4cukt457pynsay3xpdmszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlguj6dhu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrqupxq9w2kes4kyddh6dz5ck66waf3apuecfheha3hgtucjjkwyqsjxwsw&#39;&gt;nevent1q…xwsw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Nice! I really like your solution for day 7. Very clean!
    </content>
    <updated>2025-12-14T22:57:04Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs2l6h8t7epek4f6rapjjn3rru6cfn7wclhxdrr60pfj496dgagrnszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg7c5drl</id>
    
      <title type="html">I wrote a blog post about this year&amp;#39;s Advent of Code. I had a ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs2l6h8t7epek4f6rapjjn3rru6cfn7wclhxdrr60pfj496dgagrnszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg7c5drl" />
    <content type="html">
      I wrote a blog post about this year&amp;#39;s Advent of Code. I had a blast and I am already looking forward to 2026!&lt;br/&gt;&lt;br/&gt;* All my Python solutions were under 1s using pure Python and 100ms with a little help from mypy/scipy&lt;br/&gt;• The AoC community is the best ❤️&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://blog.pecar.me/advent-of-code-2025&#34;&gt;https://blog.pecar.me/advent-of-code-2025&lt;/a&gt;
    </content>
    <updated>2025-12-14T16:42:30Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqspl99pjt99w6440225rq3j8j8r3hed6jhddpmt43anqkql0tt4jfszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg8jljgm</id>
    
      <title type="html">I&amp;#39;ve finished #adventofcode 2025 and this is the first year ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqspl99pjt99w6440225rq3j8j8r3hed6jhddpmt43anqkql0tt4jfszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg8jljgm" />
    <content type="html">
      I&amp;#39;ve finished #adventofcode 2025 and this is the first year that I managed to get all solutions under 100ms ⚡&lt;br/&gt;&lt;br/&gt;All but two are under 10ms. Not bad for the slowest popular language out there 🐍, although I did have to use numpy a few times.&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/706/918/064/511/039/original/1ef0d17c74b0936d.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-12-12T13:50:57Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsypjel32t5f2ruf7gzv894x8hz090ggw4ea6svx084y52hcxy6pyszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgqdcfza</id>
    
      <title type="html">It has been 15 years since I joined GitHub 😱 ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsypjel32t5f2ruf7gzv894x8hz090ggw4ea6svx084y52hcxy6pyszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgqdcfza" />
    <content type="html">
      It has been 15 years since I joined GitHub 😱&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/677/631/763/428/409/original/e48bf8afa43463ab.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-12-07T09:43:03Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs9mvkknw8se3srzyptqmmcgek4wlmlkxgptjwyfpwqdgepwvsk8kqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgn28cf9</id>
    
      <title type="html">New release of adventofcode PyPI package today improves the ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs9mvkknw8se3srzyptqmmcgek4wlmlkxgptjwyfpwqdgepwvsk8kqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgn28cf9" />
    <content type="html">
      New release of adventofcode PyPI package today improves the display of alternative solutions for each day:&lt;br/&gt;&lt;br/&gt;1. Slower solutions are no longer counted in totals&lt;br/&gt;2. Slower solutions are dimmed out&lt;br/&gt;&lt;br/&gt;Why limit yourself to one #adventofcode solution per day? 😆&lt;br/&gt;&lt;br/&gt;Happy solving! 🎄&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/676/914/436/602/555/original/c9ed9c883ceb3b0f.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-12-07T06:40:37Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs2qg8tf0fdchfp485e37ks8sxn5xuf0wvs2458k9smetqn7tjjkrczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgmpy2dd</id>
    
      <title type="html">I compared the first 4 #adventofcode solutions on two different ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs2qg8tf0fdchfp485e37ks8sxn5xuf0wvs2458k9smetqn7tjjkrczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgmpy2dd" />
    <content type="html">
      I compared the first 4 #adventofcode solutions on two different CPUs.&lt;br/&gt;&lt;br/&gt;* Rows with a red background are on 8x Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz.&lt;br/&gt;* Rows with a green background are on Apple M3 Max.&lt;br/&gt;&lt;br/&gt;So if you want to be better at advent of code just get a better CPU? 😆&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/661/614/033/156/970/original/87cfadeba76b3f65.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-12-04T13:49:32Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsyp6tgq04wqh2qufz5fm5rhluceqmefdulkut4445fqddqw6yl3wczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgalpr5e</id>
    
      <title type="html">I wonder how long I&amp;#39;ll be able to keep all the days green ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsyp6tgq04wqh2qufz5fm5rhluceqmefdulkut4445fqddqw6yl3wczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgalpr5e" />
    <content type="html">
      I wonder how long I&amp;#39;ll be able to keep all the days green like this #adventofcode 🟢&lt;br/&gt;&lt;br/&gt;Today I learned that you can use None when slicing a list in Python:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [1,2,3][:None]&lt;br/&gt;[1, 2, 3]&lt;br/&gt;Useful to avoid the edge case where [:0] would give an empty list:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [1,2,3][:0]&lt;br/&gt;[]&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/654/189/819/563/277/original/fa81eb4e7c9b34f7.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-12-03T06:21:28Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsqn74sv9tks89w63lfkqqu53fg56kkswafx5p3gpx82sxvuw63cyczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgtczrns</id>
    
      <title type="html">Just launched version 25.4 of my adventofcode PyPI package! 🚀 ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsqn74sv9tks89w63lfkqqu53fg56kkswafx5p3gpx82sxvuw63cyczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgtczrns" />
    <content type="html">
      Just launched version 25.4 of my adventofcode PyPI package! 🚀&lt;br/&gt;&lt;br/&gt;25.4 adds a `adventofcode run` command that removes the ugly boilerplate that you had to have in your puzzle files until now!&lt;br/&gt;&lt;br/&gt;Before:                                                    After:&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/649/152/552/602/364/original/9ced7f3847c22c6a.png&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/649/152/715/098/382/original/d982592a74534c33.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-12-02T09:00:27Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsw65xhphk3qyk37evw4c3e5gtedgvq9355hs8rawf8sw64r366s4qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgtnp8ls</id>
    
      <title type="html">I&amp;#39;m using Python and also re-parsing the input for each step.</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsw65xhphk3qyk37evw4c3e5gtedgvq9355hs8rawf8sw64r366s4qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgtnp8ls" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyfuapkeflm5q3tymqdnzyv2cz26fwu9adxd0avanhv55hwgng5mgjpd6vs&#39;&gt;nevent1q…d6vs&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;m using Python and also re-parsing the input for each step.
    </content>
    <updated>2025-12-02T07:18:40Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs2qyx3snyg6mln57flp528pmecmh0em4lvfma0ccf56fk6y2ryq2qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgug7e6p</id>
    
      <title type="html">Day 2 of #adventofcode kinda felt easier than day 1 or was it ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs2qyx3snyg6mln57flp528pmecmh0em4lvfma0ccf56fk6y2ryq2qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgug7e6p" />
    <content type="html">
      Day 2 of #adventofcode kinda felt easier than day 1 or was it just me?&lt;br/&gt;&lt;br/&gt;I got to the solution fairly quickly but it was a bit slow. I then spent the next hour optimizing it and managed to make part 1 200x faster and part 2 500x faster 🎉&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/648/724/812/057/106/original/3e259d49cffd5208.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-12-02T07:11:38Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsgw2vfw0x4sgw4csw5xc7amajq03tlvldqc3fk5nmkxxhdg0e2y5qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgulpsp6</id>
    
      <title type="html">Day 1 of #adventofcode felt a bit harder than previous day 1 ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsgw2vfw0x4sgw4csw5xc7amajq03tlvldqc3fk5nmkxxhdg0e2y5qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgulpsp6" />
    <content type="html">
      Day 1 of #adventofcode felt a bit harder than previous day 1 puzzles. It took me way longer to figure out part 2 than I care to admit, but I&amp;#39;m blaming this on my sleepy brain 😅&lt;br/&gt;&lt;br/&gt;My code took 1.1ms for both parts without any perf optimizations 🎉&lt;br/&gt;&lt;br/&gt;Eleven more to go!&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/645/180/171/529/537/original/b6d708c4993f606c.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-12-01T16:10:11Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsf0qqm9zfrvph06qu35fhd6w20re7atzxr2xfjmax4k2986xmvljszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgj5s4x8</id>
    
      <title type="html">6 hours until the first advent of code puzzle unlocks. Who&amp;#39;s ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsf0qqm9zfrvph06qu35fhd6w20re7atzxr2xfjmax4k2986xmvljszyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgj5s4x8" />
    <content type="html">
      6 hours until the first advent of code puzzle unlocks. Who&amp;#39;s going to participate this year? 🎄&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/641/138/419/616/752/original/5d67c93269898f1e.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-11-30T23:02:19Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs0uq0x9luv03eja0kydvxe3n2tnk6xnaneaw8d2054vx22l6x74kgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg3jkrl5</id>
    
      <title type="html">I&amp;#39;ve also added a benchmarking utility so that I can have a ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs0uq0x9luv03eja0kydvxe3n2tnk6xnaneaw8d2054vx22l6x74kgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg3jkrl5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsy3u75l8ll0a2lm54mrp4lecyszxjex6m65xj9lk2u89p57p5426cjqtscw&#39;&gt;nevent1q…tscw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve also added a benchmarking utility so that I can have a fancy README with all the run times 😎&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/638/623/048/952/508/original/798d8509fe46bcf6.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-11-30T12:24:16Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsw9fpqe6534zvejwuxkc9fj4plk685j9q9k55chjm7dhgm7pjpn9qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgvp2qxd</id>
    
      <title type="html">RE: https://mastodon.social/@nixCraft/115633791960750253 So this ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsw9fpqe6534zvejwuxkc9fj4plk685j9q9k55chjm7dhgm7pjpn9qzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgvp2qxd" />
    <content type="html">
      RE: &lt;a href=&#34;https://mastodon.social/@nixCraft/115633791960750253&#34;&gt;https://mastodon.social/@nixCraft/115633791960750253&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;So this is the strategy AGI came up with for generating investment returns? 😆&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://www.youtube.com/shorts/pLnyjxgFxew&#34;&gt;https://www.youtube.com/shorts/pLnyjxgFxew&lt;/a&gt;&lt;br/&gt;nostr:note1dvnaf496fsqa4tav9htzdd5vew9980nagvf85l04lr2mvezk4t7sjqdzv4&lt;br/&gt;
    </content>
    <updated>2025-11-29T20:12:54Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsy3u75l8ll0a2lm54mrp4lecyszxjex6m65xj9lk2u89p57p5426czyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgdd60vd</id>
    
      <title type="html">I&amp;#39;ve just published a new version of my adventofcode PyPI ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsy3u75l8ll0a2lm54mrp4lecyszxjex6m65xj9lk2u89p57p5426czyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgdd60vd" />
    <content type="html">
      I&amp;#39;ve just published a new version of my adventofcode PyPI package, just in time for Advent of Code that starts in 36 hours! 🎉 &lt;br/&gt;&lt;br/&gt;I&amp;#39;ve added a command line tool that helps you scaffold all the files for puzzle days because I got annoyed by copy pasting the same file each time!&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://pypi.org/project/adventofcode/&#34;&gt;https://pypi.org/project/adventofcode/&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/634/033/655/854/073/original/eb3d0c1e6547f0ed.png&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/634/033/791/198/414/original/254b53c115d5a17b.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-11-29T16:55:30Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsqu5ah9qau6wwwdfhvzgxnu4w8dz7tka53txq8fmnevg7ympl83fgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgky7wgw</id>
    
      <title type="html">Carlton&amp;#39;s proposal to move Django to an annual release cycle ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsqu5ah9qau6wwwdfhvzgxnu4w8dz7tka53txq8fmnevg7ympl83fgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgky7wgw" />
    <content type="html">
      Carlton&amp;#39;s proposal to move Django to an annual release cycle makes all the sense.&lt;br/&gt;&lt;br/&gt;The x.2 LTS releases always felt wrong to me since it has always been much easier and safer to upgrade each version rather than doing the LTS to LTS leap in one go.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://buttondown.com/carlton/archive/an-annual-release-cycle-for-django/&#34;&gt;https://buttondown.com/carlton/archive/an-annual-release-cycle-for-django/&lt;/a&gt;
    </content>
    <updated>2025-10-31T12:00:48Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs8pea7e83ucm3r7tgcd4n9nz3v07ghjlefjxsh5jcchl8ark23swczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg37rnvf</id>
    
      <title type="html">It&amp;#39;s always DNS: &amp;gt; We have identified a potential root ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs8pea7e83ucm3r7tgcd4n9nz3v07ghjlefjxsh5jcchl8ark23swczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg37rnvf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq5h3ws7ttr4kdllvytqykny4s6p9k0dze66ukgm9c948kssjr5yqw88wxz&#39;&gt;nevent1q…8wxz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;It&amp;#39;s always DNS:&lt;br/&gt;&lt;br/&gt;&amp;gt; We have identified a potential root cause for error rates for the DynamoDB APIs in the US-EAST-1 Region. Based on our investigation, the issue appears to be related to DNS resolution of the DynamoDB API endpoint in US-EAST-1
    </content>
    <updated>2025-10-20T09:22:13Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsq5h3ws7ttr4kdllvytqykny4s6p9k0dze66ukgm9c948kssjr5yqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgegng0t</id>
    
      <title type="html">us-east-1 is down, happy Monday! ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsq5h3ws7ttr4kdllvytqykny4s6p9k0dze66ukgm9c948kssjr5yqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgegng0t" />
    <content type="html">
      us-east-1 is down, happy Monday!&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/405/652/528/467/943/original/6ea24e70cba0ada7.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-10-20T08:55:09Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs9n5tqhnsy0xt6vsnjfd7xvxc5ay25xljyntlxrzya3zjmgmy0ffqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgyk6wqr</id>
    
      <title type="html">I had a memory issue with Django&amp;#39;s bulk_update queryset ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs9n5tqhnsy0xt6vsnjfd7xvxc5ay25xljyntlxrzya3zjmgmy0ffqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgyk6wqr" />
    <content type="html">
      I had a memory issue with Django&amp;#39;s bulk_update queryset method. &lt;br/&gt;&lt;br/&gt;The TLDR version is that bulk_update prepares all the update statements in advance (even when batch_size is set) which can use more memory than expected.&lt;br/&gt;&lt;br/&gt;Details and a solution in the blog:&lt;br/&gt;&lt;a href=&#34;https://blog.pecar.me/django-bulk-update-memory-issue&#34;&gt;https://blog.pecar.me/django-bulk-update-memory-issue&lt;/a&gt;
    </content>
    <updated>2025-10-13T09:57:02Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsvpfn50ya8tmqe9vzvftqzah0r6p8cj2tw3kcxu8yr8265l8dhysqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg02v70q</id>
    
      <title type="html">I have not. Can it generate a count from a left outer join?</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsvpfn50ya8tmqe9vzvftqzah0r6p8cj2tw3kcxu8yr8265l8dhysqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlg02v70q" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswmhyk35rpz8kug7gm79ddz2czzz4ud0z5xpl6t482a2muym6mhgg5r3gqd&#39;&gt;nevent1q…3gqd&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I have not. Can it generate a count from a left outer join?
    </content>
    <updated>2025-10-11T11:16:02Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqszfvlfh3tvljmzt8gmagx8ucdt3n4kl3gpsva4f2gzxpsfk5dw4zczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlglksczs</id>
    
      <title type="html">not the first read model, not even on this particular project but ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqszfvlfh3tvljmzt8gmagx8ucdt3n4kl3gpsva4f2gzxpsfk5dw4zczyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlglksczs" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv9e5suqmvs8qk6m7cczjx33e0u8sprvheuajle55h7c6k58gh50ggwc244&#39;&gt;nevent1q…c244&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;not the first read model, not even on this particular project but it’s always fun to see how much overhead a left outer join can cause.
    </content>
    <updated>2025-10-11T11:11:09Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs8zxpm7mstc26whm6dne3fxx0shpfkfe7pwfhvzagwdwpslqz0lpgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgcactkt</id>
    
      <title type="html">I&amp;#39;ve improved the performance of the starter packs list query ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs8zxpm7mstc26whm6dne3fxx0shpfkfe7pwfhvzagwdwpslqz0lpgzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgcactkt" />
    <content type="html">
      I&amp;#39;ve improved the performance of the starter packs list query from about 200ms to 2ms. 🎉&lt;br/&gt;&lt;br/&gt;The trick was to stop dynamically computing the number of accounts in a starter pack and instead precompute it in a column.&lt;br/&gt;&lt;br/&gt;A bit more work on each update, but worth it!&lt;br/&gt; &lt;img src=&#34;https://cdn.fosstodon.org/media_attachments/files/115/354/804/798/945/653/original/cf9114068356c21a.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-10-11T09:23:55Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsq6z32plme6aqejj2ywvc2fykycc35zxtsrx82w44zn2mjmy4smlqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgfgzadj</id>
    
      <title type="html">Yesterday, Python 3.14 was released, and today all of my Django ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsq6z32plme6aqejj2ywvc2fykycc35zxtsrx82w44zn2mjmy4smlqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgfgzadj" />
    <content type="html">
      Yesterday, Python 3.14 was released, and today all of my Django side projects are running on 3.14. 🎉&lt;br/&gt;&lt;br/&gt;The upgrade didn&amp;#39;t require any code changes on my part, but I did see a few return statements in the finally block SyntaxWarnings in a few dependencies.
    </content>
    <updated>2025-10-08T08:49:22Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqswtq52vtr709mvhedec3xp4up3gtrzt9k6596xx24zppruww4sweqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgvd0ery</id>
    
      <title type="html">my existing Gunicorn config was very basic: proc_name = ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqswtq52vtr709mvhedec3xp4up3gtrzt9k6596xx24zppruww4sweqzyz3e4yv52vsgv0nryykrkncx5ya28q8n823rz7yv79ewvuqm5etlgvd0ery" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyzgn66du2wftuehr9cy2htkypwywvvv3fr5gzhx35yjflrgqe53gz8sp6l&#39;&gt;nevent1q…sp6l&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;my existing Gunicorn config was very basic:&lt;br/&gt;&lt;br/&gt;proc_name = &amp;#34;fedidevs&amp;#34;&lt;br/&gt;bind = &amp;#34;unix:fedidevs.sock&amp;#34;&lt;br/&gt;workers = 4&lt;br/&gt;threads = 4&lt;br/&gt;&lt;br/&gt;So it was easy to translate to Granian&amp;#39;s command line arguments:&lt;br/&gt;&lt;br/&gt;granian \&lt;br/&gt;    --interface wsgi fedidevs.wsgi:application \&lt;br/&gt;    --process-name fedidevs \&lt;br/&gt;    --uds fedidevs.sock \&lt;br/&gt;    --workers 4 \&lt;br/&gt;    --blocking-threads 4&lt;br/&gt;&lt;br/&gt;(I&amp;#39;ve added this to the article since I think it&amp;#39;s worth seeing the comparison, thank you for the idea!).
    </content>
    <updated>2025-09-29T15:19:09Z</updated>
  </entry>

</feed>