Wednesday, November 29, 2017

Goodnight Server Room is available now!

Order Goodnight Server Room on Etsy!

Yesterday morning I drove to a warehouse in Minneapolis to pick up the books I've been waiting to see since I started this project in the beginning of 2017. My emotions were all over the place as I walked through the door and handed my paperwork to the woman behind the glass plate.

"You need a release order," she said.

I didn't know what a release order was, but it meant I couldn't take my books home yet. Dejected, I got back in the car and drove to work, hoping I hadn't run into an unexpected expense or customs snafu.

I went to work and told my coworkers, "I feel like I'm running a ponzi scheme. I've been promising these books for so long, and so many people have trusted me with their money. I want to fulfill these promises."

Two hours later I got an email that the paperwork had been finished and the books were now available to pick up. I raced to my car and headed back to the warehouse. This time she handed me a new form and sent me into the loading area to get them. I watched for ten minutes as a forklift driver raced around with other cargo before my turn came.

I grabbed the first box and cut it open, not knowing what to expect. I'd seen pictures of the finished books, but I had no way to know that these boxes were correct, undamaged, and ready to release. I cut the tape with my multitool and felt a rush of relief. The books looked great!

Two dock workers helped me load the boxes into my van, which sat much lower to the ground that it had before. I went back to the car and snapped a few photos before going on my way.

Thursday, October 26, 2017

Halloween Post: Exoskeletree

I wrote most of this piece while camping at Jay Cooke State Park. It's channeling a bit of Edgar Allan Poe and Stephen King, so the themes are a little more mature than usual. 


Why Jenny why dad shouts across the China I’m just trying to eat to let it go but no no no a scratch the car it's just too far he slaps his wife she grabs a knife.

Eyes low just let it go just four more years of screaming quiet tears of dreaming of a life without this stuff money's great but it's too late for cash to save us I'll behave just four more years just four more tears just four more put it down now put it down it's just a Bentley it costs a cent he charges for her slams the door her screaming muted he turns to me.

My room's too easy imagine barging in to see the scrawny kid who should have hid so down go down into to basement to the place meant for forgetting past the cellar down to the well or maybe deeper with the creepers in the cold search for gold long abandoned find the dead end boy and hide.

The spider tickles on my hand her body dancing from the sand a proper lady killing ants here in the dark it's hard to see but I'm not worried she knows me I love it here away from light away from fear.

The house is quiet let out a sigh it's good to see you creepy crawlies on the wall he's out but I'll be back near every night they have a fight so I'll be here against the stone cold and alone but for you creepers silent keepers of this sanctuary scratching sliding where he cannot help but let me be.

This anger’s stronger than before it’s hard to see now what’s in store he found the letter that'll get her on the run it might be done she found a lawyer boy her blood must be thick his third wife won't get rich so run get out so dodge the couch and out the door third wife no more.

It's just us dad I feel you can't you trust I'm on your side just wait and listen I know she's not like Mom just let her go and let's move on too angry too much wine fury's target now it's mine he raised hand and stumbles stand and fight no not tonight down the hall toward creepy crawlies close behind a breath is all he's missing grabs for me but keeps on missing down the stairs and in the dark he follows.

Stumble trip and tumble in the dark it keeps him humble this place is mine now hear that rumble door closing darkness oozing through the cracks this is my black you best turn back.

He keeps coming without fear he brought a light this time he's near keeping running deeper down away from sound of scratching father getting farther in the backness of the blackness of my lair spider tickles on my hair she's on its ends knows my fear and tries to lend something here to stop the tears but then she leaves where's she going sound is growing.

But then he screams the selfish tyrant flashlight gleams and then falls silent. Spider returns across the sand and perches happy upon my hand.

Is he sleeping is he dying hold my breath listen for death but silence seeping through the blackness he’s not creeping on his back just sack meat and bones relax just check his pulse and then get out.

Spider crawls up on my shoulder so I lift a hand to hold her crawling forward toward my fear but it’s ok ‘cause spider’s here reach out into the sand did he fall here it’s where he landed ground is empty wet and cold did he get up while in fold of venom seeping cold inside him no that can’t have been it he was here for just a minute I heard him call I heard him fall then a scratch against the wall.

Eyes open try to see what’s on the stones in beside of me no father’s bones what could it be a tiny wing begins to flutter lean in get closer but her spider’s finger on my chest tells me it’s best to let it rest just go up and we’ll move on it’s OK your father’s gone.

