Technology, Coding and Business

The Start-up from Hell

That ‘true story’ is mandatory here, some of the stuff that you are about to read will sound so outrageous that you might think that this is a work of fiction. That, sadly, is not the case.

To protect the guilty I’ve changed some of the names, they arguably do not warrant such protection but I don’t feel like fending off lawsuits.

This story starts somewhere in 1987, I’d been working for an architectural company in the city of Delft on a cad program to design structural components and after the contract ended I was looking for a new gig. A friend (we’ll call him Fred from here on in) that I’d gotten to know over the years because we had our little companies next door to each other asked me if I felt like partnering with him to create a combined cad-cam program for the metal industry, a simple piece of software that he could use to control old machines.

The appeal to the tinkerer in me was strong, after all, this project involved moving bits, low level software and other hands on things that I felt were interesting. So I agreed, we settled on a very low base salary (just enough to stay afloat) but a sizeable chunk of equity (1).

Fred would handle the sales and the machining as well as the packaging, I would do the software and the electronics design. Fred had recently split up with his former partner Rinus, who had been working with him for a long time so for him it was a good moment to change direction as well, up until that point he’d been making mostly specialty machinery for industrial use. Besides that he was somewhat known as a show man, at some point he was world famous for card magic and he actually built a car. All in all a very charismatic person and a man of a thousand skills. This promised to be lots of fun.

We talked over the features that the program was going to have to have. A couple of bits of background here, metal working consists of lots of possible operations, but two of them stand out, turning and milling. Turning means that you turn the workpiece and move a stationary tool along the axis the workpiece revolves around to cut off bits and pieces to get the desired shape (or you spin the tool around the workpiece if the workpiece gets really large), milling means that you spin a drill like toolbit that eats its way in to the workpiece by moving the toolbit or the workpiece in one or more dimensions. Fred figured that since the number of lathes was larger than the number of mills out there that the best choice for the product would be to go for the lathe market. He already had a price in his head, the whole kit, a conversion unit that you could bolt to an existing lathe should sell for 20,000 dutch guilders, about 8000 Euros in todays money.

This would be fairly revolutionary, buying a CNC lathe would cost a multiple of that and most small shops already had lathes in the range that could be converted.

The precision of the work made with the machine was to be 1/100th of a mm, and that was the step size locked in to the design because Fred could not envision a need for higher precision.

Parts were ordered, I wrote the very first, dead slow version of the software and we made our first pieces within a few weeks. One of our main sources of trouble right in the beginning was that there were two possible choices, the IBM PC using a DOS program written in C which was my preference, or the Atari-ST which was Fred’s choice.

He wanted to use the ST and GFA basic because he’d been tinkering with it and if anything would happen to me he figured he would be able to continue to work on the program instead of having to find another C programmer. Since it was his money on the line we choose for the ST.

There were several draw-backs to this decision:

the Atari ST was a game computer, not quite console style but with fairly
limited expansion capability

because it was a game computer it was built pretty flimsy compared to your
average PC which at the time were built like tanks

it was stigmatized because people knew the Atari brand mostly from games
so customers would balk at buying a piece of equipment like this

But on the whole it was stuff that we figured we’d be able to work around.

The first challenge, the limited expansion capability was the first one that needed to be tackled. Fred wanted to use 5 Phase stepper motors from a company called Berger-Lahr, with Italian drivers that required a step and direction pulse per motor. This is fairly standard stuff. On top of that there was an ‘enable’ line for each motor and another line and an idle current reduction for when you’re not moving. So that’s four lines per motor. Because you also need a bunch of other output lines for coolant and the spindle we needed more lines than the ST could provide using any one of its standard ports. The best candidate for the driving of the motors was the printer port, so I designed a latch board that would allow 16x4 output lines, of which initially only 4 segments were wired up. This gave 16 lines, enough for the basic machine.

Because the spec (2) was very simple the program was relatively simple as well. All it needed to be able to do was to allow a user to specify a series of coordinates and the program would play these back on the motors. Infrequently used operations, such as the cutting of threads were discarded. After showing the prototype to a number of prospects we got a bunch of feedback about the machine. It was way too slow, machine shops don’t bill by the hour, they bill by the piece and a slow machine is unusable at any price because it requires an operator all the time.

