Friday, March 30, 2018

Glimpses Into the Future

Working With Smart People

I've mentioned in past blogs some of the people that I've had the unique pleasure and good fortune of working with.  Some of these people were visionary, out-of-the-box thinkers, and viewed technology as a springboard into new and exciting frontiers.

As I worked with these people, their way of thinking rubbed off on me. I think I was already a bit predisposed to thinking like them, but they certainly accelerated the thought processes.

Here are a few of the ways that they influenced my thinking.

Unix vs. Windows vs. PICK

I remember that there was a conference held in Canada shortly after Expo 86 (or possibly the same year?).  This conference included several key speakers, for an important debate.  The debate was a critical comparison of Unix, vs. Windows, vs PICK.

Most PICK systems still ran as full-fledged operating systems, not database shells hosted on another operating system, so giving them a voice, for the organizers, made perfect sense. It was the battle of the operating systems.

I want you to remember that at that time, SQL databases were very new. Most business applications used ISAM databases, a slightly smaller set used multivalue variations like PICK or MUMPS, with PICK being the front runner, and a very small number used SQL of some sort.

In excess of 90% of north american library systems were based on PICK.  In excess of 95% of automobile dealer management systems were either ADP on PICK or Reynolds and Reynolds on PICK.  Many manufacturing systems were PICK-based.  I can name numerous fortune 500 companies that still have PICK-based applications, and PICK at that time existed in a majority, if not all, of the fortune 500.  Prime Information, which was PICK implemented as a shell on PrimeOS, was huge in government and the military (the entire NORAD system ran on Prime), and there were many other examples.  As a result, ignoring PICK in the debate would have been seen as invalidating the debate.  The organizers were possibly unaware of the growing groundswell of PICK variants that were being developed as a shell on top of Unix.  Prime Information had forged the way, very early on, as they developed a shell on top of the somewhat Unix-like PrimeOS, but the majority of PICK applications were still running on platforms that provided all O/S services as well as the database, run-time, and BASIC compiler and interpreter services.

So the organizers asked someone from Microsoft, a Unix technology specialist (from AT&T, if I recall correctly), and Dick Pick, to speak.  I got to pick up the Microsoft speaker at the airport and take him to his hotel. On the drive over, I told him that I thought the debate was wrong-headed.  That, in my opinion, he would see the day when a Microsoft computer would be the user's workstation, that connected them to an application, in some cases running on some version of PICK, implemented as a shell on another operating system, probably Unix (Windows NT didn't exist yet.)  He was quite intrigued.

As an interesting note, my current company has an army of Windows users, who connect to a legacy application written in jBASIC (a PICK BASIC variant) running on a version of PICK called jBASE, hosted on Unix servers, with an underlying Oracle Database storing the multivalued, non-relational data, so the reality was even more complex, and more specialized that anyone had dreamed of back in the 1980s!

News and Shopping Online

Then there were the networks. I remember using networks like PrimeNet, the Internet, AOL and Compuserve.  In the day, Compuserve was the big one, especially for commercial use.  As I worked with them and saw the slow emergence of visual, video and voice capability, and playing with video editing technology, the potential began to become clear to me.

I remember telling my wife and family that one day she would get most of her news online, that she would buy products online, and be able to share information and communicate with her family, including in remote places, through an online experience.  She laughed at the time, but she isn't laughing now!  We buy things online, we get our news online. We have a Netflix subscription and watch interesting stuff on YouTube.  We buy things on Amazon and Etsy and my wife sells stuff on the Internet.

Interconnected World

I'll leave you with this. 

I remember when someone I knew from Synex, called Chris, went to Microsoft, and helped develop a concept called Object Linking and Embedding (OLE).  A few years later, watching the whole OLE and COM world expand, and seeing how web-based APIs were developing, I was working with a group of people who were developing a standard for database connectivity.

