Are You In It for the Fight?

This is the third and final installment in the series of “secret InstallAware history”. In the first installment, we had the big reveal of InstallAware’s behind-the-scenes manipulation by the founder and former owner of InstallShield. In the second installment, we followed InstallAware’s footsteps in the lush islands of Hawai’i. In this third and final installment of the trilogy, we shall uncover even more exciting pieces of InstallAware history – taking us from its very beginnings, to some of its most challenging and trying times. An interesting pattern surfaces.

InstallAware’s Humble Beginnings at Rent A Coder (Starring Ian Ippolito)

While there are many products that lack any technical innovation and have been a success purely due to brand association and/or the brute force of cash behind them; InstallAware is one of the few products that actually has grown and risen due to its technical merits. The business was started with no investment other than one desktop computer and the sweat equity of its founder. Along the road, it managed to attract some serious interest (and trouble), as we’ve covered in the previous pieces. But even the humble beginnings were not without strange twists and turns!

Having no access to any form of venture capital or any other form of money (even no credit cards), options were very limited. A product like InstallAware cannot be built by a single person, no matter how dedicated the author; so some parts of the technology had to be outsourced. Rent A Coder, a software outsourcing site, which works at prices that seem ridiculously cheap today, was the solution. Another brilliant idea in and of itself, Rent A Coder offered a marketplace for talented coders and people who needed software built to meet and work together. Rent A Coder worked as an escrow service, as such offering some degree of security to both the buyer and seller of services. In case of trouble, the site would officially arbitrate between the coders and the buyers.

I had heard from some people who had done business on the site that the site was likely to be partial to coders. And according to some coders I knew who had done work on the site, the site was likely to be partial to buyers. I decided I had to try it out for myself, and the first few projects were a huge success. Parts of InstallAware that could not be built in-house were outsourced, for so cheap that it literally gave new meaning to dirt cheap. It was a win-win situation for both parties, because InstallAware truly could not have afforded to pay a dime more, and the coders could not have made that money anywhere else.

Even as InstallAware was taking off, having caught the “serial entrepreneur” bug already, I wanted to try out some other ideas at the RAC site. One of these was an email client inspired after the then-new GMail user interface (back in 2004 – has it been so long already! – you had to have private invitations to get access to GMail). I accepted a French bidder on it – this was a mistake. Whatever money I could afford to pay him was clearly peanuts for this first-world enlightened French coder, and we soon started having trouble when he started asking for more money to implement the most basic of functionality. Worse yet, he would go off and implement things I hadn’t even asked for. We ended up in arbitration. I eventually escalated the arbitration process to Ian Ippolito, the founder and owner of the RAC site.

Initially the process was going well, but at some point, Ian decided he wanted to side with the coder. He started sounding just like him, in saying things like “look, he’s even built encryption for passwords for you, even though you didn’t ask for it”. The exact issue that I had escalated to arbitration was that this enlightened French coder was claiming that a “Reply to Email” feature had not been explicitly asked for in the project specs, and therefore, he was not bound to implement it. To me, this was implicit in the definition of the words “Email Client” and the overall context of the project. I argued with Ian and tried to reason with him that this kind of nit-picking made me very uncomfortable using the site. Clearly this was common-sense, and while Ian argued that it was my error in having mis-negotiated the contract with the coder, I pressed my point saying that it would be practically impossible to describe everything in a contract to the level of detail that was being enforced here. What’s next – an email client without a send feature? That too hadn’t been spelled out in the contract.

As I pressed my point with rational examples, Ian was getting more and more upset, and his arguments were getting less and less rational. It dawned upon me that I was not going to be able to win this argument with him. At that point, I had to evaluate what to do with RAC. I decided that despite this hiccup, the site was delivering overall; especially considering the ongoing projects on the site for InstallAware, and the overall value added by RAC to the InstallAware operation at large, it was just best to write up the email client project as a loss. I wrote Ian, letting him know that while I still felt I was being wronged, his site added so much overall value that I was agreeing to drop the matter.

At that point, the unbelievable happened. Ian went berserk. He sent off some angry emails saying that I had taken his time up for no reason, that all along I had never intended to win the argument, that I had been fighting him just for the pleasure of it. Ironically, this was exactly what I was NOT doing. I was fighting for what I knew to be the truth – as best I could see it. I was fully ready to admit a mistake on my part if he could have convinced me so; I would have appreciated the opportunity to learn and move on, all the wiser. Even though this was not the case, I was happy to drop the matter because I was, overall, getting enough value out of the site.

