Pinned toot

Latest post is a big one: “Why you shouldn’t invoke setup​.py directly”

A lot of people don’t know about this because we haven’t been great about getting the word out. This blog post is in part an attempt to remedy this.

Please help spread the word!

Pinned toot

From the archives of my blog but still very relevant: "pytz: The Fastest Footgun in the West", about why you probably shouldn't be using pytz:

It would be interesting to live in a world where most people used this or something like it in production:

I’m kinda curious to know stuff like, “How much electricity would it save if time zone conversions in pandas were 20% more efficient?”

I have been using Git a long, long time. I have worked on Git clients and libraries. At some places I've worked, I am the person folks go to when they need Git help.

And yet, only today I learned you can pass -m to commit twice (or more) and it will do the right thing of making each successive message a new paragraph (which is useful for the convention of a short summary as a single first line and following paragraphs as a more detailed message).

Hm… PEP 621 deliberately doesn’t have a replacement for setuptools’s license, but they do have a license key that is equivalent to license_files. Unfortunately, this is what PyPI does with the data in that field:

Not great.

Discussing the latest Jeopardy happenings with my family over Thanksgiving is the closest I’ve ever felt to knowing what it’s like to be a sports fan.

#askfedi Expanding on my earlier laptop query: I'd love to find a site with a comprehensive database of laptops from say the past ten years that lets you search by filtering on specs like:

* Weight
* Ports
* Screen size, resolution
* Screen brightness
* Claimed battery life

Know of anything like this? It would be a much more direct and efficient way for me to build up my shortlist of machines I look for in the used market. TIA.

Well, here I am on Mastadon.
Intro in order, I suppose. That's how it works, right?

- That datetime guy. Ask me about time zones, DST, leap year bugs, etc.
- Been doing .NET/C# longer than I can remember. 20+ years. These days I code mostly on a Mac.
- I work at Sentry, and used to work at Microsoft.
- I live in the forests of Woodinville WA, with wife Maggie, my son, and our three dogs.
- I like Star Trek, home improvement, and playing stupid pop music on the piano.

HI! 👋🙂

This is an old project, but by some miracle it's still working and I woke up this morning wanting to celebrate the things I love more.

This Inkplate e-ink screen shows Conway's Game of Life, seeded from tarpits I have on the Internet. The tarpits are programs on my computer that superficially look like insecure Telnet and Remote Desktop services, but actually exist to respond super slowly and make bots scanning the Internet 'get stuck'.

When a bot connects to the tarpit, the data it sends gets squished into a 5x5 grid and 'stamped' onto a Game of Life board. Data from a bot at the IP address 1.1.x.x will get stamped on the top left corner, data from a bot at 254.254.x.x will get stamped on the bottom right corner.

Conway's Game of Life, a set of simple rules that govern whether cells should turn on or off, updates the display once per second. The result is that bot attacks end up appearing as distinct 'creatures', that get bigger and more angry looking over time (as their centre is updated with new data). After the attack finishes, the 'creature' eventually burns itself out.

Despite that description, it's a really chill piece of art that doesn't draw too much attention but I can happily watch for a long time.

Credit for the idea goes to @_mattata, I had been wanting to make a real-life version of XKCD #350 for years before seeing his Botnet Fishbowl project.

#projects #inkplate #esp32 #eink #infosec #tarpit

📣 #Python News:

Let's welcome the newest Python core developer: @hugovk. Hugo has been contributing to Python for years, improving our docs, devguide, toolings, and infrastructure. He's also one of the PEP editors and an active member of the Python docs community.

Hugo's promotion to become core dev was approved by Python Steering Council yesterday. 👏🥳 :python:

How can a music notation data format encode the music of a concert-pitch score along with individual transposed-instrument parts, without duplicating information? What's the right level of abstraction?

If that question makes any sense to you, check out my proposal and the current discussion in this GitHub issue:

Office hours are going to be starting in about 10 minutes at


I hope this half-solution to a non-problem is actually gone for good 🙂.

I don’t think I’ve ever met anyone who needed or wanted leap seconds. And I’ve spent some time looking!

Why did nobody tell me that in #Python 3.11, datetime.fromisotimestamp() can parse arbitrary ISO timestamps!? #gameChanger

(Before it could only parse the output from datetime.isoformat(); e.g. choking on timestamps ending with a Z for UTC.)

PyCon US CFP is still open but only for another 3 weeks or so! (Closes Dec 9)

Your tasks:
- submit a talk
- tell others about the CFP
- encourage others to submit a talk
- do an #IceCreamSelfie after your talk


#PyConUS #CFP #Python #conference #publicspeaking

I unravelled `lambda` expressions for my #Python syntactic sugar blog series:

And with that, I am done with the series (again 😅)!

The summary post at has been updated with my latest posts, getting the list of Python syntax you need an interpreter to support down to 11.

Whenever I think "This person in the Python community is so awesome, surely they've already received the Community Service award/already a PSF fellow member", and when I looked into it, turns out I was wrong.

Then I make it right by actually writing up the PSF Fellow/Community Service award nomination for them so that they'll be properly recognized.

You too can nominate people who are doing great work in the #Python community! PSF Fellow nominations are due Nov 20!

We are #obspy, resistance is fudel.

We make code that other people use to make code to make everybody understand this piece of rock better that we all sit on.

observations are that person that operates the seismometer their own

#introduction #python #scicomm #seismology #earthquakes #foss

Does anyone have tried using to connect to a #SQLAnywhere? I’m keenly interested in experience reports of any kind. #postgres #db #sybase

My son pulled my license out today and said, “Papa, is this you? You look so young!”

That photo was taken last year 😅

Any biohackers on here? I've apparently reached a point where using CRISPR-Cas9 to gene edit myself is within my risk tolerances.


Show more
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.