All posts by spamagnet

Toxic faith environment

A toxic faith environment — like any toxic environment — doesn’t mean that all (or even most of) the people in it are deliberately evil.

For example, when I was immersed in the evangelical church, I heard a lot about how sad our post-Christian culture was. So many couples are in counseling — they just need Jesus! So many people are depressed — they just need Jesus! And so on.

Then I became “one of those people” who was depressed. What had my environment taught me? That I obviously wasn’t trusting Jesus enough. That I never had trusted Jesus enough. But I couldn’t do it myself, I just had to “Let go and let God,” but apparently I wasn’t even doing that. Then there was the inevitable guilt because of my inability to apparently even let go.

I’m sure the people in my church were well-intentioned — after all, I’m not saying that people don’t need Jesus. But a subtle (or not-so-subtle) American individualism underlies much of its teaching. When I realized I was broken, my instinct was to blame myself and not to press into community.  I heard that community telling me that Jesus Himself would fix me.

I realize now that I should have known that we all are healed together in community as the body of Christ. Why didn’t I then?

Ex Nihilo: Why it’s okay to throw away code – CodeStock 2018

I gave this talk at CodeStock 2018. Some of the slides are (semi) original artwork, inspired by ReverentGeek and Schlock Mercenary.

Watch the video of the talk here, or view the slides here.

If you have suggestions on how I could improve the talk, please contact me! My Twitter handle is @spamagnet.

… and yes, I need to stop saying, “But here’s the thing.”

Abtract

Managers often have a bad reaction to hearing developers say that they need to throw away or rewrite code. Source code is expensive, taking hours/weeks/months/years of painstaking work to develop and maintain. “Why couldn’t we have done it right the first time?” “Is there any way to salvage the code and reuse it somewhere else?”

This comes from a faulty view of code as the end product; in reality, the end product is the service that the code provides.

To illustrate this, take an extended construction metaphor. When constructing a house or commercial building, the blueprint is a fairly minor part of the cost. You don’t want to scrimp or cut corners on the blueprint because you run the risk of far more expensive problems during the construction phase.

In software, however, the construction (build) phase is nearly free. Not only that, but a newly built “house” can be duplicated and deployed as many times as you like.

Semi-original artwork for CodeStock talk

In a couple of weeks, I’m giving a talk at CodeStock 2018 called Ex Nihilo: Why it’s okay to throw away code. It’s based on an extended analogy of software as a city — but a city built by nanobots out of nothing in a digital post-scarcity environment.

I wanted some fun, engaging slides — and what better nanobot design than Howard Tayler’s from Schlock Mercenary? (If you haven’t heard of it, and you’re a science fiction fan, set aside a block of 8-10 hours to read it. You have been warned.)

I contacted them, and Sandra Tayler graciously gave me permission to use the nanobot designs. Many thanks to Howard and Sandra!

Without further ado, here are my first imperfect pieces of art featuring the nanobots:

If you want to know the context, you’ll have to come to my talk at CodeStock. (I might post a video afterwards.)

 

Once the world seemed new

Once the world seemed new
full of promise
beckoning
smiling.

I was knighted, sent
to derring-do
fearlessly
without fail.

But I found that I failed
and hurt
and feared
and did not heal.

The fault must be in me
I thought
I felt
I feared.

I redoubled the beknighted deeds
to prove them wrong
or prove them right
I could not tell.

But hurt without heal cannot last
I fell
crushed
seemingly for good.

Long I wandered shadowy lands
no faith
no hope
but not bereft of love.

For love descended
and stayed
and hurt
and healed.

Shattered, yet reknit
slowly
ascending
to light.

I brought with me a part
of that shadow
undesired
yet inseparable.

Now the world seems old
full of promise
beckoning
yet sadder and wiser than before.

Learning from the Holocaust

On January 27 of each year, we remember the Holocaust. We vow to never forget the 6 million Jews, plus hundreds of thousands of Romani, disabled, and homosexual people who were slaughtered by the Nazis. For the most part, being anti-Nazi is not controversial. The question is, have we learned the right lessons?

When political leaders (generally of the opposing party) propose a policy that we feel strongly about, many of us jump straight to comparing them to Hitler. On the Internet, this is so common that in 1990, Mike Godwin coined the adage that asserts that “As an online discussion grows longer, the probability of a comparison involving Hitler approaches 1.” (This is commonly referred to as Godwin’s Law.)

