Flash Fiction — The Escape

Ally tugged at the stethoscope around her neck and smoothed the stolen lab coat. The gray industrial carpet was hard under her feet. The tile floor of the crossing hallway was a few yards ahead. She looked at James. “Which way?”

In the hallway a few people walked by with morning coffee. The lingering caffeine in the air taunted them. James glanced at the emergency exit sign on the wall. The blue scrubs hung loosely on his shoulders as he pulled on a surgical cap. He pointed at the hallway. “There. Then left.”

They moved quickly into the hallway. She started to read the office signs as they walked. “203, 205, 207. This is it.”

James turned the handle and pushed open the steel door. The office had been gutted. The left half of the floor was missing. Yellow painted safety railing split the room. At the far end was a single flight of stairs leading to the floor below. Electrical service panels lined the walls. He looked over the railing, seeing nothing but an old wooden desk and double-doors in the wall below. She shouldered him into the room and closed the door. “Come on. The desk.”

They walked down the stairs, alert but moving fast. The desk looked like it was from the 1950s. All metal with two drawers on the left. A telephone on sat on the scratched desktop. He dug a crumpled piece of paper from a front pocket and punched in the number. He tapped his foot, waiting. He nodded when the other end picked up. “We’re here. Wait a sec.”

She pulled the old Timex from her bag and held it for a second. The metal case was cold and twitched with each tick of the second hand. She placed it gently on the desk, taking time to center it. They glanced at each other, both nodding. “Yeah. It’s ready,” he said into the phone.

A grid of red lasers swept over the desk. He looked up but couldn’t see where they came from. The lasers scanned over the desk, narrowing in on the watch. Once they found it, the grid tightened and started to spin around on the watch face.

She watched the red glow. “I feel like I’m at the self-check.”

He put his hand over the mouthpiece and whispered, “Hush.”

He ignored her glare. Then he rolled his eyes at the voice on the other end. “You happy now? I told you it was the real deal.”

After a second he hung up the phone. The lock on the desk clicked as the top drawer slid open slightly. Ally snatched the drawer open. They both paused, staring at the stacks of one hundred dollar bills. He looked at her with a smile. “I hope you brought the bag.” He noticed her shiver as she kept her eyes locked on the money. He let the moment pass. “Seriously, you did bring the bag, right?”

She snapped her eyes to his and let out a low laugh. She pulled a black nylon backpack from her shoulder bag. “Yeah, I did. Worry wart.” She pushed the bag at him and glanced at the upper level, “Get it loaded.”

There was a slight tremble in his fingers as he stuffed the stacks into the bag. He finished and tied a knot in the drawstring. He slung it over his shoulder and nodded towards the lower set of double doors, “Let’s go this way.”

She looked back at the desk, then at James with a raised eyebrow, “What about the watch?”

He slid it into his front pocket. With a slight twitch of his head he started moving towards the doors. She moved to catch up, and was along side of him when they reached the doors. She stopped and put her hand on the door’s push bar, “Why this way? That’s not the plan.”

“That hall up there is about to get real busy. The morning shift starts soon.”

Ally’s nostrils flared as she took a deep breath. She breathed out while pushing open the door. The cool air washed in as they stepped onto the polished concrete floor. The corridor had a low ceiling, and dim wire caged work lights along the wall. A slight breeze was blowing from the right.

He turned and started into the breeze. His voice was low, “This way.”

She lightly shoulder checked him, and pointed to the left. His mouth started to open and she shook her head. They locked eyes and she opened hers wide and nodded twice. She relaxed when the tension left his shoulders and he returned the nod. Halfway down the corridor she pointed at the door to the stairs. She opened it and he followed her into the stairwell. Two floors up, she stopped and nodded at the sign by the door.

“The maternity ward? How’d you know?”

She smiled. “The stairs on the fire exit sign by the elevator. I was hoping this connected.”

“Hoping? This is not the plan. We’re supposed to meet in the alley.” He was working to keep his voice low, and it came out in a hiss.

“You went off plan first by taking the lower hall.” She pointed at the bag. “We’re targets now. I want bright lights and middle-class wage slaves around me. Not druggies and hookers.”

He took a breath, “Our ride?”

“I’ll call her. We’ll meet a block over.” She pointed at the bag again, “Split it now.”

“What? Now?”

“Yeah, it’s a trust thing. So I don’t have to worry about you taking off.” She opened her shoulder bag and held it out to him. Her feet shifted into a fighting stance.


ArchLinux on PogoPlug