So, enter the optimizer. Reworking the GFA code was not an option, even in compiled mode basic is only so fast and the stepper motor drivers would have be clocked at fairly high rates in order to achieve the desired speeds. Even in C that would be a hard problem to solve so the choice was made to do the lower level driver in assembly. The ST used a motorola 68K CPU, I already knew how to program that chip so this posed no major headache. Meanwhile, because Fred had cancelled all his outside work because we were going to be selling these things any day now the financial pressure started to mount (3).

Because of the pressure I decided to work a lot harder than was responsible, but I figured it was only going to be a short while. I agreed with my s.o. that I’d work from 11 to 6, eat a bit, go back to work and work until 2 am or so, then go home to sleep. This got the rewrite of the lower levels of the code done in about two weeks, after which presumably we had a product that we could sell. The rewrite was a lot less straight-forward than I thought it would be, at certain speeds the stepper motors would lock up. It turned out that stepper motors have resonance points and that if you’re not extremely careful around these resonance points the stepper will either make a bunch of unpredictable movements before continuing or it will simply stop working until the drive frequency is low enough to be picked up directly again.

Fixing this was not easy, a series of ramp curves was tried and finally I wrote a program that would take the mass of the machine and a bunch of other parameters and it would produce a look-up table that could be used during the generation of the steps. The math involved was way too tricky to be done in real time, this ramp-table solution though was good enough.

Another round of demonstrations ensued, and customers were more positive, someone actually placed an order.

Now the game was on for real. We still needed an enclosure, a work-shop proof input device for the GUI that we had made and a bunch of other stuff. Fred did a pretty good job at fixing all these things, he learned how to cast parts using resin and rubber moulds and made it look pretty spiffy.

The packaged prototype was installed at the customer location and we congratulated ourselves on our first sale.

When we got back to the shop the customer was on the line, the machine had failed. So we went back, to find out that the interference from the other machinery in the shop caused our latch board to reset. We learned a lot about electro magnetic interference that week. Only a part of the payment had been received, we needed the rest of the money desperately to buy new hardware for #2. Over the course of several weeks we went back and forth many times to our first customer to try to fix what was wrong with the design from a gross electrical point of view. Industry is a very hostile environment, you can expect the most crazy pollution on your powerlines and our poor ST was simply not made for an environment like that.

It took a lot of fiddling before we finally had the electrical situation stabilized to the point where the machine could go through several workpieces without locking up, and the patience of the customer during this time was simply amazing. He really wanted us to succeed and gave us all the time in the world to get the stuff to the point where he could use it.

Finally, payment was received, but on the condition that we’d still fix a few small things in the software. The customer would like to show the toolpath on the screen in a graphical way during the design phase. This seemed an easy enough fix but in fact was tremendously hard. The reason why is not obvious if you’ve never worked with a lathe, but the ‘point’ that a lathe cuts with is not actually a point but a small circle. So to produce a given work piece you have to do something called radius compensation. This means that you’re going to have to offset the shape of the object you are creating by the radius of the toolbit and then move the toolbit along that expanded shape with the centerpoint of the circle. Tricky stuff. Mathematically it is trivial if your program is vector based, but this program was based around a pre-computed array of steps by now (to make it fast enough) and then it suddenly is a non-trivial problem. Eventually that was solved as well (more re-work), I learned quite a bit about ‘programming for the future’ in that period.

Little by little our ‘simple’ program started to get bigger, and what looked like a month or two of development time actually became closer to a year. The final program was 50,000 lines of GFA basic code (fortunately GFA basic at least allowed structured programming) and another 10,000 lines of assembly. I was still working my crazy hours during all this time and didn’t know what date it was or even what month.

Several other people were brought in, all on the promise of receiving a piece of equity (4), a guy called Simon that worked practically day and night to build the machines and who brought along a bunch of money because he’d just sold his store, and a guy called Rinus (Fred’s former partner) who was a production welder and a machinist.

