The autonomous robot weeder from ecoRobotix

ecoRobotix is a Swiss startup that’s built something truly amazing.

This autonomous solar-powered robot rolls through fields of crops, inspecting every patch of growth on the ground.  If it spots any weeds, it applies a targeted microdose of herbicides right where it’s needed.

The benefits are obvious – less “non-food” finding its way into our food supply, higher yield for farmers, and lower prices at the grocery store.

This is such a simple idea and a great application of technology.  I love it.

Source: The autonomous robot weeder from Ecorobotix

How to be Cinnabon Gene

This year for Halloween I was Gene. Gene manages a Cinnabon in Omaha. If you watch Better Call Saul, you’d be familiar.

It was a relatively cheap costume to throw together, but sourcing the gear to make it happen – and getting the colors right – was a challenge.

I used three reference photos to figure how to to make this happen.

Here’s a good detail shot of his glasses and facial hair:
Gene in B&W

Gene’s on-screen appearances have always been in black and white, so getting the colors right was tricky. I found a rare behind-the scenes photo of him in color:
Cinnabon Gene in color

That gets you close, but he’s missing an apron and visor.

Here’s a clear Photoshop job from an AMC promotion (the shirt and apron are missing logos) but it at least reveals that brown is the apron and visor color, and his glasses have a yellow tint:
Gene contest

My first stop for sourcing all this stuff was, of course, Cinnabon. They were remarkably unhelpful.

Cinnabon’s social media team, email team, and local franchisees were unwilling and/or unable to sell me any clothing that contained a Cinnabon logo.

In an act of desperation I even reached out to Cinnabon’s VP of Global Marketing on LinkedIn. She completely ignored me. No one was willing to sell me any Cinnabon-branded stuff, so I had to make it myself.

Luckily, it wasn’t that hard…

The Gear

Avery InkJet Iron-On Dark T-Shirt Transfers, White: You use an inkjet printer to print Cinnabon logos onto these special sheets of paper, and then use a hot iron to melt/glue those printouts to fabric. They say it’s for 100% cotton or cotton/poly blend fabrics only, but I was able to make it work on a 100% polyester apron with no problem. (You’ll of course need the Cinnabon logo.) You’ll use these transfers to apply Cinnabon logos to the polo shirt, apron, and visor.

SEW UR LIFE Brown Professional Bib Apron: While it’s not labeled as such, this is a ‘butcher’ apron – one that goes down to your knees. Gene wears a brown butcher apron. It’s 100% polyester, so you’ll want to go easy with the iron so you don’t melt it or cause it to ripple.

Dealstock Plain Men Women Sport Sun Visor Adjustable Cap: Even though this visor is made of 100% acrylic, the iron-on transfers worked just fine. The trick was ironing on a curved surface. I did it against a round ceramic kitchen container that I normally use to hold flour.

Amazon Essentials Men’s Cotton Pique Polo Shirt: This inexpensive aqua/teal shirt is 100% cotton and a close-enough match to what Gene wears. This shirt has two buttons, while Gene’s has three.

Titanium Half Rim Frame: I looked everywhere for Gene’s exact model of glasses, but came up empty. The closest I could find were these frames from Zenni Optical. Luckily you can order them with custom lenses, and I did exactly that. Optical grade non-prescription lenses with “Standard Lens Tint Yellow-50%” can be yours for under $30.

Winchester Fake Moustache, Medium Brown: Ideally, you’d grow a mustache. I grew my own in two weeks, but should have given it more time. If you struggle to grow facial hair, this one should do the trick. Use spirit gum to attach it to your face.

Namebadge and button: I could have probably made these myself by slapping a sticker on top of existing pins, but I found a website that had them ready-to-go!

That’s it

Anyone who watches Better Call Saul will know who you are right away and lose their shit. Anyone who doesn’t watch the show will still love this costume and laugh as soon as they see you.

How to Extend T-Mobile’s Free Gogo wifi to a Laptop

T-Mobile users get one free hour of Gogo wifi on all flights.
If you pay a little more to upgrade to “T-Mobile One Plus” you get unlimited Gogo access.

In either case, that wifi is officially only available on your T-Mobile device. They also limit that acces to a single device per subscriber, per flight.

If you were thinking you’d be able to use your laptop without paying…you’d be wrong. The Gogo wifi gateway won’t even display the T-Mobile branding/free login option if you’re on a laptop.

If you want to get around these limitations, you’ve got two options!

Option 1:

The first option is by far the simplest, but only works if you want wifi on a single non-T-Mobile device (like a laptop) for the duration of your flight. (Note that you’re not able to switch devices mid-flight.)

All you need to do is change your browser’s User Agent. The User Agent Switcher plugin for Firefox does this nicely. I’m sure there’s good stuff out there for Chrome, too.

Plug these values into it to pretend you’re running a Google Nexus 6P:

Description: Nexus 6P
User Agent: Mozilla/5.0 (Linux; Android 7.1.2; Nexus 6P Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.132 Mobile Safari/537.36
App Code Name: Mozilla
App Name: Netscape
App Version: 5.0 (Linux; Android 7.1.2; Nexus 6P Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.132 Mobile Safari/537.36
Platform: Linux armv8l
Vendor: Google Inc.
Vendor Sub: (leave blank)

Once you’ve done this, the Gogo gateway pricing page will present you with a T-Mobile “$0.00” option. Login with your T-Mobile phone number, fill out the captcha, and you’re good to go. You can change your User Agent back to the default once you’ve logged in.

Option 2:

This option is a bit more work, but it will let you share your connection across devices. You’re authorizing your phone to use the wifi, and you then use Bluetooth tethering to share it with your laptop (or tablet, etc).

As of this writing, I use Android 7.1.2 and Windows 10. That’s what these instructions will cover, but the basic method should work across platforms.

One-time setup!

On your phone:
Go to Settings. Under “Wireless & networks” select “More”.
Tap “Tethering & portable hotspot”.
Ensure that Bluetooth tethering is ENABLED.
Go back to Settings. Tap “Bluetooth” to make your phone visible for pairing.

On Windows 10:
Go to Settings. (Not Control Panel).
Go to Devices.
Enable Bluetooth if it’s not already.
Click “Add Bluetooth or other device”
Click “Bluetooth”
Your phone will be found, so pair it.

Setup is complete. You shouldn’t have to do any of the above steps ever again.

Now here’s how to connect!

On Windows 10:
Open Control Panel (Not Settings).
Click “Network and Internet”, then “Network and Sharing Center”, then “Change adapter settings”.
Right-click on your wifi device to disable it. (Windows will favor wifi, and leaving this on will only send you to the Gogo gateway.)
Bluetooth should be enabled but also “Not connected” with a red X.

On your phone:
Visit the Gogo portal in your browser, and jump through whatever hoops they ask to enable your free wifi. Once you’ve confirmed you’ve got internet access on your phone, proceed!
Go to Settings. Under “Wireless & networks” select “More”.
Tap “Tethering & portable hotspot”.
Enable “Bluetooth tethering”.

On Windows 10:
A new window should pop up. If it doesn’t, go to Control Panel, “Hardware and Sound”, “Devices and Printers”.
You’ll see your phone in the list of “Devices”.
Right-click your phone, select “Connect using”, “Access point”

You’re done! Enjoy free wifi on your laptop for an hour! Or for the whole flight!

Toyota, AVCHD, and you

This missus got a new car this week. It’s a 2016 Toyota Highlander Hybrid. Pretty nice.

The rear-seat entertainment system has a Blu-ray player that’s also got an SD card slot. No more discs! Hooray! Great for kids!

It’s 2016, so you’d think you’d just be able to copy a couple of video files to an SD card, shove it in the slot, and be done. But you’d be wrong.

The SD slot in this Blu-ray player is unbelievably stupid. It doesn’t recognize mkv containers, mp4 files…nothin’. The only thing it can handle are “AVCHD videos”. In other words – dumps of Blu-ray disc images. Incredibly helpful.

Toyota (maybe Lexus too) sort of assumes that you’re a computer whiz, comfortable transcoding videos, familiar with the Blu-ray file structure, and able to author discs like it’s no big deal.

I was not any of those things when I started this process. Now I am.

After days of trial and error and burning though a half-dozen different authoring tools (Nero Video has been broken for three years BTW), I’ve found one that works.

The only bad part is that it costs money. It’s called ConvertXtoVideo, and it’s $40 (or free with a piracy discount).

Anyhoo, once you’ve got it, here’s how to use it:

Make your AVCHD settings look like this:

Enter the size of your SD card in megabytes. My card was 64GB but I went with 63000 just to be safe.

Select a theme for your menu. These microscopic thumbnails are all that you’ll get, and most of them are hideous. The “classic” theme is simple and good. Hover over the settings if you’re not sure what they do.

Give your “disc” a name and put it in the box on the right. (This will appear at the top of your on-screen menu.)

Click the first button in the toolbar to add your videos to the queue.

Select an output format from the dropdown on the bottom-right corner. I went with “AVCHD 720p (for USB key)” because full HD isn’t suuuper important on a 9″ screen. Note – this means that *all* of your videos will be upscaled (or downscaled) to 720p.

Speaking of quality, keep an eye on these gauges. They’ll tell you how much video quality you’re sacrificing every time you add another file. Keep it in the green and you should be fine.

Select individual videos and use the up/down arrows in the toolbar to order them however you’d like. This is the order in which they’ll appear in the on-screen menu.

Click the ‘Start’ button and wait a few hours.

You’ll sit through a lot of this:

Eventually you’ll be presented with a fully populated directory called “AVCHD”.

On your blank SD card, create a directory called “PRIVATE” in the root. Move the “AVCHD” directory into “PRIVATE” (not just its contents – move the whole directory).

Eject the SD card, lock it to avoid any accidental formats, and walk over to your car. You’re done, amigo.

If Google brought you here and this helped you, I’m glad. Please leave a comment to make me feel better about myself and all the time I sunk into this.


The RetroPie FAQ that I wish had existed when I started down this road

Inspired by Nintendo’s upcoming NES Classic Edition, I spent some time last week setting up a Raspberry Pi-based emulation station.


For about $100 all-in, this smaller-than-my-wallet computer plays thousands of games from the Atari 2600 all the way through the PlayStation 1/N64 era, and just about everything in-between.

I’m very happy. My kids like it too, which I never thought would happen.

Despite its claims of being “easy to use” and “wonderful”, RetroPie is definitely not those things out-of-the-box. Once you’re up and running, things are great! It’s the setup that’s the problem.

I spent a few hours tracking down solutions to quirky problems, and these were the big ones. I hope this helps somebody! I’ll be adding to this as I run into other cases of dumb stuff.

I'm getting a black border on the screen or things are disappearing off the edges!

This one seems like an easy fix! Just override the Raspberry Pi’s default overscan settings, right? They’re in /boot/config.txt.

So you set values for overscan_left, overscan_right, etc in there. That’s great. It works!

…for the command line only. Once you launch anything that uses more than text mode, you’re back to square one.

To fix:
Add in a newish, not-very-well-documented variable to /boot/config.txt: overscan_scale=1. THEN work on those overscan settings to get a perfect fit on your screen. Try new values, save, “sudo reboot“, and repeat until you’ve got it perfect.

On my Samsung, the ideal values were -9, -9, -25, -25 (LRTB) but yours could be anything!

My controller works in the Emulation Station launcher, but partially (or not at all) within emulators.
If your controller is physically connected or is Bluetooth paired (and wirelessly connected) the issue is improperly mapped joypad buttons. The good news is it’s not your fault.

Pair and connect your controller with Bluetooth from the Bluetooth menu.

Now configure its buttons within Emulation Station.

This does two things – it lets you control Emulation Station with this controller, and also sets up a default config for the Retroarch emulators (within /opt/retropie/configs/all/retroarch-joypads/), so your controller should work automatically in all of them.

Except this second part? It often screws it up pretty badly. Some controllers get set up fine, and some are all kinds of wrong. The Emulation Station setup process will assign buttons that don’t even exist on the controllers to their profiles within Retroarch emulators. What that means is that some (or none) of the buttons will work within emulators.

To fix:
open up /opt/retropie/configs/all/retroarch-joypads
Find the name of the joypad you want to fix, and edit its .cfg file. (Remember, these CFGs aren’t created until you first set them up within Emulation Station. Just pairing with Bluetooth isn’t enough.)

Every action in the cfg is assigned to a button. Every button on the controller has a number. Most or all of these numbers are probably wrong in this cfg if you’re having trouble.

To find out the correct button numbers, run
jstest /dev/input/js0
(or js1 for player 2, etc)
Tap every button and write down their values. Then control-C outta there, and put the proper ones in your cfg file.

I’ve got two controllers (from the excellent 8Bitdo) and I had to do this for both of them. Feel free to steal these configs:


input_device = “8Bitdo NES30 Pro”
input_driver = “udev”
input_up_btn = “h0up”
input_left_btn = “h0left”
input_right_btn = “h0right”
input_down_btn = “h0down”
input_select_btn = “10”
input_start_btn = “11”
input_l_y_plus_axis = “+1”
input_l_y_minus_axis = “-1”
input_l_x_plus_axis = “+0”
input_l_x_minus_axis = “-0”
input_r_y_plus_axis = “+3”
input_r_y_minus_axis = “-3”
input_r_x_plus_axis = “+2”
input_r_x_minus_axis = “-2”
input_l_btn = “6”
input_l2_btn = “8”
input_l3_btn = “13”
input_r_btn = “7”
input_r2_btn = “9”
input_r3_btn = “14”
input_a_btn = “0”
input_b_btn = “1”
input_x_btn = “3”
input_y_btn = “4”
input_enable_hotkey_btn = “10”
input_state_slot_increase_btn = “h0right”
input_state_slot_decrease_btn = “h0left”
input_save_state_btn = “7”
input_load_state_btn = “6”
input_menu_toggle_btn = “3”
input_reset_btn = “1”
input_exit_emulator_btn = “11”


input_device = “8Bitdo SNES30 GamePad”
input_driver = “udev”
input_up_axis = “-1”
input_left_axis = “-0”
input_right_axis = “+0”
input_down_axis = “+1”
input_select_btn = “10”
input_start_btn = “11”
input_l_btn = “6”
input_r_btn = “7”
input_a_btn = “0”
input_b_btn = “1”
input_x_btn = “3”
input_y_btn = “4”
input_enable_hotkey_btn = “10”
input_state_slot_increase_axis = “+0”
input_state_slot_decrease_axis = “-0”
input_save_state_btn = “7”
input_load_state_btn = “6”
input_menu_toggle_btn = “3”
input_reset_btn = “1”
input_exit_emulator_btn = “11”
My analog sticks work great in everything, but I can't get PSX to recognize them.
This one made no sense. The stick worked fine with N64 titles with no extra configuration. When it came to PlayStation titles, I’d change the RGUI controller setting to “RetroPad w/ Analog” for P1 and it made no difference. That setting doesn’t do anything at all. Don’t even bother changing it.

To fix:
Launch a PSX game. Open up the RGUI menu using your hotkey.

Go to Options / Core Options / Pad 1 Type (and/or Pad 2) / Change Digital to Analog

Games will think you’ve got an old-school, digital-only, stickless pre-1998 controller attached by default until you switch this to analog. That option is the equivalent of toggling the recessed “analog” button on a real PS1 Dual Shock controller.

A little more backstory on why this is appears here.

I have no freaking idea how to connect more than one controller.
There’s no explicit documentation on how to do this. But it’s pretty easy.

To fix:
Once you’ve configured your first controller, go into Emulation Station’s settings to configure your controls. It’ll say something like “configure second gamepad,” so hold down a button on that second gamepad to get it recognized. Go through the whole process and you’ll be all set for controlling the UI with all your controllers.

Of course once you get into an emulator you’ll probably have button issues. You’d then just need to do what we did in the last step to properly map those buttons in a .cfg file.

Atari Lynx roms won't launch!

I’d select a game, get a black screen, then be taken back to the EmulationStation Lynx menu. /tmp/runcommand.log would tell me all of my roms were invalid, and they would not boot at all. This wasn’t a BIOS issue.

I was using no-intro Lynx roms. These “clean” roms do NOT have a header, and the version of lr-handy included with the 4.0 beta would not play them because of that.

Here’s the problem – the lr-handy binary that comes with 4.0 (beta2) is way old. Newer Handy releases are able to work with “no header” roms.

To fix:

Go into the RetroPie setup script menus, and rebuild lr-handy from source. It takes a few minutes to complete. When it’s done, you’re golden.

I'm from America! I want Mega Drive to be Genesis and PC Engine to be TurboGrafx-16!
I feel your pain. In theory it’s a simple text fix within /etc/emulationstation/es_systems.cfg. Just find the ‘theme’ field where you see ‘megadrive’ and change it to ‘genesis’. Wouldn’t hurt to change the ‘fullname’ and ‘platform’ fields, too.

The problem here is that not every theme supports all systems. Some only support views for ‘megadrive’, and will only show a shitty unstyled menu if you pick something they don’t support.

To fix:
Good luck with that. Just stick with the original names.

Why are there two included scrapers? Why does it take so damned long?
Emulation Station needs two things to look its best: boxart for each game, and a ‘gamelist.xml’ full of metadata for each system. ES has a built-in-scraper, but that uses your roms’ filenames to identify them. That method can be pretty unpredictable.

It’s a better idea to use the included “Steven Selph” scraper in the Retropie textual menus, as it uses rom hashes to provide much more accurate results.

But it takes forever.

To fix:
Note that you can’t use the Selph scraper if Emulation Station is open, or its work will be overwritten. Quit from ES before scraping (If you’re logged in remotely: “killall emulationstation“) then get busy:
sudo ~/RetroPie-Setup/

The scraper will first download all your images in one big queue, and you can watch as things happen in the terminal. This takes about five minutes. Then, at the end of your queue, everything will freeze…or will appear to. For HOURS. Don’t break out of it. Let it sit and ‘do nothing’. Even though there is no visual feedback, the current system’s gamelist.xml is being generated. A recent scrape of ~120 Genesis roms took about three fucking hours, conservatively.

The only setting I’d really change from the defaults is to disable “Thumbnails Only”. When I left that enabled I ended up with a bunch of low-res blurry upscales.

I agree, this slow scraping thing sucks because it’s probably one of the first things you’ll do when you set up your RetroPie install, and during this whole time you can’t play anything. Let it run overnight.

As nice as it is to look at and use, Emulation Station seems to have been abandoned by its author with no updates in over a year. The reliance on huge, slow-to-process XML files was one of the things he had hoped to have fixed before he eventually lost interest in the project. This might get fixed someday, but for now it’s best to limit your romsets to a couple hundred, rather than a couple thousand, just to keep EmulationStation running smoothly.

I don't like my Raspberry Pi case. What's the best one you've found?
I don’t have it, but it’s clearly this one:
Mini SNES - Raspberry Pi 2/3 Case
It’s 3d printed, so you’ll have to put up with those telltale print lines, but heee-ooo! What a beaut. You can have the parts printed for about $30, but I think you then need to paint it in the correct colors.
When I select a rom, the screen goes dark and I get spit back to the menu.
Could be anything.

To fix:
Check /tmp/runcommand.log to see what happened.

Most times the log will tell you that you’ve got invalid/corrupt roms. Unzip them and they will work fine. I have no idea why.

PlayStation images in particular suffer from this. The non-libretro version of the N64 emulator can’t open zipped roms, period. There’s no clear idea as to when this will get fixed (or if anyone’s even working to fix it,) so it makes sense to invest in a large SD card for this reason alone.

If the log is totally empty, you’re probably missing the proper bios files in the bios dir.


I think that’s it. Everything else I ran into was covered in the official wiki, the forums, or on the RetroPie subreddit.

I’m kind of amazed that a $35 Raspberry Pi 3 has enough horsepower to handle PS1 and N64 games. A small-form-factor Windows HTPC that I built just two years ago (for considerably more money) can barely handle either one of those. Now’s a good time to get into this stuff!

How I Get Free TV

TV shouldn’t cost money. There’s a free and legal way to watch TV shows and it’s been around since the 40s. It’s called an antenna.

Rabbit Ears

When the US switched over to digital signals using the ATSC standard in 2008, many stations started broadcasting in HD. Most people don’t know this and it totally shocks me. Digital signals are great, too. You either get a 100% perfect signal, or you get no signal at all. There is never static.

It’s incredible just how many stations you can pick up by plugging a $10 antenna into your HDTV. If you live in a major metropolitan area you can even get by with only a tiny paper clip shoved into the antenna connector.

I was sick of paying Dish Network for programming. We’d been with them for 10+ years and while the service itself was fine, I was paying monthly fees out the ass for additional boxes and the tiers of programming that are forced upon you to watch anything decent.

Free TV programming is mandated by the government, so why was I paying ~$125 a month? It seemed dumb – like paying for vacation or music streaming services. What are you buying? You’re buying something that’s gone as soon as you stop paying for it, and all you’re left with are memories. Money down the drain!

I wanted out. I wanted to cut the cord, so when we moved houses in early 2015 I took the opportunity to cancel Dish Network and not sign up with anyone at the new place.

My goals:
• Pay a $0 recurring monthly fee for TV programming
• Find a DVR that can handle ATSC (over the air signals in the US & Canada)
• Pay a $0 recurring monthly fee for the DVR
• The DVR needed to serve every TV in the house (four of ’em, not all in daily use)
• The DVR had to be off-the shelf, because I didn’t want to fuck around with Linux when something broke. Ain’t nobody got time for that. I got kids. And a life.

After lots of searching, I found a device that does all of that. Tablo.


Tablo doesn’t connect to a TV. It’s a box that lives on your network and connects to any TV antenna. You’re then able to control it and view programming using any standard web browser – even when you’re away from home. That’s cool if you’re the kind of angry hipster nerd that doesn’t own a TV, but kind of useless for normal humans. That’s why Tablo also maintains an ecosystem of apps for streaming devices.

I bought a bunch of inexpensive Roku devices (Roku 3s and a Roku 4) and threw one on every TV in the house. They’re my cable boxes now – a one-time purchase with no recurring monthly fees – and they can do so much more than stupid ugly cable boxes.

Roku 3

I taped a flat antenna onto a never-used window and hid it behind blinds. After a typical channel scan I get something like 160 channels here in Orange County. Most are not HD, and many aren’t in english…but the ones that are bring me plenty of programming.

Mohu Leaf

Tablo itself has a $5/monthly subscription fee, but they also offer a $150 lifetime subscription option. The fees cover the cost of the program guide data which comes from a third party.

That lifetime option is the reason I went with Tablo. Without it, I don’t know if I would have picked them back in the day.

Tablo's Prime Time view

As great as Tablo is, no tech is ever 100% perfect and exactly what you want, so let’s examine…
The downsides to Tablo:

• It’s slow as shit.
Because it’s transcoding ATSC (MPEG-2) to H.264, you have to wait a few seconds for every live stream or recording to start playing. The interface is sluggish, the guide repopulates slowly every time you load it, and things are generally not fast and immediate like they are on literally any other DVR in the world.

• It inexplicably downsamples Dolby Digital 5.1 to stereo.
Why? I have no idea. They claim a firmware update can enable DD. They made that claim two years ago. Doesn’t seem to be a priority.

Despite the slowness, I’m super happy with my Tablo and would recommend it to pretty much anyone in the US or Canada. I’ve been using it for exactly one year and have saved something like $1500. Every time I turn on the TV I’m conscious of exactly how much money I’m not spending, and it’s a great feeling.

Go buy a Tablo!

The Factory, 2

(previously, part 1)

Magnus felt faint.  He gripped the doorframe for support, stumbling against his own booted feet.

“Close the door and sit,” said the woman. Magnus absently reached for the door, unable to take his eyes off the foreman’s body in front of him, his hands fumbling against air.  “Jesus, just sit down,” she barked, stomping over to close the door herself.

Magnus found his way to the chair across from the foreman’s desk and fell into it. The air smelled of iron and made his eyes water.

The woman eyed him carefully as she closed the door and began to circle around the room. She was careful to keep her feet clear of the expanding pool of blood which threatened to cover every square inch of the office floor, and even more careful to keep a healthy distance between Magnus and herself.

Magnus swallowed hard and found his voice. “What…what is this? What have you done?”

The woman had returned to her place in the shadows behind the foreman.

“Where is it?” she asked, as if he’d not spoken at all.

“You’ve killed the foreman. My god, you’ve killed…”

She didn’t let him finish. “We don’t have much time. Where is it?”

We? His eyes growing thick with tears, Magnus struggled to meet her gaze. Her pointed nose drew his focus upward and there he found them again – eyes as dark as night, betraying no emotion. The eyes of a killer.

“Where is WHAT?” he asked, his voice cracking as the words escaped louder than he’d intended. The shock was beginning to wear off and in its place Magnus was left consumed with frustration, confusion, and debilitating fear.

“The machine.”

The machine?

How would she not know?

Magnus rubbed his eyes to clarity and examined the woman’s overalls again. Her shoulders were covered in insignia that identified her as a second-class apprentice engineer from level eight, but her patches didn’t appear to be sewn-on. He considered that they were simply painted in place to mimic true patches. They were close enough to fool anyone from a distance of a few feet, but clearly were not standard issue.

“Who are you?” Magnus asked. He doubted that the blood-spattered ID badge dangling at her waist was legitimate.

The woman had begun to visibly perspire, her forehead glistening as she moved beneath the dangling lightbulb overhead. “I’m going to ask you one last time. Where is it?”

Magnus looked down to his feet. He lifted his boots against the approaching red tide and rested them on the feet of his chair, his legs shaking.  This was not a day he’d seen coming, but one that he’d always feared.

“You’re a Lifter,” he concluded.

“And you are Magnus, keeper of the machine. Take me to it. Now.”

“I cannot.”

“You cannot? Or will not?”

“I cannot.”

“And why is that?”

“Because,” he began, his voice growing more confident, “you will be dead before you leave this office.”

The woman laughed at this, and seemed to consider his words for a time before her smile evaporated and her face grew dark again. A bead of sweat had formed at her temple and had found its way down to the edge of her chin.

“Get up,” she said. “We’re going.”

“You will not,” said Magnus.

His words were free of malice and he spoke them carefully.  Deliberately.

The dark eyed woman opened her mouth as if to speak, but abruptly lurched forward, losing her balance and throwing a hand on the desk for support. The desk was slick with the foreman’s blood and her hand slipped, carrying her body down to the floor below in a heap.

She struggled to form words but couldn’t manage more than a single moan as her body writhed and struggled against itself.

After a moment her movements grew slower and she’d stopped trying to speak. Magnus sat frozen and watched with morbid curiosity until, finally, she exhaled one last time with a breath as deep as any he’d ever heard.

Magnus winced.

Taking a handkerchief from inside his vest pocket, he dabbed at a thin film of sweat that had begun to form across his own brow.

He looked from the woman to the foreman and back again, trying to make sense of it all. This would change everything. He’d only hoped that the factory was ready for what was to come.

The Factory

Magnus had slaved away at the machine for seven years. Greasing gears. Replacing tubes. Regulating the flow of steam. He had come to know its strengths. Its weaknesses. Its propensity for failure on the hottest days of summer.

Though the foreman would be loathe to admit it, Magnus kept the factory running. Few could bear to be within the belly of this mechanical beast for more than a few minutes at a time. Fewer still understood the complex movements and delicate maintenance that underlied its functions. Just the same, this was home.

The clatter and vibrations from the machine were the closest thing to a heartbeat he had felt in ages. Glancing forlornly through the small, single-paned window of his maintenance office, Magnus saw the first of Winter’s snowfall begin to blanket the forest just beyond the factory’s border. Wisps of steam rose through low smokestacks peppered throughout the factory grounds, quickly consuming the fresh snow before it could coat the dull gray concrete buildings that extended as far as Magnus could see through his tiny window against an unrelatable, alien world.

The machine belonged to him as much as he belonged to it. A youth filled with isolation and a string of infrequent, failed adult friendships had taught Magnus his place in the world. Life was one way and he was another. He had made his peace with it. He wasn’t thriving, exactly, but he was living. He was satisfied. He didn’t know any different.

The phone on his desk rang, stirring Magnus from his stolen gaze through the frosted window. The phone never rang. He drew a sharp breath and picked up the receiver.

“Y…yes?” He asked, cautiously.

“Magnus…” a strained voice called.

The foreman.



His brow furrowed, Magnus called the foreman’s name but received no reply.

Again. Nothing.

He replaced the receiver and cast a confused glance at the machine. It was working smoothly; the gauges he could see from his desk were all showing normal.

Pausing to take a deep breath, Magnus rose and walked toward his office door. With one quick look back at the machine, he turned the handle and stepped through into the dimly-lit hallway beyond. The foreman’s office was a twenty minute walk away and Magnus hadn’t been there in months. He was rarely called upon or needed for anything beyond his daily maintenance of the machine.

The phone call was an anomaly – a wild flag of disharmony in an otherwise routine day. His curiosity piqued, Magnus began his journey toward the foreman’s office.

Arriving at the foreman’s closed, nondescript office door, Magnus cast furtive, curious glances down the hallway in either direction. No one was here. The hallway stood empty and silent, save for the irregular hum of the flickering lights strung up along its length to distribute the machine’s largesse to dark corridors throughout the factory.

Magnus carefully cleared his throat, formed a fist, and rapped it slowly yet firmly against the door. Three knocks.


Another two.

Magnus tried the door handle. His grip firm and palms sweaty, a twist of the handle begat an audible “click” and the door began to swing open against the squeaking protests of an unoiled hinge.

The scene that greeted him was as unwelcome as it was unexpected.

The foreman sat at his chair slumped over his desk, a narrow metal hilt rising from his back. It looked like a letter opener but amidst the shock of it all details seemed trifling.

A pool of blood surrounded the desk, filling the air with a metallic twinge. Magnus felt his mouth fill with bile.

Movement in the shadows drew his attention. A woman, not much shorter or older than Magnus himself, dressed in the gray overalls of those that worked the factory floor, stepped into the light.

Her hair was as dark as night, pulled into a ponytail while errant escaped streaks of blackness framed her face. Her eyes were unreadable, soulless pools of infinity that took away the flickering lamplight and gave nothing back. Her features were sharp and unmistakable. This was a face Magnus would never forget. Could never forget.

She was the most beautiful woman he had ever seen.

Clearing her throat, the woman spoke, her voice firm.

“You must be Magnus,” she said. “I’ve been waiting for you.”


Being happy.

My ideas about what it means to be happy and how you get there keep changing. It’s something I’ve been thinking about a lot lately. I’ve also been sleeping horribly lately, so I’ve had some time on my hands.

Your upbringing, your genes, and your overall body chemistry play a big part of who you are and how your head works. Most of that is just hands-off immutable stuff without a doctor or therapist in the picture. But for everything they can’t touch, there’s plenty that you can. (Whether you think so or not.) That’s where you can focus if you’re trying to change things.

Change can mean lots of things, too. Whatever you think will make you happy is probably what will. You won’t always be right. It’ll take a lifetime of trial and error to figure it out. It might even take talking to someone to help you think things through. Maybe if you started working out that would make you happy. Maybe getting married would do it. Maybe a different job. Who knows. Everybody’s got different motivations.

I believe you can fundamentally change who you are for the better, but I also believe it’s super hard to do. There’s a reason people say “People don’t change,” and while I don’t think that’s true for everyone, I do think changing yourself and who you are can really be difficult. I have guesses about how to make it happen, but I think it mostly boils down to time, dedication, and influence. Mostly influence.

You can devote time and dedicate yourself to a task. Anyone can do that; it just takes focus. Influence is a much less concrete concept and influence is everything.

“Travel is fatal to prejudice, bigotry, and narrow-mindedness, and many of our people need it sorely on these accounts. Broad, wholesome, charitable views of men and things cannot be acquired by vegetating in one little corner of the earth all one’s lifetime.”

– Mark Twain

That quote kind of gets at what I’m thinking of.

Our interactions with others influence everything that we do and everything that we are, and that only gets truer as we get farther and farther away from where we started in life. Over time our own perceptions and behaviors are all increasingly tied to the people that we’ve chosen to let into our lives (and some that we haven’t).

Environment plays a part, but the people that make you laugh, make you cry, make you worry, make you indifferent…everyone you interact with, no matter how briefly, can shape who you are.

Maybe you’re like…buying a hot dog from a guy with a mean face, but he shows you incredible kindness. Two for the price of one. No questions asked, just here ya go. Free dog just because. Or maybe your eyes are puffy and red when you ask for extra onions and he notices and takes a minute to ask if you’re okay. Suddenly everyone you run into with mean faces will seem a little bit nicer. Or maybe just hot dog sellers will. Or both.

Maybe it’s enough to just work really hard to get to a spot in your life where you “feel happy” and then just go it alone. Find a nice quiet place out in the woods somewhere – some little secluded shack on the edge of a lake, surrounded by forest and bothered by no one. Maybe with a dog. Definitely with a reading list. It sounds great, but it won’t be for long.

Humans are social creatures. Without regular interaction with others, we just lose our shit. Even though solo mountaineers and sailors manage to do it for brief periods, socially isolating your brain is risky.

People are always changing. Your own concept of happiness and what’s important to you will continue to evolve and change with every passing day with or without human interaction.

The truth is that this constant cycle of learning about ourselves, about each other, and about what really motivates our own happiness will only end when we die. It’s a constant thing to chase happiness, find people who inspire and lift you up, and mold your life around it all. I guess that’s what we’re all looking for.

Surround yourself with the people, ideas, and things that have the capacity and the ability to make you happy. Do that as much as you can.

Tell the people who touch you that you appreciate them. Tell them you love them. None of them are perfect, but their good parts will rub off on you and will stay with you, hopefully pushing you to make others feel the way they’ve made you feel.

Cultivate the ideas that make you smile and follow their lead. Write silly things. Read books. Write books. Find people who share your opinions and realize that for all you’ve got in common you’re a pretty diverse crowd with a lot to learn from each other.

Don’t discount the importance of having “things,” because they can help you find your happy. Don’t just watch TV. Look at it for the content delivery box that it is, and take time to appreciate all the emotions and insights into the world that it’s brought you. Don’t just ride in cars. Look at them as remarkably engineered transportation devices that can carry you to meet friends old and new.

We’re all just motes of light, flitting through time, meeting others and changing hues along the way. Try to be as colorful as you can.