Adam Tuttle

Learning Lessons

If you stopped me on the street and asked me if I had good enough backup coverage for all of the important computers and files in my home, my answer would be an instant and unqualified, "Yes." And to a certain extent, that's true.

Pretty much the only things not continuously backed up to my BackBlaze account are my downloads folder, as things in there are transient and never stick around for long, and my Virtual Machines folder, because the virtual harddisk files are enormous and some of them change on a daily basis (the idea of having to upload two 30gb files on a daily basis gives me heartbleedburn)... and because given enough motivation and time they could all be rebuilt. My virtual machines are all either test environments -- like a ColdFusion 8 server -- or MSSQL (and therefore Windows) backups of production databases with which to do development and debugging.

In a pinch, I could recreate those test environments; re-download those databases.

You can probably guess where this story is going: My laptop died. Sort of. The tl;dr version of the story is that it appears that the graphics board is shot and I have to mail it into an Apple repair depot, and may not get it back for 5-ish business days. And that's where it gets interesting, and why I thought it would be worth writing about here, as a cautionary tale of sorts. It could happen to you.


Late on Wednesday evening, I was listening to Spotify and occasionally watching some YouTube videos while building a new desktop computer for my wife. As I was finishing up and cleaning off my desk for work the next morning, my laptop crashed -- but not in a manner I've seen before on OSX. Instead of the "gray screen of death" I got what looked like black and white pinstripes. I didn't think much of it, just powered down and went to bed.

In the morning I made my kids breakfast and packed their lunches as usual, took a shower, made myself breakfast and sat down at my desk. When I turned on my laptop, it didn't progress past the gray boot screen with the Apple logo. With only my phone to search the web for debugging tips, I managed to try booting into safe mode (blue pinstripes!) and reset the nvram/pram, but was still unable to get the machine to boot.

I made an appointment at a semi-local Genius Bar (the closest one with early availability) and headed off for an hour drive with my laptop tucked under my arm. After some praise from the Genius for the physical condition of my now-long-out-of-warranty laptop (I saw in his notes there was a spot for this detail, and he wrote, "excellent.") and a few diagnostics, we determined that the most likely cause was a bad graphics board. Known good RAM and HDD replacements and it still wouldn't boot, and his other diagnostics gave a clean bill of health to every bit of hardware they checked.

The bad news was that they didn't have the part I would need in stock, and if they were to order it, it probably wouldn't arrive for 5-ish business days... so either way I'm without my laptop for a week.

The worse news was that Apple requires that the SSD be installed when shipping it in for repair, and says that it might choose to reformat the drive. Obviously less than ideal.

And of course, I've got some important deadlines looming and can't afford to waste additional days rebuilding VM's.

I left, laptop and now-removed and anti-static-bagged SSD in hand, with a plan to drive to a local TigerDirect store, buy a sled or enclosure for the SSD, drive an hour home, back up the SSD, drive an hour back to the Apple store to drop it off for repair, and then drive an hour home again. 3 (more) hours on the road and a lot of gas money wasted seemed pretty bleak. Fortunately as I was giving Steve a sitrep he prodded me and we agreed that a store full of computers and "Geniuses" should be able to make a backup of the drive without me spending 3 hours on the road. After confirming that they could (coaxing them into it, really -- and they still charged me $99 for the pleasure), they agreed that if I supplied a backup drive they would image the installed SSD onto the backup drive that I could take home with me.

That was all well and good, but my god it took forever. I left my house at 9:45 for a 10:45 appointment at the Geinus Bar. I left the Apple Store bound for TigerDirect on a mission to get the backup drive and get back to the Apple store for my new 1:00 appointment to have the drive imaged. By 1:30 I was picking up a horrible lunch in the food court.

To their credit, Taco Bell replied quickly offering to rectify the situation somehow, but I forgot to call them when I was killing time in the parking lot. I will be calling them soon and hope to have good things to say about the situation in a day or two.

After lunch, instead of wandering around the mall aimlessly I decided to sit in my truck and listen to podcasts -- at least that would be semi-productive. At 4:00 lunch was coming back to haunt me so I headed into the mall. While I was there I decided to check on the status of my drive, and it was just wrapping up. By 4:30 I had signed the paperwork and was on my way home with my backup. At 5:30 I walked in the door and did what I could to help get dinner finished and on the table for the kids.