There’s a well-described phenomenon in human psychology known as projection, wherein a person projects one’s own faults onto third party individuals, who may or may not be involved in the same patterns of behavior. It is easier for us to see our mistakes in others, than notice them in our own doings. In my best opinion, this is the only way to make sense of what Ian did. When I dropped the matter, conceding the loss of the arbitration, he went berserk; because he was invested in this for the fight of it, and not the truth of who really was on the right side of the fence. I was bewildered to no end. At this exact instant, RAC became a liability to InstallAware, instead of an asset – and we had to discontinue use of the site, much to my chagrin (because I had truly enjoyed doing business there). Ian threatened to shut down our other ongoing projects there as well, so I had to move everything off-site.

InstallAware eventually hired many a talent full-time, after having met them originally at RAC. Over the years, I kept my eyes on RAC – only to witness the site slowly devolve into a homework outsourcing hub. They have recently re-launched as, but I have to admit after the experience with Ian, who is still the owner; I am very weary of going back on the site for any kind of business. When you give people what they want and they still go berserk – that’s downright scary!

Caveat Emptor!

Years after the above incident, I tried one of the firms ranked as the #1 coding company at RAC for a custom software development project. We negotiated with them for over six months and then finally signed a development contract. Two months after commencement, they had not committed any source code. After threatening them with pulling the plug, their first code commit was comprised of code that had been Google’d, copied and pasted, straight from the web, into a template project. I was shocked at this kind of underperformance from a company that had been consistently ranked as the #1 service provider on RAC. The following months saw them add in their own code at slower than a snail’s pace, and I was eventually forced to terminate the project and recover my funds.

Later on, as I was reading up online about RAC, I found a curious explanation for the above oddity. I read in a blog that even though RAC had been aware of a particular company’s questionable business practices for some time (the description of which sounded exactly like what I experienced), they overlooked it, fully permitting said company to abuse their site and its ranking system. Even if projects like this failed, it was still in their interest to have this money flowing through their site, and their commission scheme.

Google Rent A Coder to find out more, and let us all know if their re-named site vWorker is any safer or not. Again, I truly wish there would one day be such a reliable, trustworthy site! When it works, it’s a win-win for everyone involved.

What Really Happened at CodeProject (Starring David Cunningham)

Fast forward to 2009. 2009 saw the eruption of the biggest scandal at InstallAware to date. While it has been publicly known that I like all forms of marketing, including bad press, even I wasn’t ready to handle what 2009 served up – because it put in conflict my personal values and professional aspirations. Even though I had no trouble choosing my personal integrity over any kind of material gain at the start of the issue, the fallout was too catastrophic, and I almost buckled under the sustained long term pressure – and my integrity almost went with it.

What the public knows of this are the hate threads against InstallAware at the site lounge. A customer whom InstallAware wronged – intentionally and wantonly – posted some private email exchanges at this lounge, between him and InstallAware. Now I know why most corporate emails have a page of boiler plate text at the end, regarding the confidentiality of messages exchanged!

Here is the truth of what happened. Yes, InstallAware did send this individual multiple emails with choice four letter words in them. No, we do not do this every day (in fact, he was the only such recipient). Yes, I did discriminate against this customer, and was quite vicious in doing so. No, we do not engage in such systemic discrimination against anyone (again, he was the only such recipient).

The individual whom we wronged in this specific instance was known to InstallAware, indirectly, through association with some of our business partners, who had been treated by this person in malice (only, they weren’t smart enough to talk about it publicly on CodeProject). To the best of my knowledge, this person was one of malice (and I clearly underrated the extent of his capabilities in that regard).

Big Fish vs. Small Fish

This individual tried hard to earn our trust. For instance, he asserted that he had earned Microsoft certificates, and therefore was a well-educated, sophisticated, trust-worthy person. InstallAware’s response was that these were easily acquired in exchange for bribes. This allegation even led to InstallAware’s receipt of a formal letter from Microsoft Turkey, on corporate letterhead, stating that they had taken grave offense at these accusations – and cautioning us never to repeat this offence.

I can only tell you what I know, which is that everywhere on the planet, when sales of a certain scale happen, money often does change hands between officials who make the decision of purchase, and those who are trying to score the sale. The same is true of Microsoft and Turkey. This may be in gross, middling, or subtle forms. For instance, significant cash may be exchanged, or there may be less pronounced kickbacks after the fact, or it might be as little as a dinner and some favors for the decision makers involved. This is how big business is done around the globe.

And just to be sure, after these events, I enrolled one of my friends at a Microsoft certificate course Turkey. He was unemployed at the time, had always loved computers, and wanted to learn about programming. A few months after attending the program I put him through, he basically confirmed that the certificate courses were essentially degree mills. “With so many retakes allowed on failed tests, and other generous practices, you’d have to be a bonehead to not get the certificate,” he reported. “They’re basically selling certificates for cash.” Again, to some extent, all of this is to be expected. After all, these institutions are not handing out academically accredited Ph.D.’s, and are completely free in their rights to be as encouraging of their attending student body as possible.

