Zip Disk Data Recovery: How Not To Do It

Zip disks seemed pretty awesome in the 90’s. They could hold 100 megabytes, which was excellent compared to the 1 megabyte or so a 3.5″ floppy could hold. It was especially nifty for me, because I was doing illustration and graphic design at the time, and trying to get my art to the local print shop on floppy disks was a challenge.

Back then, I used Mac. Just as they do now, Apple tended to make each generation of hardware incompatible with whatever plugged into their last generation of hardware, so few years passed before that zip drive, with its SCSI interface, was in a box with all those precious zip disks.

Digital Archaeology

Fast forward to 2016. Keeping this box of disks is not making my life better, but it would sure be nice to get at that old data. I was determined to either recover that data, or satisfy myself that it was beyond recovery. Once I had gone through that process, I would be ready to stop lugging that box around.

This blog entry is about the data recovery attempts that did not work out.

Data Recovery Services

Services like RetroFloppy will try to recover your data for you. All you have to do is mail your old disks / tapes / clay tablets to them and pay a bit of money. The prices are reasonable, especially if you just have a few disks. But I was in a do-it-yourself-ish mood. Plus, I had eighteen disks in the box. That could add up.

Power Mac G3

I want to talk about the Power Mac G3 for a moment. It is my favorite computer, ever. It was a handsome blue, it had plenty of room for expansion cards, and the motherboard was attached to a hinged door, making it super-convenient to get at components.

My first experiences with this computer were not entirely positive. As Apple still does today, they threw backward compatibility out the window with this generation of computers. It was annoying that it had no SCSI slots, so that none of my peripherals would plug into it. It used that new-fangled Ethernet networking instead of trusty ol’ AppleTalk, which made transferring my old files a pain. Plus I didn’t appreciate the new “USB” thing they were doing with the ports. But I got used to all that. I really liked the design…certainly cooler than the beige boxes Apple had been kicking out.  The motherboard being attached to a door made it easy to install all those new peripherals I’d have to buy.

One of those peripherals was an expansion card that gave me a SCSI port, so I could plug my old zip drive and printer into the new computer. SCSI devices each have a pair of ports in them, so that you only need one port in the computer. The zip drive plugged into the computer, the printer plugged into the zip drive, and there were probably a couple other devices in the chain that I’m forgetting. Good system (tho there were gotchas in the setup.)

This G3 had slept like Cthulhu in various garages and basements since needs moved me to other operating systems and hardware manufacturers. It was eventually buried under a pile of cast off technology (a pile which my wife called the “computer graveyard”.) In recent years, I jettisoned most of the computer graveyard, but I kept the G3. Now was the time dust it off and see if it could still operate that zip drive!

The answer was a resounding no. It would power on, but the disk made a distinctive clicking noise. My days as an IT guy told me the hard drive was a goner, even before the “could not find startup disk” icon appeared.

That was easily solved, because I still had a few IDE hard drives left (I admit it…part of that computer graveyard is still with me.) Plus I still had the system install CD. A swapped hard drive and disk insert later, it booted (see picture above.) I got to the desktop…and then it froze. No response from mouse or keyboard. I tried restarting…and it would not power on again. Some physical troubleshooting told me the power supply was kaput. Which was its right. Powering up one more time after a decade spent as an overly humid spider condo? You go power supply! You’re a hero.

I gazed for a moment at another, far more modern, computer with a power supply that might have done the job…and decided against it. Getting that power supply hooked up would take some time, even if it was 100% compatible. And I had no guarantee that the SCSI card would work, or that the zip drive was functional…it was time to try something else.

I lovingly closed up the remains of the G3, disconnected it, and put it in the car for a trip to the e-waste center. It had served with honor, and deserved its rest.

USB Zip Drive

Amazingly, Iomega still sells these drives! It turns out there are enough people using electronics from the 90s that there is a market for them. I’m guessing there are companies out there with warehoused boxes full of these disks? Just guessing.

I nabbed a USB zip drive from Amazon for around $60. Turns out that was a good deal. Looks like $100 – $200 is a pretty common price.

Zip drive on Ubuntu

Ubuntu is my go-to operating system now days. I’ve developed a lot of software over the past decade that was meant to run on Ubuntu servers, so using Ubuntu on my personal computer made certain kinds of testing easier. I figured I’d just plug the USB zip drive into my computer and whammo! Done.

But it was not to be. Couldn’t get the zip drive recognized by Ubuntu 16.04. Good thing I had other options.

Zip drive on Windows

I always keep a Windows machine handy. As a software developer, it’s important to be able to make sure things work on the operating system that has been dominating the market for years. At least, that’s my excuse. Really the main reason is the video games.

I plugged the drive in and presto! Windows recognized it right away! Then it offered to reformat the “unformatted” disks. Because these disks were formatted by Mac OS 8.5 … and Windows had no idea how to speak that dialect.

And so the saga continued

I still had options. Between being stubborn, and being an electronic pack rat, there were more avenues to explore. But that’s a topic for another blog post.


AppScale: What It Does

