The Criminals

The game we play is life and death
Your worth measured in dollars and in cents
There ain’t no lifeline coming (coming!)
Unless you pay the price (the price!)
Your hope, freedom, your sanity
A product, not a right

These are the days that test your heart and soul
Strap yourself in for the American Fall
Day after day it is a crash and burn
Our nation hijacked by the criminals
Whoa oh
Whoa oh
Whoa oh
Whoa oh

Your neighbor is your enemy
Your real friends are on that TV
They’re selling lies and self-loathing
Nothing no one should pay to be
The cost of healthcare
Cost of guns
The cost of knowledge
Cost of love
When prison is an industry
Somebody’s getting locked away

Uninvited to the party
They’re cold, afraid, and starving
There’s got to be more
To the millions that are marching
Than the separation of just a few degrees
Between evil, famine, and the disease

These are the days that test your heart and soul
Strap yourself in for the American Fall
Day after day it is a crash and burn
Our nation hijacked by the criminals
Whoa oh
Whoa oh
Whoa oh
Whoa oh

Reject the criminality
That monetizes our humanity
Construct a new reality
Where you’re not just a number, you’re a name
You’ll never have our dignity
Till all you fascists are six feet deep

-Anti-Flag, American Fall

Racists

It’s in the things that you say and you don’t say
You don’t know it ’cause you’re such a fucking cliche
The way you define them and us
Those you fear and those you trust

You know a black guy and he’s very articulate
You know a Mexican and she’s honest and diligent
You don’t see color
But some people need discipline
And thug is a thug
Some people need to learn a lesson

Your justifications
One dead give away
Your qualifications
One dead give away
You’d never endorse the Jim Crowe days
But the malice in your voice is a god damn give away

Just ’cause you don’t know you’re racist
A bigot with a check list
Just ’cause you don’t know you’re racist
You don’t get a pass when you’re talking your shit
Just ’cause you don’t know you’re racist
A bigot with a check list
Just ’cause you don’t know you’re racist
You don’t get a pass, get a pass for your ignorance

Black lives matter and you don’t know why
And reverse racism isn’t a real thing
No, you weren’t alive in the time of slavery
But that’s no excuse to ignore its legacy
Not afraid of refugees
But don’t want a mosque built on your street
Offended by the claim of bigotry
More than the racism in your face

Your justifications
One dead give away
Your qualifications
One dead give away
You’d never endorse the Bull Connor days
But the malice in your voice is a god damn give away

Just ’cause you don’t know you’re racist
A bigot with a check list
Just ’cause you don’t know you’re racist
You don’t get a pass when you’re talking your shit
Just ’cause you don’t know you’re racist
A bigot with a check list
Just ’cause you don’t know you’re racist
You don’t get a pass, get a pass for your ignorance

You fly the flag of the confederacy
You say to celebrate your history
The south was fighting to save slavery
To preserve and protect white supremacy

Just ’cause you don’t know you’re racist
A bigot with a check list
Just ’cause you don’t know you’re racist
You don’t get a pass when you’re talking your shit
Just ’cause you don’t know you’re racist
A bigot with a check list
Just ’cause you don’t know you’re racist
You don’t get a pass, get a pass for your ignorance

Just ’cause you don’t know you’re racist
Just ’cause you don’t know you’re sexist
Just ’cause you don’t know you’re fascist
You don’t get a pass for your ignorance
Just ’cause you don’t know you’re racist
Just ’cause you don’t know you’re sexist
Just ’cause you don’t know you’re fascist
You don’t get a pass, get a pass for your ignorance

-Anti-Flag, American Fall

My Top 50 Movies of the Decade

Arrival (2016)
Baby Driver (2017)
Beasts of the Southern Wild (2012)
Birdman (2014)
Black Panther (2018)
Bladerunner 2049 (2017)
Booksmart (2019)
Boyhood (2014)
Captain Fantastic (2016)
Dallas Buyers Club (2013)
Django Unchained (2012)
Dunkirk (2017)
Edge of Tomorrow (2014)
Ex Machina (2015)
Francis Ha (2012)
Reserved – Unwatched – Get Out (2017)
Hell or High Water (2016)
Her (2013)
Hugo (2011)
Interstellar (2014)
Isle of Dogs (2018)
Knives Out (2019)
Reserved – On the bubble, still thinking – Lady Bird (2017)
Little Women (2019)
Moonlight (2016)
Pacific Rim (2013)
Paddington (2014)
Parasite (2019)
Prisoners (2013)
Roma (2018)
Scott Pilgrim vs. the World (2010)
Sicario (2015)
Song of the Sea (2014)
Spider-Man: Into the Spider-Verse (2018)
Spotlight (2015)
Star Wars: The Force Awakens (2015)
Swiss Army Man (2016)
The Big Short (2015)
The Breadwinner (2017)
The Death of Stalin (2018)
The Florida Project (2017)
The Ghost Writer (2010)
The Grand Budapest Hotel (2014)
The Social Network (2010)
The Revenant (2015)
Trainwreck (2015)
True Grit (2010)
Under The Skin (2014)
Winter’s Bone (2010)
Wonder Woman (2017)

Litany Against Fear

