Origin of CP/M’s PIP command

CP/M was, as you probably know, the first popular microcomputer operating system. It was good but imperfect, and its cryptic command for copying files, PIP, is often cited as an example. Copy makes sense. Even the Unix equivalent, cp, makes sense–it’s copy without the vowels. But what does PIP mean? What’s the origin of CP/M’s PIP command?

Read more

Reversing some WordPress malware

Aug 2016 update: Back in 2015, some kind of spam bot wormed its way into my site. I quickly cleaned it up, then decoded the attack and posted details here. Not long after, the spambot started directing traffic to this post, because it contains enough of the magic words, I guess. Only instead of serving up spam, it’s serving up my analysis. I’d rather you read this than spam, so I’ve left this page up.

On to the original post…

A few minutes ago I received an alert that some files had changed on my site (thanks to All-In-One WP Security). But I hadn’t changed anything and WordPress hadn’t updated itself.

Here’s what I found, and how I fixed it.

Read more

Commodore hardware viruses–yes, they were possible

The conventional wisdom is that computer viruses can wipe out your data, but they can’t do physical damage. The exception to that rule was, of course, Commodore, the king of cheap 1980s computers. Commodore’s earliest computer, the PET, had an infamous “poke of death” (POKE 59458,62) that would destroy its video display, but the Commodore 64’s sidekick, the 1541 disk drive, had a couple of little-known vulnerabilities as well. Read more

CMD.EXE and its shellshock-like qualities

“So did you know there’s a Windows version of Shellshock?” a coworker asked the other day.

“What, Cygwin’s bash?” I asked.

“No, in CMD.EXE.”

I thought for a second, back to some really nasty batch files I’ve seen that do goofy stuff with variables and parenthesis and other reserved characters. Suddenly it made sense. Those cryptic batch files are exploiting the command interpreter to do things that shouldn’t be done. Then I smiled.

Read more

What on Earth is a Mainframe?: A review

I’ve been reading David Stephens’ self-published What on Earth is a Mainframe, (also available on Amazon) which is as close to z/OS For Dummies as we’ll ever see.

I deal with mainframes at work from time to time. I interacted with an old IBM mainframe of some sort when I was in college, using it to get on the Internet, do e-mail for classes, and write programs in Pascal. That mainframe has been gone almost 20 years now, but it’s more mainframe experience than most of the people in my department have.

That’s the thing. Mainframes have been on their way out for 20 years–which was why Mizzou retired Mizzou1–but they aren’t any closer to the door now than they were when I was in college. I wouldn’t call it a growth industry, but there are some tasks that haven’t managed to migrate down to smaller iron yet, and if they haven’t by now, maybe they never will. But the universities aren’t producing new mainframe administrators–ahem, IBM calls them system programmers–so while it’s not a growth area from a numbers perspective, it’s a marketable skill that isn’t going away.

That’s where this book helps.

Read more

A programmer writes about writing

I saw this piece by Steve Losh last week, and thought it was some of the best advice about writing I’ve seen in a very long time. Programmers don’t generally like to write, but I find if you tell them how, they can do a good job of it. It’s much easier for a programmer to learn to write than for a writer to learn how to program. Losh does a good job of telling how.

But beyond that, I think it’s a good reading assignment for anyone who writes documentation of a technical nature. I’ve worked with some very good writers and some very bad writers over the course of my education and career, and this would have helped both types. It would have made the good ones better and the bad ones at least marginal. The thing about writing is that if you know the rules and you follow them, it doesn’t take much else on top of that to be good.

So, if you ever get stuck writing documentation–and if you’ve been reading me for many years, I’d say there’s a pretty good chance you do sometimes–give this a read. It will help you get into the mindset you need to be in, and write more effectively. Even if you’re not a programmer. Because, even though he’s a programmer, he uses cars and guitars as his examples. So if you were writing about how to build a bookcase, his instructions would help you.

The CP/M-DOS forensics don’t prove much

I saw the headline on Slashdot: Forensic evidence trying to prove whether MS-DOS contained code lifted from CP/M. That got my attention, as the connection between MS-DOS and its predecessor, CP/M, is one of the great unsolved mysteries of computing.

Unfortunately, the forensic evidence doesn’t prove a lot.

Read more

Yahoo CEO Scott Thompson needed to explain himself

I understand Yahoo CEO Scott Thompson’s predicament. I don’t agree with how he handled it.

You see, both Scott Thompson and I work in the technical industry, and neither of us have a degree in computer science, computer engineering, some other kind of engineering, high mathematics, or another socially accepted relevant-to-the-industry field. Read more

Was CP/M overrated?

Veteran tech journalist Dan Tynan recently published a list of 10 overrated technology products, and CP/M was on his list. But was CP/M overrated? I want to dig into that question a bit.

I think everyone knows the story of how IBM almost used CP/M as the operating system for its PC, but ended up using an upstart product from a small company named Microsoft instead. We’ll probably never know exactly what happened, seeing as the author of CP/M is dead and his business partner is no longer able to recollect those events from the 1980 timeframe, and IBM and Bill Gates have no reason to embarrass themselves by revisiting the story.

