TechEd 2011 – Atlanta

So not sure if you all know but InstallAware is appearing @ TechEd 2011 in Atlanta and we’d love you to come visit us there! Our booth number is 1841. We’ll be giving out some nice InstallAware pens, brochures and a demo CD. We’re going to post live pictures on our blog and on our facebook page with some lives updates from TechEd.

This is InstallAware’s very first trade show, and all the team over at InstallAware is very excited.

I hope to see you there!

-Royi

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 vWorker.com, 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 CodeProject.com 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.

 ~Sinan

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!”

InstallAware wins ComponentSource’s Bestselling Publisher Award 2010-2011

ComponentSource have announced their 2010-2011 best selling publisher winners, and InstallAware has been awarded, yet again, as the #65 best selling publisher at ComponentSource.

InstallAware is proud to be listed in the Top 100 best selling publishers list over at ComponentSource, one of the most powerful resellers worldwide. We’re very happy to receive this right after the Oscar’s, gives us a very good feeling :-).

This is the first time we’ve been listed on ComponentSource’s top publishers list. I’m very proud. Let me make an Oscar speech:

I would like to thank Mr. Karaca for making this wonderful and amazing software, I would like to thank my niece for being so cute, BUT most important, I would like to thank you, the clients, for helping us getting to this rank, believing in us, and getting us even more and more motivated to produce for you the best software deployment out there. With you belief and your help, we will make it even better.

I would also like to thank ComponentSource for the great news they brought to us, and in gesture, we will be providing a 26% discount all week long on all of your purchases, to celebrate this award.

Thank you from all of us here at InstallAware. We appreciate your support and your help! We need you – the client – without you we would be lost!

-Royi

Official Page

Adventures in Alohaland – Caveat Emptor! (Buyer Beware)

I fell in love with Hawaii in 1999. It was a shamanism seminar that took me to the Big Island of Hawaii for the first time that year. While the transit landing on Oahu, Hawaii’s most populated (but not biggest) island was not impressive – the sounds and humid scents of a typical tropical place – after a 45 minute flight to the biggest island of the Hawaiian Islands (but not the most populated), I was in for a tour de force. There was no stale humidity here, but a raw sense of power and energy. This was after all the home of Pele, the Goddess of the Volcano! Still very much active, the volcano of the Big Island of Hawaii pours fresh lava into the Pacific Ocean and the Big Island gets bigger daily. Perhaps I glimpsed a hint of this energy, of this land-in-the-making, at the Kona airport landing. The whole place felt like it was oozing with Mana, local for power.

 

The airport itself was very lovable. This wasn’t your typical sealed, air conditioned, locked up terminal building – everything was out in the open. Built on a part of the island that never got any rain, the gates were small huts, and the terminal was just fresh crisp air. Within the next seven days of the seminar, we discovered different parts of the island, from the Kapu sites (local for sacred), to the valleys, beaches, and mountains. One of the amazing things about this place is that three fourths of the world’s climates are all simultaneously experienced, based on what part of the island you are on. I heard stories of high school teenagers riding to the top of the Mauna Kea observatory, packing the back of their trucks with fresh snow; then driving down to the beach before the snow melted, and playing snowball and swimming all at the same time. If there was a paradise on Earth, this surely was it!

 

I came back twice to the Big Island that year, explored the lush valleys of Pololu and Waipio, full of majestic waterfalls, tropical rivers leading to the ocean through the heart of the valleys, and of course, climates that changed just by hiking up and down for forty five minutes. It was the time of my life. Pele herself was nothing short of majestic! While the Crater Rim drive at the Volcano National Park has since been abridged multiple times, I was fortunate enough in 1999 to be able to drive deep into the heart of the volcano, and touch the ground where it was physically hot to the touch – this was raw power and energy, the Earth, being born, and reborn. True majesty!

 

I was also very impressed with the locals. We were graced with the presence of some native Hawaiian’s during our seminar, very fierce and kind warriors who honored us with an Awa ceremony at the end of our retreat. I particularly recall Hale Makua – I am usually quite shy with strangers, but I could not resist the urge to hug this elderly man who radiated peace and love. Another warrior approached me and touched his forehead to mine and took a deep breath within; I was later to find out that this was a native form of greeting between warriors. I felt so graced by all these experiences. The natural beauty of the land, the wisdom of the locals, the closing Awa ceremony, it all provided inspiration for years to come. While I turned back empty handed from the seminar itself (no experiences of altered states of consciousness), I was enriched nonetheless by these memories, which I knew I would cherish for a lifetime.

 

