"Steve, you're a good programmer. You say you can't write the insurance form program in Focus. Focus is a great language. Fortune 500 companies use it on their mainframes. Please try again.".
The time is 1986, and IBM rules the world. Focus, a database language from Information Builders, Inc.(IBI), rides their coattails, both on big blue big iron, and on the desktop. Most fortune 500 companies use Focus. It's big and expensive, and very corporationally correct. And lousy at formatting complex reports. The insurance forms my program prints are as complex as it gets. The company has a Focus hotshot, a former IBI employee. I request his help, but I'm told he's too busy with his own projects to help me. I'm on my own.
Meanwhile, at home on my Kaypro 2x, I use Turbo Pascal 3.0 from Borland. $49.00. What it lacks in features, it made up for in simplicity, speed and reliablility. The entire development environment is 40Kb, and fits on even the puny floppies of the day.
When I ask the company to get Turbo Pascal so I can use it to format the insurance forms, they laughed. "Steve, get real. That's a $49 compiler. It's a toy. We're a professional shop." But to humor me, they buy the compiler. After all, it's only $49.
I use Focus to dump the data, and format it with Turbo Pascal. Two days later the program is done.
They are not impressed. It's as if I cheated or cut corners. If only their Focus guru had time, he could have helped me do it entirely in Focus.
A week later management asks me to help another programmer format ledgers in Turbo Pascal. A day later ledgers are done.
Two weeks later our Focus guru asks me to format one of his reports in Turbo Pascal :-). He has it the next day.
Six months after that I use our "toy" $49 compiler to make a client-server eligibility program. 1986 was a very good year for Borland Turbo Pascal 3.0 and me.
Turbo Pascal was a corporationally incorrect technology. No matter how well it performed, no matter what miracles were accomplished, no matter how bad it made the corporationally correct technologies look, it got no respect.
There have always been corporationally incorrect technologies, and always will be. Many are corporationally incorrect because they're junk. But others are great products which attain corporational incorrectness for other reasons. This issue of Troubleshooting Professional Magazine is devoted to great technologies that are corporationally incorrect, and the ways they can help you.
You might not want to joust windmills and throw VB out of your shop, but you just might be able to sneak PERL in for a few system administration tasks. And who knows, when the boss sees you accomplishing a weeks worth of work in a day, he might ask you to do some PERL web back ends.
I had some excellent help writing this issue of Troubleshooting Professional. Many thanks go out to Bill Anderson for his excellent article on Visual FoxPro.
So kick back, relax, and read this issue. And remember, if you're a Troubleshooter, this is your magazine. Enjoy!
Do you prefer the Mac, or the PC? The question is ubiquitous.
In 1988 a friend asked me to help configure her computer. It turned out to be a Commordore Amiga, running a very nice WYSIWYG version of WordPerfect. Half the price of a PC and twice the power. Better than a Mac, 1/3 the price. It wasn't alone. Atari, the game maker, produced the Atari ST, which I felt was even better than the Amiga. But the Amiga and ST were typecast as toys, so corporate America shunned them. They're gone today.
1802: Robert Fulton launches the first commercial steamboat. It's greeted with laughter and derision, called "Fulton's Folly".
1884: Nikola Tesla champions alternating current for power transmission, flying in the face of corporationally correct direct current. Direct current is sponsored by Thomas Edison, whose monopoly over electricity makes the future IBM and Microsoft look like mom-and pop shops. Direct current dominates for years.
1980: Microsoft's MS-DOS makes a little desktop computer more useful than a mainframe terminal. Corporate America considers this technology a toy for the next five years.
1984: Apple introduces the Mac, with a mouse and GUI. Corporate America doesn't want employees playing with a mouse using MacDraw, they want their people productive on the command line.
1985: Borland Turbo Pascal 3.0 costs $49 and blows the doors off all other environments for productivity. Considered a toy.
1986: Borland Turbo C has an integrated debugger and editor, and compiles/links/runs in less than a half-minute, at a time when its competition takes 3 minutes to do the same thing. It costs $100, less than its slow, command line only competitors. But it's from those "Turbo Pascal Guys", and it's cheap, so it must not be any good.
1990: Clarion 2.1 sports a 2 way code generator allowing you to complete a 5 table app in a day, then write code to tailor it exactly to the user's expectations. At $600, it was about what you'd expect to pay for a professional development environment. To this day it's the most productive business app development environment I've seen. But it's not Xbase -- corporations ignore it.
1990: Borland Turbo C++: An almost complete implementation of Ansi C++. At about a hundred dollars, it was the first OOP language priced for the common man. But it was from those "Turbo Pascal Guys".
1989-present: PERL. This is THE MOST PRODUCTIVE language for reports, string manipulation, and batch processes. It's free, which really bothers Corporate America -- there must be something wrong if they have to give it away. Too bad it isn't GUI. Of course, throw in a browser and it's as GUI as anything from Redmond. If you look around the net, you can find lots of third party support, including ODBC. PERL is written and supported by one guy (Larry Wall), with a cadre of dedicated programmers providing add-ons. If PERL had even one percent of the R and D budget of its competitors, it would rule the world today. But then, if it was work for hire, the product wouldn't be as good. Since PERL is completely free, you can "sneak" it into your corporation to create quick success, then allow it to "spread".
1994: Java: Sun opens the doors to Programmer paradise, with a great OOP paradigm, complete portability, easy multithreading and memory managment, and built-in web integration. But it threatens certain well-entrenched interests, who do everything in their power to obfuscate the situation and instill FUD (fear, uncertainty and doubt), including producing their own non-compatible version. The jury's still out on Corporate America's acceptance of Java.
1995: Delphi: "Those Turbo Pascal Guys" deliver a drag and drop VB killer that is faithfully OOP, quick developing, and robust beyond belief. Corporate America yawns, saying "if only the underlying language was C++ instead of Pascal".
1997: C++ Builder: Borland delivers Delphi with C++ as the underlying language. Corporate America, mumbling something about "C++ is too difficult", continues to use VB. Borland then quickly delivers JBuilder -- a Java-based Delphi. JBuilder just may put Borland where it's deserved to be all along -- a central component of Corporate Development.
Present: Symantec Visual Cafe, Sybase PowerJ, and Borland JBuilder give three great choices for developing portable Java web apps, no matter what operating system the user has. Sun retains firm control over what is and isn't Java. PERL remains the most portable and accessible language around. Javabeans and Corba take objects a step further, without marrying a particular operating system.
Corporationally incorrect. How does it happen? What do these technologies have in common? Why doesn't Corporate America see that the king has no clothes?
You'll probably agree it stems from fear. "You can't get fired for buying IBM". Note the examples in the history section above. They didn't ride the leader's coattails. Turbo Pascal 3 and Turbo C weren't big-blue big-iron. Clarion 2.1 wasn't Xbase. And the rest weren't Redmond sycophants (some were quite the opposite).
The fear extends to "will they be around". This has especially worked against Borland. With each great new technology they produced, there were new rumors (I wonder who started them) they "wouldn't last a year". Their low prices added to this fear -- how could they make money selling product for a couple hundred dollars.
Except Clarion, the Mac, and some of the modern tools like JBuilder, PowerJ, etc, the technologies listed above were inexpensive. Ironically, it worked against them, calling into question their financial staying power. PERL is particularly maddening, being absolutely free. Do executives imagine their PERL support coming out of garages by skateboard-wielding 16 year olds? I think they do.
But look a little deeper and there's a different picture. That toy MS-DOS, and its Windows successor, finally took over the world. The GUI Apple introduced to the masses in 1984 finally became corporately correct (albeit in a Microsoft incarnation) in 1990. Borland's still around, and finally appears to have a growing market share in Corporate America. Sun's Java has taken the biggest hit, from the biggest player in the information age, and it's still on its feet jabbing away at the aging champ.
The message is clear. Often the corporationally incorrect technology is the best, and is usually inexpensive, and over the long haul some of it will thrive, eventually ruling the corporate world.
So bring it in with the excuse "I just want to evaluate it to see if it has any value to our organization", become a hero using it on a small , encapsulated project, then finally allow it to slowly spread. That way, when executives finally see the king has no clothes (remember, even IBM's reign didn't last forever), you'll be right there with the best tools.
PERL is a breath of fresh air. It can be installed on almost any UNIX machine, on any Windows 32 bit machine, or on a Mac. It's extremely fast for an interpreter -- fast enough for most tasks. For any parsing or string handling application, it's without peer. It sports plain-text source code; easy to read, hard to corrupt. Too bad it doesn't have a graphical user interface. Oh, wait a minute -- you can use it as the back end to a web browser, which is all the GUI you'll ever need...
Right now PERL's database access, both in UNIX and ODBC, is less than stellar. But some of the best minds in programming -- you know, the guys who do this for a hobby after coding 10 hour days at their corporation, are working on this. It won't be long before PERL's database connectivity surpasses that of corporationally correct languages.
PERL doesn't have a "development environment". As a long-time Borland booster, you'd think I'd have a problem with that. But I don't. It takes 1 minute to write a batch file, shellscript or perlscript to repeatedly run an editor, then a perl myprogram.pl command, then the editor again, toggling between the error list and the source code. Besides making development fast and easy, the batch file, perlscript or shellscript documents the use and "compilation" of the program.
But what about the nice syntax assistance offered by modern development environments? Context sensitive syntax, use hints, etc. I get the same thing by copying snippets off the "Steve Litt's PERLs of Wisdom" website, and other Perl sites.
PERL isn't all or nothing. Your VB program can shellexecute a perlscript to do a particularly difficult piece of parsing (like turning a report from a different system into a delimited file ready for import), then come right back to VB. Conversely, your perlscript can system() to several VB programs. PERL is the perfect substitute for batch files and shellscripts. PERL scripts are simpler than their batch file equivalents, allowing better modularity, file access and parsing. Shellscripts are very powerful, but they're arcane. Why not learn PERL's syntax, and use it for command macros on all operating systems. And of course, you can use PERL for back-end web processes.
Let's say you have a database on an NT server. You want to query for all phone conversation records to client 10423 whose comment field (up to 8k) contains "Dean Smith" or "Phil Jones". Now you could make a Crystal report with some horrid like clause, set it running and go away for the weekend. Or you could write your own program in a an ODBC aware programming language, probably making your own parsing routine.
But I would use a reporting tool to dump everything for client 10423 out to a text file, then spend 20 minutes writing a perlscript to include only records with one of the people, format it into HTML, and put it in a browser. Maybe add command line args and web form posting so the user could define the search strings. The perlscript could invoke the reporter program, so a user anywhere in the world could trigger the report by clicking on a web link. Not too shabby for a free language.
As I said, PERL isn't all or nothing. That's because it coexists nicely with other platforms and technologies. It's the ultimate glue technology between disparate systems. And what do you want to bet it will soon support object models such as JavaBeans, Corba and COM?
A further PERL advantage is cutting design time. When you can write a complex program in a day, then rewrite it even better tomorrow, you don't need to put every last hook and reusability in it.
When you use PERL, you have plenty of support, and it isn't the "have your credit card ready" or "all our available technicians are busy assisting other customers" type of support. First there are numerous websites. There are people you can email. The best and the brightest of the programming world support this language with third party add-ons. And of course, the newsgroups. No, you may not get phone support "this very minute", but you'll get much better support via the net.
I love PERL. I can pop out a complex file-handling program in an hour. Since I learned PERL, I use C++ and Java only when I need their kind of power. Otherwise, PERL cuts my development time by a factor of 4. PERL allows all my websites to be totally portable (try that with ASP).
I think you'll love it too. It's free to individuals and corporations alike, so just grab it. Use it to solve small problems quickly, then expand its scope. Your life just might get a lot easier.
Borland introduced Delphi in 1995, and things were never the same. No longer were GPF's "inevitable". No longer were Windows Database Developers shut out of Object Oriented Technology. No longer did developers need to choose between slow, weak applications (VB of that time) and needing to become Windows experts (MFC).
Delphi isn't the quickest development environment around. It's not as quick as old Clarion 2.1, or even PERL (with webform front ends). In small projects, VB develops quicker. But man, oh man, it's robust. Once you've got your Delphi app debugged, it's won't GPF. It's a development environment that make sense, and does what the developer expects it to do. That's partly because it's based on a fully OOP language (Turbo Pascal), but mostly because it ships with the VCL object hierchy.
VCL is everything that MFC isn't. There's hardly a bit of OS dependence in it. VCL components model the user desires -- lists, data sources, sql statements, fill in forms, etc. You don't need to know about "pens" or "canvases". You don't need to try to remember when you have to invalidate a rectangle (under normal circumstances). You needn't continually watch the ball bounce between that famous three man volleyball team (Document, Frame and View). Nope, you just read and write databases, and present users with lists and forms to manipulate. And of course, you do it by dragging them onto your form.
VCL really shines when you make new VCL components. Just subclass an existing VCL component, follow a simple and well documented procedure, and your custom VCL component is on the component palatte, ready for action by you or by a junior programmer. VCL components are self-contained -- they usually require no knowledge of or by other components. Interfaces are thin, so apps are robust.
So what happens when you take VCL and port it from Turbo Pascal to two other excellent Object Oriented languages, C++ and Java. You get C++ Builder and JBuilder. Same environment, same high quality.
But there's a terrible programmer shortage today. Isn't VB easier for entry level programmers? Yes, at least on small projects. But as the project grows, VCL based environments scale nicely while the non-oop VB project, with its workarounds and operating system dependencies, begins to crumble under its own weight.
So here it is. If you want to quickly develop a high quality, robust, scalable database app with a great user interface, use Delphi, C++ Builder or JBuilder. For web apps, I'd put my money on JBuilder.
In a perfect world, I'd use just one development tool. It would be totally portable, OOP compliant, multithreading, animation-enabled, pointerless, memory-smart, data aware, quick developing, fast running, secure, and equally useful for web apps, gui apps, and embedded apps. Hey wait a minute, isn't that Java? (except, maybe, for the fast-running)
With all its advantages, why doesn't Java rule the world? Everybody has their opinion, let me give mine. Java ran afoul of a ten-ton gorilla that saw Java as the possible end to their dominance. Imagine, for a second, a microprocessor whose op codes were Java bytecodes. Think that might change our view of what an operating system is and isn't? Imagine a world where all that's needed is a browser, a front end applet, back end app, and an http engine (probably in Java). Operating system -- that's it. In fact, Sun presently offers several flavors of what appears to be a Java-foundation operating system, called JavaOS.
I can hear the groans and catcalls now. "Steve, grow up. Java's slow. It's new and immature. You can't take advantage of the operating system's capabilities.Corel threw all their resources at making WordPerfect in Java, and fell on their face. It will never replace Windows."
Yes, Java is new and immature. Yes, Corel couldn't make a viable commercial wordprocessor in Java back in 1996, when Java was a year out of release to the public. But let's give Java the same slack we gave Windows. If you remember, Windows was considered an utter joke from its 1985 inception until the release of Windows 3.0 in 1990. From 1990 til the end of 1995, when they introduced Windows 95, it was a white knuckle ride with hourly GPF's and reboots. Ten years from first release to solid product.
Now Java JDK 1.02 is updated to 1.1 and 1.2, with a better AWK for better user interface. It's backed by powerful third party enhancers: Symantec (Visual Cafe), Borland (JBuilder) and Sybase (PowerJ). It's getting better all the time. And it's potentially deadly for our friends in Redmond.
Interesting how Microsoft embraced Java, created Visual J++, and put in operating system hooks, thereby eliminating its portability. Interesting how they went on to make Visual J++ a stepchild to Visual C++ and VB. Interesting their development of dynamic HTML as their replacement. ASP. VBscript. And oh my gosh, the press about Corel's "failure" to make a commercial product from a one year old language.
Java took Microsoft's best shot and is still on its feet. That tells us something. Could Microsoft taken such a direct hit from IBM in 1980 and survived? Hardly. Could anyone have written a sophisticated word processing program for Windows 1.0. I don't think so.
Java's a victim of its own potential. It drew fire quickly. Contrast this with Windows 1.0, whose only competition was Quarterdeck (Desqview).
Java took the aging champ's best shot, staggered a little, and keeps fighting. I don't care what the oddsmakers say, I'm betting on Java.
In August 1997 the hero of corporationally incorrect technology failed. Corel announced the end of their all-Java WordPerfect suite. Business-as-usual types were quick to gloat they'd been right all along. Corel had failed. Java was dead.
About as dead as Abe Lincoln after his senate defeat at the hands of Douglas in 1858. Or as dead as Nelson Mandela as he entered prison. Or Lee Iococca after being fired from Ford.
Corel hasn't abandoned Java. Their committment is stronger than ever. You can read about on their web pages.
Corel had the guts to write a major suite in a brand-new language. It wasn't commercially viable. So what? They'll profit from this experience on their next attempt. While the pundits tsk tsk about Corel's "failure", Corel is going for it again. One of these times they'll hit the bullseye. And when they do, the pundits will still be chattering in their cubicles and writing their little articles.
No guts, no glory.
I've been asked to write about Visual FoxPro, a two time All-Star when it comes to Corporational Incorrect Strategy. I've been using VFP and it's ancestors for well over 10 years. At times the product has not been popular but has always been able to get the job done.
In the 1980's Fox Software (the makers of FoxBase and later, FoxPro) was a tiny company based in Perrysburg Ohio. Their claim to fame was a dBase clone that was fully compatible and faster than the database behemoth out of Torrance, Ashton-Tate. As time wore on, however, FoxPro became a more popular choice due to a delayed and very buggy dBaseIV 1.0.
In 1992, Fox Software was sold to Microsoft. As the popularity of xBase waned and the hype around Visual Basic reached dizzying proportions, the FoxPro/Visual FoxPro star did a fast fade. In one memorable article in 1995, Software Magazine listed Microsoft's Visual Basic 3.0 as an object oriented tool and did not list Microsoft's own Visual FoxPro.
FoxBase barely had a pulse in the mid 80's and didn't have much of a pulse in 1995. However in 1998, Visual Foxpro has come back for a third time. Why? Three words -- performance, performance, performance. Visual FoxPro is object oriented, fast and solid. It's not sexy, but it does the job. Did you know that Visual FoxPro 3.0 was the first Windows 95 compliant product released by Microsoft? Did you know the Visual FoxPro 5.0 was the first product to have the ability to subclass ActiveX controls? I'll bet you didn't!
Take another look at Visual FoxPro -- you just might like it!
Clarion 2.1 is no longer a viable product for a modern enterprise, but like Babe Ruth's home run record, it gives us something to shoot for. It could build you a substantial app graphically (using DOS character graphics) in about a day. The executives and users would be thrilled and give you tons of enhancements to do. You'd bust into code, and enhance your graphical work. It was far and away the fastest business app development environment I've seen.
Unfortunately, their 3.0 version flopped, after which they spent their energy ramping up for Windows and playing catch-up. But Clarion Corporation, now renamed Topspeed Corporation, may be poised for another run at the championship with their Clarion 4.0 for Windows. I've played with it a little, and it looks excellent. You can define the database, then simply click a button to generate the entire professional app. And they say it's webable. I'd be interested in hearing from Clarion programmers.
Here's a company that's very quietly challenging the most corporationally correct of our time. They offer a $799 web server called WebSite Professional (TM) V2.0 that's taking some of IIS's market share in corporations. Besides doing everything IIS does, it's got wizards, traffic reports, merchant system development and support, Java development, Netscape and Frontpage server extensions, runs on either Windows 95 or NT, and word on the street is Website is more stable and robust than IIS.
Considering the above, it's ironic that O'Reilly are believers in freeware, often choosing to sell books on freeware use rather than charging for software. Their books on corporationally correct technology (Windows, etc) get them into the corporation. From there it's a simple step for the employee to purchase another book -- this time on free PERL, or free Apache (the leading web server), free LINUX (free workalike of UNIX) -- the list goes on.
Keep up the good work, guys.
Linux is a freeware UNIX workalike for 386,486, Pentium, PentiumII, 680x0 (68020+MMU or higher), Alpha. In simple terms, freeware means it can be given away or sold, but it must include all source code, and there can be no restrictions on resale. Any proprietary mods must also include source code. In practice it ranges from no-charge to less than a hundred dollars. Heck, you can download it. If you pay, it's mainly for the convenience of a CD-ROM media, or for specialized features or service.
Freeware isn't public domain. The license has language that precludes monopolization by guaranteeing access to source code. It also isn't a free-for-all -- it's a reimplementation of the POSIX specification, with SYSV and BSD extensions. Want GUI? X11R5 (XFree86 2.x), X11R6 (XFree86 3.x), MGR are available. Wanna develop? Available C++, Java and Perl (and lots more, but if you can't do it with C++, Java and Perl...). Want editors? Plenty available -- no need for vi. It's multiuser, multitasking, no per-user licensing fees on a single cpu.
As an example, for $49.95, Redhat gives you a cd with Linux, and Apache and Sendmail (add a T1 and you're an ISP), Netscape Communicator, XFree86 (windowing). I didn't see a word processor in there, but I'd think Communicator's web development ability would be more than enough.
But maybe you're afraid to go with Redhat because they might take over the OS marketplace and become a monopoly :-). No problem, check out Linux Slackware (available from www.cdrom.com). It has most of the same stuff as Redhat (including Apache). You can get it for $39.95. And if 2 vendors aren't enough, grab Linux source off the net, have a party with a few close friends, and roll your own. Don't worry, there's plenty of info on the Linux Documentation Project website.
Don't like Unix commands and shellscripts? Make a menu to run your machine. Heck, if I get 50 people wanting it, I'll make the menu program myself.
Linux may not be corporationally correct, but it appears to be politically correct. CPT's Microsoft Antitrust Page says that Linux was recommended as an alternative to Windows as a pre-install for six PC makers by none less than Ralph Nader.
Now the problem with Linux is the "no market because no software, no software because no market" catch 22. But as we move increasingly away from paper and into HTML/Java, that becomes less of a problem.
Like many, I haven't had time to load my Linux yet, but I can tell you the *very first time* I have any financial incentive to do it, I will. With HTML/Java replacing paper and Winhelp, Linux just might become more practical than its alternative.
"I'm not going to get involved in a religious war". You hear this phrase uttered every time conversations turn to browsers, operating systems, desktop systems, or development environments. Anything where corporately incorrect technologies fight for their lives.
First a clarification. The accurate statement is: "I'm not going to get involved in an ideological war". Anyone intelligent enough to be reading this understands the difference without further clarification.
"I'm not going to get involved in an ideological war". Kind of has a ring to it. "We're adults here. This is the real world. We're talking about is how it is, not how it should be. Things are wonderful the way they are. You idealists haven't grown up. End of discussion!".
Try this exercise. Close your eyes and imagine each of these people saying "I'm not going to get involved in an ideological war":
Those who are too lazy or too afraid to work for what we believe should simply admit it. One looks naively unintelligent trying to silence dialog with a cliche.
And of course there are all sorts of rebuttal cliches. For instance: "If you're not part of the solution, you're part of the problem". But of course that sounds too '60's. Instead I use this much older phrase:
It wasn't always called "corporationally incorrect", but it's always been there. The first guy who said the world was round. The first guy advocating washing hands before performing surgery. The first guy to advocate Democracy.
History's remarkably consistent about high quality corporationally incorrect technology. It may not triumph in the hands of its originator (witness Tesla sold his AC patents to Westinghouse, and Microsoft brought the (PARC/Apple originated) GUI to the corporation). But superior technology ALWAYS triumphs over inferior technology, sooner or later.
So look at the software you use. If it's solid and dependable, bet on it. But if it's buggy, cumbersome, and requires workarounds, bet on the corporationally incorrect.
We anticipate two to five articles per issue, with issues coming out monthly. We look for articles that pertain to the Troubleshooting Process. This can be done as an essay, with humor, with a case study, or some other literary device. A Troubleshooting poem would be nice. Submissions may mention a specific product, but must be useful without the purchase of that product. Content must greatly overpower advertising. Submissions should be between 250 and 2000 words long.
All submissions become the property of the publisher (Steve Litt), unless other arrangements are previously made in writing. We do not currently pay for articles. Troubleshooters.Com reserves the right to edit any submission for clarity or brevity. Any published article will include a two sentence description of the author, a hypertext link to his or her email, and a phone number if desired. Upon request, we will include a hypertext link, at the end of the magazine issue, to the author's website, providing that website meets the Troubleshooters.Com criteria for links and that the author's website first links to Troubleshooters.Com.
Submissions should be emailed to Steve Litt's email address, with subject line Article Submission. The first paragraph of your message should read as follows (unless other arrangements are previously made in writing):
After that paragraph, write the title, text of the article, and a two sentence description of the author.