Amazon shipped me the PogoPlug V4 faster than I expected. It landed on my doorstep this afternoon. It’s a little bigger than I thought, but not by much. I also ordered a couple of add-ons:

ArchLinuxARM can only boot from the top USB port. That’s why I bought the tiny flash drive. I wanted the lid to close. The wifi adapter won’t see action for a few days yet.

Updated instructions

Installation was mostly painless, with only a couple of snags that I sorted out using their help forum.

The ArchLinux package that needs downloading is 188.3 MB. The problem is that the PogoPlug internal flash can only hold about 55 MB. The instructions on the Arch site need a bit of revision.

The first is that bsdtar is not needed, and that you need to cd into the flash drive for the download to fit. The regular tar command will work where bsdtar will fail. It will throw a warning, tar: warning: skipping header 'x', but it completes without error.

Step 9 is listed as:

wget http://archlinuxarm.org/os/pogoplug/bsdtar
chmod +x bsdtar
wget http://archlinuxarm.org/os/ArchLinuxARM-kirkwood-latest.tar.gz
./bsdtar -xpf ArchLinuxARM-kirkwood-latest.tar.gz -C alarm

It needs to be:

cd alarm
wget http://archlinuxarm.org/os/ArchLinuxARM-kirkwood-latest.tar.gz
tar -xzvf ArchLinuxARM-kirkwood-latest.tar.gz 
rm ArchLinuxARM-kirkwood-latest.tar.gz

The rest of the steps work without modification.


After the reboot I was able to ssh into the new install. As always, there’s a few things that need to be done.

Update the system:

  • pacman -Syu

Install some needed packages:

  • pacman -S vim sudo

Reboot, then do some basic sysadmin tasks:

  • Change the root password (passwd root)
  • Create a non-root user and password.
  • Configure sudo.
  • Set up ssh public key access.
  • Disable root login and password logins over ssh.
  • Install the NTP client.
  • Set the local timezone.
  • Change the hostname.
  • Configure the router to give the PogoPlug a static local IP address.
  • Update your local hosts file to use the PogoPlug’s new IP address.
  • Verify ssh and sudo are working using a different terminal window.
  • Reboot and enjoy.

Future plans

Over the next few weeks I’ll be setting up the PogoPlug to be a Time Machine backup server and maybe an ad-blocking wifi access point. Stay tuned.

New Toy to Hack

It’s not here yet, but I think this might be a fun project. I just ordered a PogoPlug V4 for $19. These are now discontinued.1 The company has given up on the hardware and moved to a cloud-based product. It looks like it might be a Dropbox-wannabe. I’m not sure. I also don’t care, because I’m going to set it up to run Linux and have a nice little home server.

PogoPlug V4, front.
PogoPlug V4, front.

Its main job will be as a NAS server, with Time Machine backup ability. I’ve also got a wifi adapter coming for it. If it can handle the load it’s going to be a wifi access point with ad blocking. This way the phones in the house that can’t run AdBlock Plus will get the benefit.

PogoPlug V4, rear.
PogoPlug V4, rear.

I originally planned to get a Raspberry Pi now that the version 2 is out. The popularity of this new upgraded model makes them hard to find. Anyone that has them is stock is also charging a premium over the $35 list price. It’s also a bare board. So I’d have to figure in the price of a case for it. Plus, it’s just a bit too “fun” for what I want. The accessible GPIO pins just cry out to be hooked up to stuff. I’m plan to configure the Pogo and leave it alone. I don’t want to be tempted to hook it up to my coffee maker. It just needs to be invisible.

I’ll be doing a series of posts as I get things working. This looks to be fun.

  1. They’re being sold by a liquidator. Not sure how long they’ll last.

Changing my sleep habits

I’ve been trying to fix my sleep for the last several weeks. The last few days have been mostly normal.1 In that I’ve been going to bed around midnight and waking up with my alarm at 8:30. I’ve felt much better, and I don’t need a mid-day nap so often.

This has been good and a welcome change. But I’m finding that the wake up time is just not working for me. 8:30 is just late enough that it screws up my preferred lunch time, 1 p.m. For some reason that time feels right for a mid-day meal. It’s also early enough so that dinner won’t come too late and send me to bed on a full stomach.

Right now I have a two part plan.

First, I’ve decided to start dialing back my morning alarm in 10 minute increments. I don’t have an end goal in mind. I’m going to move the alarm back every three days. If I can get a routine going with a wake-up time of around 6:30-7 a.m. I’ll be happy.