I've watched as the web was invented on the Internet. From Netscape Enterprise Server, Microsoft Internet Information Server, Apache Web Server, serving pages to web browsers, and then to pagers, mobile phones, and other remote devices, I've seen the power and flexibility of connected systems.

It was apparent to me that connectivity was going to be a huge and exciting area of work.  It was also clear that we were gradually working towards a world were applications would eventually be able to work with each other, even if neither one had anticipated the value of a combined experience.

Applications that tried to play hard-to-get would die a lonely and painful death. Applications and vendors who understood the value of and need for collaboration on standards, would be the winners.

We aren't there yet. Standards need to be developed, then they need to be refined so they actually work, then they need to be adhered to, even while they are extended to support the next big thing that comes along, and it all has to happen at light-speed.

I believe that a combination of Internet of Things (IoT), Artificial Intelligence (AI), Social Media, Crowdsourcing, 3D printing, Blockchain, and wearable technology will continue to drive new disruptors.  And then there will be the next few "new things" that will blow our minds!

These are exciting times to be involved in technology!

Monday, March 19, 2018

Funny Support Stories

Through the course of my years in software, we had many encounters with technical support issues or bugs that were funny, either at the time, or looking back at them later.  Here are a few of them.

Close The Door

In the early days of personal computers, it seemed that no matter how well you documented instructions for installation of your software, a significant number of very non-technical users needed you to hold their hands through installation.  I remember at Synex, one of the support technicians almost falling out of her chair with laughter. When she finally finished the call, she told us what had happened.

She had helped the customer find the floppy drive on their PC, and told them to take the floppy out of it's paper sleeve, then slide it in with the logo on top and the open part in first.  Then she told the customer, over the phone, close the door. This of course meant the floppy door.

The customer said "just a second" and she could hear his office door closing in the background.  She almost died!

Where's The Any Key?

This is one of the old cliches of tech support, but I can assure you that it happened more than once. It was not uncommon for PC software to tell you to do something, then "press any key to continue".  More than one customer called us in a panic as no key on their keyboard was labelled "Any".

Corrupted 9-Track Tapes

Back in the day, telephones didn't have ring-tones, they actually rang. They rang by oscillating a magnetic field that made a little hammer wack two sides of a little semi-spherical metal bell on the underside of the telephone.  On occasion, someone would place an office phone on top of a stack of 9-track tapes. The phone would ring, and the top tape would be very effectively erased. Depending on how effective the little magnet was, you might partially erase the next tape down, too.

Putting one of these phones on top of floppies had the same effect, as floppies, like tapes, were magnetic media.

Fridge Magnets and Floppy Drives Don't Mix

On a similar vein, if a user had a bad time reading a floppy drive and it appeared to have been erased, it was often helpful to ask where the floppy was before getting to the computer. On occasion someone would stick it to a fridge with a fridge magnet ("I've never lost the fridge!").  This always worked as they were very thin and the magnet would hold it to the fridge quite nicely.  Needless to say, the magnetic data was nicely erased in the process!

The Wrong Floppy Type

