Print Story Tales of employement
Working life
By ucblockhead (Thu Feb 07, 2008 at 12:03:04 PM EST) (all tags)
Over 300 beta sites.


I'd quit in a huff, so I needed something new. A coworker mentioned that he had a friend of a friend who was starting a small company and need a programmer, so I jumped at it.

"Small" was no exaggeration. When I signed on, the company was the owner, the owner's wife and me. I was working as a contractor, which suited me fine as it meant a reasonable salary and a good income. It was initially quite exciting. They'd had some guy working on it before me who had left suddenly. (Had I been older, I would have inquired as to why.) There was probably about a month's worth of code laid down. Enough to prove the concepts but little enough that there was room for real design.

The product was technically interesting. This was around 1990, when DOS was still king. People were starting to sell computers as cash registers to higher end stores. One of the major problems was that the credit authorization services did not yet do any sort of real networking. Everything was dial-up. (And, in fact, networking was only a LAN thing.) This meant that if you wanted the register to do credit authorization itself, then each register had to have its own modem. This was an expense.

The owner of the company had realized that these PC based registers were often networked together. So why not have a modem on one server PC and have the other registers use that? But obviously a dedicated PC was a large expense, so why not have the "server" be a little program that resides on one of the other registers.

Remember, this was the days of DOS. "Little program running in the background" meant a "TSR" or Terminate and Stay Resident program. These were very tricky. It was essentially doing multiprocessing on a single-tasking machine. But I was well equipped for this as I'd spent over a year doing these sorts of programs. The first thing I did was not reinvent the wheel. I'd seen a cheap TSR toolkit that did much of what I wanted, so in pretty short order I had a prototype running. You could hit a hotkey on one machine, enter an amount and a card number, and have it send the request, over a netbios LAN, to another PC which then authorized the transaction in the background and returned the result.

I then turned to the bigger problem which was that every network had its own protocol. Doing what was often done, which was to write new code for every damn protocol, was a maintenance headache. So I created a sort of protocol definition language that allowed you to specify how the protocol worked in a sort of markup language, run that through a "compiler", and load that into the actual program. It made moving to a new protocol very easy. I was very proud of it. The project as a whole was probably the most technically successful program I've ever worked on. It did what it was supposed to, fit in something like 140k of memory (swapped into the area above 640k, with a very small footprint, like 20k, in the lower part of memory) and was pretty easy to maintain.