The pattern that we got in to was this: Fred would go to some prospect, demo the machine (which had been built in to a small van), find out that the customer needed features X, Y and Z which the software did not provide, get a signature and a down-payment based on the promise that these features would be in the machine on the delivery date and would go back home to tell us what we needed to do (7). Typically the delivery time was ‘next week’ and the new feature required either some more IO or a hardware change or had to be researched, built, integrated in to the GUI and tested.

Testing with this sort of gear is not something you do lightly, one small bug and you’re going to have pieces of metal thrown at you with extreme force so there is no such thing as a simple fix. Typically you’d test something three times, the first time in the air with the spindle off, then once in something soft (like aluminum) in case you’d messed up and the bug wasn’t entirely obvious during the first run and finally in steel.

One day when I was still sleeping Fred received a bunch of visitors that asked if they could see the machine work. Fred ran upstairs to my office, took the floppy that I used for my tests and wanted to demo the machine with the latest features. Only problem is that I never tested that software, I was way too tired and figured I wouldn’t be safe around the machinery in the middle of the night on my own, best to wait until the next day. The software failed spectacularly (it took off 10 times as much material compared to what was intended), but Fred, experienced showman explained to the visitors after they’d been retrieved from hiding behind several solid walls that the demo was like that on purpose to demonstrate the strength of the machine. They signed and bought it. Funniest story, according to Simon he’d never seen people move that fast in a workshop.

Financially our situation went from bad to worse and finally Fred mortgaged his house-boat in order to be able to continue the company.

This money was used to do two things, the first was that we made a batch of 10 machines in one go, instead of the one-by-one approach that we’d taken so far, and he reserved a spot on the annual metal working trade show in Utrecht.

We got our spot right next to the top-of-the-line brand Okuma. Their stand was absolutely empty, people were walking out with aluminum chess pieces and stars in their eyes about what our tiny little game computer driven machine could do.

A sales guy was hired, and almost immediately fired again, he sued the company and won, taking a very large chunk of our cash reserves with him. Some big shot from a large company was brought in to ‘manage’ the company better, his first decision was to order an expensive air conditioning for his office even though we were almost broke. (5)

A lot of people ordered a machine and it looked like we were going to do well. If only life was that easy. The customers that had signed up during the trade-show had a completely different level of expectation than the people we’d been working with to that date. These were big shops, doing very serious work. And they did not cut us any slack when it came to fixing problems, if it wasn’t working on par with the competition on the day of delivery there was real trouble.

At this point we found out how little we really knew about the actual product that we were making. This was no ‘simple’ control a bunch of steppers with a driver any more. These people knew their stuff and when they found out that our machine was using steppers, not servos they were immediately skeptical. Rightly so. Step-loss, the situation where you have told a stepper to make a move but it hasn’t had been observed before but not on the scale that we’re talking about here. One company, in Rotterdam that made wheels for cranes (in a harbour crane there are a lot of wheels that guide the steel cables, these wheels wear and are periodically replaced, they’re very large and very heavy) wasted a small fortune of blanks before they figured out what the cause was, we were not using ‘feedback’ from the tool to the machine, in other words the ‘command’ given by the computer might not actually be executed which caused the computer to think the tool was in a different spot compared to where it really was. Another big issue was that the mechanics were designed in such a way that the 1/100th of a mm was the finest stepper resolution, but on a turned piece that translates in to 1/50th of a mm resolution which simply is too coarse for many products closing a good sized portion of the market.

More stress, more patches but this was a tough nut to crack without a complete reworking of both the hardware and the software. Using servos meant a completely different drive train, different safety system (when a servo driver goes bad people die) different software to process the feedback from encoders on the shafts and therefore a hardware redesign.

At this point it grew over my head, I’d been working for well over a year at an unbelievable pressure level. At Fred’s house things were not all that rosy either, his wife tried to torch their boat, and nearly succeeded. Round about this time my wife left me, and she was completely right about doing so. I’d been working day and night for almost as long as we’d been together by then thinking that I might get us out of the financial hole we were in if only I worked just a bit harder.

