Use of this site is restricted - no Trump supporters, please

Pinned post
I offer this site as a resource and a safe haven for people who have similar interests to mine, and I make no income off this site. I don’t do affiliate links. No paywalls. There are no stupid subscription pop-ups. Just my space to write. It’s a labour of love. But a side effect is that I don’t owe anyone anything. This is particularly true of supporters of Donald Trump. If you voted for Trump, or support Trump, or regularly vote for members of the party formerly known as the U.S. Republican party, but which is now a fascist political enterprise, please just click the back button.

Donald Trump's pseudo-principles of adult behaviour

I’ll admit to being a pushover for lists of pithy advice for living. One that I return to frequently are those compiled by John Perry Barlow.

In 1977, John Perry Barlow wrote a list of twenty-five principles of adult behaviour.

Reading through these principles in the midst of the self-serving, self-enriching careless chaos that Donald Trump has wreaked on the world, I decided to write a parallel set of principles as Trump himself might do. I give you - by way of contrast - Donald Trump’s Principles of Adult Behaviour.

# John Perry Barlow’s Principle Donald Trump’s Principle
1 Be patient. No matter what. Never wait for anything. Patience is a vice.
2 Don’t badmouth: Assign responsibility, never blame. Say nothing behind another’s back you’d be unwilling to say, in exactly the same tone and language, to his face. Constantly slam other people. Use your vilest words and harshest tone.
3 Never assume the motives of others are, to them, less noble than yours are to you. Everyone is out to get you.
4 Expand your sense of the possible. The best idea is the first one to pop in your head. You are the smartest person ever.
5 Don’t trouble yourself with matters you truly cannot change. Try to control everything to your advantage.
6 Expect no more of anyone than you yourself can deliver. The suckers are there to serve you. Play as much golf as you want. Let them do the work.
7 Tolerate ambiguity. Ambiguity is for losers. It’s “my way or the highway.”
8 Laugh at yourself frequently. Never laugh at yourself. You are in the same league as Alexander the Great. Did he laugh at himself? Uh, no…
9 Concern yourself with what is right rather than who is right. Don’t concern yourself with what is right. Only be concerned with how much it benefits you.
10 Never forget that, no matter how certain, you might be wrong. You are never wrong.
11 Give up blood sports. Embrace blood sports.
12 Remember that your life belongs to others as well. Do not endanger it frivolously. And never endanger the life of another. You are the centre of the universe. Everyone else is expendable.
13 Never lie to anyone for any reason. (Lies of omission are sometimes exempt.) Lies are the lifeblood of your image. Always lie.
14 Learn the needs of those around you and respect them. Ignore the needs of those around you.
15 Avoid the pursuit of happiness. Seek to define your mission and pursue that. Satisfying your every whim. Your happiness is paramount.
16 Reduce your use of the first personal pronoun. The first person pronoun is the most important.
17 Praise at least as often as you disparage. Never praise anyone, unless they have debased themselves for you first.
18 Never let your errors pass without admission. Ignore your mistakes. Because you don’t make them.
19 Become less suspicious of joy. Do not let others be happy.
20 Understand humility. Humility is for the weak, suckers and losers.
21 Forgive. Never forgive or forget if someone crosses you. Persecute them forever.
22 Foster dignity. There is no such thing as inherent dignity. If you are weak or poor, then you are nothing.
23 Live memorably. Grab as much as you can.
24 Love yourself. If you love yourself, you’ll be soft. May as well stoke the fires of self-hate.
25 Endure. TACO

Updated: ARINC 424 parser & explainer

Yesterday I posted about a small utility that parses and explains ARINC 424 records. I have updated it.

For each field, the tool now cites the specific tables in the ARINC 424 specification that describe that field. The field-content explanations are also more detailed, so you can spend less time flipping between the parsed output and the printed standard. Here is an example for an Airport SID/STAR/Approach primary record:

This is still a work in progress. Not all record types are supported yet; I am filling those in as I need them.

A small utility to parse and explain ARINC 424 records

N.B. An enhanced version is now available, with specification table references and more detailed field explanations. 2026-08-03.

The ARINC 424 specification is the universally accepted standard for encoding aeronautical navigation data. Databases that follow it store that data in fixed-length, 132-character records. I created a utility that parses a single ARINC 424 record and prints the fields along with column numbers and plain-language explanations. The Python arinc424 module does the heavy lifting; I provide a wrapper around it, plus the logic that maps fields to the column numbers used in the official specification.

Violentmonkey script to block politicalwire.com troll "Reasonable"

The news site politicalwire.com is a well-regarded site that covers U.S. political news. Like other similar sites, it features a comment section; and like many comment sections on political sites, it attracts personality-disordered internet trolls. One such troll on politicalwire.com goes by the handle Reasonable. This commenter is a troll in every sense of the word, engaging users with deliberately provocative nonsense.

This user has been banned on multiple occasions and escapes both bans and blocks by repeatedly creating new Disqus accounts using the same name and avatar. Since it cannot be blocked at the account/server level, I’ve written a Violentmonkey script to expunge his comments at the level of the browser. To use the script, you will need to use the Violentmonkey (or related) extension and create a new script with the following code. It works perfectly in Firefox.

Lua script for X-Plane 12 fuel management

As a Challenger 650 captain, I fly routes between North America and Europe with some frequency. Dealing with the interconversion of imperial and metric units is a challenge; so I create a Lua script that runs in the X-Plane FlyWithLua plugin.

Once installed, the script allows you to enter the required trip fuel, current onboard fuel, fuel density and metric vs imperial units and outputs the desired fuel uplift. You can also select to take 10%, 15%, 20% extra fuel. This is a feature that I added because SimBrief seems to underestimate my fuel burn.

Keyboard Maestro macro to toggle macOS calendar visibility

As a pianist, I use Calendar on macOS and iOS to plan each day’s practice. On heavy days I may have over a dozen practice blocks, so the calendar gets crowded quickly and it becomes easy to miss non-practice events. A calendar that looks like this makes the problem obvious:

What I really wanted was a quick way to toggle a group of calendars at once on macOS. In my case, that group is the set of works I am currently practicing (for example, specific Brahms and Schubert calendars). Your grouping might be completely different, depending on your purpose, but the same approach applies.

A script to generate KiCad board outlines

PCB fabricators require a board outline on the `Edge.Cuts` layer to specify the board size and shape. While drawing the board outline in the PCB editor is straightforward and uses the standard line and shape drawing tools, it is convenient to retain standardized board outlines and related parts, such as fasteners, as reusable footprints. During the board layout process, you can simply plop a board outline, along with perfectly-placed mounting holes into the editor and you can concentrate on placing components and routing. Also, having a standard library of board outlines gives you a predictable set of size choices for enclosures and for ordering SMD stencils.

This is why I created KiCadBoardOutlineGenerator, a script to generate board outlines from dimensions you specify.

Indigo actions are not guaranteed to execute sequentially

Although I’ve used Indigo — the macOS home automation ecosystem — for over a decade, I never picked up on the fact that Actions attached to Schedules, Triggers, and web UI elements are not executed sequentially. The application user interface strongly implies sequential execution, but not only is that not guaranteed, the app actually attempts to execute the actions in parallel.

See this note buried in the documentation:

Important! While you can order the actions in any order you like, Indigo will attempt to execute all actions in parallel. It’s not always possible for various reasons, but that’s the intent. If you want to order the execution, then you’ll need to add delays which will delay the action’s execution from the time of the event. So, if you have 3 actions and you want the first to execute immediately, the second to execute a minute after the event, and the third to execute two minutes after the event, then add a one minute delay to the second and a two minute delay after the third.