Second, I need to fix my worst morning habit: checking email & RSS before I’m out of bed. This keeps me in bed longer, and delays the start of my day. The first step is to move my phone (which is also the alarm clock) out of easy reach of my bed. If that doesn’t work, I’ll have to block it’s Internet access for the morning hours.

I think my previous attempts at getting into a regular sleep pattern were too aggressive for the amount of sleep I was getting. Now that I’m sleeping better, a more gradual change should work.

Hopefully, I’ll be ready to go at 8:20 in the morning.

  1. Meaning that I’m not using the OTC sleep pills to get to bed.

Ulysses ePub fix – Script Update

This morning I received an email from the Ulysses developers about the ePub bugs I reported. One thing that surpised me was a request to update my script that fixes the playOrder incrementing.

One thing that came to my mind: since you already developed a small Ruby script, could you integrate the unzip and zip process within the script, so users wouldn't need this extra step anymore? — Götz

So I did!

Now the script can be run with a zip and unzip options.

$ epub-fix.rb unzip book.epub 


$ epub-fix.rb zip book.epub 

The unzip option will unpack the ePub file and then send the toc.ncx file to the rest of the script for incrementing. This will be printed to the terminal for inspection. If it looks good, go ahead and fix the OPS/toc.ncx and save it to a new file. I didn’t automate this step because the file needs to be looked at.

$ epub-fix.rb OPS/toc.ncx > new.toc

To save a step, the file can be saved when unzipping.

$ epub-fix.rb unzip book.epub > new.toc

The new file can then be moved into place with the following command.

$ mv new.toc OPS/toc.ncx

Then the file can be zipped up with the script.

$ epub-fix.rb zip book.epub 

If everything worked, this message will be printed.

freshening: OPS/toc.ncx (deflated 59%)

Now the .epub file is all packed up and ready to be verified.

The script now lives on GitHub:

Note: Just to save ruby from puking error messages, there’s a generic “Oops” error now. If that shows up it usually means there’s either not enough or too many command line options.

Managing Receipts with Smart Folders & Hazel

Managing receipts is a necessary evil for anyone that needs to track tax deductions. I wanted a way to keep my receipts in one place on my computer, and have an easy way to mark the ones that are deductible.

Keeping track of emailed and downloaded receipts is usually much easier than having to file paper copies. Usually. The one advantage of paper is that it can be glanced at. A folder full of PDFs isn’t something that be looked through with a quick riffle of the thumb.

There’s three tools on the Mac that make filing and sorting PDFs much easier. The first is built in — the Web Receipts folder. The second is the file moving utility Hazel. The last makes for easy viewing of the sorted files, Smart Folders.

Web Receipts

In the bottom left of every print dialog box is the PDF menu. One of the pre-loaded locations is the Web Receipts folder. This folder lives inside the Documents folder and provides a nice catch-all for PDF printed (saved) receipts.

PDF print menu.
PDF print menu.

Why PDF print? It’s just easier. This way web pages and emails all come out the same. And they all go to the same folder, without having to do any Finder navigation.

The nice thing about a central location is that it also works for scanned paper receipts. Once scanned they’re treated like any other PDF.

The Sorting

This is the heavy lifting of this project. And like any good project manager, I outsourced. Hazel is my go-to app for jobs like this.

Most of my email receipts come from either Amazon, Apple, or eBay. Those are my main focus. There’s a few from other various places, but they get handled more generically.

The basis of all my Hazel rules is to rename the file to start with the date. This makes them easy to find and keep sorted. I use the format YYYY-MM-DD at the start of the file name. This my catch-all “other” rule.

A basic Hazel rule.
A basic Hazel rule.

The site specific rules are at bit more complicated than this. They can do things like find the order number from inside the PDF and add it to the file name. For now, the one renaming rule is enough to show how this works with Smart Folders.

The rule adds two tags to the PDF: receipt and Red. It also files it into a subfolder. Subfolder filing is optional, but it does make it easier if you have to manually dig through the Web Receipts folder. The tagging is the important part.

The minimum processing that has to happen is:

  • The file is renamed to have the year at the start of the filename.
  • The tags, receipt and Red are added.

Anything else, like order numbers and subfolder filing, are a bonus. Feel free to experiment with Hazel. It’s quite powerful.

Smart Folders

Instead of having to dig through the Web Receipts folder to see what we’ve looked at and finding deductions, we’ll let the Mac show them to us.

The easiest way to create a Smart Folder is to open a Finder window and navigate to the Web Receipts folder. Then choose the “New Smart Folder” from the Finder’s file menu.