On the one hand, this is only natural — we have a deep-seated horror of those events. As members of what we think of as a civilized culture, we rightly think of Hitler and the Third Reich with horror, vowing that “it could never happen here.” It is unthinkable to us that millions of people remained silent and did nothing to stop it. That many people just “did their jobs,” and were quietly complicit. That many bought into the propaganda hook, line, and sinker.

But Godwin’s Law also makes it difficult to have an honest discussion about the fears we have about policies that strike us as being on that slippery slope to such horrors. If you mention Hitler or Mussolini you’re automatically The Boy Who Cried Wolf. We all know that fable — but how many of us know the flip side: Cassandra? In Greek mythology, she was given the gift of true prophecy; but was also given a curse that no one would believe her.

The problem is that Hitler didn’t start by slaughtering millions. He started by exploiting resentment at Germany’s treatment after WWI, as well as an anti-Semitism that had been smoldering since the days of Luther. Having a clear enemy to demonize, fear, and blame can be a powerful weapon to unify a people. When people are angry and afraid, they are susceptible to manipulation through propaganda.

As a nation, we are at a crossroads. Despite our prosperity, simmering anger and fear seem to be rampant. Our politics are more polarized than ever, and we have lost trust in many of our institutions. By and large, our mainstream media is more interested in clickbait headlines and controversy than nuance and understanding.

I pray that we will be wise enough to take heed of the past.

Mental illness is not like a cold (mostly)

After a very long time, I have recently come to a painful realization: For a long time, I thought of my mental illness like a cold. Like a temporary inconvenience, something to be shrugged off.

When I have a cold, I usually feel better after a day or two, and I am tempted to jump back into action. That’s when the relapse happens — when I am feeling strong and proud, like I have vanquished my foe. Fortunately, despite my occasional bouts of foolishness, my body is healthy enough to still be able to fight off a cold.

I made the mistake of taking this mindset into my fight with depression. When I began to feel better, I figured I was healed! I don’t need this dumb diet, this lame meditation! I’m ready to post something controversial on Facebook! I’m ready to keep up with the latest news! Ready to confront someone on the Internet who is wrong! I can power through this stress!

It took me years to recognize that anxiety is not the same as worry. Christians aren’t supposed to have anxiety, after all, so I must not be trusting God enough. This just added guilt to the burden I was carrying. When people tell you to “shake it off,” or “snap out of it,” it just adds to the feeling of failure.

When symptoms are external, other people usually step in. They say: You’re sick — go home and take care of yourself! When symptoms are inside your head, however, it’s far more difficult for a friend, community, or even a spouse to “be there” for you. It’s hard to know what to say. It takes knowledge and wisdom, it takes transparency and vulnerability. A relationship or community like this is rare.

So I kept trying to power through my depression, never realizing that this regular exposure to fight-or-flight hormones was doing massive damage to my mind and brain. If untreated, the flu can turn into pneumonia and then into sepsis. This has killed very healthy people — and one of my heroes, Jim Henson.

Finally I have some to the point where I am able to form better habits and be open with enough people with my struggles. It’s humbling and painful. It still carries a stigma. Often I simply have to put up a front whenever I’m around people that really don’t understand. This is exhausting, and carries the danger of falling back into the old “I-can-do-this-alone” mentality.

There is no silver bullet solution to all this, just hard work. Medication can help, but it’s not a panacea.

If you are struggling with mental illness, find a community who understands. Humble yourself enough to do what you need to stay healthy and trust others with your struggle.

If you know someone with mental illness, learn about it. Be part of a community who understands and supports.

Telecine project – part 10 – troubleshooting

As I mentioned in part 9, I completed the main circuit board and began testing. I’m having two issues:  (1) once it begins turning, the stepper motor won’t stop; and (2) the lamp LED turns on won’t turn off.

Stepper motor

Here is the sequence of steps.

I clicked the Forward button.

The server indicates that it has started the motor running forward, and the motor does indeed start running.

If I click Reverse, the motor reverses and continues running.

When I click Stop, however …

A blank line appears on the server log, and the server becomes non-responsive. The motor continues to run, and the server will not respond to any further commands from the client.

At this point I have to manually shut down the server app.

Lamp LED

The relay is connected to pin #2 on the Raspberry Pi, which is always high, no matter what the server software says. I’m not sure what is going on with this. It’s also possible I have something wired improperly.