Alas, for calling out these obvious truths, InstallAware was publicly beaten up and ridiculed to no end. If anyone still has any doubts about questionable business practices of, say Microsoft, just Google the DR-DOS lawsuit, or the Stacker lawsuit, for starters. To be sure, InstallAware itself lives on the Microsoft platform. But this doesn’t cause us to turn a blind eye to the mistakes of (or mindlessly obey) the maker of the platform that we live on. Indeed, we observe Microsoft continuing to abuse its own platform for its own benefit any chance it has to do so. This is how they have been successful.

Malice Has Its Day

Now, why did InstallAware not go public with all this information at the time it was happening?

The reason was that at the time the excrement hit the air conditioning, InstallAware was engaged in talks for a sale of 50% assets to David Cunningham, founder and owner of the CodeProject. David was to come on board InstallAware as an equal partner.

I met David Cunningham a long time ago, circa 2005. Back then InstallAware was still at its infancy. David was enthusiastic about doing business together, possibly giving InstallAware a hand scaling things up. I was receptive to the idea, but David pulled back when he found out about my involvement with Viresh (see the first piece in this secret history series for the details). He had felt Viresh would be the better person to direct and guide InstallAware’s growth (ironic, in retrospect).

When we re-connected in 2009, I was in the process of waking up to the reality of the nature of Viresh’s involvement in InstallAware, so I was more encouraging of him to work with us. We engaged in some lengthy negotiations with David Cunningham. I have to say he was a cunning negotiator indeed! David gained access to all kinds of private and confidential InstallAware information, including all kinds of information that could be described as trade-secrets, as part of this process.

Then, right in the middle of our negotiations, the CodeProject lounge scandal erupted…this malicious individual, whom we wronged in an articulately co-ordinated cross- company operation, turned the tables on us in one delicate instant. As far as the public (and indeed, most of CodeProject) knew, we were in the wrong – they knew nothing of this person or the underlying circumstances that had directed us to act in this way.

Now, I need to make one thing very clear. David himself had learned enough of InstallAware to understand and appreciate what really was going on with these email exchanges between InstallAware and the wronged customer. Indeed, in talking about the event, he often said he understood it, although he could not condone it (which was a very fair stance). However, David did not know enough of InstallAware to preclude the possibility of InstallAware disowning the entire affair. In other words, I could have wriggled and lied my way out of this, had I chosen to.

But I did not choose to do so. It did not seem appropriate to mislead a potential business partner in this way. That wasn’t how I wanted to build trust. Moreover, even as this scandal was escalating rapidly, at a personal level, I still wanted to stand by our actions – because they were, at the end of the day, the truth of what happened. For better or for worse, I wanted to own InstallAware’s position on this, because it was one grounded in truth, and not one grounded in business gain.

To be sure, two wrongs don’t make a right – and perhaps that was the lesson for me here. InstallAware should have just ignored this customer completely instead of harassing him. In harassing him and enjoying the process, I devolved into exactly what he was. Lesson learned.

When the situation began to spiral out of control, I asked David to remove the posts from the CodeProject lounge. Now if I had had a legal juggernaut behind my back, or even something that David was desperate enough to own, it wouldn’t have been a choice for him at all – he’d have instantly obliged. I just wasn’t big enough a fish for him to do so, and thus, he had the power of choice over my request. I was very hopeful he would reciprocate my previous gesture of truth. That would have indeed built a solid foundation of trust for the relationship, with the original act of malice failing its intent miserably, only having served to make our relationship stronger.

Unfortunately, that’s not what happened. David refused to do anything about these posts. If nothing else, this meant the abuse of his place of power during our negotiations for his partial acquisition of InstallAware.

David, on the other hand, claimed he was protecting the integrity of the CodeProject site by preserving private email exchanges in a public context, wherein the public was clueless about the background, and could obviously not be educated about that background within the context of flame threads. David was saying he wouldn’t censor anything – supposedly because he was only protecting the truth. This I knew to be cow manure. It all boiled down to the big fish vs. small fish affair, and David not trusting my judgment that this person was indeed one of pure malice.

After the dust settled, I decided that a partnership with CodeProject might still be in InstallAware’s best interest. This was despite recent events having shown that in any conflict of interest between me and himself, David would line not with the ultimate truth of the situation, but simply the convenient truth – his own interests. I eventually got tired of the cunning negotiations, and announced my unconditional acceptance of whatever best offer he had for InstallAware. By then, we were already agreed on 95% of the terms anyways.

Just then, another incredible thing happened. David walked away!

It was most probably another case of a person who had been in it just for the fight, and nothing else.