I must not fear.
Fear is the mind-killer.
Fear is the little-death that brings total obliteration.
I will face my fear.
I will permit it to pass over me and through me.
And when it has gone past I will turn the inner eye to see its path.
Where the fear has gone there will be nothing. Only I will remain.
— Bene Gesserit (Dune)

The Horse, the Stag, and the Hunter

A quarrel had arisen between the Horse and the Stag, so the Horse came to a Hunter to ask his help to take revenge on the Stag. The Hunter agreed, but said: “If you desire to conquer the Stag, you must permit me to place this piece of iron between your jaws, so that I may guide you with these reins, and allow this saddle to be placed upon your back so that I may keep steady upon you as we follow after the enemy.” The Horse agreed to the conditions, and the Hunter soon saddled and bridled him. Then with the aid of the Hunter the Horse soon overcame the Stag, and said to the Hunter: “Now, get off, and remove those things from my mouth and back.”

“Not so fast, friend,” said the Hunter. “I have now got you under bit and spur, and prefer to keep you as you are at present.”

Aesop’s Fables

The structure of the program should exactly follow the structure of the problem. Each real world concurrent activity should be mapped onto exactly one concurrent process in our programming language. If there is a 1:1 mapping of the problem onto the program we say that the program is isomorphic to the problem.

It is extremely important that the mapping is exactly 1:1. The reason for this is that it minimizes the conceptual gap between the problem and the solution. If this mapping is not 1:1 the program will quickly degenerate, and become difficult to understand. This degeneration is often observed when non-CO [concurrency-oriented] languages are used to solve concurrent problems. Often the only way to get the program to work is to force several independent activities to be controlled by the same language thread or process. This leads to an inevitable loss of clarity, and makes the programs subject to complex and irreproducible interference errors.

Joe Armstrong, Making reliable distributed systems in the presence of software errors

America 2019

A culture successfully terrorized on a dark day in September of 2001; initially, in anger but, over the long run (to this day), in fear, throwing off the high ground of nominal “truth, justice, and the American way” for Jack Bauer ends-justify-the-means.

A culture particularly prone to disengaging into its own individual, typically violent, often vengeful, entertainment bubbles.

A culture particularly prone to embracing sounds bites and now internet memes to simplify complex issues into narratives that are palatable.

A culture particularly prone to being goaded into team dynamics at the expense of actually engaging people on the “other side” to work through nuanced problems.

A culture particularly prone to sensational voyeurism to the point it lets what has become a “socio-political-entertainment complex” get away with dosing us garbage constantly.

18 years straight of war — leaning disproportionately on people far removed from the political decision making.

Inarguably relaxed service entry requirements — multiple times — in this ongoing span to hit the desired recruiting numbers.

Poor support for those coming back from such horrors facing their own demons as well as an incredibly competitive global marketplace and global workforces.

Governments–especially ours–preserving themselves and their revolving door cronies from unrest over horribly insolvent dynamics THEY fostered (80s – now) via transnational corporate socialism that comes at the expense of “the little guy” who gets robbed in ways “he’ll never [explicitly] understand”. Coordinated currency devaluation, statist direct intervention in the markets, and coordinated messaging. We feel the “real world” fallout.

Decades of institutional rot at the highest levels of power. Normalization of dynastic political power. And now blatant amoral criminality at the top pushing us headlong into cultic authoritarianism.

Active attacks from foreign adversaries. Little to no push back. Or even improved defense.

Overt hatred, open racism, demonization of “the other” crawling out from under the rocks.

And an ever increasing rate of folk trying to hit a real life “kill count high score” and get plastered all over the media for doing it. We look around when we go to airports. We look around when we go to concerts. We look around when we go to school. We look around when we go to movies. We look around when we go to bars. We look around when we go to night clubs. We look around when we go to church buildings. We look around when we go to the office.

It is unacceptable. We must do better.

Fail, fast

Adapted from an internal p2 post.

Fail-fast is a systems design approach that intentionally fails early and visibly. The gist is that it is better for users as well as better for developers to halt a system if it finds itself in a “critical enough” situation.

Wait, What, Why?

There are worse things than a crash.

Mike Stall (via Jeff Atwood) sketched an “app health hierarchy” which looks thusly:

1) Application works as expected and never crashes.
2) Application crashes due to rare bugs that nobody notices or cares about.
3) Application crashes due to a commonly encountered bug.
4) Application deadlocks and stops responding due to a common bug.
5) Application crashes long after the original bug.
6) Application causes data loss and/or corruption.

Complex systems can reduce their exposure to the darkest parts of that hierarchy in failing fast. Users are immediately presented truth rather than sometime later discovering their actions didn’t take. Developers get immediate, direct feedback in critical scenarios that points directly toward the root cause.

And, perhaps most importantly, halting in the right places prevents on-going corruption, which is what keeps me up at night as a software developer.

We can’t just BSOD our users!

Yes and no.

Yes, we can, if the situation is that critical and we know of no way to recover.

No, we can’t, on anything less than that.

Fail-fast requires (team) wisdom in implementation. Each situation must be considered in its own context. Tricky, at times, but in my experience the effort is very much worth it.