No I need to know what’s going on what did you do where has he gone brush her off onto the ground to skitter off without a sound reach out a finger hear him crawl onto my hand from off the wall held to the light so I can see my tiny dad in front of me.

His human body’s been transformed a shiny thorax now has formed his balding head has sprouted horns his scrawny legs outstretched like thorns but it’s him I know it’s him I’ll show it’s him look right there can’t you tell it’s got his ears and nose and chin as well.

But my fury’s burning rightly close my hand to hold him tightly fear was mine descending nightly I can end this now I’ll squish him stomp him smash him into nothing worthless trash I shout out crushing tiny body down it slides out of my hand into a dive I raise my leg one final step.

Stop and waiting should I kill him rage abating pick him up inside debating this ends my cares take him upstairs box him up keep him up and we’ll make up we’ll make amends and we’ll be friends.

There’s a nibble on my thigh a tiny bite I’m shrinking I can hardly hold my father fingers shrinking into stringers floor is rising am I dying I feel new limbs I can’t hold him slipping further toward the spider.

She walks up close this time my size her spider face I recognize the truth at hand at last uncovered the tiny bite was from my mother didn’t die just had to flee now spider beetle and flea a reunited family.

Wednesday, August 9, 2017

Goodnight Server Room Lecture

Here's a talk I gave about the history, motivation, and execution of Goodnight Server Room.

Saturday, July 1, 2017

Ranking my Kids' Toys by Utility

We're re-finishing our basement. It's a dusty job and my three year old frequently wants to help. I gave him the job of sweeping, and soon discovered his broom was often more useful than mine.

I went through his toys and determined their practical usefulness to an adult. Everything in this list is plastic or cloth unless explicitly noted.

I don't have
  • Sifter
As useful as mine
  • Cups
  • Broom
  • Guitar
  • Metal Hammer
  • Scissors
  • Buckets
Less useful than mine
  • Plastic Hammer
  • Spoons, Forks, Knives, Plates
  • Tape Measure
  • Ruler
  • Flashlight
  • Tent
  • Shovel
  • Drums
  • Pliers
  • Screwdriver
  • Bike/Trike
  • Drill
  • Food
  • Trucks/Cars
  • Computer
  • Stuffed Animals
  • Jackhammer
  • Saws (Jigsaw, hacksaw, hand saw)
We share
  • Legos

Friday, June 23, 2017

An Android Convert with an iPhone

I'm a couple of months into iPhone ownership. The honeymoon period is over, so it's time for a review.


The iPhone 7 is stable. This was my primary goal in switching from Android, and Apple has held up their end of the bargain. I used to have to restart my LG G3 every day or two to keep it from slowing down. In weeks of continuous uptime I have yet to notice a slowdown in the iPhone.

Now that we've gotten the headline out of the way, it's time to air some grievances.  If you know fixes for these, let me know!

Features I Miss

Automatic contact lookup by dialing (e.g., dial 5-6-7 to start autocompleting J-O-R and suggest the contact "Jordan").

Swipe typing is not available natively. I don't trust non-standard keyboards, since they get all of the text I enter.

Notifications are Inconsistent

When viewing from the lock screen, users dismiss notifications by swiping left and pressing "clear". When viewing pop-up notifications from an application window, users swipe up to dismiss the notification.

Icon Arrangement is Frustrating

When you remove or rearrange applications on the iPhone, you can't just move one at a time. The icons stack, so if you remove one the others all move into the unoccupied space. When I've gotten used to a particular app in a certain spot in my home screen, it's really frustrating to have to rearrange my home screen just because I removed an app.

Touch tone Interfaces are Unintuitive

Pushing these keys will leave you confused and angry

During an active call, the iPhone typically darkens the display. When prompted to "press a key to make a selection" the obvious next step is to unlock the display and press the "phone" icon. However, pressing buttons at this point does not send touch tone signals. During an active call pressing the "phone" icon still tries to initiate a new call, rather than connecting you to the active call.

Cross-App Launching is Limited

If I click on a Washington Post link in Facebook, I want to launch the Washington Post app (for which I have a paid account). Instead of opening the Washington Post app (or even prompting me to decide what to launch) I'm stuck using a web browser within Facebook that is not associated with my Washington Post account.

Sharing is Limited