A friend recommended AppScale as a platform for a software project.  It took me some time to wrap my head around what AppScale was.  Here’s my attempt to package that information in a way that would have saved me some hours, starting with some background on the problem that it solves.

What is Platform As A Service (PaaS) ?

Web developers have traditionally had to wear a system administrator hat to get their stuff live. They write their web sites in PHP or Python or Ruby or whatever, but then they have to set up infrastructure. The classic example of infrastructure would be a couple web servers, a database server, and a load balancer.

The traditional way to set all that stuff up is to buy servers, configure the software, and then plug them into the internet. For many institutions, a superior option is “Infrastructure as a Service” (IaaS); rent managed servers (or virtual servers.) This has advantages like spreading the cost out over a longer time, avoiding physical hardware setup, and hosting concerns such as physical security and electrical / network failover. You still have to do some software configuration, though (web server software, database software, load balancer settings.)

Examples of IaaS offerings are:

  • Google’s “Google Compute Engine”
  • Amazon’s “EC2”

PaaS takes managed hosting one step further. Instead of personally configuring the infrastructure software, you add a config file to your code that says something like “gimme a MySQL database and a cloud of 1-10 web servers that use index.php to handle all web requests.” You upload your code and config file to the PaaS system, which does the grunt work to set up the database server, web servers, and load balancer, and gets them all talking to each other, and configures the growth / shrinkage of that web cluster for you. This means you’re still specifying what the infrastructure should be, but it’s a much higher-level process, and less time-consuming.

Examples of PaaS offerings are:

  • Google’s “Google App Engine”
  • Amazon’s “Elastic Beanstalk”

To sum up: first there was running servers yourself. IaaS abstracts that so that to get you out of configuring hardware. PaaS adds another layer of abstraction to get you out of configuring software.

Why PaaS is Scary

PaaS solutions are generally just a layer on top of IaaS solutions, and IaaS solutions are not standardized. So if you are hosted on Google, you’re probably storing files on their proprietary “Cloud Storage”. If you’re hosted on Amazon, you’re probably storing files on their proprietary “Simple Storage Service” (S3). Either way, if you have to change hosting vendors, or if a client requires your app be installed on their premises, you’re out of luck. You’re going to have to reprogram the parts of your application that use proprietary components.

The need to change hosting vendors can come up unexpectedly, even for a web developer who is an expert at traditional hosting. The high level of abstraction to build PaaS on top of IaaS can create surprises as operations scale up. Problems that I have seen reported on the internet include:

  • Wait, so we get charged per database query?
  • What do you mean my script is terminated if it runs for more than 60 seconds?
  • They changed the pricing model? Our design is going to be too expensive now!

One can choose to blame the developer or the host for stuff like this, but regardless of fault some times it makes sense to move to another host.

Google’s Dev Environment

Google provides an App Engine development environment. It’s an abstraction layer that allows software written with App Engine API calls to proprietary stuff (like Google Cloud Storage) to work on a plain ol’ computer, outside the cloud. This is nice for developers because we can build and troubleshoot locally without spinning up & paying for hosted resources. It’s not meant to be a production solution, tho.

AppScale to the Rescue!

AppScale is an open source implementation of Google App Engine. You load it onto your machine a lot like the Google App Engine dev environment. You can then run the software you wrote for App Engine locally on your computer. Or you can provide a slightly different command and deploy the software to Google. Or you can vary that command a bit further to deploy the software to Amazon. So it’s a “get out of jail free” card (or “get out of Google free”.)

You don’t really write applications to “run on AppScale”. You write them to run on Google App Engine, and AppScale does some abstraction magic to make it work anywhere you designate. The deployment target can be Google, Amazon, or a server or cloud of servers that you store in your closet. Of course, the autoscaling features only work on Google or Amazon. AppScale can’t add another server to your closet.

Replacing Google Costs Some RAM

AppScale needs 4GB of RAM. That’s beyond the “free” tier of Google or Amazon. My desktop has 4GB of RAM, so when I try to run AppScale in addition to an OS, the computer slows to an unuseable crawl. I don’t know what component(s) of AppScale have this requirement. I’m hoping it’s only the master node that needs this, because if all servers launched by AppScale need 4GB plus room for everything else, that could be a very expensive cluster of web servers. Maybe it’s configurable? More investigation is warranted.

Getting Started

If you want to grok AppScale, don’t start at the AppScale web site! Start by playing with Google App Engine. Doing their Python tutorial was a breeze. When I tried the PHP tutorial, I was quickly bogged down in installing software from source and troubleshooting compiler dependency problems.

Once you feel like you know what App Engine is all about, THEN play with AppScale. But don’t try to follow the instructions on the AppScale web site; those look impressive from a marketing perspective, but there are missing steps. Instead go to . That tutorial directs you to install a virtual machine that already has AppScale configured. Once installed, you can SSH into the machine to edit code, and you can point your browser at the machine to see your app or a nice administrative interface that shows you how busy the app is. In this configuration, app scale runs all services (web, database, etc) on a single server, and does no autoscaling. But remember: don’t even try this unless you have well over 4GB RAM. If you don’t you’ll have to pay Amazon or Google a few bucks to rent one of their servers and try it there.