And cherish them I did! That is why, in 2010, I choose Hawaii as the location of the new North American offices for InstallAware. One of the perks of owning a business is that you get to choose where to run it from. One of the perks of running a software business is that you can run it from anywhere on the planet where a high speed Internet connection is available. I combined both perks with my fond memories of Hawaii, and I knew where I wanted to be. In hopes that it would be easier to find and retain talent, and setup the necessary infrastructure, I chose to set up the business on Oahu, instead of the Big Island. After all, Honolulu, the capital of the Aloha State, is a bustling metropolis – home to a million people. This, I felt, would be the best of both worlds – the conveniences of big city living, as well as instant access to paradise.

 

I will mention certain companies and individuals by name in the spirit of “caveat emptor” – I would caution all my readers to steer away from them at all costs. These people have built a track record of unaccountability, and sustained underperformance in their dealings with InstallAware. Surely I too am to blame, for having retained their services and counsel despite obvious incompetence. Unlike what happened with Viresh Bhatia, which is a decidedly grey area I covered extensively in my previous posting, what we have here is a lot more black and white. InstallAware’s adventure in paradise was anything but paradise.

 

The first individual I want to write about is Carl McCarthy, a lawyer from New York. In fairness, Carl has nothing to do with Hawaii, but he did introduce me to the key people in Honolulu who did everything they could to run InstallAware into the ground. I first met Carl during negotiations to sell the InstallAware business in 2010. I thought that having a professional lawyer by my side would ease the negotiations and strengthen my hand. Unfortunately, it had the exact opposite effect. Every negotiation Carl went into, he came back weaker out of. He also had the annoying trait of being convinced by the side he did not represent against the benefit of the side he did represent.

 

The sale negotiations broke down, but I retained the counsel of Carl in forming InstallAware’s Honolulu operations. I went out of my way to be nice to him – for example, he flew to Honolulu first class on InstallAware, had accommodations covered by InstallAware, in addition to being paid for his time spent there on InstallAware’s behalf. Despite all these gestures of good faith, Carl never really understood InstallAware’s business, and was quick to dispense harmful advice and connections at the same time.

 

Carl first introduced me to N&K CPA’s, a local accounting firm. I later found out that this firm has a reputation of overcharging out of state clients. InstallAware fit their demographic perfectly – trusting, out of state, and in love with the state of Hawaii. N&K CPA’s offered accounting and consulting services for InstallAware. They did overcharge us for these services. Entering a consulting engagement, I did expect to be overcharged – after all, you are in essence paying for the convenience of not having to do deal with things you’d rather not deal with! What I did not expect however was to have to double check and redo almost everything they did for InstallAware. For instance, the job ads N&K CPA’s put out for InstallAware were typo ridden, even after multiple revisions. It still blows my mind how this could ever come to be in this day and age of automatic spell checkers, but it happened – on multiple occasions. Some things InstallAware asked for, they just never delivered, despite billing us the hours. A lot of paperwork they were supposed to do for InstallAware, I ended up having to do manually. And the N&K CPA invoices were truly amazing. They invariably came with a “Christmas Sale”: a 40% discount that looked impressive and generous, concealing the fact that this discount was applied over an even larger markup.

 

I severed the relationship with N&K CPA’s when they attempted to charge InstallAware three times the prevailing rate for filing elementary tax returns (after the Christmas discount). Since the Honolulu office was essentially a Sales and Support office with no ownership of InstallAware IP, the company had barely generated any revenue. Yet their quote, even after their very generous discount, might as well have been for our worldwide HQ. I had to fire them and I retained another accounting firm at a fraction of the cost to get the filings done.

 

