<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: htmx</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/htmx.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2025-12-04T23:57:34+00:00</updated><author><name>Simon Willison</name></author><entry><title>Django 6.0 released</title><link href="https://simonwillison.net/2025/Dec/4/django-6/#atom-tag" rel="alternate"/><published>2025-12-04T23:57:34+00:00</published><updated>2025-12-04T23:57:34+00:00</updated><id>https://simonwillison.net/2025/Dec/4/django-6/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.djangoproject.com/weblog/2025/dec/03/django-60-released/"&gt;Django 6.0 released&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Django 6.0 includes a &lt;a href="https://docs.djangoproject.com/en/6.0/releases/6.0/"&gt;flurry of neat features&lt;/a&gt;, but the two that most caught my eye are &lt;strong&gt;background workers&lt;/strong&gt; and &lt;strong&gt;template partials&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Background workers started out as &lt;a href="https://github.com/django/deps/blob/main/accepted/0014-background-workers.rst"&gt;DEP (Django Enhancement Proposal) 14&lt;/a&gt;, proposed and shepherded by Jake Howard. Jake prototyped the feature in &lt;a href="https://github.com/RealOrangeOne/django-tasks"&gt;django-tasks&lt;/a&gt; and wrote &lt;a href="https://theorangeone.net/posts/django-dot-tasks-exists/"&gt;this extensive background on the feature&lt;/a&gt; when it landed in core just in time for the 6.0 feature freeze back in September.&lt;/p&gt;
&lt;p&gt;Kevin Wetzels published a useful &lt;a href="https://roam.be/notes/2025/a-first-look-at-djangos-new-background-tasks/"&gt;first look at Django's background tasks&lt;/a&gt; based on the earlier RC, including notes on building a custom database-backed worker implementation.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.djangoproject.com/en/6.0/ref/templates/language/#template-partials"&gt;Template Partials&lt;/a&gt; were implemented as a Google Summer of Code project by Farhan Ali Raza. I really like the design of this. Here's an example from &lt;a href="https://docs.djangoproject.com/en/6.0/ref/templates/language/#inline-partials"&gt;the documentation&lt;/a&gt; showing the neat &lt;code&gt;inline&lt;/code&gt; attribute which lets you both use and define a partial at the same time:&lt;/p&gt;
&lt;div class="highlight highlight-text-html-django"&gt;&lt;pre&gt;&lt;span class="pl-c"&gt;{# Define and render immediately. #}&lt;/span&gt;
&lt;span class="pl-e"&gt;{%&lt;/span&gt; &lt;span class="pl-s"&gt;partialdef&lt;/span&gt; &lt;span class="pl-s"&gt;user&lt;/span&gt;-&lt;span class="pl-s"&gt;info&lt;/span&gt; &lt;span class="pl-s"&gt;inline&lt;/span&gt; &lt;span class="pl-e"&gt;%}&lt;/span&gt;
    &amp;lt;&lt;span class="pl-ent"&gt;div&lt;/span&gt; &lt;span class="pl-e"&gt;id&lt;/span&gt;=&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;user-info-{{ user.username }}&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&amp;gt;
        &amp;lt;&lt;span class="pl-ent"&gt;h3&lt;/span&gt;&amp;gt;{{ user.name }}&amp;lt;/&lt;span class="pl-ent"&gt;h3&lt;/span&gt;&amp;gt;
        &amp;lt;&lt;span class="pl-ent"&gt;p&lt;/span&gt;&amp;gt;{{ user.bio }}&amp;lt;/&lt;span class="pl-ent"&gt;p&lt;/span&gt;&amp;gt;
    &amp;lt;/&lt;span class="pl-ent"&gt;div&lt;/span&gt;&amp;gt;
&lt;span class="pl-e"&gt;{%&lt;/span&gt; &lt;span class="pl-s"&gt;endpartialdef&lt;/span&gt; &lt;span class="pl-e"&gt;%}&lt;/span&gt;

&lt;span class="pl-c"&gt;{# Other page content here. #}&lt;/span&gt;

&lt;span class="pl-c"&gt;{# Reuse later elsewhere in the template. #}&lt;/span&gt;
&amp;lt;&lt;span class="pl-ent"&gt;section&lt;/span&gt; &lt;span class="pl-e"&gt;class&lt;/span&gt;=&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;featured-authors&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&amp;gt;
    &amp;lt;&lt;span class="pl-ent"&gt;h2&lt;/span&gt;&amp;gt;Featured Authors&amp;lt;/&lt;span class="pl-ent"&gt;h2&lt;/span&gt;&amp;gt;
    &lt;span class="pl-e"&gt;{%&lt;/span&gt; &lt;span class="pl-k"&gt;for&lt;/span&gt; &lt;span class="pl-s"&gt;user&lt;/span&gt; &lt;span class="pl-k"&gt;in&lt;/span&gt; &lt;span class="pl-s"&gt;featured&lt;/span&gt; &lt;span class="pl-e"&gt;%}&lt;/span&gt;
        &lt;span class="pl-e"&gt;{%&lt;/span&gt; &lt;span class="pl-s"&gt;partial&lt;/span&gt; &lt;span class="pl-s"&gt;user&lt;/span&gt;-&lt;span class="pl-s"&gt;info&lt;/span&gt; &lt;span class="pl-e"&gt;%}&lt;/span&gt;
    &lt;span class="pl-e"&gt;{%&lt;/span&gt; &lt;span class="pl-k"&gt;endfor&lt;/span&gt; &lt;span class="pl-e"&gt;%}&lt;/span&gt;
&amp;lt;/&lt;span class="pl-ent"&gt;section&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You can also render just a named partial from a template directly in Python code like this:&lt;/p&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;return&lt;/span&gt; &lt;span class="pl-en"&gt;render&lt;/span&gt;(&lt;span class="pl-s1"&gt;request&lt;/span&gt;, &lt;span class="pl-s"&gt;"authors.html#user-info"&lt;/span&gt;, {&lt;span class="pl-s"&gt;"user"&lt;/span&gt;: &lt;span class="pl-s1"&gt;user&lt;/span&gt;})&lt;/pre&gt;

&lt;p&gt;I'm looking forward to trying this out in combination with &lt;a href="https://htmx.org"&gt;HTMX&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I asked &lt;a href="https://gistpreview.github.io/?8db0c1a50aad95d5bc5b5b7d66a503ab"&gt;Claude Code to dig around in my blog's source code&lt;/a&gt; looking for places that could benefit from a template partial. Here's &lt;a href="https://github.com/simonw/simonwillisonblog/commit/9b1a6b99140b43e869ada3348ce4d4407e9a06ba"&gt;the resulting commit&lt;/a&gt; that uses them to de-duplicate the display of dates and tags from pages that list multiple types of content, such as &lt;a href="https://simonwillison.net/tags/django/"&gt;my tag pages&lt;/a&gt;.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/htmx"&gt;htmx&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude-code"&gt;claude-code&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="python"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="htmx"/><category term="coding-agents"/><category term="claude-code"/></entry><entry><title>The fetch()ening</title><link href="https://simonwillison.net/2025/Nov/3/htmx-the-fetchening/#atom-tag" rel="alternate"/><published>2025-11-03T21:39:54+00:00</published><updated>2025-11-03T21:39:54+00:00</updated><id>https://simonwillison.net/2025/Nov/3/htmx-the-fetchening/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://htmx.org/essays/the-fetchening/"&gt;The fetch()ening&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
After several years of stable htmx 2.0 and a promise to never release a backwards-incompatible htmx 3 Carson Gross is technically keeping that promise... by skipping to htmx 4 instead!&lt;/p&gt;
&lt;p&gt;The main reason is to replace &lt;code&gt;XMLHttpRequest&lt;/code&gt; with &lt;code&gt;fetch()&lt;/code&gt; - a change that will have enough knock-on compatibility effects to require a major version bump - so they're using that as an excuse to clean up various other accumulated design warts at the same time.&lt;/p&gt;
&lt;p&gt;htmx is a &lt;em&gt;very&lt;/em&gt; responsibly run project. Here's their plan for the upgrade:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;That said, htmx 2.0 users &lt;em&gt;will&lt;/em&gt; face an upgrade project when moving to 4.0 in a way that they did not have to in moving from 1.0 to 2.0.&lt;/p&gt;
&lt;p&gt;I am sorry about that, and want to offer three things to address it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;htmx 2.0 (like htmx 1.0 &amp;amp; intercooler.js 1.0) will be supported &lt;em&gt;in perpetuity&lt;/em&gt;, so there is absolutely &lt;em&gt;no&lt;/em&gt; pressure to upgrade your application: if htmx 2.0 is satisfying your hypermedia needs, you can stick with it.&lt;/li&gt;
&lt;li&gt;We will create extensions that revert htmx 4 to htmx 2 behaviors as much as is feasible (e.g. Supporting the old implicit attribute inheritance model, at least)&lt;/li&gt;
&lt;li&gt;We will roll htmx 4.0 out slowly, over a multi-year period. As with the htmx 1.0 -&amp;gt; 2.0 upgrade, there will be a long period where htmx 2.x is &lt;code&gt;latest&lt;/code&gt; and htmx 4.x is &lt;code&gt;next&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are lots of neat details in here about the design changes they plan to make. It's a really great piece of technical writing - I learned a bunch about htmx and picked up some good notes on API design in general from this.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=45803358"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/html"&gt;html&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/htmx"&gt;htmx&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/carson-gross"&gt;carson-gross&lt;/a&gt;&lt;/p&gt;



</summary><category term="html"/><category term="javascript"/><category term="open-source"/><category term="htmx"/><category term="carson-gross"/></entry><entry><title>The future of htmx</title><link href="https://simonwillison.net/2025/Jan/6/the-future-of-htmx/#atom-tag" rel="alternate"/><published>2025-01-06T23:35:53+00:00</published><updated>2025-01-06T23:35:53+00:00</updated><id>https://simonwillison.net/2025/Jan/6/the-future-of-htmx/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://htmx.org/essays/future/"&gt;The future of htmx&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Carson Gross and Alex Petros lay out an ambitious plan for &lt;a href="https://htmx.org/"&gt;htmx&lt;/a&gt;: stay stable, add few features and try to earn the same reputation for longevity that jQuery has (estimated to be used on &lt;a href="https://w3techs.com/technologies/overview/javascript_library"&gt;75.3% of websites&lt;/a&gt;).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In particular, we want to emulate these technical characteristics of jQuery that make it such a low-cost, high-value addition to the toolkits of web developers. Alex has discussed &lt;a href="https://www.youtube.com/watch?v=lASLZ9TgXyc"&gt;"Building The 100 Year Web Service"&lt;/a&gt; and we want htmx to be a useful tool for exactly that use case.&lt;/p&gt;
&lt;p&gt;Websites that are built with jQuery stay online for a very long time, and websites built with htmx should be capable of the same (or better).&lt;/p&gt;
&lt;p&gt;Going forward, htmx will be developed with its &lt;em&gt;existing&lt;/em&gt; users in mind. [...]&lt;/p&gt;
&lt;p&gt;People shouldn’t feel pressure to upgrade htmx over time unless there are specific bugs that they want fixed, and they should feel comfortable that the htmx that they write in 2025 will look very similar to htmx they write in 2035 and beyond.&lt;/p&gt;
&lt;/blockquote&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/jquery"&gt;jquery&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/htmx"&gt;htmx&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/carson-gross"&gt;carson-gross&lt;/a&gt;&lt;/p&gt;



</summary><category term="jquery"/><category term="htmx"/><category term="carson-gross"/></entry><entry><title>Themes from DjangoCon US 2024</title><link href="https://simonwillison.net/2024/Sep/27/themes-from-djangocon-us-2024/#atom-tag" rel="alternate"/><published>2024-09-27T23:36:02+00:00</published><updated>2024-09-27T23:36:02+00:00</updated><id>https://simonwillison.net/2024/Sep/27/themes-from-djangocon-us-2024/#atom-tag</id><summary type="html">
    &lt;p&gt;I just arrived home from a trip to Durham, North Carolina for DjangoCon US 2024. I’ve already written &lt;a href="https://simonwillison.net/2024/Sep/25/djp-a-plugin-system-for-django/"&gt;about my talk where I announced a new plugin system for Django&lt;/a&gt;; here are my notes on some of the other themes that resonated with me during the conference.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2024/Sep/27/themes-from-djangocon-us-2014/#growing-the-django-software-foundation-dsf-"&gt;Growing the Django Software Foundation (DSF)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2024/Sep/27/themes-from-djangocon-us-2014/#could-we-fund-a-django-lts-accessibility-audit-"&gt;Could we fund a Django LTS accessibility audit?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2024/Sep/27/themes-from-djangocon-us-2014/#django-fellows-continue-to-provide-outstanding-value"&gt;Django fellows continue to provide outstanding value&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2024/Sep/27/themes-from-djangocon-us-2014/#django-needs-feature-champions"&gt;Django needs feature champions&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2024/Sep/27/themes-from-djangocon-us-2014/#htmx-fits-django-really-well"&gt;htmx fits Django really well&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2024/Sep/27/themes-from-djangocon-us-2014/#django-ninja-has-positive-buzz"&gt;Django Ninja has positive buzz&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2024/Sep/27/themes-from-djangocon-us-2014/#valkey-as-a-last-minute-sponsor"&gt;Valkey as a last-minute sponsor&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2024/Sep/27/themes-from-djangocon-us-2014/#durham-has-a-world-class-collection-of-tubas"&gt;Durham has a world-class collection of tubas&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id="growing-the-django-software-foundation-dsf-"&gt;Growing the Django Software Foundation (DSF)&lt;/h4&gt;
&lt;p&gt;Jacob Kaplan-Moss gave &lt;a href="https://2024.djangocon.us/talks/if-we-had-1000000-what-could-the-dsf-do-with-4x-its-budget/"&gt;my favorite talk&lt;/a&gt; of the conference, asking what the Django Software Foundation could do if it quadrupled its annual income from $250,000 to $1 million dollars, and then mapping out a convincing path to get there.&lt;/p&gt;
&lt;p&gt;I really liked this diagram Jacob provided summarizing the foundation’s current income and expenditures. It’s pretty cool that $90,000 of annual income comes from individual donors, over a third of the total since corporate donors provide $160,000.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2024/dsf-diagram.jpg" alt="Financial breakdown diagram with the following numbers:  PLATINUM &amp;amp; GOLD: $125,000 CORPORATE DONORS: $160,000 BUDGET: $255,000 SILVER &amp;amp; BELOW: $35,000 INDIVIDUAL DONORS: $90,000  Spending:  WAGES (FELLOWS): $200,000 GRANTS: $35,000 OTHER: $5,000 FEES/HOSTING: $10,000 SURPLUS: $10,000​​​​​​​​​​​​​​​​" style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;Top priority would be hiring an Executive Director for the foundation, which is currently lead entirely by an elected, volunteer board. I’ve seen how useful a professional ED is from my own experiences &lt;a href="https://simonwillison.net/2024/Sep/18/board-of-the-python-software-foundation/"&gt;on the Python Software Foundation board&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Having someone working full time on the foundation outside of our current fellows - who have more than enough on their plates already - would enable the foundation to both take on more ambitious goals and also raise more money with which to tackle them.&lt;/p&gt;
&lt;p&gt;A line that Jacob used repeatedly in his talk about funding the foundation was this: if you or your organization &lt;em&gt;wouldn’t&lt;/em&gt; want to sponsor Django, he’d love to know why that is - understanding those blockers right now is almost as valuable as receiving actual cash. You can reach out to him at &lt;code&gt;jacob at djangoproject.com&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id="could-we-fund-a-django-lts-accessibility-audit-"&gt;Could we fund a Django LTS accessibility audit?&lt;/h4&gt;
&lt;p&gt;Django fellows and the &lt;a href="https://github.com/django/deps/blob/main/final/0011-accessibility-team.rst"&gt;Django Accessibility Team&lt;/a&gt; have been focusing significant effort on the accessibility of the Django admin. I found this very inspiring, and in combination with the talk of more funding for the foundation it put an idea in my head: what if every Django LTS release (once every two years) was backed by a full, professional accessibility audit, run by an agency staffed with developers who use screen readers?&lt;/p&gt;
&lt;p&gt;Imagine how much impact it would have if the default Django admin interface had excellent, documented accessibility out of the box. It could improve things for hundreds of thousands of users, and set an excellent precedent for projects (and foundations) in the wider open source community.&lt;/p&gt;
&lt;p&gt;This also feels to me like something that should be inherently attractive to sponsors. A lot of agencies use Django for government work, where accessibility is a requirement with teeth. Would one of those agencies like to be the “accessibility sponsor” for a major Django release?&lt;/p&gt;
&lt;h4 id="django-fellows-continue-to-provide-outstanding-value"&gt;Django fellows continue to provide outstanding value&lt;/h4&gt;
&lt;p&gt;The &lt;a href="https://www.djangoproject.com/fundraising/#fellowship-program"&gt;DSF’s fellowship program&lt;/a&gt; remains one of the most impactful initiatives I’ve seen anywhere for ensuring the ongoing sustainability of a community-driven open source project.&lt;/p&gt;
&lt;p&gt;Both of the current fellows, Natalia Bidart and Sarah Boyce, were in attendance and gave talks. It was great getting to meet them in person.&lt;/p&gt;
&lt;p&gt;If you’re not familiar with the program, the fellows are contractors who are paid by the DSF to keep the Django project ticking over - handling many of the somewhat less glamorous tasks of responsible open source maintenance such as ticket triage, release management, security fixes and code review.&lt;/p&gt;
&lt;p&gt;The fellows program is in its tenth year, and is a key reason that Django continues to release new versions &lt;a href="https://www.djangoproject.com/download/#supported-versions"&gt;on a regular schedule&lt;/a&gt; despite having no single corporate parent with paid developers.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2024/django-roadmap.png" alt="Software release timeline: 4.2 LTS (April 2023), 5.0 (August 2024), 5.1 (2025), 5.2 LTS (2026), 6.0 (2027), 6.1 (2027), 6.2 LTS (2028), 7.0 (2029). LTS versions have extended support periods." style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;Unsurprisingly there is always more work than fellow capacity, hence Jacob’s desire to further expand the existing program.&lt;/p&gt;
&lt;p&gt;The fellows program launched with a policy that fellows should not work on new feature development. I believe this was partly related to interpretation of IRS nonprofit guidelines which have since been reconsidered, and there is a growing consensus now that this policy should be dropped.&lt;/p&gt;
&lt;h4 id="django-needs-feature-champions"&gt;Django needs feature champions&lt;/h4&gt;
&lt;p&gt;Django has a well deserved reputation for stability, reliability and a dependable release process. It has less of a reputation for constantly turning out ground-breaking new features.&lt;/p&gt;
&lt;p&gt;Long-time Django contributors who I talked to all had a similar position on this: the challenge here is that big new features need dedicated champions to both lead design and development on them and to push them through to completion.&lt;/p&gt;
&lt;p&gt;The pool of community members who are both willing and able to take on these larger projects is currently too small.&lt;/p&gt;
&lt;p&gt;There are a number of ways we could address this - most notably through investing financial resources in sponsoring feature development. This has worked well for Django in the past - Django’s migrations work was funded by &lt;a href="https://www.kickstarter.com/projects/andrewgodwin/schema-migrations-for-django"&gt;a Kickstarter campaign&lt;/a&gt; back in 2013.&lt;/p&gt;
&lt;p&gt;The Django Software Foundation will shortly be announcing details of elections for both the DSF board and the Django Steering Council. These are extremely influential positions for people who want to help solve some of these larger problems.&lt;/p&gt;
&lt;h4 id="htmx-fits-django-really-well"&gt;htmx fits Django really well&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://htmx.org/"&gt;htmx&lt;/a&gt; is an incredibly good fit for the uncodified Django community philosophy of building for the web. It came up in multiple talks. It feels like it may be a solution that the Django community has been seeking for years, as a very compelling alternative to writing everything in SPA JavaScript and using Django purely as a backend via something like Django REST Framework.&lt;/p&gt;
&lt;p&gt;I've been slightly resistant to embracing htmx myself purely because it's such a critical dependency and in the past I wasn't convinced of its staying power. It's now mature, stable and widely-enough used that I'm ready to consider it for my own long-term projects.&lt;/p&gt;
&lt;h4 id="django-ninja-has-positive-buzz"&gt;Django Ninja has positive buzz&lt;/h4&gt;
&lt;p&gt;I haven’t paid much attention to &lt;a href="https://django-ninja.dev/"&gt;Django Ninja&lt;/a&gt; but it had a lot of very positive buzz at the conference as well, as a tool for quickly building full-featured, performative API endpoints (thanks to Rust-backed &lt;a href="https://docs.pydantic.dev/"&gt;Pydantic&lt;/a&gt; for serialization) with &lt;a href="https://django-ninja.dev/#interactive-api-docs"&gt;interactive API docs&lt;/a&gt; powered by OpenAPI.&lt;/p&gt;
&lt;p&gt;I respect Django REST Framework a lot, but my personal programming style leans away from Class Based Views, which it uses quite a bit. Django Ninja looks like it might fit my function-view biases better.&lt;/p&gt;
&lt;p&gt;I wrote about Richard Terry’s excellent &lt;a href="https://github.com/radiac/nanodjango"&gt;nanodjango&lt;/a&gt; single-file Django application tool &lt;a href="https://simonwillison.net/2024/Sep/24/nanodjango/"&gt;the other day&lt;/a&gt; - Django Ninja comes baked into that project as well.&lt;/p&gt;
&lt;h4 id="valkey-as-a-last-minute-sponsor"&gt;Valkey as a last-minute sponsor&lt;/h4&gt;
&lt;p&gt;The three platinum sponsors for DjangoCon this year were &lt;a href="https://www.revsys.com/"&gt;REVSYS&lt;/a&gt;, &lt;a href="https://www.caktusgroup.com/"&gt;Caktus Group&lt;/a&gt; and &lt;a href="https://valkey.io/"&gt;Valkey&lt;/a&gt;. Valkey were a late and somewhat surprising addition to the sponsorship lineup.&lt;/p&gt;
&lt;p&gt;Valkey is the &lt;a href="https://www.linuxfoundation.org/press/linux-foundation-launches-open-source-valkey-community"&gt;Linux Foundation backed&lt;/a&gt; fork of Redis, created in response to Redis &lt;a href="https://redis.io/blog/redis-adopts-dual-source-available-licensing/"&gt;ditching their Open Source license&lt;/a&gt; (which I took quite personally, having contributed my own free effort to promoting and improving Redis in the past).&lt;/p&gt;
&lt;p&gt;Aside from expressing thanks to them, I usually don’t pay sponsors that much attention. For some reason this one hit differently - the fact that Valkey were ready to step in as a major sponsor despite being only a few months old has caused me to take that project a whole lot more seriously than I did before. I’ll certainly consider them next time I come across a Redis-shaped problem.&lt;/p&gt;
&lt;h4 id="durham-has-a-world-class-collection-of-tubas"&gt;Durham has a world-class collection of tubas&lt;/h4&gt;
&lt;p&gt;My favorite category of &lt;a href="https://www.niche-museums.com/"&gt;Niche Museum&lt;/a&gt; is one that's available by appointment only where the person who collected everything is available to show you around.&lt;/p&gt;
&lt;p&gt;I always check &lt;a href="https://www.atlasobscura.com/"&gt;Atlas Obscura&lt;/a&gt; any time I visit a new city, and this time I was delighted to learn about The Vincent and Ethel Simonetti Historic Tuba Collection!&lt;/p&gt;
&lt;p&gt;I promoted it in the DjangoCon US #outings Slack channel and got together a group of five conference attendees for a visit on Thursday, shortly before my flight.&lt;/p&gt;
&lt;p&gt;It was &lt;em&gt;peak&lt;/em&gt; Niche Museum. I’ve posted photos and notes over &lt;a href="https://www.niche-museums.com/112"&gt;on my Niche Museums&lt;/a&gt; website, the first new article there in quite a while.&lt;/p&gt;

&lt;p&gt;&lt;img alt="More than a dozen varied and beautiful tubas, each with a neat attached label." src="https://static.simonwillison.net/static/2024/tuba-collection-card.jpeg" /&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/accessibility"&gt;accessibility&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/conferences"&gt;conferences&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/djangocon"&gt;djangocon&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jacob-kaplan-moss"&gt;jacob-kaplan-moss&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/redis"&gt;redis&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/dsf"&gt;dsf&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pydantic"&gt;pydantic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/htmx"&gt;htmx&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="accessibility"/><category term="conferences"/><category term="django"/><category term="djangocon"/><category term="jacob-kaplan-moss"/><category term="python"/><category term="redis"/><category term="dsf"/><category term="pydantic"/><category term="htmx"/></entry></feed>