Today marks the 232nd anniversary of the start of the Haitian Revolution—or more specifically, the plans for the slave revolt that became the Haitian Revolution—arguably one of the most important days in world history.

On one hand, the revolution added to the momentum of the Atlantic Revolutions, arguably the first “world war,” in that they fairly quickly—about sixty years, as compared to thousands of years of largely monarchical and/or imperial rule—established democracies as a viable form of national government. Today, most of us live in a democracy, have a government propped up by oil money, or live somewhere that nobody cares about unless you claim to have nuclear weapons.

Portrait of J. B. Belley, Deputy for Saint-Domingue

On the other hand, the Haitian Revolution also represents the largest modern slave revolt, which cuts to the heart of politics and thinking around modern Haiti. While the leaders of many of the Atlantic Revolutions interacted and tried to help one another, the bigotry of people who often owned slaves created the narrative that this revolution had gone too far, and terrified them that stories of the rebel organization would inspire revolts among their slaves.

And in many ways, the world never forgave Haiti for that cardinal “sin” of overthrowing white supremacy. We’ve stripped that half of the island of resources, act shocked when they suffer damage from storms and other natural disasters while their neighbors fare better, and pat ourselves on the back for donating a few dollars to a fund to help them.

If you don’t know the sorts of situations that led to the revolt, as a shameless self-plug, I invite you to read my translation of Victor Séjour’s Le Mulâtre, taking place shortly before the Revolution began and not too far from its start. It also may qualify as the earliest known work of fiction produced by an African American writer.

Whew! I didn’t expect a miniature history lesson on a Monday morning, but the subject seemed to warrant it as I get to talking about projects.

Social Media

I won’t act offended, because I don’t feel offended, and I love laughing at people who only now suddenly find corporate social media intolerable. However…

While I no longer post or read on TwitterX, I had at least checked in on Sunday mornings via Tweetdeck—their multi-column interface—to check notifications, in case someone comes looking for me. I do something similar with all corporate media, where I check LinkedIn on Sundays, and will maybe like something or congratulate someone for an anniversary, whereas Facebook check-ins happen less frequently and I never interact with anything other than someone I know directly sending me an actionable message.

Anyway, in their infinite wisdom, Twitter has decided to pull Tweetdeck behind their blue-checked paywall, pushing users back to the main site with a sales pitch. Closing that sales pitch shows the other sales pitch that, if I pay them, they’ll…pay me? Anyway, the company has introduced enough friction that checking my Twitter🙅 notifications probably won’t even happen every week.

As a reminder, however, you can still find everything that I’ve ever tweeted in my Twitter archive, searchable, superficially analyzed, stripped of Twitter-owned URLs, and automatically linked to anybody else’s tweetback archive where I’ve mentioned them.


GitHub - jcolag/NotobotoAnother attempt at a lightweight note-taking application - GitHub - jcolag/Notoboto: Another attempt at a lightweight note-taking application

Once again, a lot of this week’s time went to moving forward with note-taking. In that work, I’ve managed to get a few big things done.

  • The repository now has at least minimal documentation explaining why it exists.
  • The application now should populate the list of notes when you select a category.
  • While it doesn’t do anything, a when the user types, the application should wait for one second after the burst of typing finishes, and then trigger…something.

In the last case, that “something” will eventually save the note file. I should actually point out that code.

bind .fr.pnl.notearea <Key> {
  after idle resetTimer

proc resetTimer {} {
  after cancel $::typing_timer
  set ::typing_timer [after 1000 typingTimeout]

proc typingTimeout {} {
  after cancel $::typing_timer
  if {$::saving} {

  # Do something productive.

I don’t like that we need three steps to make this work. We bind a handler that waits for the text area to become idle, which calls code to restart the timer (and cancel the previous timer), and then we finally run code to do what we want. Unfortunately, I can’t find a way around that; if I skip one of the steps, then it either doesn’t work at all or the final code runs twice. The latter worries me, since that causes permissions errors at best, data corruption at worst, so I’ll tolerate the odd-looking code.


GitHub - jcolag/kabangLua sources for a TIC-80 game about an astronaut collecting mines - GitHub - jcolag/kabang: Lua sources for a TIC-80 game about an astronaut collecting mines

I don’t think that I have anything of use to say, here, other than that Kabang!’s Lua source code now has a repository of its own.

Notably, though, if you want to run it, you’ll need to pay for the Professional Version. But then, I suppose that many people who might want to make changes could probably figure out any bugs that they might stumble across without needing an interactive debugging cycle. If you do that, feel free to pass it along, if you don’t have the capacity to debug it.


I assume that it will surprise nobody if I continue building Notoboto, since I’ll actually use it…

Credits: The header image is (part of) Portrait of J. B. Belley, Deputy for Saint-Domingue by Anne-Louis Girodet de Roussy-Trioson, long in the public domain through expired copyright.