First, a little personal background…

I have always been interested in programming languages, compilers, and code translators. Actually, compilers and code translators are quite similar: both parse a program written in a source language and transform it into something else: native CPU opcodes or IL opcodes in the former case, high-level language statements in the latter.

I wrote my first compiler 28 years ago on a pocket calculator, the mythical HP 41 CV, that had just 2.8K of RAM – it’s not a typo, I really mean 2800 bytes of memory! Shortly after I published my first BASIC compiler on a computer with 48K of RAM. I graduated at Computer Science University presenting my implementation of a PROLOG-like language, my first serious program for the IBM PC. A few years later I started my own software company and made some good money selling an MSDOS batch language compiler and a custom language for authoring expert systems. In the last decade I wrote at least one dozen parsers, interpreters, cross-reference tools, and code analyzers, either for internal use at Code Architects or for our customers. None of them ever became a commercial product, yet they allowed me to fine-tune the skills that made VB Migration Partner a reality.

All these details came to my mind when I read this post by Mauricio Rojas of Artinsoft. Let me quote him verbatim:

I hate to be disappointed. Specially if it is by a person you had respect for. And that's exactly what Francisco Balena from VB Migration Partner, has done. I have respected him for his books and all his VB6 experience. In terms of legacy VB6 code he is a monster. He is the man. But in terms of code migration...

The author doesn’t complete the sentence, but it’s evident he believes that I am just an apprentice in code migration, who can’t compete with all the experience he and all his colleagues have in this field.

Mauricio is so upset about my supposed ignorance that he forgets to mention when and how I disappointed him. He doesn’t even provide a URL for reference. He isn’t fair to his readers, who are deprived of the possibility to share his grief and concerns; and of course he isn’t fair to me, because he insults me without giving the opportunity to reply on concrete facts.

In the absence of more precise clues, I can only guess that Mauricio is thinking of this article, where I expose my opinion about the limitations of VB6-to-C# converters. His distress is understandable, because Artinsoft sells such a tool, a detail that makes his post look suspiciously closer to a (rather questionable) business trick than to the genuine grief of a disappointed reader.

Let me quickly recap the facts. In this article I affirmed that a VB6-to-C# converter can’t be as effective as a VB6-to.VB. NET converter. Some days later this post appeared on Artinsoft site, where the author declares that their tool can handle *all* the differences between VB6 and C#. That was a very strong claim, thus I decided to illustrate a few VB6 code snippets that no C# tool can translate in a satisfying manner, IMO.

Mauricio could have argued by showing how their tool converts these specific snippets. He could have commented my opinions and replied to my observations with concrete facts (and real code). Instead, he preferred to attack me personally, saying that my code generation experience is “disappointing” but carefully avoiding any detailed explanation.

I don’t know how effective this questionable business practice can be. In this specific case, however, it is more ridiculous than offensive, and the reason should be obvious:

I am the main author of VB Migration Partner’s parser, code analyzer, and code generation engine. Our tool runs many times faster and generates about 15x fewer compile and runtime errors than the Upgrade Wizard. Also, VB Migration Partner has many features that Artinsoft’s VB Upgrade Companion still doesn’t have after 6 years and two major versions.

Not bad for a code generation newbie, uh?