In February 2021, I first released dither , my Go library for image dithering , along with a blog post . Three months later, I released didder , a command-line tool for accessing that library and creating image dithering pipelines. Four years later, I am now releasing Dithertime , a graphical desktop application for image dithering. I hope this will make my image dithering implementation…
Here in North America we vote for our politicians using plurality, also called First Past The Post (FPTP). It’s a bad system, mainly because of vote splitting. It’s been obvious for a long time that change is needed, but what voting system should we use instead?
Many months ago, I made a goal to write at least one blog post a month on here. I thought it would do me good to practice writing, and to publish things that were useful to other people. I still think that, however I clearly haven’t acheived this goal recently. But where did I write that goal? And where else have I been writing? In lieu of a hard hitting technical blog post, I’ll give an overview…
The biggest design mistake I made with Amfora, my first community open source project, was autogenerating config files. On startup, the application looks for a config file, and creates one if it doesn’t exist, full of all the application defaults. At the time, I thought this was great, as it documents all the existing options, and makes them very visible to the user in case they want to change…
Recently I’ve been thinking a lot about trusted timestamping. Normally timestamping is very easy: simply adding a timestamp field to your metadata and calling time.Now() or similar. But trusted timestamping is concerned with proving that the provided timestamp is actually correct, and wasn’t forged after the fact.
The Gemini protocol was a big part of my COVID-19 lockdown experience. Discovering this underground, small protocol, having long discussions on the mailing list, and most importantly for me, developing software. My terminal Gemini browser, Amfora, was my first public FOSS project, something actually intended for a wider audience to use. It succeeded beyond my expectations (but within my hopes),…
Right this morning when I woke up, before I even had a glass of water, I started reading a blog post by Maya discussing a new protocol. I was immediately intrigued, and starting reading the original post, Specifying Spring ‘83. After reading through the blog post, I excitedly moved on to the actual spec draft. I was amazed. Possibly because it was the first thing my brain had processed all day,…
When I first saw the Badger 2040 on Hacker News, I knew I had to get it. It seemed like a great little package to hack on, with an e-ink screen, buttons, and an LED, all for a good price. And finally I’d get my hands on an RP2040 , which has interested me since it first came out. Development The development experience on the Badger 2040 is really fantastic, and great for beginners. As someone…
Packaging a Python project into a standalone executable is often a struggle. Thankfully we have tools like PyInstaller to make this easier. Recently I ran into another struggle of my own, which was that it seemed impossible to “cross-compile” with PyInstaller. That is to say, run PyInstaller on one OS, and have it generate an executable for another. It was hinted at that Linux → Windows was…
I just looove NFTs, don’t you?!! No problems or concerns, just the perfect way to share the value of art with everyone. And make some good honest money in the process!!