So that was my workday yesterday. I hope yours was a bit more productive.


The moral of the story is that I should have been doing local backups of my VMs. Even just having them live permanently on the external drive is equally dangerous, because that drive could die, too. If I had been using Time Machine for just these files, or even just regular manual backups to my external hard drive, I would have been fine, and home before 1:00, almost $200 richer.

And you can bet that as soon as I get my laptop back, I will be doing exactly that.

Published 2014-04-25 @ 08:15 in Meta

Presenting on Adding More Awesome to Your Life at Philly Tech Week 2014

I've agreed to do a short presentation at Philly Tech Week this year. I'll be talking about how I use Node.js and Heroku to integrate and automate "all the things" -- basically, how I make my life easier and more productive, for free.

If you're in the area, it looks like it's going to be a great event, so you should buy a ticket ($25 and up) and come check it out!

Published 2014-03-26 @ 03:14 in Speaking

Fix: What Are These Ugly and Useless Error Pages on My Fresh ColdFusion 10 Install?

I recently installed ColdFusion 10 on a new server, and of course I followed the CF10 Lockdown Guide [pdf].

Then I started moving sites onto the newly configured box and testing things out. And I got this lovely piece of work:

(Full disclosure: there are two possibilities, a "missing page" error, as shown above because it's easier to reproduce now for the purposes of the blog article, and a "there was an error" error, which is what I was running into at the time. For all practical purposes there is no difference.)

Viewing the source of this error message, it was clear that it was generated by ColdFusion. The references to files inside /CFIDE/ are a dead give away.

<html>
    <head>
        <InvalidTag http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>404</title>
    <link href="/CFIDE/administrator/templates/assets/style.css" rel="stylesheet"/>
    </head>
    <body>
    <div id="header"></div>
    <div id="spot">
         <image src="/CFIDE/administrator/templates/assets/spot.png" />
        <div id="title">404</div>
    </div>
    <div id="content">
        The page you are trying to access could not be found. Please try again or notify the administrator.
    </div>
    </body>
</html>

And as soon as I saw this I knew instantly why the image didn't work and the page was unstyled. Because the lockdown guide instructs you to remove the /CFIDE/ virtual directory from public-facing sites such as this one. I was curious what it would look like styled, so I briefly added the virtual directory to the site to get a look at it. This was the result:

... marginally better, I suppose. And once I knew that these errors were being served up by ColdFusion, I knew it had to be something I had done as part of the lockdown guide... Except that everything there I was familiar with. Except Secure Profile. Secure Profile is a mysterious setting you can enable during the installer that sets a bunch of settings to more secure default values.

Unfortunately, there's no quick "undo secure profile" toggle, to see if it is causing any problems for you. It just twiddles some knobs. You're capable of twiddling them too, but can't just flip them all like a light switch.

Right, so my hunch is that Secure Profile is causing these error pages. How do I turn them off? I puzzled about this for a few minutes, and eventually decided to read every setting it changes, hoping to find the culprit there. And as luck would have it, I found it pretty close to the top. Items #5 and #6 are Custom missing template error, and Custom site-wide error template. And, as much as I like to harp on Adobe for doing a poor job writing documentation, this page very nicely describes where to find the settings in question ("Server Settings > Settings"). So pop open the CF Administrator and find these settings down near the bottom of the general settings page:

Just empty these values out (or replace them with your preferred error pages) and submit, and you're good to go.

Published 2014-03-17 @ 09:00 in ColdFusion

A ColdFusion Community Memeber Needs Your Help

Jared Rypka-Hauer has been a long time contributor to the CF Community. He's been writing -- remember FAQU? CFDJ? He wrote for them both -- and teaching for years. He's been a prolific presence in some CF beta releases (e.g. improving the CF product directly). He's contributed to open source CFML projects like Fusebox 4 and 5, Model-Glue, CFEclipse, Transfer, Reactor, and something called Tartan... whatever that is (reminds me of Trantor). And cf.Objective() is his brainchild.

All of this is to say that Jared has given much of his time and energy to the CF Community, without ever asking for anything in return, for many, many years.

And now he could use our help.

If you can spare a few dollars, every little bit will help. I mean seriously... Can you just sit there and let this little girl have her electricity and heat turned off? I hope not.

Published 2014-03-14 @ 08:30 in Meta