The old 5 1/4 inch floppies held limited data, were big and a bit fragile.  So with the IBM PS/2 computer (not Play Station/2, Personal System/2), IBM came out with a new floppy, the 3 1/2 inch floppy. It held considerably more data than the 5 1/4 inch floppies, and a sturdier hard plastic case (it wasn't really "floppy" anymore) and was actually better technology.

We had a customer that we sent PK Harmony to on 5 1/4 inch floppy. When he couldn't fit it into his 3 1/2 inch drive, he tried folding it before calling us!

We sent him the right media and made a point of asking every customer what type of floppy drive they had before sending them media.

Providing Technical Support to GOD

At Liberty, we had bi-weekly support meetings to review how our tech support was doing in terms of meeting our SLAs for customers.  We had acronyms for most of our customers, and one of them was a company called Guaranteed Overnight Delivery.  Their acronym was GOD. This made for very interesting support meeting agendas and minutes!  It seems our technical support department was very helpful to the Almighty!

Mouse in the Agitator

I mentioned this story in a previous blog post from a few years ago, but I'll repeat it here.

At Liberty, we had a customer who had a D3 PICK system, and they were doing research for a cure for AIDS.  They did a lot of blood testing and had all the necessary equipment for doing it.

From the time that ODBC was first developed, Microsoft added a query tool called MSQuery to their Excel spreadsheet product.  This query tool is still there, largely unmodified. It does its job quite nicely! Unfortunately, MSQuery developed a bug that caused problems on just some computers. I believe that bug is long resolved but at the time it drove us nuts!  

This tool used the multi-threaded apartment model.  Even though you could have it pulling data back on a thread that was distinct from the thread that was updating the UI, every time you wanted to notify the UI that some number of rows had been pulled back, so it could update the running counter, you would have to call into the UI thread.  This meant that you put a blocking call onto the message pump for the UI.  This was not a big deal usually, but MSQuery would run into a situation where the message pump would get stuck unless you provided some user input to it.  This was not just a problem for us, but for any ODBC driver, it seemed.

This is how the bug manifested itself.  When you were doing a query, the little ODBC "World" icon would spin. When this problem happened, the world would stop spinning and nothing would happen until you moved the mouse or pressed a key on the keyboard.  Then it would start up again for a couple minutes before stalling once again.  Those stalls would stop both the UI updates and the query from retrieving data.

Our customer had run into this, and had a brilliant solution. He took his mouse, put it in a specimen agitator, and left it shaking until the query finished.  There was a constant stream of mouse movements that kept the query happening!  That was absolutely brilliant, out-of-the-box thinking on the part of our customer!

And that's one of the best things about my work over the years, getting to work with so many brilliant, kind, funny, good people!

Friday, March 16, 2018

Copy Protection Backfires

The Problem

Although there were lots of other personal computers, the IBM PC was the one that really took off for business use, and quickly surpassed all others, including Apple.  As the IBM PC and clones began to gain significant traction, software developers were faced with a dilemma.  The world of Software was a bit of a wild west. Was software subject to patent law? The Patent and Trademark Office of the United States initially said "NO!"  Software was like a mathematical algorithm, they said, and as such was not subject to patent law.  Was it subject to copyright? If so, did changing the variable names, and moving some subroutines around constitute a unique work?  Most software was delivered on 5 1/4 inch floppy drives. The YouTube clip below gives a demonstration of these floppies.



From day one developers of software were paranoid about someone stealing their software and reselling it.  Anyone with 2 floppy drives could make a full copy of one floppy to another.  It was easy to print out labels that would look like the original software. You could then resell potentially hundreds of copies of someone's software.  You'd get all the profit but the original authors got nothing. Because you didn't have the cost of developing or supporting the software, you could undercut them.

Copylock Protection

One solution to this was a product called Copylock.  They came up with a way to write to a track on the floppy, with special hardware, in such a way the the drives could read the track, but when copying the track, it defied the normal formatting and the drives would not copy the track.

Details of how Copylock worked are available here:

One of the most successful PC software companies, one that used Copylock protection, was Lotus. Lotus 1-2-3 came on 5 1/4 inch floppies with Copylock protection.  It was not uncommon for users to encounter a problem with their installation and would need to re-install Lotus. Copylock kept a count of how many times you had installed it, and it would only allow 3 installations before telling you that you had run out.  You could uninstall Lotus from a computer and it would increment its counter, but if your hard drive packed it in, or your 8 year old had discovered the "del" command, you had lost an installation.

Prior to my joining them, Synex had sent a software product that they had developed to an American software publishing company, in a bid to convince them to resell it. The company asked to see the source code, ostensibly to see its quality, and Synex sent it to them. That company told them shortly thereafter that they weren't interested in the software. A month later that company released it under their own name.  Remember that this was the wild west. There was no precedent of anyone being successfully sued for copyright over software, so Synex didn't pursue it.

As a result, they were very paranoid about piracy.  For their PC Harmony products for  Business BASIC and Wang BASIC they enlisted Copylock to protect their software.

When I joined Synex as their development manager, I noticed that we had a significant number of support incidents around people running out of installs on their floppy disks. In addition to taking a lot of support time, we had the cost of mailing them another floppy disk. Then one day, one of our Lotus 1-2-3 disks ran out of installs. I phoned Lotus support, who sent me another floppy, but instead of being another 1-2-3 diskette, it was software to disable the copy protection. They had figured out that the cost of supporting Copylock was higher than the risk of someone making a copy of the disk!

Removing Protectionism

I tracked for a time how much of our software support was due to Copylock issues and we quickly decided that we would stop using Copylock.  Our support costs dropped and our sales stayed steady!

One thing we had learned was that our product was complex enough that most users would want support, at least for installing the host software, so there was no real value in using the Copylock protection. The complexity of our product coupled with our excellent customer support was protection enough!  Lesson learned!

Friday, March 2, 2018

I Got Hired by Synex Systems

After working with Synex as a contractor from DataSense / Escom, I switched jobs to Synex Systems to become their Development Manager for PK Harmony and the PC Harmony products.

Synex was an interesting company.  One of the key people at Synex was Chris Graham.  In addition to terminal emulators, they were writing add-ins for Lotus 1-2-3.  They had a couple of Compaq luggable computers.  Below is a video clip of someone demonstrating one.



Murray my boss told me of going on a trip. Back in the day the airlines didn't let you take a computer as carry-on, so he had to check them in. He was telling the person beside him, in the window seat, about his concern that his computers would be OK, when the guy looked out the window and told him "I think your computers just fell 5 feet off the conveyor onto the tarmac!"  When he got them back to the office, he re-seated the boards in them, turned them on. One needed a new monitor and both cases were wrecked, but both ran just fine. Those Compaqs were truly rugged!

You could also get them with a built-in acoustic coupler, so you could put the phone receiver into it and dial up another computer.

Back to add-ins for Lotus 1-2-3.  You could only write them in Assembler, which was a pretty slow way to program.  There was a special piece of hardware call an Antron Probe, that would mount over the CPU chip. It would track all instructions going through the CPU and could back-trace these for you.  Chris took one of the luggables home for the weekend and reverse-engineered every entry point into DOS that Lotus 1-2-3 called, creating back-traces in assembler.  He then figured out how to hook a C program in.  Productivity for Lotus add-ins was immediately improved!

Chris later went on to be Director of Interoperability for Microsoft, and was a key contributor to Windows 3.0. The Easter Egg that listed Bill Gates and all the other key contributors listed Chris along with the others.

I also recall seeing a complete IBM BIOS assembler listing when I was still consulting there.  The draw was irresistible!  I had to work there!

It didn't take long for me to get my first Mark Williams C compiler. I poured through the Kernighan and Ritchie book, and went through the PC Harmony C and Assembler code.  I was hooked!

This was a time when it was possible to have a grasp of what was happening from your software right down to the hardware, before computers turned into onions with many layers.  You could order a set of Intel developer manuals and they'd ship them to you for free.  The first manuals were about 3 or 4 volumes, but over time they've grown. The last hard-copy ones I ordered were about 6 volumes and today you get them electronically. They are 10 volumes, but since they are electronic, they'll let you download them as 4 massive volumes instead.  I've always felt that the ability to visualize what is happening at different layers of a multi-layered, even distributed, application, is key to being able to architect, design and troubleshoot it.

At one point, I got to use a Compaq luggable that we called the "brick".



In addition to DOS, it had this cool new graphical Microsoft program called Windows 286.  It would do CGA graphics on the monochrome amber monitor.  It could also dual-boot into IBM's equivalent to DOS called OS/2 which had its own graphical component called Presentation Manager.

It was a really cool time to be working with computer software, and I was having a blast!