RSSAmplifier

Blog

Roam*notes

Roam*notes on Django, Python, web, AI and software.

roam.beRSS feed ↗20 posts

Latest posts

⚡︎ Animating The Dialog Element Using View Transitions

Rik Schennink, creator of FilePond and Pintura , details how he used View Transitions to create a seamless transition between a button that opens a dialog and the dialog itself. Visit "Animating The Dialog Element Using View Transitions"

⚡︎ Data Jar: Data Store for Shortcuts

Data Jar allows storing and retrieving data for usage with Apple's Shortcuts. I'm currently only using it to store a counter, but this will definitely come in handy in other situations. Available for macOS, iPhone and iPad. And free, but you can leave a tip. Visit "Data Jar: Data Store for Shortcuts"

💡︎ Default value of an HTML form element

OK. I knew about <output> . I knew about HTMLFormElement.elements and the form attribute of form controls. But until today I did not know about the defaultValue and defaultChecked property of a form control, which returns its original value. It's been there since 2015!

💡︎ Fixing sluggish PyCharm rendering

I've been battling sluggish rendering in PyCharm for months . I started by disabling all plugins that don't serve me at all, including the "AI" helpers. Bumped the max memory. Nothing. Switched to VS Code for a while, but it just fell short. Then I ordered a long overdue new Macbook Pro, for other reasons, but I was hoping that would alleviate the issue. Nothing. And then it hit me: the problem…

⚡︎ Prek: pre-commit alternative

This blurb on the project homepage says it all: prek is a reimagined version of pre-commit, built in Rust. It is designed to be a faster, dependency-free and drop-in alternative for it, while also providing some additional long-requested features. Visit "Prek: pre-commit alternative"

▩︎ Django spotlight: humanize template filters

I frequently consult Django's set of default template tags and filters and there's one part I often forget about, because it's not enabled by default: django.contrib.humanize . The quick and short of it The humanize app adds a set of template filters for "adding a human touch to data". Meaning: turning numbers and temporal data into clear, comprehensible text, while taking the active locale into…

⚡︎ Rootcause v1 released

Version 1.0 of Rootcause is now available. The only changes are the removal of Django 5.1 from the test matrix and the addition of a changelog. Visit "Rootcause v1 released"

▩︎ Customizing the HTML name of a Django form field

Django uses the name of the form field as the name attribute of the corresponding form element in HTML. If you ever need to change it, here's how (Django 5.2+). Default behavior Let's have a look at what happens behind the scenes. We're using this form as an example: class UploadForm ( forms . Form ): action = forms . CharField ( max_length = 30 ) file = forms . FileField () A Django form keeps…

▩︎ A first look at Django's new background tasks

Django 6.0 introduces a built-in background tasks framework in django.tasks . But don't expect to phase out Celery, Huey or other preferred solutions just yet. The release notes are quite clear on this: Django handles task creation and queuing, but does not provide a worker mechanism to run tasks. Execution must be managed by external infrastructure, such as a separate process or service. The main…

⚡︎ Font: Maple Mono

I might have discovered a new favorite programming font: Maple Mono , based on JetBrains Mono. Here's a sample of Maple Mono NL in PyCharm with Catppuccin Mocha (no italics): It feels like just the right amount of playfulness. Well, at least right now. I switch from Input Mono to JetBrains Mono and back again about as often as I change my underwear. Visit "Font: Maple Mono"

▩︎ Django spotlight: SimpleLazyObject & Co.

We probably all know the ins and outs of Django models, and the settings we need to tweak before heading to production. But Django's packed with tiny bits of useful, lesser known constructs and functionality you can safely reuse. Like SimpleLazyObject . Its purpose The docstring of SimpleLazyObject , defined in django.utils.functional , is quite brief: A lazy object initialized from any function.…

⚡︎ Fontanello

I often find myself looking at some beautiful typography, on my phone. Since there's no easy way to inspect the source, I have to add the url to my to do list, open it on my laptop and go from there. With the Fontanello iOS Safari extension that's a thing of the past. Select the text, open the extension and voilà: Fontanello shows the typeface, weight and even letter-spacing and features. Visit…

⚡︎ Make your docs shine with Starlight

Astro's new toolkit for creating documentation websites. Still in beta, but it looks quite extensive. Visit "Make your docs shine with Starlight"

⚡︎ Stevens: a hackable AI assistant using a single SQLite table and a handful of cron jobs

An absolutely delightful demonstration of an AI assistant tailored to the needs of Geoffrey's family. There’s a lot of hype these days around patterns for building with AI. Agents, memory, RAG, assistants—so many buzzwords! But the reality is, you don’t need fancy techniques or libraries to build useful personal tools with LLMs. Or as Tomas Ptacek put it: You Should Write An Agent . Visit…

▩︎ Ping me: using ntfy to stay updated

I'm often finding myself being afk for a few minutes, while some process is running. Got to stretch those legs, you know? I've started using nfty to send me a notification on my phone as soon as a process has completed, so I can actually go ahead and step away without having to check in. And it really couldn't be easier. First: set up your ntfy account and a topic. Second: add something like the…

▩︎ Introducing Rootcause

Something that always made me wonder: why doesn't the IntegrityError raised by a database (driver) include some actual actionable data? I don't know. I do know that it doesn't have to stay that way! With Rootcause you'll be able to gather all necessary information when you violate the most common types of constraints in Django. import rootcause try : ... # something violates a constraint except…

💡︎ Streaming radio

One of the extremely useful snippets I discovered in Evan Hahn's Scripts I wrote that I use all the time is radio . I cannot work in silence. I need to have something going in the background, preferably classics and not encumbered with too much chit-chat. Instead of having a browser tab or app sitting there in the background, I adapted Evan's script. It uses mpv , so now I've got a Ghostty tab…

⚡︎ Scripts I wrote that I use all the time

Evan Hahn lists every useful script in his repertoire. I always like to see things like this pop up, just to remind myself that I don't actually optimize every single reoccuring task (yes, that's a bit of a relief). Visit "Scripts I wrote that I use all the time"

⚡︎ Mediabunny

A JavaScript library for reading, writing, and converting video and audio files. Directly in the browser, and faster than anybunny else. This would have come in so handy in a previous project. I still need to write a note on that. Visit "Mediabunny"

⚡︎ Springs and Bounces in Native CSS

Josh goes into detail on how to use linear() as the timing function for your CSS animations. Visit "Springs and Bounces in Native CSS"