Travelogue

DEPARTURE

I am on a plane.

It's been well over a decade since I've flown anywhere, almost 20 years since traveling for work. I'd never even heard of early check-in before yesterday (when an app on my phone when got really insistent about doing so). I went ahead and printed the boarding pass since a paper ticket sounded familiar, and then carried it around the airport. I loitered for while near the check-in counters, reading my oddly-homemade ticket and making sure it would get me to my seat.

The security check wasn't too bad. There was that familiar panic of trying to get all my things into the little tub, convinced I was going derail the entire process causing the line to back way up. People would stamp their feed and huff with rage while I trembled and wept. It was fine. I strolled right through in step with everyone else. Again, not too bad.

At the gate, I went all in and plopped my phone down on the scanner and checked in with the QR code on my screen, thus boarding without using my paper ticket. That part was neat.

(Actually, I'm 99% sure that the barcode was an Aztec code, not QR. Not getting out much doesn't make me some kind of savage.)

Upgrading to first class was an indulgence that I considered a reward for being willing to travel. This was a sound decision. They had free booze, but I didn't want any. They had free lots of things that didn't really interest me. The true luxury of first class can be summed up in one word: ELBOWS. I spent four hours in the air and didn't have to think about where to put my fucking elbows. Not even once.

Money well spent.

ARRIVAL

It could very easily be my imagination, but I swear every city has a unique odor. Not in a bad way or anything, but they all smell different. Nevada smells like a hot street near the beach if you subtract the smell of the actual ocean. I don't really expect that to make sense to anyone else.

The first order of business after getting to my room was to turn on the TV. I love watching the local news in a new city. Everyone is so ugly and strange!  Look at those weirdos, talking about things happening in obviously fake locations.

The only thing to really catch me off guard was the hotel mini bar. Rather than retail packaging, candy and pretzels were presented in nice little boxes that all matched. It looks nice and no doubt gives the hotel better margins. I'm sure they were taking an absolute bath selling 1.7 oz packages M&M's for $13.

What I wasn't ready for was the "Intimacy Kit" ($32) at one end of the tray. It's a perfectly reasonable thing to sell. The problem was the contents:

More specifically, the order in which they're listed. I can't find an objective pattern to it (total items, alphabetical order, number of vowels, etc.), so I'm left to assume this is the order in which you're to use them. I worry that I've grown this old and still don't understand how sex works.

Desktop Metadata Access

One of the main purposes for this blog is for me to find a way to catalog some of my work. I tend to forget about projects pretty quickly after they're done, so the popular question, "What have you been working on recently?" is usually met with entirely too much vacant staring.

This was a quick project to address a minor (but long-running) nuisance for me. I've been pushing it out here and there in case other people were also annoyed.

I've mentioned before that we're a PBS Member Station. As such, we've got a TERRIFYING BOUNTY of video assets, the bulk of which are full-length programs. Those programs are stored as files, and those files all have numeric names the likes of P123456-001 and L-00001234.

Seeing a folder with several thousand of those can be a drag, so I made this:

When you find what something to identify, right-click the file and select Lookup Program

And an info window will open with more information

Easy-peasy. The backend is straightforward--there's a lightweight web server running PHP and MySQL. The context action (a registry entry and a batch file) stuffs the file name into this:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --chrome-frame "--app=http://ceres/OPS/getprog.php?FL=%~n1"

It can work with anything, but Chrome has the ability to display a page without any address or navigation bars (app-mode). Otherwise, we could just pass the name to this:

start http://ceres/OPS/getprog.php?FL=%~n1

and the default browser would display everything.

This system is a good bit faster than trying to play everything. (Of course I love our content! Just not all at once.)


Privacy PANIC! (or: Corporate Location Services)

Well, it could become a panic.

Being constantly disappointed by the horrific cost of RTLS (think indoor GPS) combined with a recent edict to better track time and attendance in my department has led to this glorious albatross:




Now anyone can figure out what I'm (maybe) doing and (very generally) where I am while at the office! What's to keep me from tracking everyone doing everything, you ask?

Starting at the top we have:

FOUR separate scheduled tasks so that when my computer is locked (or idle for 5 minutes) my PC STATE can be reported as active or not. That involved way more jacking around than I'd imagined, but it could be the most accurate part of my little system.

EIGHT separate Outlook rules that run when I'm notified by our security system that I've swiped a reader to open a door (one for each door). The best their server can do is let me flag my card as "lost/trace" so it sends email every time I use it. Then Outlook updates a text file on the network.

ONE bad SNMP query. Ah, well. Turns out I didn't find the right OID for the hookstate of my phone and I don't really feel like digging it up (Cisco SPA112 if you've got the secret MIBs). I never use the thing anyway, since it's mostly there to be lovely. Query runs when the page loads.

And finally, a very rough cron job running on the machine that manages our WiFi. It posts/renames all of the http/inform connection files from the APs to the server, then PHP tries to find which one mentions the MAC address of my phone. Every single minute the thing runs. Oy.

That result also feeds a tag to load a little map with my current coverage area. One of FOURTEEN little maps.

Fun? Oh, yes! Not so practical, though. I only made it this far because I didn't have to worry about including any logic. I can't imagine trying to scale this to more than just me and my one device.


Monolith: EXPOSED

It bears mentioning that the purpose of this blog is actually to archive information about projects I do. You like it? FAB! But seriously, I tend to forget everything I do as soon as I'm done. This way I don't have to try to remember things on the spot.

And now, the long story of the Monolith, WFYI's Broadcast Archive Portal.

Chapter One. Nosy Beginnings.

Several years ago, a thing started bugging me (which is how most of my adventures start): We've got these CRAZY big disk arrays all arranged to take video and send it out over the air. Everyone was on and on about convergence and file-based whatever. These buzzy terms were as popular and meaningless as synergy was for general business.

The bugging was from this: if you wanted to see any of the programming stored in these servers, you had to wait and watch it on television when it aired. It wasn't quite that bad, but it was still bad. There were two locations in the building where you really could dial something up, and it was a lot like working a VCR.

I wanted to see what was in those things, and a mild obsession began.

There were some fantastic false starts and total failures, but the fun part began when I finally discovered that the things supported FTP. They even had their own weird implementation built around moving video. I was eventually able to pick a show, pull a copy from the servers, and then watch it at my leisure. No need to go anywhere special, and no big console buttons to push.

And I was happy.

The obsession didn't end, however. With that initial success, I wanted to be able to let everyone watch whatever they wanted with a minimum of screwing around.

First up was the file format: GrassValley's proprietary GXF. Great when used inside GrassValley's K2 system, but awful anywhere else. Really awful.

The K2 was built wishing only for speed. It had to guarantee the ability to take a video signal, turn it into an MPEG2 file, and get it written to disk without losing a single frame. You kids today don't know how impossible that used to be. So it was good and fast, but not even remotely efficient. Doing all that work in real time was only possible by using very fast storage to collect stupid amounts of data.


More from INDOT

Other things actually led to the Traffic Cam Selfie project. Namely, wanting to pull up traffic cameras (dammit) to peek in on my daily commute before leaving the house. This was born of the knowledge that all of this data was floating around out there, and then wishing there was some way to benefit from it. (again, big thanks to INDOT for making this all open)

First was a simple page that shows traffic cameras between home and work:



Not too bad. Only downside is how quickly the images get stale (>60 seconds). At least I'm living closer to how TV detectives do.

More recently I stumbled across a nice json page that aggregates what's on those big highway message boards for INDOT's web site. That was a pretty cool find, so I fed it to a little LCD display:

My very own DOT message board!

I was deep into scripting an ESP8266 module to fetch/parse the json directly without me having to do anything when it dawned on me: This is the most useless thing I've ever done. Seriously.

Still fun, though.