That was the good. Then there was the bad. I worked in a room in the guy's basement one desk while he did the business stuff from a desk off to the side. Next to him sat his wife, the CFO. That was the whole company. Testing required multiple PCs and he was pretty insistent in helping me test at ever stage of the process. I'm not talking "unit test when I'm ready". I mean, he wanted to be involved every time I ran the program. Now I tend to work in an iterative fashion. I typically throw things together, see how they work, modify it here are there until it is where I want. This means, of course, doing lots of tests where I damn well know it won't work. I'm just checking to see that one particular routine does what I want. But the owner was not a developer, so he never understood this. He took every error (i.e. every time the program didn't do exactly what the specs called for) as an affront and would demand to know why it didn't work. It was painful, especially when dealing with credit authorization networks that often came with incomplete specs where the only way to discover what they did was to try things out.

About half way through the project, he had some sort of heart issue and his wife put him on a macrobiotic diet. She insisted that she feed me lunch as well. So the job came with lunch. If you can call a whole roasted sweet potato and nothing else, not even butter "lunch".

The coding went fast. The business side was...interesting. Sitting six feet from the owner, I got to hear most of it in one-sided phone conversations. A pivotal conversation occurred shortly before my time ended there.

Owner: "Yes. Uh huh. Yes, it does that. Yes, we support $CreditNetwork".
(Author's note: I'd never even heard of $CreditNetwork at that point.)
Owner: "Yes. Yes we support $Feature."
(Author's note: I cannot for the life of me remember what $Feature was. It may have been the extract slack restaurants put on the authorization to account for the tip. Suffice to say that not only did we not support it, but we'd never even talked about it.)
Owner: "Yes. It's installed. This feature is used in over 300 beta test sites."
(Author's note: at this point, no version of the software had ever been run anywhere but the owner's basement, certainly never in a live situation.)
Owner after hanging up: "Ucblockhead, can you implement $Feature?"
Ucblockhead: "Er...I suppose. It shouldn't be to hard."
Owner: "Great! Get started!"

The owner's wife was looking a bit perturbed about all this.

Owner's wife: "I really don't think you should be lying to people."
Owner: "Oh, don't worry about it. It's just the way business is done. Right, ucblockhead?"
Ucblockhead: "Er...uh...no. No, actually, it isn't"

An icy silence descended.

I continued working there for roughly a week. Then, one day, I got a call from the owner. "Hi. I decided we needed a code audit. I called in someone to look at the code. We won't need you until he's done.

A couple days later, I was told my services were no longer needed. This was fine by me. I had been hunting for something new for a couple months at that point and thought I was close to another offer. (And, indeed, I got one a couple weeks later.) But the story doesn't end there.

A couple weeks later, I got a call from the owner's wife. She said that the software auditor, who had now replaced me, had some questions, and ask if I would meet with him for an hour or so walk him through some things. Mostly out of curiosity, I agreed. I mostly wanted to know what was wrong with my code.

The guy came over to my house and I started walking him through my code. It was a very confusing conversation. First, he didn't seem to understand the basics of what was going on in the code. Was my code really that unclear? But then he started saying things like "Oh, that's really cool!" and "That's kinda slick!" I was confused...this was the guy who got me fired? Then, as he was about to leave, he said "Well, that's a really nice system. I hope we can work together some time."

That's when it hit me. He'd never reviewed my code. He had no clue why I'd left.

A couple weeks later, I got a legalistic letter from the owner's wife in her capacity as CFO. It warned me that my meeting with the new programmer should not be construed as fulfilling all my obligations and that of course I was legally bound to fix all bugs and/or defects in my code free of charge for as long as the software was in use.

I was floored. Then I laughed. Then I wrote a long note informing her that I charge an hourly rate for all work, and that I was under no obligation to fix any bugs in code I'd been forced to abandon without warning, whether free or for pay, and that if I did, in the future, elect to give them any help, it was entirely because I'm a nice enough guy to want to help whatever new guy they brought in. I then suggested that she read up on employment law.

There was no response.

An acquaintance of mine ended up doing a little bit of coding for them a few months later and so I got to learn the ultimate fate of the company. The software got done, but they still hadn't managed to sell it yet. Then the CFO gave the owner divorce papers. The company apparently did not outlast the marriage. I believe it lasted about a year from inception to destruction. I was there about six months.

< On Japanese Whaling | BBC White season: 'Rivers of Blood' >
Tales of employement | 26 comments (26 topical, 0 hidden) | Trackback
1990, when DOS was still king. by wiredog (4.00 / 1) #1 Thu Feb 07, 2008 at 12:31:41 PM EST
Heh. I worked on DOS programs until 2000. It was nice and stable, if you remembered its limitations. I remember writing software that ran over a LanTasticTM network. It worked, poorly. And was totally non-portable. Windows 3.11 saved us from that.

AFAIK, CC verification is still done over phone lines.

Earth First!
(We can strip mine the rest later.)



some of it by ucblockhead (2.00 / 0) #3 Thu Feb 07, 2008 at 12:47:40 PM EST
When I left that industry, in '00, you could do it over Ethernet, or satellite, or all manner of things.
----
ウセーバラケダ
[ Parent ]

Umm. by greyrat (2.00 / 0) #8 Thu Feb 07, 2008 at 01:33:57 PM EST
WeThey have massive private worldwide networks, for both debit transactions and credit authorizations, with bridges between the major carriers. Everybody has agreements to handle everybody else's traffic -- or so I hear.
~
There is absolutely no correlation or causation amongst intelligence, power, talent and wealth.
Kha-Nyou
[ Parent ]

Yes but by Imperial Mince (2.00 / 0) #21 Fri Feb 08, 2008 at 06:23:02 AM EST
in Soviet UKia, retailers, especially those without custom hardware, will just use a pdq to do card authorisation, they still generally just dial up the machine provider, like streamline or bms, to charge the card.

--
This space reserved for whining like a little bitch and being sanctimonious.
[ Parent ]

My job *now* by wumpus (2.00 / 0) #22 Fri Feb 08, 2008 at 08:34:53 AM EST
involves DOS (no other OS on the computer) in an embedded environment.  And I still laugh at the upcoming "upgrade".

Wumpus
I really need to get out.

[ Parent ]

DOS is perfect for much embedded by wiredog (4.00 / 1) #23 Fri Feb 08, 2008 at 10:44:04 AM EST
If you don't really need multitasking, don't have tremendous data requirements, and no GUI is required. Hoist controllers, other simple automated process equipment.

Earth First!
(We can strip mine the rest later.)

[ Parent ]

On the other hand by wumpus (2.00 / 0) #25 Sat Feb 09, 2008 at 11:07:26 PM EST
these use TCP/IP. And talk to servers that run DOS (and TCP/IP). Personally, I don't think thats the real problem, the problem is customers returning units hoping that the next one will have a labeled "any" key.

I'm not kidding about the next gen OS though: Take an installed base that has trouble keeping up with the embedded DOS software. Run win2000 on it (no, nothing that has long-term support, no-way). Open up free wi-fi hotspots. Allow your cash registers to include explorer (if MS is your partner in this crime, do you think they will tell you how to get rid of it?). Somehow, this all sounds like a good idea.

Wumpus

[ Parent ]

I hate that... by ObviousTroll (2.00 / 0) #2 Thu Feb 07, 2008 at 12:41:35 PM EST
Some of the best work I ever did never got to see the light of day. Code that was 75x faster than the code it replaced. Algorithms that screamed "I should be in a magazine" or "I should be in a patent".

But, what can you do?


--
Has anybody seen my clue? I know I had it when I came in here.


Yeah by ucblockhead (2.00 / 0) #4 Thu Feb 07, 2008 at 12:48:52 PM EST
It was very much an example of how a good idea and a good implementation does not at all guarantee success.
----
ウセーバラケダ
[ Parent ]

Way back in the day by fencepost (4.00 / 1) #11 Thu Feb 07, 2008 at 01:53:20 PM EST
When I was doing VB3 coding I had some useful tools I'd put together for dealing with tree display, etc. and figured they'd be useful to other people, so I requested permission up the line to be able to do an article and release that section of code to one of the VB-language magazines.

Something like 18 months later I actually got permission, about 15 months after that project had ended and possibly after a jump in versions to VB4.

Annoying.

[ Parent ]

The thing I thought deserved a patent by ObviousTroll (2.00 / 0) #13 Thu Feb 07, 2008 at 02:01:53 PM EST
was a low-overhead scheme for encrypting data passing over a sockets on the public internet. The purpose was to avoid expensive RSA licenses. By the time the company realized that (a) I had a good idea (basically, letting us remotely connect to different systems over the new-fangled internet) and (b) a good implementation, RSA had made ssl free to use.

--
Has anybody seen my clue? I know I had it when I came in here.
[ Parent ]

the things about startups that make them exciting by discordia (2.00 / 0) #5 Thu Feb 07, 2008 at 01:23:35 PM EST
are quite often the same that curses them



+1 - FP! Nice trip down memory lane for me too. by greyrat (2.00 / 0) #6 Thu Feb 07, 2008 at 01:26:14 PM EST
Please fix: "It did what it was supposed to, fit in something like 140k of memory (swapped into the area about 640k, with a very small footprint, like 20k, in the lower part of memory) and was pretty easy to maintain."

I presume that should be "above". It was very painful to parse.
~
There is absolutely no correlation or causation amongst intelligence, power, talent and wealth.
Kha-Nyou


Also, I worked for one of those guys too: by greyrat (2.00 / 0) #7 Thu Feb 07, 2008 at 01:29:01 PM EST
There were three of us in a single office and he'd come running in after a phone call: "Guys! Guys! Can we do $THIS?" And we'd all bust out laughing...
~
There is absolutely no correlation or causation amongst intelligence, power, talent and wealth.
Kha-Nyou
[ Parent ]

Erors? I don't make errors! by ucblockhead (2.00 / 0) #9 Thu Feb 07, 2008 at 01:38:45 PM EST
I proofread that, and as you can see above, I certainly did *not* make that error.
----
ウセーバラケダ
[ Parent ]

Eye rimayne yuor humbel servunt: by greyrat (2.00 / 0) #10 Thu Feb 07, 2008 at 01:43:32 PM EST

In your FACE sucker!

~
There is absolutely no correlation or causation amongst intelligence, power, talent and wealth.
Kha-Nyou
[ Parent ]

I've got a link to that posting by wiredog (2.00 / 0) #12 Thu Feb 07, 2008 at 01:59:51 PM EST
IIRC, I gave it a 5. Whatevr happened to greenrd? He was one of the more (only?) sensible hard left types at K5.

Earth First!
(We can strip mine the rest later.)

[ Parent ]

I remember 5ing it too. I don't know where he went by greyrat (2.00 / 0) #14 Thu Feb 07, 2008 at 02:04:20 PM EST
You are welcome to a copy of my gif. I'm afraid your link will be dead by now.
~
There is absolutely no correlation or causation amongst intelligence, power, talent and wealth.
Kha-Nyou
[ Parent ]

Neither of us 5'd it... by wiredog (2.00 / 0) #15 Thu Feb 07, 2008 at 02:13:03 PM EST
Here it is.

Earth First!
(We can strip mine the rest later.)

[ Parent ]

How odd. by greyrat (2.00 / 0) #16 Thu Feb 07, 2008 at 02:22:31 PM EST
I'm obviously insane and should be put out of my misery. As I type this, I'm listening to Tin Hat Trio's Old Grey Mare. Not the happiest environment.
~
There is absolutely no correlation or causation amongst intelligence, power, talent and wealth.
Kha-Nyou
[ Parent ]

your story reminds me of by dev trash (2.00 / 0) #17 Thu Feb 07, 2008 at 08:38:22 PM EST
When I worked at $ejaculate.  I was assigned to work on the old legacy code written in CADOL ( not COBOL ). The old greybeard that worked there told us  about a few non health care customers in the area that were running the old version of the OS on old hardware as cash registers and who would be really in deep shit when 2000 hit.

--
Click


But was she hot? by ammoniacal (4.00 / 1) #18 Thu Feb 07, 2008 at 08:56:45 PM EST
I thought you fucking programmers were detail-oriented types?

General rules are: All skirts no lower then [sic] two inches below the knee (unless it's for Church) --Travis Frey


We are by ucblockhead (4.00 / 3) #19 Thu Feb 07, 2008 at 09:28:53 PM EST
You can assume that I would have mentioned it if she was.
----
ウセーバラケダ
[ Parent ]

which toolkit was that? by martingale (2.00 / 0) #20 Fri Feb 08, 2008 at 01:04:33 AM EST
I remember using Innovative Data Concepts' TesSeRact TSR toolkit in the early 90s - still have the docs on the bookshelf :)

That, and before that a well thumbed photocopied article from ??? (Dr Dobbs probably).

Bah, everyone wanted to do TSRs in those days...
--
$E(X_t|F_s) = X_s,\quad t > s$


That'd be the one by ucblockhead (2.00 / 0) #24 Fri Feb 08, 2008 at 11:36:23 AM EST
And a well thumbed copy of the Peter Norton DOS book.
----
ウセーバラケダ
[ Parent ]

Good story +1FP by duxup (2.00 / 0) #26 Mon Feb 11, 2008 at 04:29:18 PM EST
n/t
____


Tales of employement | 26 comments (26 topical, 0 hidden) | Trackback