Well that has a familiar ring to it

The U.S. has become well-rehearsed in its response to mass shootings. An event. The pondering over terrorism vs. generalized craziness. The outpouring of prayers and support. Then the internet outrage. And more internet outrage. More meme pictures about guns and love. More color-your-profile picture trends. Empty scripted responses from pious politicians. A week or two, then back to our regularly scheduled programming.

News flash: this isn’t getting better. It’s not going to get better.

Why?

1. We focus on single causal factors.

It’s the guns. No, it’s evil people/crazy people/bad guys with guns. Stop with it. Just stop. Have you people never heard of the fallacy of the excluded middle? The false dilemma?

Only a hair-splitting fool would claim that guns have nothing to do with a crime in which a gun was used to kill people. Likewise it takes a different kind of fool to claim that guns have everything to do with it. (Fortunately, there aren’t too many of the latter. But of the former…)

We’re stand no chance of reducing these incidents if we don’t think systemically. (See, I didn’t say stopping these incidents.)

2. As a species, our default programming seems to make us conflate mythology with truth.

This is the part that everyone is too polite to do. The simpleton nationalists grab their giant brush and paint every Muslim a terrorist. The liberals claim make the equally ridiculous claim that Islam is the religion of peace. Remember that fallacy of the excluded middle? How about Islam is the religion of both peace and violence?

The problem isn’t Islam. It’s the conflation of mythology with truth. Remember there was a time when people were dead serious about Zeus up there on Mt. Olympus hurling lightning bolts? It wasn’t a mythology back then. It was the real deal. Now it’s a new “real deal.” It’s a new improved monotheistic flavor of Zeus and his buddies toying with us.

Most of us are too polite to say it. Here’s the questions we should be asking: “What do you claim?”, “How, exactly do you know that?”, “Do you have any corroborating evidence?”, “On what grounds do your claims create an exception to the general prohibition against harm to others?” We ought to be willing to say: “Gee, that sounds an awful lot like nonsense to me. Perhaps you’d be willing to explain that logically to me.” The Trumpsters go astray by attacking people. People are just instances of a bigger problem.

Our recorded history is just too short to see a lot of evolution on this front. Maybe in another 10,000 years or so.

3. Gun ownership is baked into the U.S. Constitution.

This is a tough nut to crack because the weapons of choice for mass killers are a coddled, protected entity in the U.S. And for some reason, we can’t admit in large enough numbers that like the entire Constitution, the Second Amendment is purposely ambiguous.^[Perhaps you don’t agree that it’s ambiguous. Then what does the “a well-regulated militia” have to do with private gun ownership?] It’s ambiguous because the authors of the Constitution imagined we would sit down and have reasonable debates and compromise over some foundational principle. But we can’t get beyond “Ban all guns.” and “There should be no restrictions on gun ownership.”

We worship the Founders like secular heroes. But I’m calling the Second Amendment a bone-head move on their part. No, I’m not for banning guns in the U.S. There’s a giant middle ground here. And no, dear conspiracy theorists, High Priests of the NRA, and other lunatics, Obama’s not coming for your guns.

So let the grief turn to internet outrage. Let the impotent internet outrage turn to nothing. I’ve lost my idealism about any of this. I’m not changing my Facebook picture. I’m not posting any meme pictures of politicians saying stuff about guns or terrorists. It’s all empty.

EC: An Environment Canada data plugin for Indigo

Environment Canada

Indigo is a well-known home automation controller software package for Mac OS X. I’ve written a plugin for Indigo 6 that allows you to create a virtual weather station from Environment Canada data. If you live in Canada, this will be a useful way of using weather data in your Indigo rules. For example, you could use wind and temperature data to adjust your irrigation schedule.

You can download the plugin from its git repo. After downloading the files, you’ll just need to configure them as a plugin. To do this, create a new folder and rename it EC.indigoPlugin. Copy the Contents folder that you just downloaded. Right-click on the EC.indigoPlugin bundle and Show Package Contents. Paste the Contents folder here. To install in Indigo, double-click the bundle file.

Using Python and AppleScript to get notified if a site is down

I manage a handful of websites, like this one. Having built a few on other platforms, such as Drupal, I’m familiar with the dreaded error “The website encountered an unexpected error. Please try again later.” On sites that I don’t check on frequently, it can be an embarrassment when people begin emailing you with questions about the site being down.

I wrote the following Python script to deal with the problem:

Dynamic UI lists in Indigo 6

Indigo 6 is a popular home automation controller software package on the Mac. Extensibility is one of its main features and it allows users to add a range of features to suit their needs.

Using Python scripting, users can create plugins that provide extended functionality. These plugins can provide a custom configuration UI to the user. Since the documentation around a particular feature - dynamic lists was lacking, I’ve written up my approach here.

Import and tag with Hazel and DEVONthink Pro Office

Hazel and DEVONthink make a great pair as I’ve written before. Using AppleScript, it’s possible to take the import workflow even further by tagging incoming files automatically.

Use case

I download a lot of mp3 files containing pronunciation of words in a language I’ve been learning. I keep a record of these words and tag them appropriately using my hierarchical tagging system.

I’d like to download the files to a directory on the desktop. Keep them there for a few minutes until I’m done working with them, then import the file to DEVONthink Pro Office, tag the file there and delete the original.

Using AppleScript with MailTags

I’m a fan of using metadata to classify and file things rather than declarative systems of nested folders. Most of the documents and data that I store for personal use are in DEVONthink which has robust support for metadata. On the email side, there’s MailTags which lets you apply metadata to emails. Since MailTags also supports AppleScript, I began to wonder whether it might be possible to script workflows around email processing. Indeed it is, once you discover the trick of what dictionary to use.

Using AdBlock Plus to block YouTube comments

Web

YouTube comments are some of the most offensive on the web. Even serious videos attract trolls bent on inscribing their offensiveness and cruelness on the web.

Here’s one method of dealing with YouTube comments. Treat the comments block as an advertisement and block it.^[There are other ways of avoiding YouTube comments. I’ve used ViewPure but it’s hard to find content that way even though they seem to be working on making it more seamless to get from YouTube to ViewPure.]

Introducing AnkiStats & AnkiStatsServer

The spaced repetition software system Anki is the de facto standard for foreign language vocabulary learning. Its algorithm requires lots of performance data to schedule flashcards in the most efficient way. Anki displays these statistics in a group of thorough and informative statistical graphs and descriptive text.

However, they aren’t easily available for the end-user to export. Thus, the reason behind the companion projects AnkiStats and AnkiStatsServer.

The premise is that you can run your own more extensive experiments and statistical tests on the data once you have it in hand. A bit of technical expertise is needed to get it operational but if you are up to it, clone the github repos above and go for it.

Waking the computer to allow AppleScript to run

I have a number of AppleScript applications that need to run at odd times. These maintenance tasks often attempt to run while the computer is sleeping. Particularly those that rely on UI scripting do not function during this period.

This most flexible way of dealing with this is to manipulate the power management settings directly via the pmset(1) command.

The variety of options available using pmset is staggering and beyond the scope of this post. Here’s what I do to wake the computer up at specific times so that scheduled AppleScripts can run:

An easier way to automate synchronization of Anki profiles with AppleScript

After waking up this morning with my mouse locked onto the Anki icon in the dock and trying to figure out how to get Activity Monitor up and running so I could force quite my Automator application that I described yesterday I figured it was back-to-the-drawing board.

I’d like to have used the Accessibility Inspector to manipulate the PyQt objects in Anki’s windows, they aren’t exposed in a may that you can script them. But System Events rules all.