Posts tagged: POSTS

Django management commands, remotely

Django management commands, remotely

I love Django management commands.

For dpaste.com I’ve written several management commands for things that I don’t need a web UI for, like:

  • expire - delete expired pastes (invoked by cron)
  • expunge - manage TOS violations like spam
  • stats - useful metrics on the current corpus of pastes, and on user activity

In running the site I also use management commands from my django-blocklist app, for tasks like deleting expired entries (via cron) or generating reports.

A use case for Python assignment expressions

Python 3.8 (2019) added “assignment expressions”, aka the “walrus operator”.

I generally like things that make Python more expression-oriented, like list comprehensions, but I’m ambivalent about these. It’s pretty easy to impair readability by using them overzealously. Is saving one line of code worth making it harder to notice that an assignment is happening?

However, I’ve found a use case I like a lot. I use them in the Django Python shell when doing exploratory ORM queries.

Blog comments via Mastodon

Blog comments via Mastodon

I’ve replaced my Disqus comment integration with a Mastodon-powered solution. On posts where I’ve enabled comments, you’ll now see a “Load Comments” button and a “Reply” button, both of which talk to the Mastodon API.

Adding commenting to a static site is an interesting puzzle.

I like writing tests

I like writing tests

I enjoy writing tests because I love what they give me.

  • I love knowing that I’m adding defense against breakage from future changes.
  • I love thinking through how a feature is really supposed to work, and having the test capture that understanding.
  • I love thinking about edge cases that the code should handle, and writing tests for them — especially if it turns out that the code under test didn’t yet handle them correctly, because that means I’ve just saved us from a bug.

I can remember projects with zero test coverage (early in my career, I didn’t even know that was a problem) where implementing and shipping large changes was anxiety-provoking — both during the work, and after deployment. That awful feeling of holding your breath waiting for bugs to manifest.

The care and feeding of tickets

The care and feeding of tickets

I can be kind of a stickler about leveraging the ticket/issue tracker in software projects (which always seems to be Jira these days, but nevermind that). I write tickets carefully; I link to related issues; I add comments to note the status of work in progress, or to record info that’s important to the work to be done.