The second introduction Carl made was to Darius Seo, a business consultant. Darius was a native of Hawaii, although he had been living in New York for some time. I was initially wary of working with someone who had an aol.com business email address, but Darius put on all the moves. He invited us to cook outs at his parent’s beach front properties in Honolulu. It seemed it might be fortuitous to have a local connection in Honolulu working on InstallAware’s business plan. It was also amusing that his way of doing business development was to complain to his potential clients that he had to deal with them to earn their business – he literally complained to me, his potential client, about having to handle the business development at his company. I also found out he was bipolar, when Carl asked him how his condition was progressing after a few drinks during our cook out. At the end of the day, I think this is how he got the InstallAware “sympathy vote” and was actually engaged with rendering InstallAware’s business plan on paper.

 

I will never forget Darius because he spent an hour arguing with me about what InstallAware’s sales figures really were. He would not take my word for what they were and literally wasted one hour arguing irrationally until I connected to our online sales reporting system and shoved the numbers in his face. Only then did he admit that he had made a mistake entering the sales numbers I had sent him previously into his own custom spreadsheet program. In general, Darius would argue the exact opposite of any position I took on any matter. It’s not like Darius was tasked with inventing a business plan for InstallAware either – he was essentially going to put in formal writing the existing roadmap we had been executing at InstallAware for the past seven years. This he would not do, and I had to pull the plug on him as well when he obstinately refused to cooperate.

 

All these three parties would also keep inventing excuses to give each other more business under the most thinly veiled disguises. Darius would claim he needed the accountants to run over some numbers and Carl to make some calls on behalf of InstallAware, and so forth. It was the most expensive and wasteful feedback loop I ever witnessed. Again, if either of these parties had actually been able to deliver anything, anything at all – that might have been reason to believe that they actually had good intentions at heart. But from Carl’s efforts to sell InstallAware an “employee handbook” for $1,000 – something that can be Google’d for free – to Darius’s overreaching arrogance (he even spoke out against disabled parking spots when he couldn’t find a parking spot he liked), these people were truly no good to anyone.

 

To top it off, I actually experienced bits and pieces of reverse racism on Oahu. A lot of my Asian friends had touted how they love it in Hawaii because there is no racism there – well, there is no racism, but there is reverse racism. While I have white skin, I am not an American – I was in fact hailing from my native Turkey, halfway across the world (the exact 12 hour time difference between Hawaii and Turkey made timekeeping particularly easy when calling home). In ignorance of this fact, a lot of people just assumed I was Howli – local for “breathless”, a derogatory term in reference to the early Missionaries who came to the islands centuries ago, breathless in their tight collars, supposedly spreading enlightenment among “savages”.

 

Any Turk you meet will be happy to tell you all about the Great Turkish War of Independence, and how much sacrifice and fighting was necessary for independence, and what great cost is still paid on a daily basis by every single Turk. So I certainly feel for the locals and their desire for independence; but if you’re going to get colonized, you might as well be colonized by the biggest superpower on the planet. And hey, you can go anywhere on a US passport without having to suffer countless indignities trying to obtain travel visas! Sure beats travel on a Turkish passport.

 

Combined with lackluster performance from employees (who looked great on paper but were completely unqualified for the positions they had been hired for – compliments of N&K CPA’s), there was no reason to keep InstallAware in Hawaii any longer. It was a very sad decision, but I guess not all dreams are meant to come true in life. I do hope to revisit Hawaii some day in the future, as I still love the place, and I have made good friends there.

 

Right before leaving the islands, my friends took me to the Dole pineapple factory on Oahu, where they have a large fish pond. That pond is full of massive fish looking like goldfish inflated to ten times their usual size. They have almost translucent skin and thick veins running throughout the lengths of their obese bodies. A lot of tourists visiting the factory stopped by the pond and fed them generous servings of fish food. Another memory I will never forget of Hawaii are these fish. They were very fat, yet they would harass one another, even getting out of the water for short bursts in intense competition, trying to grab the fish food being dispensed from the coin operated food containers above. Their mouths were proportionately huge and made this pronounced vacuum sound, trying to suck in as much of the fish food as they could – jumping over one another, breathless out of the water, madly flapping from side to side, before running out of “air” and scrambling back in a mad frenzy, back over one another, desperate to submerge in the water from whence they came.

~Sinan

Lessons from history.

Winston Churchill (he remembered for his iconic bulldog and cigar the size of a forest log) summed up the state of software (although he did not know it then) when he quipped (to paraphrase): it is a riddle wrapped in a mystery inside an enigma. I remember attending a lecture back home in the dusty frontier town of Johannesburg, South Africa by the then chairman of Anglo American’s Gold and Uranium division, Clem Sunter. He, like Churchill (he did not know it then) summed up the state of software when he described it as taking the high road to success or the low road to failure. Neither of these great gentlemen was of course alluding to software but that’s of no consequence here. What they did say though, could represent the state-of-the-nation address about what software has become.