It came to a head one night around 23:30, I really couldn’t see the screen before my eyes any more and I just simply wanted to go home and sleep. The next day there would be some customer coming the ‘feature’ that had been promised was a lot harder than Fred thought when he promised that it would be done (this usually was the case) and he flipped and chased me through the shop with a chunk of steel calling me disloyal and un-trusthworthy.

For me that was the final straw. The next day I announced that I wanted to leave. I was accused of being disloyal again in front of the other people and risking the company but I didn’t budge, and we finally agreed that I was going to leave in six months, working one day per week less and with the accent on training a replacement.

But Fred never did hire a replacement, and hoped that I would stay on because I would not let my buddies down. I’d talked to another friend of mine, a guy called Jan if I could work the remaining days for him and he had agreed so at least I had food on the table.

Every month a day per week was moved to the other work, so every month I spent less time at the company. Finally it sank in that I meant it. At this point Fred decided to sell the company.

He contacted a number of potential buyers to see if he could sell the product line, and found one interested party. A price was agreed upon and the company was sold in the last weeks of the 6th month, so before any replacement was trained. Fred had told the buyer that he was the author of the software and when it turned out that he didn’t know much about the guts the buyer and Fred got in to a conflict about the payment.

Around this time, mysteriously, one of the factory buildings of the buyer went up in flames and Fred got his money.

But none of the people that he’d promised ‘equity’ in his business got any of it. Simon got back some of the money that he’d invested and was offered to stay on at the new company, Rinus also went to work for them.

The company that bought the product line by now realized they had a bit of a problem, they contacted me to see if I would work for them, but I had found a good spot in Jans company so I declined the offer.

They ended up ditching the ST (good for them) dropped the steppers in favor of servos and rebuilt the whole thing on the PC, the software that I wrote was translated line-by-line to give them their first version which formed the basis of the stuff they still sell to this day.

Years later Fred showed up at my offices in IJmuiden to ask if I felt like doing it all again, from a copy of the software that he’d kept after selling the company.

I declined the offer, he also confessed that he’d torched that factory so I threw him out.

I’m still friends with both Simon and Rinus to this day, Simon helped me to rebuild a house and Rinus has joined a machine shop and has become a partner there, he’s doing pretty good.

There is no real ‘moral’ to this story, it just shows what you can achieve with good intentions, tons of energy and a lack of knowledge about your intended product and market and how a story like that can end even if you have a team of very good people.

Fred was without a doubt the driving force behind all of this and should get the credit for that, but he was also the force that continuously worked against the chance of success that we had.

Micromanaging everything, lots of very bad business decisions, wanting to understand stuff that was way over his head, a lack of trust in the people around him and a totally unrealistic expectation of performance destroyed workplace morale amongst some of the hardest workers that I’ve ever seen. Specifically the decision to use the ST and the decision to use steppers came back to haunt us big time.

Fred’s reason for not paying out from the money he took was that we’d betrayed the company, and after all, it was his money.

It’s long ago, and I couldn’t care less about Style Hightech any more, but that was some of the nicest work I ever did, in spite of the idiotic situations the lesson that I took home from it (besides the obvious business ones, they helped me a lot in later years) was that no matter how tricky a technical problem there is always a solution, even if you’re working on the wrong platform in a crazily constrained environment. I also learned a ton about metalworking, most of it from Rinus and I’m still grateful for that to this day. This story could be a lot longer still but I doubt it would give you any more insights and it’s long enough as it is so I’ll leave it at that. (6)

A list of things that went wrong here which are labeled in the text with (x):

(1) I neglected to have a contract drawn up

(2) there never was a discussion about what the final product would have to look like

(3) if you have very little runway better have a good idea of what the market wants

(4) they too were friends, see (1)

(5) hire the right people! check them out, don’t be shy to ask pointed questions and when in doubt arrange a trial period

(6) beware of people that use your love of your work to take advantage of you

(7) Dare to sell what you’ve got to those customers that want what you have instead of selling what the customer wants but what you haven’t got yet and may not be able to deliver in time. Take the feedback you receive and use it to improve the product but unless something is really trivial it is better to sell what you have than to make some promise you can not keep.