I frequently want to send a web link to my wife. I send lots of texts with Google Voice, and perplexingly Google Voice does not appear as a sharing option. Similarly, uploading to Google Drive does not appear as an image sharing option either.

Inconsistent Back Button Locations

The back button is in the upper left, then it becomes a camera, then it moves to the upper right

I think the thing I miss most from Android is the back button. Since iOS has no standard back button, applications get to put it wherever they want. They can hide it, or in Facebook's case, even move it around.

Friday, May 5, 2017

A name was lost, in a heartbeat

I remember the scene clearly and I can pinpoint exactly where the conversation happened. There were two brothers, both older than me, who lived a few blocks from my childhood home. Let's call them Joe and Chris. Joe was the oldest. He was stocky and aloof, a near-adult to my seven year old eyes. Chris was younger, just a year or two older than me, and lean.

My childhood summers were spent on the playground of Cooper elementary school in Minneapolis. I did not usually play with Joe and Chris, though sometimes Joe let me join the football games he played with the other bigger kids, and sometimes Chris would join me on the playground. Mostly I played with kids closer to my age or made up obstacle courses to run by myself.

On that day Chris cemented himself into my memory. We had finished playing tag and were sitting on the concrete berm nestled into the little hill between the playground and 32nd street. I do not remember our conversation. I only remember one word, and it was aimed at me: idiot.

Take a moment and think back on your adolescence. I'm willing to bet you had a handful of moments, both good and bad, where you were given a name. It might have been a nickname, assigned by your friends. It might have been a username, self-assigned when you made a Twitter account (or in my case, AOL Instant Messenger). It might have been an insult that cut deep enough to stick. These are all names, as real as the name written on your birth certificate.

My first names came from my parents. When I born I became Tyler. Soon after, I became Tiger. As soon as I could speak, I unequivocally rejected my parents' attempts to use Ty.

The first name I got from outside the confines of my family still makes me smile. I went to latch-key at Bethlehem Covenant Church and an instructor named Andy was the coolest person in the world. We played floor hockey in the dimly lit basement dinner hall of the church, and one day I was the goalie.  My memories of the game are hazy, but I did well enough that Andy dubbed me Sticky Fingers. I was six years old, and I wore that name like a badge of honor.

In high school I struggled to carve out an identity for myself. I was a good student and a mediocre athlete, but my names followed a different arc. In eighth grade I had decided to bleach my hair. My mom obliged, and I gained "frosted tips". I started putting gel in my hair to make it stick up, and AOL Instant Messenger user spikydood15 was born. I joined the swim team in my sophomore year, and when the team captains assigned everyone nicknames for their team attire, my sweatshirt read: gellin.

Out of college and in the business world, I realized that the assignment of a nickname was a mark of acceptance and welcome. I spent three years at my first professional job before I was accepted as T-Dog McSmitherton. Only a year passed at my current job before I became T-Bone and was part of the team.

Each of these names draws its significance from two sources: the namer and the named. When a teammate gave me a name, it was given and received with the weight of membership. When a superior gave me a name, it was a mark of praise and pride. When I picked a name, it was a statement of my evolving identity.

This evolution of identity, and my ability to determine its path, brings us back to the opening story.

Chris heaved word idiot at me like a boulder and I was unprepared to dodge it or catch it. The word landed on my chest and knocked me backward. I teetered, holding this word that was pressing into me and trying to become a name.

Whether it was luck, parental intuition, or a whisper from God, something inspired my dad to walk up just as Chris's insult hit the air.


My dad reached out and smashed the word to pieces with a venom I had never seen:

"My son is not an idiot."

My dad spoke with anger and authority.  He was speaking at Chris but he was talking to me:

Do not even think about accepting that name. That is not your name.

Thank you dad.

Preorder Goodnight Server Room on Etsy!

Copyright 2017 T.D. Smith

Monday, April 3, 2017

Why I gave up on Android

I got my first smartphone in January of 2011-the year after I finished college. I had been writing Java professionally for a couple of years and opted for an HTC Aria running Android. Android apps are written in Java, so I thought it would be fun to be able to write software for my own phone.


Over the next six years I had three different Android phones, each better (and larger) than the last[1]. I also wrote some Android apps, the most successful being the Pretty Good Music Player, which has been downloaded over 4,000 times in its two different forms.

Writing Android applications is a lot of fun and really rewarding. Through open source development on Github and F-Droid I met a lot of people from around the world who were willing to contribute to my application - it has been even been translated into seven different languages!