So what exactly has this to do with IA? First principles, that’s what. I am a recent convert to IA. Like many IA users I cut my teeth on that other product. The one thing I noticed was that when I danced to the merry tune of that product, each version seemed to complicate the dance steps and added more complex reels and jigs to the beat. Given that all I wanted to do was produce quality installation packages I sometimes found the complexity overwhelming. Yes, I do agree that you need a broad spectrum of features to make software more usable but at what cost? Microsoft no longer (to the best of my knowledge) herald that “we have added 1800 more features to our Word application.” Jolly good too. If someone told me that I had 1800 more things to use at my fingertips I’d feel a sort of obligation to learn many of them. Not because I need those features but possibly because without them I’d feel that I was not leveraging the best from the application. There’s the rub. When an application needs to be updated to keep pace with the other horses we have to draw a line between the thoroughbred and the dressage horse

I am as guilty as anyone when it comes to developing software that outlives its original purpose and design. So often I’ve added a riddle wrapped in a mystery inside an enigma all concealed as a new feature disguised as a bug. I have code I authored and am working on at this time that resembles an unfortunate cyclist’s bicycle inner tube – full of patches. How it manages to get me home each day is remarkable. Even moreso for our hapless users. When asked how the next release was progressing, I somewhat insensitively told the project manager “well, it compiles clean, so let’s go live and put it in production.” I sometimes wonder if that is not such a unique thought after all. I would never think of doing such a thing but in the endless cycle of effectively giving less that’s usable for more money, I think I, like the other company has reached that place where the original product has now become diluted. It’s still useful but less usable.

I know little about the birth pains of IA. What I do know is that it is not a hack of what went before it. They took a new look at what an installation package should do. It was designed from the perspective of first principles. It does not resemble a tin roof stuck on a concrete slab sticking out from the support of a rotten piece of swamp wood and then covered with white paint to make it look like something new, but concealing what exactly, within? I’d previously have had to use maybe 50% of lots of things to do the 15% I was trying to do. IA has met my design challenge of letting me use 10% to do 80% or 15% to do 90% although the ratios are irrelevant. The point I’m making is that by getting back to first principles I can do most things using the minimum I need but still giving me enough in reserve for the rest. For certain, much of that is due to IA handling the complex details out of sight down in the engine room. Should software play catch-up just for the sake of catch-up? There is nothing wrong with that. Time and again, we’ve seen products get better if there is an ever changing yardstick to compare it to. By the same measure it can work against a product. I think IA affords an excellent and extendable product. I’ve no idea what the next major version will offer and I hope that IA will not start to take it down the rocky path like some applications I’ve used. Compared to the other product, IA has achieved – by embracing first principles – divergence. IA is now charting its own course and destiny. The other ship not only has to contend with stormy waters but it has to keep a weather eye open for IA sailing alongside in the fresh wind of healthier latitudes. One industry analyst described IBM as a heavily laden ill-balanced tramp-steamer, reluctant or unable to change course without needing miles of open sea to do so and then compared it to that nippy speedboat called Microsoft that cuts and thrusts over waves and wake. I’m no industry analyst but I can see identical sailing conditions between IA and you-know-what.

That brings me back to what Clem Sunter offered: low road or high road. I’ve a good idea what one they are taking.

Kind regards

Peter Hamilton-Scott

Extending MSI command line switches

Hi there! Today I’m going to show you how to extend your InstallAware setup packages to support custom command line switches. A frequent question we get is “why don’t standard MSI command line switches work?” The answer is really simple – InstallAware has its own bootstrapper and the command line parameters it accepts are well documented under the help topic “Setup Command Line Parameters“. In a nutshell, /s makes setup run silently, /l=<full path to log file> turns on logging, and you can pass variable values using the form “TARGETDIR=<path value>” (including the quotes, if you are specifying values with spaces in them).

