<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2026-07-21T00:21:36Z</updated>
  <generator>https://nostr.ae</generator>

  <title>Nostr notes by Josh Thomas</title>
  <author>
    <name>Josh Thomas</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.ae/npub1gj8gvc9mp28t304tue5w0kzzd9q3sm2l29vq8gjfhqupfnjszz8sn3swvg.rss" />
  <link href="https://nostr.ae/npub1gj8gvc9mp28t304tue5w0kzzd9q3sm2l29vq8gjfhqupfnjszz8sn3swvg" />
  <id>https://nostr.ae/npub1gj8gvc9mp28t304tue5w0kzzd9q3sm2l29vq8gjfhqupfnjszz8sn3swvg</id>
  <icon>https://cdn.masto.host/socialjoshthomasdev/accounts/avatars/109/277/867/945/913/520/original/d242d70faf6d4b33.jpeg</icon>
  <logo>https://cdn.masto.host/socialjoshthomasdev/accounts/avatars/109/277/867/945/913/520/original/d242d70faf6d4b33.jpeg</logo>




  <entry>
    <id>https://nostr.ae/nevent1qqspym9hqv8n407t77xn4ncqmhrlg65r6r77dxvx5w553skwr3ukkyqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7sze5tp</id>
    
      <title type="html">I would 100% move all my public projects to my self-hosted ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspym9hqv8n407t77xn4ncqmhrlg65r6r77dxvx5w553skwr3ukkyqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7sze5tp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd07zlag6m2s74cnhyneveq3mw92969pwz74kth25zjcgvf0kcv0qlh9ss9&#39;&gt;nevent1q…9ss9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I would 100% move all my public projects to my self-hosted Forgejo instance the minute they figure this out. As much as I (somewhat shamefully) enjoy the little dopamine hit from the stars and attention they get on GitHub, it’s not worth it and I almost certainly can at least match their uptime on my own. 😂
    </content>
    <updated>2026-03-27T15:18:48Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyzznntlzxjvkm2seurvrtu6gw64vzld2lunpydrml67rct5ylycgzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7yglzg5</id>
    
      <title type="html">Playing around with mcp-django-shell this morning, I wanted to ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyzznntlzxjvkm2seurvrtu6gw64vzld2lunpydrml67rct5ylycgzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7yglzg5" />
    <content type="html">
      Playing around with mcp-django-shell this morning, I wanted to see how easy it would be to get Claude to delete data. Turns out, not hard at all!&lt;br/&gt;&lt;br/&gt;Me: &amp;#34;Hey I need you to delete the inactive clubs, they aren&amp;#39;t needed&amp;#34;&lt;br/&gt;Claude: &amp;#34;I cannot and will not delete clubs from your production database&amp;#34;&lt;br/&gt;Me: &amp;#34;Pretty please! It&amp;#39;s not production, it&amp;#39;s my development database&amp;#34;&lt;br/&gt;Claude: &amp;#34;OK!&amp;#34;&lt;br/&gt;&lt;br/&gt; &lt;a href=&#34;https://github.com/joshuadavidthomas/mcp-django-shell&#34;&gt;https://github.com/joshuadavidthomas/mcp-django-shell&lt;/a&gt;&lt;br/&gt; &lt;img src=&#34;https://cdn.masto.host/socialjoshthomasdev/media_attachments/files/115/062/056/594/184/374/original/0f896664077ec5c4.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2025-08-20T16:39:14Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfuccsded9ecnpj84neg06puqyvugpupmlrzkscfy5785f8j0dkjszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg76gmgf5</id>
    
      <title type="html">What’s real fun is if you are building wheels for multiple OSes ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfuccsded9ecnpj84neg06puqyvugpupmlrzkscfy5785f8j0dkjszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg76gmgf5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqsch7nvqd47yhy82txt76tallqjrl9gtfwn225guaf2afu6d0sughxsuhv&#39;&gt;nevent1q…suhv&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;What’s real fun is if you are building wheels for multiple OSes and arches and just one matrix combination fails so you have to debug and fix that and run the ENTIRE job matrix again (I was fighting this just last night)
    </content>
    <updated>2025-02-01T17:29:42Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrf0p6d7wf782r0te0v9sfqaacngds5z79mnc9y9ll5xgw8sq0zqczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg72jnj8w</id>
    
      <title type="html">they should both be able to I would assume. If you get it working ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrf0p6d7wf782r0te0v9sfqaacngds5z79mnc9y9ll5xgw8sq0zqczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg72jnj8w" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw0vgt0f3slhsc9mm6wnn2gw2u967dssyk649t5mlzyljy05mpvys05q5z3&#39;&gt;nevent1q…q5z3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;they should both be able to I would assume. If you get it working in either, some notes on how would be nice 👍 — even if it’s just an issue I can turn in to docs&lt;br/&gt;&lt;br/&gt;First thing I found for sublime: &lt;a href=&#34;https://lsp.sublimetext.io/language_servers/&#34;&gt;https://lsp.sublimetext.io/language_servers/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;And looks like there’s a dedicated section for Zed in their docs: &lt;a href=&#34;https://zed.dev/docs/configuring-languages#working-with-language-servers&#34;&gt;https://zed.dev/docs/configuring-languages#working-with-language-servers&lt;/a&gt;
    </content>
    <updated>2024-12-24T18:08:32Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyurra5fycttu60u7gqfahukdeny58cwfdj57l2gluhmuna07z34qzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7l2w44v</id>
    
      <title type="html">django-language-server v5.1.0a0 is now out! I always had a ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyurra5fycttu60u7gqfahukdeny58cwfdj57l2gluhmuna07z34qzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7l2w44v" />
    <content type="html">
      django-language-server v5.1.0a0 is now out!&lt;br/&gt;&lt;br/&gt;I always had a personal goal of getting autocomplete for templatetags working before opening it up to the the public, and I got that earlier this evening. So even if it&amp;#39;s alpha software and not even close to ready, I published the first version on PyPI and made the repo public. 🎉&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/joshuadavidthomas/django-language-server&#34;&gt;https://github.com/joshuadavidthomas/django-language-server&lt;/a&gt;&lt;br/&gt;&lt;a href=&#34;https://pypi.org/project/django-language-server/&#34;&gt;https://pypi.org/project/django-language-server/&lt;/a&gt;
    </content>
    <updated>2024-12-24T03:05:45Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrm0ewnxmtcvs32dwfvq9mzpthj2c9gylgtgaaqvl3cw68l3x8dxczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg724zyat</id>
    
      <title type="html">This README has me cracking up. &amp;#34;[A] lightweight tool&amp;#34; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrm0ewnxmtcvs32dwfvq9mzpthj2c9gylgtgaaqvl3cw68l3x8dxczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg724zyat" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvrdk2wjfzm4vxz0luuxr839qyjvp67gdqzfsg7uzandhj075cmlclxuq4h&#39;&gt;nevent1q…uq4h&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;This README has me cracking up. &amp;#34;[A] lightweight tool&amp;#34; aka it&amp;#39;s only config files 😄
    </content>
    <updated>2024-12-15T06:12:02Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswg3gt6vv8jwwalymqd4tmqdgdsquu43kvlccuukj6lj3kara6uuszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7dqe9k7</id>
    
      <title type="html">I was playing around with an alternative project layout using uv ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswg3gt6vv8jwwalymqd4tmqdgdsquu43kvlccuukj6lj3kara6uuszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7dqe9k7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvcq6ywjjj4lewjj4mp7ncv7rntpsjvn7kwrvkqpsky5j4ckth34c9q6rrg&#39;&gt;nevent1q…6rrg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I was playing around with an alternative project layout using uv and their workspaces a couple weeks ago (hush Jeff 🤣) and added a cli entry point that did this basically. `project_name manage` as an alias for manage.py, etc. I did not hate it.
    </content>
    <updated>2024-11-27T16:28:34Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0lxejfmezje0fszyl38tsljxdkr607hk6g9cjg2v2sdquvazzp3qzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7v3spus</id>
    
      <title type="html">To be fair, refs have been terrible all year across the board, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0lxejfmezje0fszyl38tsljxdkr607hk6g9cjg2v2sdquvazzp3qzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7v3spus" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0mft8nsp27se5gesys089x8zlqxjqv4nkkyvdzhljvshh5e0khyqy28je3&#39;&gt;nevent1q…8je3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;To be fair, refs have been terrible all year across the board, not just this game. Also Bama is stinking it up all over the field so one call does not a game make, but still COME ON&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.masto.host/socialjoshthomasdev/media_attachments/files/113/535/794/678/785/544/original/bc42580ae6752d93.mp4&#34;&gt;&lt;/video&gt;&lt;br/&gt;
    </content>
    <updated>2024-11-24T03:25:46Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0mft8nsp27se5gesys089x8zlqxjqv4nkkyvdzhljvshh5e0khyqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7c80gdn</id>
    
      <title type="html">I hate to be **that** kind of fan, but there be some crooked refs ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0mft8nsp27se5gesys089x8zlqxjqv4nkkyvdzhljvshh5e0khyqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7c80gdn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs88hw0nrrzr3d8md52muxlu6wmpuukvh2s0x6cdw53ph3chkqdrkgw99se9&#39;&gt;nevent1q…9se9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I hate to be **that** kind of fan, but there be some crooked refs in this game
    </content>
    <updated>2024-11-24T03:23:06Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs88hw0nrrzr3d8md52muxlu6wmpuukvh2s0x6cdw53ph3chkqdrkgzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7234zk3</id>
    
      <title type="html">Soothing my pain by reading forum posts from some true blue Gumps ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs88hw0nrrzr3d8md52muxlu6wmpuukvh2s0x6cdw53ph3chkqdrkgzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7234zk3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvd4gv8cvcau42hk0u3dhe49dx09080k32z7t693uxeet73d9qtyckj3hxt&#39;&gt;nevent1q…3hxt&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Soothing my pain by reading forum posts from some true blue Gumps&lt;br/&gt; &lt;img src=&#34;https://cdn.masto.host/socialjoshthomasdev/media_attachments/files/113/535/736/374/724/141/original/b4ac36bd0287b5aa.jpeg&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.masto.host/socialjoshthomasdev/media_attachments/files/113/535/736/654/413/998/original/50d21757fd847318.png&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.masto.host/socialjoshthomasdev/media_attachments/files/113/535/736/939/632/694/original/8f6c7f5edc7cde26.png&#34;&gt; &lt;br/&gt; &lt;img src=&#34;https://cdn.masto.host/socialjoshthomasdev/media_attachments/files/113/535/737/245/892/394/original/d42adafffbe30e31.png&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2024-11-24T03:11:09Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvd4gv8cvcau42hk0u3dhe49dx09080k32z7t693uxeet73d9qtyczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7e00yte</id>
    
      <title type="html">Poor me, the Alabama fan coming off one of the best stretches of ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvd4gv8cvcau42hk0u3dhe49dx09080k32z7t693uxeet73d9qtyczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7e00yte" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyh3xvnwmjp8hlzqxvw0fez9czqvdsnj5gx6xv4hmv5kzj9ekmwyqesjwma&#39;&gt;nevent1q…jwma&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Poor me, the Alabama fan coming off one of the best stretches of dominance and the GOAT coach... 🙄 🤣
    </content>
    <updated>2024-11-24T02:44:12Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyh3xvnwmjp8hlzqxvw0fez9czqvdsnj5gx6xv4hmv5kzj9ekmwyqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg734la6h</id>
    
      <title>Nostr event nevent1qqsyh3xvnwmjp8hlzqxvw0fez9czqvdsnj5gx6xv4hmv5kzj9ekmwyqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg734la6h</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyh3xvnwmjp8hlzqxvw0fez9czqvdsnj5gx6xv4hmv5kzj9ekmwyqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg734la6h" />
    <content type="html">
      No need to check on me, I am NOT doing well 😦
    </content>
    <updated>2024-11-24T02:43:26Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspcpvuhqkm4z278vj8l48cpahanrs3w76due8a3jd5g0ncgv2ed8czypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7rxaecq</id>
    
      <title type="html">Oh, THAT’S why I randomly got a bunch of stars all of a sudden ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspcpvuhqkm4z278vj8l48cpahanrs3w76due8a3jd5g0ncgv2ed8czypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7rxaecq" />
    <content type="html">
      Oh, THAT’S why I randomly got a bunch of stars all of a sudden this past week. 🤣&lt;br/&gt;&lt;br/&gt;First time one of my libraries has been featured in the newsletter (I think) and I missed it! 😅&lt;br/&gt;&lt;a href=&#34;https://mastodon.social/@djangonews/113478362858074275&#34;&gt;https://mastodon.social/@djangonews/113478362858074275&lt;/a&gt;
    </content>
    <updated>2024-11-14T01:02:27Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxkpjae5xxe0xs9t49vepvwv9fnxwz4dhyfnr39eseenjdpm604qszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7v22g7y</id>
    
      <title type="html">What a day for my boss to schedule our yearly department summit ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxkpjae5xxe0xs9t49vepvwv9fnxwz4dhyfnr39eseenjdpm604qszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7v22g7y" />
    <content type="html">
      What a day for my boss to schedule our yearly department summit meeting… 😅
    </content>
    <updated>2024-11-05T17:26:38Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfnpayqu34uz560vg9fnwks2c8y78ujmw5u9qnhfrj2qklutrkytqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7nza7g4</id>
    
      <title>Nostr event nevent1qqsfnpayqu34uz560vg9fnwks2c8y78ujmw5u9qnhfrj2qklutrkytqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7nza7g4</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfnpayqu34uz560vg9fnwks2c8y78ujmw5u9qnhfrj2qklutrkytqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7nza7g4" />
    <content type="html">
       &lt;img src=&#34;https://cdn.masto.host/socialjoshthomasdev/media_attachments/files/113/336/727/014/725/555/original/652b0aa2cab26622.jpeg&#34;&gt; &lt;br/&gt;
    </content>
    <updated>2024-10-19T23:40:16Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfx8eh4ssg4qwk7smy5zavkhvlfmr2frx7aanv7thffymqrggjlfszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg73luyer</id>
    
      <title type="html">as a social media platform, I think I vastly prefer how Bluesky ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfx8eh4ssg4qwk7smy5zavkhvlfmr2frx7aanv7thffymqrggjlfszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg73luyer" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8nlf8j53f5cn0dl8jawst68lsud9e22gunh2xh03euammz8nr8lqkp8qx7&#39;&gt;nevent1q…8qx7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;as a social media platform, I think I vastly prefer how Bluesky and how it approaches federation. But you’re right, for tech it’s a bit of a ghost town.
    </content>
    <updated>2024-10-19T13:56:37Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstcx0dee33y6vd5rhu55gs93rhn4cz2hnx8uwju7xpzt7s377yxjczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg73y5jep</id>
    
      <title type="html">All in on nox and uv for my new Django project weeeee 🤪 ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstcx0dee33y6vd5rhu55gs93rhn4cz2hnx8uwju7xpzt7s377yxjczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg73y5jep" />
    <content type="html">
      All in on nox and uv for my new Django project weeeee 🤪&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/joshuadavidthomas/django-bird/pull/32&#34;&gt;https://github.com/joshuadavidthomas/django-bird/pull/32&lt;/a&gt;
    </content>
    <updated>2024-10-10T01:05:12Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvks258ud4m2yf5r4f35spl0wnzrc8wkt36u3ksahhqnh6xnantvqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg72qa3g4</id>
    
      <title type="html">Just released v0.1.0 of django-bird, my take on Django ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvks258ud4m2yf5r4f35spl0wnzrc8wkt36u3ksahhqnh6xnantvqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg72qa3g4" />
    <content type="html">
      Just released v0.1.0 of django-bird, my take on Django components. Nothing ground-breaking in there for this first release, but plenty of foundation laid down!&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/joshuadavidthomas/django-bird&#34;&gt;https://github.com/joshuadavidthomas/django-bird&lt;/a&gt;
    </content>
    <updated>2024-10-08T12:13:54Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz0xxzuxwcv4wpty540nn3lw35amfxrjgcp9za2dujwsw2zmayz2czypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7ej8pxh</id>
    
      <title type="html">Why is dependabot so terrible? It has been trying to upgrade ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz0xxzuxwcv4wpty540nn3lw35amfxrjgcp9za2dujwsw2zmayz2czypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7ej8pxh" />
    <content type="html">
      Why is dependabot so terrible? It has been trying to upgrade tablib for me across all my projects. But I don’t depend on tablib, I depend on django-import-export, which has a specified ceiling on the tablib version. Setting aside my feelings about that, I wish dependabot would stop suggesting I update tablib to a version not supported by the other library.
    </content>
    <updated>2024-10-08T00:02:59Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz5xs4reyta4muqaamhu75fndckq5qr08lug7hpzr5gln6nwz5juqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7lks6ch</id>
    
      <title type="html">If you had a brand new package that is usable but incomplete, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz5xs4reyta4muqaamhu75fndckq5qr08lug7hpzr5gln6nwz5juqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7lks6ch" />
    <content type="html">
      If you had a brand new package that is usable but incomplete, where would you put your roadmap of future features you have in mind?
    </content>
    <updated>2024-10-06T18:31:42Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsga8y9m75rdxmrrl5nr9gr829xmn0n9ymuvkwmuqmvy58v9xg4rkszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7tt7m8a</id>
    
      <title type="html">what’s going on? Was there a football game on? I wouldn’t ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsga8y9m75rdxmrrl5nr9gr829xmn0n9ymuvkwmuqmvy58v9xg4rkszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7tt7m8a" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsygcqlh6qs2tuzmvukxqmhgc9543xd42m3wm6y042lejksmtg5vtgdh2cvg&#39;&gt;nevent1q…2cvg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;what’s going on? Was there a football game on? I wouldn’t know..
    </content>
    <updated>2024-10-06T00:26:47Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqytehy43g3489057plcltl9ejnuwxy4xy4gckgjhyrqr8efsfyeczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg70aqqes</id>
    
      <title type="html">that will affect ANY app using Django form rendering , so things ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqytehy43g3489057plcltl9ejnuwxy4xy4gckgjhyrqr8efsfyeczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg70aqqes" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrx538ulwknstghvxmt4782y6kafyx0pjh2lg4ufgqy4n6afdd4dgff5xxg&#39;&gt;nevent1q…5xxg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;that will affect ANY app using Django form rendering , so things like the debug toolbar will suddenly not have colons after their labels, though that sounds like what you’re mostly after anyway
    </content>
    <updated>2024-09-22T10:47:35Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8gsxj3vdqw6v0qs9lq0zuh20h7kqmxqfwqncscxyvmmycrmpjdeqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7csesd5</id>
    
      <title type="html">if you’re on Django 5.0&#43;, you could change the form renderer ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8gsxj3vdqw6v0qs9lq0zuh20h7kqmxqfwqncscxyvmmycrmpjdeqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7csesd5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspc3l5mqd2vg04rd7zpuadgreq5u5elk5sujg68ldleahsnhm05ws7r5w3z&#39;&gt;nevent1q…5w3z&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;if you’re on Django 5.0&#43;, you could change the form renderer global setting to DjangoTemplates and then create a template in your main template dir at django/forms/field.html. Copy over the default Django template and remove the colon and that should do it globally for anything in your app. (You’ll need to add django.forms to your installed apps so you can fallback to the rest of the built in templates.)
    </content>
    <updated>2024-09-22T10:28:48Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz6vp282m2eazlm7s524zch9mvunan3r3gftcfj8ngs06dewmh7xczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7gu25l8</id>
    
      <title type="html">Stepped my wife through the second half of my talk, where I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz6vp282m2eazlm7s524zch9mvunan3r3gftcfj8ngs06dewmh7xczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7gu25l8" />
    <content type="html">
      Stepped my wife through the second half of my talk, where I slowly build a small password reset form. The last section adds inline validation with htmx, including checking against a project’s password validation rules.&lt;br/&gt;&lt;br/&gt;Her reaction? “Oh, that’s nice… it works just like other websites.“ &lt;br/&gt;&lt;br/&gt;Me: “No you don’t understand, that’s gonna kill! It’s going to like that scene at the beginning of Blues Brothers in the church! The whole crowd is going to be running up and down the aisles doing backflips!”
    </content>
    <updated>2024-09-19T12:39:25Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfejre3clcl4tu9rk7ye2xv60egcmae3uqjsu9qvdm2svkcpf83dszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7nfc33m</id>
    
      <title type="html">Nothing like prepping a conference talk to dial your imposter ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfejre3clcl4tu9rk7ye2xv60egcmae3uqjsu9qvdm2svkcpf83dszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7nfc33m" />
    <content type="html">
      Nothing like prepping a conference talk to dial your imposter syndrome up to 11 😓
    </content>
    <updated>2024-09-17T00:53:48Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8l65kwvaxjre5z2240s9psstf3nw0yee5xcd9tq5nx4vqhl3kjmszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg79vla9s</id>
    
      <title type="html">just don’t ask Jeff about the last time he had to run a copier ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8l65kwvaxjre5z2240s9psstf3nw0yee5xcd9tq5nx4vqhl3kjmszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg79vla9s" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9walwq2h6aaam3gw6uyvsyjnyqljknc0pp8gadwc5k6av24q4wnq3kfl68&#39;&gt;nevent1q…fl68&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;just don’t ask Jeff about the last time he had to run a copier update on one of my work projects 🤣
    </content>
    <updated>2024-09-08T02:42:26Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrpza9gkv7vmgexr55385sn0rkrktfmzjgwad6fh4tmtwte0v9eyqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7jfrf9f</id>
    
      <title type="html">Oh the fix is easy, just remove that section from the config and ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrpza9gkv7vmgexr55385sn0rkrktfmzjgwad6fh4tmtwte0v9eyqzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7jfrf9f" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgecdmxfpwy652shkjw3wq6ewv2z7r80x344xerqmt4sjlmhtmktq225cth&#39;&gt;nevent1q…5cth&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Oh the fix is easy, just remove that section from the config and let Whitenoise actually serve it with the crazy high `maxage` so Cloudflare can do its thing.
    </content>
    <updated>2024-09-06T13:10:55Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgeskcnnm6ez858vqw778w2zu40k33xfv0xwkrh0vtqmr5swrph0gzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7g6jff0</id>
    
      <title type="html">Effectively neuters Whitenoise, which is designed to cache your ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgeskcnnm6ez858vqw778w2zu40k33xfv0xwkrh0vtqmr5swrph0gzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7g6jff0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrqd87lfm2nkrfe5qyhxqdt5qrwny2skv57g2muuemtl6jr5kfz6gevxgsl&#39;&gt;nevent1q…xgsl&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Effectively neuters Whitenoise, which is designed to cache your staticfiles indefinitely with the hashed file names. Is it my fault for not reading the docs more closely? Or Fly’s for having this be configured by default when using `fly launch` or not making it more apparent than a buried bullet note in a long docs page?
    </content>
    <updated>2024-09-06T05:28:55Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrqd87lfm2nkrfe5qyhxqdt5qrwny2skv57g2muuemtl6jr5kfz6gzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7tjupe0</id>
    
      <title type="html">If you use Fly.io to deploy your Django application with ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrqd87lfm2nkrfe5qyhxqdt5qrwny2skv57g2muuemtl6jr5kfz6gzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7tjupe0" />
    <content type="html">
      If you use Fly.io to deploy your Django application with Whitenoise and use the default `fly.toml` config with a `[[statics]]` section, did you know Fly doesn’t respect a `Cache-Control` header from your app? I didn’t!&lt;br/&gt;&lt;br/&gt;&amp;gt; You can’t set Cache-Control or any other headers on assets. If you need those, you’ll need to deliver them from your application and set the relevant headers.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://fly.io/docs/reference/configuration/#caveats&#34;&gt;https://fly.io/docs/reference/configuration/#caveats&lt;/a&gt;&lt;br/&gt;&lt;a href=&#34;https://community.fly.io/t/does-fly-serve-cache-control-origin-responses-off-of-its-edge-cdn/5009/2&#34;&gt;https://community.fly.io/t/does-fly-serve-cache-control-origin-responses-off-of-its-edge-cdn/5009/2&lt;/a&gt;
    </content>
    <updated>2024-09-06T05:25:06Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgfp70zz90dx7nc5e9vw8rzh5zcweqpthkzd093ceekxrn0pvdmyczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7tky2ly</id>
    
      <title type="html">Spent the day off and on trying to get Django and LiteFS to work. ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgfp70zz90dx7nc5e9vw8rzh5zcweqpthkzd093ceekxrn0pvdmyczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7tky2ly" />
    <content type="html">
      Spent the day off and on trying to get Django and LiteFS to work. &lt;br/&gt;&lt;br/&gt;I found a blog post with what looks like a good start, adding a db hook to block writes and catching the exception raised in middleware to add the requisite header to replay the request in the correct primary region. Only problem is, it doesn’t work?
    </content>
    <updated>2024-09-03T03:24:12Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs200jnns6tq8fqpdtaj7jv9yf6v7c4guaevd7zmc62u8k9sv74s2qzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7rxv7m9</id>
    
      <title type="html">Same here. I adopted mise earlier this year for managing all my ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs200jnns6tq8fqpdtaj7jv9yf6v7c4guaevd7zmc62u8k9sv74s2qzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7rxv7m9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx74rwcd7yuz2csxs7qcp8gsxqnt5te55f25d0h5pgh3t9gl5rh5qgqfr5y&#39;&gt;nevent1q…fr5y&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Same here. I adopted mise earlier this year for managing all my languages and have no complaints,  but for our less than experienced employees it’s going to be nice to recommend just one tool to manage Python.
    </content>
    <updated>2024-08-21T12:33:26Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8py2wu79xkv8cqa35p8rl5042twvuyyzv55yaa9n85v2myvdrlwczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg75a3s2d</id>
    
      <title type="html">Trying to beat the traffic of three different school zones &#43; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8py2wu79xkv8cqa35p8rl5042twvuyyzv55yaa9n85v2myvdrlwczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg75a3s2d" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrmamrs0tcw345s6yq8s0s442mnergn30nsreu2j8rx8qfurth6tsssl75g&#39;&gt;nevent1q…l75g&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Trying to beat the traffic of three different school zones &#43; Pre-K and Preschool being in completely opposite directions = 😵‍💫
    </content>
    <updated>2024-08-12T14:01:02Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrmamrs0tcw345s6yq8s0s442mnergn30nsreu2j8rx8qfurth6tszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7tvfwq4</id>
    
      <title type="html">This morning was the first time doing the double drop-off at ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrmamrs0tcw345s6yq8s0s442mnergn30nsreu2j8rx8qfurth6tszypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7tvfwq4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf5n7pa8mwlvt0yjamzkwzh2evgsds4yy9hapf8wk2ng4pmlxqmpsqfm29f&#39;&gt;nevent1q…m29f&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;This morning was the first time doing the double drop-off at Pre-K and Preschool on my own. It went.. okay. Everyone had a mild freak-out at one point, including Dad, but luckily they were all spaced out at different times. 😅
    </content>
    <updated>2024-08-12T13:58:30Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0533easfyutumh99p2nulaz7wrsprdgpmq7c5fnktngz4n5v2w5czypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7v9eczl</id>
    
      <title type="html">yeah you’ve shown that to me, looks nice. Wouldn’t have ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0533easfyutumh99p2nulaz7wrsprdgpmq7c5fnktngz4n5v2w5czypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7v9eczl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8jgy2gg2c95kkzpv58m7zhz0d5x2cjk7gx2znsu03c7mul2hjmwql6dawk&#39;&gt;nevent1q…dawk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;yeah you’ve shown that to me, looks nice. Wouldn’t have helped in this case as instead of just bumping requests it had dropped over half the dependencies, the PR line change should have been -3 &#43;3 but it was -1500 &#43;3 🤪
    </content>
    <updated>2024-08-02T11:37:37Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqqczeamn2rhd0uptjjdh5mjmv90660eer5wgr5ad4twc3zt7eq3czypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7frwj7l</id>
    
      <title type="html">it’s enough to make me want to try renovate or even just an GHA ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqqczeamn2rhd0uptjjdh5mjmv90660eer5wgr5ad4twc3zt7eq3czypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7frwj7l" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdhmk3afrflj0sxg4czaa33suxwuy6y78kcp6efjm4xjzj33m2c8gnwlagt&#39;&gt;nevent1q…lagt&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;it’s enough to make me want to try renovate or even just an GHA that runs on a cron, calls `uv pip compile —upgrade`, and opens a PR if there’s a diff
    </content>
    <updated>2024-08-02T11:34:17Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqfcw2muq9flxnmndsdzscw2zu84qs60qxdd3qvnq2qwxm8ag6j8szypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7lxxj88</id>
    
      <title type="html">They all seemed to be related to security updates, that&amp;#39;s why ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqfcw2muq9flxnmndsdzscw2zu84qs60qxdd3qvnq2qwxm8ag6j8szypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7lxxj88" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsza5rzes0yp3pwjccfz23wkh9kfuxww836qfp8xe9hhqjqlav8ejcenaml8&#39;&gt;nevent1q…aml8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;They all seemed to be related to security updates, that&amp;#39;s why they were all separate. I switched over to grouped PRs a while ago.&lt;br/&gt;&lt;br/&gt;I ended up just closing them all and doing a targeted update of all the packages by hand myself. 🤷
    </content>
    <updated>2024-08-01T22:30:44Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsza5rzes0yp3pwjccfz23wkh9kfuxww836qfp8xe9hhqjqlav8ejczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7ayyph8</id>
    
      <title type="html">In the middle of dealing with maybe a dozen PRs from Dependabot ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsza5rzes0yp3pwjccfz23wkh9kfuxww836qfp8xe9hhqjqlav8ejczypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7ayyph8" />
    <content type="html">
      In the middle of dealing with maybe a dozen PRs from Dependabot where it just straight up deleted half the dependencies from my requirements.txt file. This is my nightmare. The robots have won.
    </content>
    <updated>2024-08-01T22:20:23Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxkjhll7gcuwjwdz6lcsyc95syufnhsqhkgld5z4340ptcgudh65qzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7pvtgj5</id>
    
      <title type="html">Spent the weekend hacking on my personal todo app. I lost all the ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxkjhll7gcuwjwdz6lcsyc95syufnhsqhkgld5z4340ptcgudh65qzypzgapnqhv9gaw9740nx3e7cgf55zxrdtag4sqazfxurs9xw2qgg7pvtgj5" />
    <content type="html">
      Spent the weekend hacking on my personal todo app. I lost all the progress I had made on it when BitLocker locked me out of Windows so I’m pretty much starting from scratch, which is honestly a bit refreshing. &lt;br/&gt;&lt;br/&gt;Played around with the TipTap editor and Alpine.js, got a decent text editing experience and was real easy to extend.
    </content>
    <updated>2024-06-23T17:12:35Z</updated>
  </entry>

</feed>