Ethical Dilemmas

There is something to be said about dogmatic adherence to principles. David’s stand in this whole affair was that he would be violating his principles by censoring the lounge thread, but the net effect of his actions was that he really let a person who was actually far below his standards of ethics shine like a star. That is to say nothing of his abuse of powers during the negotiations, and of course also the fact that if a bigger fish like Microsoft had demanded him to censor something, he wouldn’t really have had much of a choice. The sad thing here is that he did have a choice, and was not discriminating enough to see that dogmatic adherence to his principles here was having the opposite of his own desired effect.

What strikes me is that in both cases studied in this piece, I firmly stood up for what I believed in and knew to be the truth to the best of my ability, even if it was to my detriment; but showed enough flexibility to eventually let go of disagreement, for what I perceived to be the “greater good” – trying to not push the matter to ruin, and trying to build genuine understanding and cooperation.

And in both cases, the opposing sides walked away. Seems to me they just had to have things their exact way, and were more interested in the wrestling of it, than the actual reality of the particular situation involved.

Perhaps, what really happened is that in both cases, I gave up fighting for what I believed in, even if subtly so – and this was a mistake. I thought I was arranging a mutually beneficial compromise; maybe this would have only caused more conflict down the road.

But I doubt that in either case, the opposing parties were discriminating enough to perceive this.


InstallAware Announces Real Mode and Protected Mode Setup Engines

Hot on the heels of InstallAware’s Native Code Setup Engine, which transcends built-in Windows Installer limitations, InstallAware today announced the latest InstallAware initiative: new setup engines for the DOS and Win16 platforms. “I have long been staring at this glaring gap in our Microsoft platform support,” said Sinan Karaca, founder of InstallAware Software. “This gap has pained my eyes for long enough – and it is about time we did something about it!”

While InstallAware setups support all 32 bit and 64 bit Windows versions (from the very first build of Windows 95 launched in August 1995, to the latest Server 2008 R2 64 bit), with the same single setup binary, InstallAware has never supported Microsoft’s first widely successful versions of Windows (3.0 and 3.1), or Microsoft’s first operating system, MS-DOS.

InstallAware engineers have researched how sophisticated DOS installers for products like Norton Utilities or PC Tools work: They create the illusion of a graphical display (and a graphical mouse cursor) even in text mode, by dynamically modifying the DOS character set, even with the slightest movement of the mouse. InstallAware plans to render all existing InstallAware setup controls using the same technique, without requiring source level changes in existing installations. InstallAware will even render “Fake Aero Glass”regions in character mode, based on the same technique – ensuring this exclusive InstallAware feature is also back-ported.

InstallAware’s real mode setup engine will require no more than 256KB of RAM on target systems. “While most DOS applications assume that at least 640KB conventional memory is available, due in part to the great work done by memory optimizers such as QEMM, we realize that a lot of the XT (and possibly some AT) systems out there come with 512KB memory, or even less,” adds Royi Sher. “In the time honored InstallAware tradition, to provide the best customer experience possible, our real mode setup engine will work with .OVL real mode overlays, and not need more than 256K free conventional memory at any given time.”

InstallAware is planning to consume the Windows API introduced with Windows 2.0 in its protected mode setup engine. “Most of the API provided by Windows 3.0 and Windows 3.1 was initially introduced in Windows 2.0,” says Aviv Giladi. “While we could have gone with a custom DOS extender like DOS4GW, it made more sense to leverage the Win16 API, together with its standard user interface metaphors, in our protected mode solution. Unfortunately, this does mean we will be sacrificing Windows 1.0 support in our product – which I hope Mr. Karaca won’t notice.”

InstallAware’s protected mode solution will also be fully backwards compatible, just like the InstallAware Native Engine which does not require any source level changes in existing InstallAware setups already built on top of the Windows Installer framework. All InstallAware engines are based on the human readable MSIcode script, which is compiled seamlessly into an MSI file at build time. Today, a developer can switch his setup at runtime between Windows Installer and Native Code setup engines freely, as many times as needed. Tomorrow, two more engines will be available in the mix.

“The only real challenge remains how to enter and exit real/protected mode within an existing virtual mode Windows session,” adds Mr. Karaca. “We are considering multiple techniques like hypervisor based virtualization, application virtualization, among others. The most exciting technique to me is the boot loader we’ve codenamed April for the coming spring. If a PC is booted with April first inserted to a USB slot, everything becomes real easy.”

“Doubtless there will be naysayers who fail to see the broader thinking behind our plans,” concludes Mr. Karaca. “I expect, first and foremost, to hear from industry analyst Christopher Painter, who has often portrayed us quite unsympathetically. Maybe now with this last secret InstallAware piece uncovered, he will finally support us!”