Now that we’ve gotten the basics out of the way, let’s talk about how to extend this behavior. For instance, you  might have some real difficult customers who have this irrational insistence on sticking to standard MSI command line parameters. Or, more legitimately, you might be wanting to define your own custom command line parameters to do whatever you feel like doing with.

The $CMDLINE$ pre-defined script variable contains the exact command line passed to your installer. You can investigate what this variable contains using the If script command together with the Contains expression. This will make it very easy for you to test for the presence of custom command line switches. For instance, take a look at the following code snippet:

if Variable CMDLINE Contains /quiet
Set Variable SILENT to TRUE
end

This snippet uses the pre-defined script variable $SILENT$ to turn on silent installation mode when /quiet, a standard MSI command line parameter, has been passed to your installer. Easy enough!

For more complex evaluations, you can assign the $CMDLINE$ pre-defined script variable to a custom variable and then use the Parse String command to extract exactly whatever you need without destroying the contents of the original command line variable.

Talk to you soon!

Michael Nesmith
your friendly support engineer

So who needs the automation interface?

Hello everyone, this is my first official blog item, anywhere, and thanks to Candice Jones at IA for given me the official invitation. When I say it’s my first ever blog item, I mean it. As much as I know how to use the internet I know very little about how to do the internet so this blog malarkey is new ground. New ground? That sort of leads me on to what I want to write about. I come from an InstallShield background and about three weeks ago I discovered IA and it’s been a chaotic time ever since. Not chaotic in the sense of how do I do something but more like, how do I undo what I was used to doing? Don’t get me wrong, I am not here to knock InstallShield. But since I’ve been using IA I’ve come to appreciate how much nicer it is to achieve similar functionality, but much, much easier.

What I’m really referring to here is the automation interface. InstallShield offers a rich subset of COM classes. Yes, COM! I had raised a ticket requesting a fully .Net-managed version be made available. We use the automation interface to create new projects from a template project and use an XML file to describe the features, components, and filenames to be installed. The first reason I designed it like that is because in theory, anyone could add or remove files from a build by editing safe-ground XML data. The second reason, and the most pressing to solve, is that the alternative is that I would have to teach people how to copy a template project and then add new files and do this and do that and what have you. That’s the crux of the problem, being forced to employ the automation interface to solve a problem that could not easily be solved without it. Now, in my period of time evaluating IA I never got round to demonstrating the automation interface in the Admin Studio edition. So how could I really sit here and write giving the impression I was comparing eggs to eggs?

This is the best bit: I did not have to. The ease of use afforded by IA meant I could take a project template containing most of my InstallShield template. Instead of using my automation interface program, I was able to prove that given access to the IDE machine, we could copy a project for a new installation, load it in the IDE and within a very short time change the project to use the new files or other facilities we wanted to include in it. One of the most complex issues I had to solve in InstallShield was needing to fix the occasional buggy record in the MSI tables and getting mega-confused deciding does something go in this sequence at such a position or elsewhere in another. True, that was not often required but how do you pass that kind of shoot-from-the-hip knowledge to someone else who, arguably, just wants a new installation with the minimum of fuss?

That’s what IA has achieved. Minimum fuss. Maximum do. I’m sure there is a place for the IA automation interface. I’ve trawled through the user forums looking for posts and I’ve seen precious few, if any reasons to use it. This proves my case – my opinion alone – and that is the automation interface is not called upon widely because there is not really a need to do so. IA has solved many installation problems by burying the complexity under-the-hood. So is the automation interface really required then? Well, you can bypass it by using compiler variables and use those in the MSIcode. This is an area where IA scores very highly. With one script you do everything that an install or uninstall requires and using compiler variables lets you wrap your runtime specific requirements in one easy to get at location. The compiler variables let you steer your project build along different roads. Compiler variables do not banish the automation interface and the interface does not banish the variables. Think of them as different toys brought to the party and that’s the power of IA. It joined the best of many breeds and took the concept of building installations right back to first principles and built a new castle on the hill.

My wife likes jewellery shops and what they sell, mostly gold for some reason (sigh!). She has no interest in digging through tonnes of ore looking for it. I look upon IA for the same reason. The ease of use means I and others can pick something off the shelf. Does that mean we can throw the shovels away? No, but we can put them back in the shed and work on doing things differently. If I’ve had to unlearn topics I was used to it’s because there is another paradigm. What IA does it does very well. Now that I can put the automation interface problem away for now and using compiler variables means I can now focus on doing what I do well, and that is…buying my wife more jewellery.