The Finder File menu.
The Finder File menu.

You should see a new window on top with a purple icon and the title “New Smart Folder.” The first step is to make it only look for PDF files. Click the + to add a search.

Adding the first search.
Adding the first search.

Then, set the Kind is to PDF. This will show every PDF if the Web Receipts folder.

Adding the Kind search.
Adding the Kind search.

We still need to narrow it down to our tagged files. Hit the + button to add a search for our tags.

Adding the Tag search.
Adding the Tag search.

Now, only PDF files that are tagged receipt or Red are shown. But if there’s more than one year, it will show them all. It’s an easy fix to add another search that looks at the year at the front of the filename.

Adding the year search.
Adding the year search.

Now save this Smart Folder with the name Unfiled. It’s easier to use if you add it to the Finder sidebar, using the checkbox in the lower left.

This Smart Folder will now show all the receipts that Hazel has added tags to. But we want to know which ones we need to keep for tax deductions, and which ones are just purchase records.

Deciding if a receipt is deductible or not has to be done manually. Usually once a month or so, I’ll look through Unfiled. I don’t want a huge backlog at the end of the year, so it’s easier to sort them monthly. When I look at a receipt and if it’s deductible, I change the tag from Red to Green.

But wait! Now the PDF is gone from Unfiled. Don’t worry, it’s an easy fix. Find where you saved the Smart Folder, then use the Finder’s Duplicate command. Then change the name to 2105 Receipts. Right click it and choose Show Search Criteria, then change the tag search from receipts Red to receipts Green. Then drag the new Smart Folder over to the sidebar. Now you have one folder than shows the red files and another that shows the green files.

The green files are the ones that are the tax deductions. Since they’re all in one place, you can do things like make a zip archive to send to your accountant, or copy them to your Dropbox.

When tax time rolls around, your receipts are already sorted and ready to go.

The permanence of Twitter

In 2010, the Library of Congress announced it had started archiving all of Twitter.

Have you ever sent out a “tweet” on the popular Twitter social media service?  Congratulations: Your 140 characters or less will now be housed in the Library of Congress.

That’s right.  Every public tweet, ever, since Twitter’s inception in March 2006, will be archived digitally at the Library of Congress. That’s a LOT of tweets, by the way: Twitter processes more than 50 million tweets every day, with the total numbering in the billions. §

On April 28, 2010, the LOC published a FAQ about what was collected. It mentioned that only the public tweets would make it into the archive.

Private account information and deleted tweets will not be part of the archive…There will be at least a six-month window between the original date of a tweet and its date of availability for research use. §

The last update from the LOC was in January 2013. In that time, we learned the LOC had almost finished unpacking the original archive file provided by Twitter. In addition, the LOC now is receiving hourly updates from the Twitter “firehose.”1

I might be wrong, but it looks like there is no such thing as a deleted tweet. The firehose is a real-time stream of tweets. The updates to the LOC are gathered from the firehose and uploaded hourly. So, any tweet posted is going to make it into the uploaded file. If the tweet is deleted later, it was still included in the uploaded file.

So, how does the LOC know if a tweet was deleted? I don’t think there’s a way for it to know. From the published information, the LOC isn’t doing any analysis of the tweets. The LOC receives the upload, and moves the tweets in it to permanent storage.2

If it receives a tweet in the hourly upload, and that tweet is deleted the next day, how could it tell? I don’t think the LOC is going to search for each tweet to make sure it’s still live. Doing that would mean continually searching the archive and removing the deleted tweets. It would also mean destroying the archive’s value as historical record. That would defeat the purpose of storing the tweets to begin with.

So, once a tweet is bundled up and shipped to the LOC, it’s in the archives forever.

And you thought a permanent record didn’t exist.

  1. The LOC tweet provider, Gnip, is one of the two big data partners of Twitter.
  2. In this case, tape archives.

Word Count — Week 8

It’s time for my weekly word count check-in. At the end of every week, I post a screen shot from my writing results spreadsheet. This shows the current week and the three before. My week starts on Monday. The numbers are current through Sunday night. I also only average over six days. This allows me one day of no writing that doesn’t impact the weekly totals.

I spent the first part of the week learning about how to make eBooks. But for writing, this was a week of poor concentration. I wasn’t able to focus on much of anything. It wasn’t writer’s block. It was more of a feeling that I just didn’t have anything worth writing inside me. Instead I spent time on Twitter. Overall, a poor showing.

Week 8, February 16th – 22nd:

Week 8 results.
Week 8 results.

My other posts tagged word count.