But CP/M was the first and most popular operating system for early 8-bit computers, so people who used it remember it fondly, and the way Microsoft steamrolled it made Gary Kildall and his operating system folk heroes to underdog lovers everywhere. Even people who never used it and weren’t even born when Kildall’s company ceased to exist have at least a vague idea of what it was.

Read more


I started my professional career doing network administration at the University of Missouri. (I generally don’t count my stint selling low-quality PCs at the last surviving national consumer electronics chain towards my professional experience anymore.)

The University had its own IT department, but some of the larger departments, particularly Journalism, had their own IT departments as well. I worked for the School of Journalism.The School of Journalism had one of the oldest Token Ring networks in the world. It was also home to the oldest OS/2 network outside of IBM itself, dating to the late 1980s, running on pre-release versions of OS/2. Some of the pre-production IBM PS/2 Model 80s survived in production until 1998 when I decommissioned them. They don’t make ’em like that anymore.

Windows NT began life as OS/2 3.0. Although IBM and Microsoft soon stopped collaborating on OS/2 and went their separate ways, from a networking standpoint, OS/2 and Windows NT were highly compatible. By 1997, it was clear that OS/2 wasn’t going to meet the school’s needs for much longer, so we made the decision to replace the OS/2 servers one by one with Windows NT servers, eventually ending up with a Windows NT network. I was in charge of the project.

One day, all of us were summoned to a meeting. The campus had several Windows NT gurus who, while knowledgeable, were also extremely anal retentive. The meeting was to enforce new naming policies. All networks had to be named UMC-something.

“Some student set up a Windows NT domain in his dorm room named Barfy,” said the loudest, most annoying and most anal-retentive university administrator.

We didn’t like this policy. Our Windows NT network was named MUJournalism and consisted of hundreds of PCs. What’s worse was the network was extended out to the university-owned television station on the edge of town, several miles away. Renaming our domain to fit these guys’ whims was going to be a lot of work for no benefit whatsoever. Also, as I recall, there was some technical reason why the name UMC-Journalism wouldn’t work. Perhaps the name was too long for our remaining OS/2 clients and servers to handle.

And besides that, our network had been named MUJournalism, or some variant of it, since the last days of the Reagan administration.

We didn’t change the name of our domain.

We did, however, take a handful of test servers and set them up in their own domain. Our Lotus Domino administrator/programmer chose the name: UMC-Barfy.

A year or so later, I was working at my second employer. We had pockets of departments running Macintoshes, some of which were nearly as old as those old PS/2 Model 80s and roughly as dependable. To reduce acquisition and support costs, we were replacing as many of those as possible with Windows PCs made by Micron.

The Windows NT administrators at this place were less than accommodating. I needed some way to get the data from these Macintoshes onto the new PCs. Popping the drives from one machine into the other wasn’t an option–Windows NT wouldn’t read the Macintoshes’ HFS and HFS+ file systems, and the Macintoshes wouldn’t handle NTFS, the mandated standard. But besides that, the drives in the Macs were SCSI, while the PCs were all IDE.

Easily the fastest and best way to move the data would be to bounce it off a file server. Windows NT’s Services for Macintosh wasn’t the most reliable thing in the world, but it was adequate for a job like this. So we requested that Services for Macintosh be added to one of the Windows NT servers in the building.

Our request was denied.

We explained that this was necessary for a migration that was happening with great encouragement from upper management.

The request was still denied.

My boss happened to have an unused copy of Windows NT Server in his cubicle. Needing to get this done, we took an old consumer-grade HP Pavilion PC that was too old and slow to be good for much else and proceeded to install NT Server on it. As we were doing this, I related my story of the rogue Barfy networks.

I guess he liked the story, because when it came time to name the server, he seized the keyboard and typed BARFY for the name.

Windows NT finished installing, so we tucked Barfy into a corner and I proceeded to finally migrate my first Macintosh.

The next Monday, the crankiest of our unhelpful Windows NT administrators tapped on my boss’ cubicle wall. “Do you know anything about a server named… Barfy?”

He waved his hand. “This is not the server you are looking for.”

Unfortunately, Jedi mind tricks don’t work on Lutherans of German descent from Wisconsin. Or at least they didn’t work on this one.

So the two of us got our hands slapped–something which became a yearly tradition, at least for me, until this guy left for greener pastures a few years later–and he made us unplug Barfy from the network.

So I commandeered a cart, a couple of power strips, an old 3Com 10-megabit hub, and some network cables. Migrating a Macintosh became a matter of wheeling Barfy into the cubicle, unplugging the Mac from the building network, plugging the Mac into the hub along with Barfy, logging in, and copying all the user data up. While that was going, I would plug the PC into the same hub, log into Barfy, and then copy all the data back down. Then I would unplug the PC, plug the PC into the office network and reconfigure it, and haul off all of the old Macintosh equipment and put it in a pile.

It wasn’t very efficient, but it kept the uptight Windows NT administrators happy and it kept their servers clean.

And I guess it gave me a chance to act a little like MacGyver.