Kind regards. Peter Hamilton-Scott.

Using compiler variables to customize setup at build time

Hello everyone, I hope you’ve all been well!

This post’s topic: How to customize your setup at build time. This could be used for different products, when only very few things change between them, and having a unique setup project for each one turns into a major copy and clone nightmare. It’s really a quite common scenario to have similar products using similar setup routines. At InstallAware, we actually ship a single installer that contains all four of our product editions – allowing users to choose at runtime which version they want to install. We might cover that in a later post; for now we’ll look at how to customize your installations at build time – emitting multiple “flavors” of a setup, if you will. This is where Compiler Variables come into play.

Compiler Variables are defined inside the Project Options window. To bring up this window, click the Project Settings button, found inside the Manage group of the Design tab.

Choose the Compiler Variables section and you’ll see three buttons, Add, Edit and Delete. This is where you define and set the initial values of your Compiler Variables. These variables are accessed using the #COMPILER_VARIABLE_NAME# format inside your MSIcode script. You may use these variables anywhere inside your script. Even MSIcode command fields which do not ordinarily accept variables will take compiler variables, since compiler variable values are “burnt-in” at build-time, and do not change at runtime.

In addition to replacing literals with values injected at build time, another use of compiler variables is to conditionally include/exclude parts of your MSIcode script. Use the Compiler Variable If, Compiler Variable Else and Compiler Variable End MSIcode commands to include/exclude parts of your setup project at build time. This adds a lot of flexibility to how you can build setups at runtime – you can take out whole blocks of MSIcode script, completely changing your setup logic and files – all at build time, and without needing to use complex automation.

Here’s a short list of what you can customize with compiler variables, among other things:

  1. Product name
  2. Product version
  3. Product code
  4. Files being installed
  5. Features being built

Take look at the code below to see what I mean:

As you can see, one of my compiler variables is “MYPRODUCT” and its defined/initialized on the Compiler Variables section of the Project Options window. The above code builds some files and features if the compiler variable “PRODVERSION” is equal to “Enterprise” but excludes one file if the compiler variable “SUBVERSION” is not equal to “Full”.

You might also want to take a look at the pre-defined compiler variables that already exist in InstallAware. There are two kinds of pre-defined variables – pre-defined compiler variables and pre-defined script/runtime variables – so don’t get confused between the two. Both of these pre-defined variable kinds come in real handy for lots of things, like figuring out the execution path of your setup. I’d definitely encourage you to take a look at them. Just search for pre-defined variables and pre-defined compiler variables in the help index.

My favorite compiler variables are the following:

  1. LOADOLDDATA: Instructs the setup engine to migrate feature selections from older versions.
  2. PROJDIR: Resolves to the project directory on your system.
  3. LOADOLDDATA: Instructs setup to change the way in which localizations are applied at runtime (see the help file for details).
  4. BUILDMODE: Resolves to CD, SFX, WEB, or PATCH based on your setup build mode.
  5. TITLE: Resolves to the name of the setup project.

Thank you,

Panagiotis Kefalidis
Software Design Team Lead
InstallAware Software Corporation

How to detect Windows Server 2008

Hi. Many of you have asked if InstallAware supports detecting the newly released Windows Server 2008. It’s very easy by using the code below:

Set Variable SERVER2008 to FALSE
Get System Setting Service Pack 1 into SP1
Get System Setting Windows Vista into VISTA
Get System Setting Windows with Server Features into SERVER
if Variable VISTA Equals TRUE
     if Variable SP1 Equals TRUE
            if Variable SERVER Equals TRUE
                  Set Variable SERVER2008 to TRUE
           end
    end
end

After this code runs, if the variable SERVER2008 is TRUE, then OS hosting your installer is Windows Server 2008. You can add this piece of code somewhere inside your main setup script, or inject it as a requirement inside the “Check Application Requirements” code folding region to prevent your installation from running at all if the target OS is not Windows Server 2008.

You can also check for Windows Vista with Service Pack 1 using the same script but by removing the “if Variable SERVER Equals TRUE” evaluation.

You can download the script from here.

Thank you,

Panagiotis Kefalidis
Software Design Team Lead
InstallAware Software Corporation