By this point you should be wondering: If things are going so well, why am I giving up on Android?

I'm ready for a phone that's not a project

With every Android phone I've owned, I've had to work to deal with the following issues:

  1. I have little to no control of what's on my device
  2. I have little say over the software versions or upgrade process
  3. There is little transparency and poor support in the hardware or software unique to each carrier and device
None of these issues are insurmountable, but I have a limited amount of time and money to spend on my phone, and I'm tired of fighting with device control, upgrades, and hardware support. 


Android is open source. In theory, that means it should be user-modifiable. I should be able to tear it apart and rebuild it as I want. I should be able to accept or reject changes to my phone, and I should have control over what's on it. This is the case with other open source projects. It's not the case with Android.

The Android ecosystem is so convoluted it's hard to get a phone that doesn't have bloatware from at least two different sources on it. Google occasionally releases a "clean" phone (the Nexus or the Pixel), but these are the exception, not the norm. At the Verizon store yesterday, I had two options for phones without "NFL Mobile" installed by default: Google Pixel (not in stock) or the iPhone.

This is not what "open source" is supposed to mean. If I want Debian customized with or without something, I can rebuild it myself or choose from one of its many offshoots (e.g., Ubuntu). If I want Android customized, I have to root (hack) my phone with sketchy software and install a custom Android build like the (now defunct) CyanogenMod.

Upgrades (and Downgrades)

Virtually every major Android upgrade in recent memory made my phone worse. The upgrade from Android 4 to Android 5 made Bluetooth media buttons stop working after about 20 minutes. Some aspect of Android 5 or 6 introduced a memory leak that required me to restart my phone every two days or risk apps crashing randomly.

In a normal open source environment, I could address these issues by rolling back the update or creating a fix myself. In Android, (without rooting my phone) I have few choices. It's hard to tell where the issues even originated, since my phone wasn't just running Android: It was running Android, plus LG's bloatware, plus Verizon's bloatware. One of them caused the memory leak.

The best Android option today seems to be the Google branded Pixel. Unfortunately, I have the same long term support concerns with the Pixel as with all of the others. Google has a bad habit of losing interest in a project and dropping it with little fanfare (anybody remember iGoogle? Google Buzz?)


Hardware support is the one place Android acts like an open source project: it's frustrating. There are a plethora of manufacturers, each making a wide variety of devices. Android has to support them all. Linux has a similar problem on the desktop. For example, the Linux kernel has to be written to support a wide variety of CPU types.

Android has a several major device manufacturers (Samsung, LG, Motorola) and a plethora of smaller manufacturers. At any given time each phone maker has two to four devices on the market and approximately fifteen devices within a three year support window. When you factor in the four major carriers (each pre-installing their own bloatware and network support), this makes approximately two hundred sixteen device configurations Android must support at any given time[2]. Linux gets around this issue by being transparent, employing an army of engineers, and by allowing users to handle upgrades and downgrades. Android has all of the weaknesses of open source, and none of the strengths. From a quality control standpoint, this is a nightmare.

The result of this nightmare is that new phones function well. The software on them is well tested. As a phone gets older and older, testing priority stays with the new phones - there's far more motivation for new phones to work well than old phones. For example, the autofocus on my LG G3 stopped working correctly about six months ago (around the two year ownership mark). I believe this was a software error, since the phone remained physically capable of focusing correctly, it would simply re-focus sporadically.

Why I bought an iPhone

I weighed the odds. Android has to support two hundred sixteen phones in a three year rolling window. Apple's iOS has to support eighteen[3]. The chance of frustrating problems, while non-zero, is (at least theoretically) significantly lower on the iPhone.

My experience with Android is only anecdotal, but I'm tired of poor support and buggy software. I'm tired of buying phones that wear the badge of open source but won't let me uninstall bloatware. I know that many of my frustrations have solutions, but those solutions take effort, and I'm tired of my phone being a project.

Final Thoughts

I'm in the honeymoon period with a new iPhone 7. In three years, we'll see where I stand.

1. I had an HTC Aria on AT&T, a Motorola Droid Razr on Verizon, and an LG G3 on Verizon.
2. Assuming three current devices per manufacturer with a six month device release cycle. 3*3*6*4 = 216.
3. Assuming Apple has the same release cycle as Android manufacturers and a similar testing budget.

Copyright 2017 Tyler Smith