April 16th, 2023
I’m noticing a common anti-pattern of defining declarative DSLs in Turing complete languages — specifically Python — to avoid the overhead of learning new syntax and tools, XML or JSON, and just reusing the Python compiler: Blaze, Airflow, dataswarm. datasets, register_type_info.py for UPM semantic tree, Or Gradle with Ruby.
This is a very bad tech debt that causes massive problems (security, indeterminancy, irreproducibility) and has heavy cost. Never do this. It always leads to a huge expensive effort to redefine the language as its own thing (not Python) that still looks like python, and the team ends up writing a complete parser in addition to everything else. XML is not that hard. Nut up and learn it.
Do not write declarative configs in a Turing complete language.
Do not invent Python subsets for config files. Starlark
How many times have you seen someone use a hammer to pound screws because they are a hammer expert, they are comfortable with hammers, they don’t know how to use a screwdriver, and they don’t want to take a week to learn how to use a screwdriver?
Posted in Programming | 1 Comment »
December 14th, 2020
Here’s another example of confirmations that shouldn’t happen:

Read the rest of this entry »
Posted in User Interface | Comments Off on Pointless Confirmation
November 3rd, 2019
There are so many privacy-enhancing extensions out there, it’s hard to keep track of which do what and where they overlap in functionality. Since an excess of extensions and plugins slows down your browser, I’ve decided to keep an updated list of what I recommend and use as well as the defaults that need to be changed. The following recommendations are as of October, 2019. I’m focusing on a relatively straightforward experience that doesn’t interfere with day-to-day surfing, break a lot of websites, or require extreme technical knowledge. (That is, no NoScript or GreaseMonkey.)
This article is primarily focused on desktop browsers. I might have more to say about mobile platforms in a future post.
tldr; Use Firefox 70 or later with these three extensions:
Read the rest of this entry »
Posted in Privacy | 1 Comment »
November 18th, 2017
If you’re reading this, you’ve stumbled across the HTTPS secured and IPv6 enabled version of the Cafes. This has moved from a classic shared Linux server on pair.com to App Engine Standard on GCP. The transition is still in progress and was not without bumps.
Read the rest of this entry »
Posted in PHP, Web Development | 1 Comment »
February 8th, 2016
Here’s a red error message Eclipse popped up on my screen today:

There are a lot of things to complain about here, but the main one is not obvious from a static screenshot (though it turns out a static screenshot has exactly the problem):
The message cannot be copied.
Read the rest of this entry »
Posted in User Interface | Comments Off on Error Dialogs for the Internet Age