Ten Annoyances in Delphi 2005

These CodeFez editorials are fun. The best part is when I get comments from humor- and sarcasm- impaired people who take things far too seriously. I get a good laugh out of folks like that.

One of the common comments I get is that I am a “Delphi Bigot”. Well, that stands to reason, since that is the name of my blog. But somehow they fail to see the tongue-in-cheek nature of the moniker. Many miss the slight sarcasm, biting satire, and good-natured ribbing in some of my articles. Some have even gone so far as accuse me of being the “Borland Information Minister”.

So, in a effort to dispel the notion that I am a raging Borland Sycophant, this week’s column is entitled “Ten Annoyances in Delphi 2005”. This is probably a once in a lifetime experience, so arrive early, as supplies are limited!

So, without further ado, here they are:

  1. Those dang blue balls cover up line numbers. I would have loved to have been at that meeting. “Hey, we have this new line numbering feature. Let’s cover up the line numbers with blue balls!”

  2. No "Make Region of Selected code" option Code folding is cool, but not so necessary in Delphi. What is cool is folding regions. Unfortunately, there is no way to select a block of code and turn it into a {$REGION} Oh well. Actually, I’m growing fond of typing, scrolling down, and typing again.

  3. "Build All Projects" doesn’t have a shortcut key. Back in the day, CTRL-S, CTRL-F9 was good enough. Now, with assemblies, multiple projects, C# and Delphi in the same project group, why, a simple compile isn’t really good enough. Build All is the future!

  4. Select Tools|Options… Look at the horizontal scroll bar in the treeview control. Be annoyed. Argh. Double Argh! One of my pet peeves is non-resizable dialogs that we should be to resize. Things are better in Delphi 2005, but still have a way to go. (Once the holy war against non-resizable dialogs has been won, the crusade will move on to getting the IDE to remember the sizes of dialogs that have been sized.) Anyway, that dang horizontal scrollbar on the bottom of the Options dialog bugs the heck out of me. Why couldn’t size that treeview a few pixels wider to make that thing go away?

  5. I overshoot those dang tabs on the bottom by just a little bit, and my Windows taskbar pops up. Up and down and up and down goes my mouse. Tabs on the top, tabs on the bottom. Since I have my Windows taskbar set to auto-hide, one pixel too far and BOOM, up it pops, and I have to wait for it to go down. Can’t those tabs at the bottom be somewhere else? Anywhere else? (And while we are at it, could there be any more annoying feature than the Windows taskbar when it won’t recede? This happens all the time. And how about that application that pops up the taskbar, insisting on being paid attention. “I’m not going to stop blinking and I’m going to keep your taskbar popped up until you look at me!!!!’ Who thought this was a good idea?)

  6. No "Close All Open Files But Not The Project" option in editor I know this is considered blasphemy in the Delphi community, but I’ve taken to using the “Default” desktop with everything docked into one big window. This allows me to unpin the Object Inspector, Project Manager, etc., and bring them out on demand. Well, in my normal course of working, I frequently end up with tons of code editor pages open, and sometimes I’d like to close them all and just sort of start over with one page. Well, there is no way to do this except to hit the little black ‘X’ on all the code pages. “Close All” closes the entire project, and that’s not what I want.

  7. The "Highlight Current Line" feature is really annoying. I suppose some people like this, but I find it incredibly annoying. I like a dark background in my Code Editor, and there simply isn’t a color that I can choose for the highlighted line color that doesn’t make this feature bothersome in the extreme. It utterly obscures the text caret, so I have no idea where my typing will go. And to make matters worse, there isn’t one place to turn off the "Highlight Current Line" feature once and for all. You have to switch it off for every individual file type. Argh!

  8. And while we are at it, the bracket matching “feature” is really, really annoying. This one I truly hate, and I cant understand why anyone like this. Try this: Drop a button on a form. Double-click on the button. Type “ShowMess” an press CTRL-Space. Then select “ShowMessage” from the list. Now, is the cursor where it is supposed to be, right in between the parentheses? Huh? Are you sure? Move it around. Now are you sure?

  9. No way to get the IDE to easily open a plain ol’ *.pas file. If I am working on a Delphi project and click on the Open button, it should assume I want to open a *.pas file, not a .bdsproj file, or whatever. That’s what Open Project is for. And to make matters worse, the drop-down filter box has a selection named Pascal Project (*.pas) that doesn’t merely open a *.pas file, it opens it as a project! Don’t pick that one when you have to go through the annoying process of dropping down the combobox and selecting the *.pas filter. (More “while we are at it”. Is there anything more annoying on the Standard VCL pallete tab than the dreaded combobox? Who likes these things? Click, find the scroll thumb, scroll, scroll, scroll, find what you want, click on it. Oops! I clicked on the wrong one! Start over! There has to be a better way that this.)

  10. Class Completion isn’t keeping up with the times. As much as I hate to admit it, we Delphi developers have to make some concessions to the tyranny that is the Common Language Specification (CLS). One is the definition of property assessors. The CLS requires that all accessors begin with ‘get_’ and ‘set_’. (Is there a more commonly used, difficult to type, and utterly unnecessary character than the underscore?) Well, Class Completion doesn’t provide this when filling out property declarations, and I think it should.

There you go. See? I’m not a total sycophant!

Note to the humor impaired: The above article contains sarcasm, humor, and a touch of satire. Please read the definitions of those words carefully before commenting or sending emails. And by the way, this very notice itself contains that very stuff, too.

Note to Allen, Corbin and the gang: I love and admire you guys. You all are my heroes. Really. Seriously. No hard feelings, right?  Right? 

To Delphi or Not to Delphi

Are you a Delphi developer? Are you a Delphi lover? Are you interested in Delphi’s future? If so, settle into your chair, fasten your seat belt, and read this article! Borland is having tough times financially, and that means Delphi will likely not get the funding and support it needs. As a result, I think it is time to split Delphi off as a separate company. That is the best way to protect the product itself, and the best way to protect the interests of the many developers who have invested so much time and money in Delphi technology.

A Tough Financial Picture

I listened to the Borland Earnings conference call yesterday, August 2nd, 2005. The results were not good. For the third quarter in a row, Borland lost money. Revenues were down thirteen percent, and the company faces a loss of $17.5 million, which includes a restructuring charge of $15.7 million. The next quarter is expected to reflect similar bad news, with earnings in the $60 to $66 million range, where a year ago the company made $77 million in the same quarter.

For Delphi developers, the bad news was not just financial. After listening to the earnings call, I now have a clear picture of where Borland is planning for the future, and what consequences those plans will have for Delphi and Delphi developers.

The Borland management team clearly believes that a company the size of Borland ought to transform itself into in ALM and SDO company. I also believe that is the right thing to do.  The Borland management wants to be successful and bring everything they can to their shareholders.  That is the number one priority of that team and they are doing everything in their power to make it happen. But they are in a very tough spot. They are getting a lot of heat from shareholders and product owners worldwide who are telling them that they ought to do better and who are questioning their performance and doubting their ability to succeed in the long term.

We all like to point fingers and we all think we can do better, but the truth of the matter is Borland is in a very tight spot in our software industry.  They are a $300 to $400 million company. That is a very dangerous space to be.  These days I see two spots doing well: the small $50 million company, and large companies with revenues over $3 Billion. Each has a niche to fill. But the very small number of companies that fit in the $300 to $400 million are left hanging somewhere in the middle. They are neither small enough to turn quickly like a small company, nor powerful enough to bull their way through tough times and the inevitable corporate challenges.

Not Enough Money for Delphi

For the Delphi lovers out there like me, what does all this mean?

The important question is whether or not Delphi can help Borland to achieve the radical growth it so desperately needs. The answer to this question is uncertain. With Java, C#, VB and C++ on the market, the once elegant and superior development tool now has serious competition that can not be ignored. Let’s say Delphi has 350,000 active users, if Borland decides to invest heavily in Delphi and the next release in 2006 is wonderful, how many Java, C++, C# or VB programmers could be expected to jump ship and come over to the superior Delphi development tool? Realists have to accept that fact that it is unlikely that Delphi will experience a large market growth in the next few years.

Does that mean Delphi is dead? Far far from it! Even without large growth in market share, Delphi still has a strong and secure future. There is so much code written in Delphi worldwide and such a strong community behind Delphi that it’s longevity is assurred.  Plus the Delphi Development team is very strong and capable of competing at any level. It can cause serious damage to multi-billion dollar companies out there.

Lots of people have accused the Management team at Borland of abandoning Delphi, of not spending enough money on it, of taking its profit and rerouting it to ALM and SDO investments. Is this true? The answer, unfortunately, is yes, it is true.

Borland is a public company, and they are required by their shareholders to show growth in all aspects of their business. Borland is not at all like a small private company that can be happy with a nice comfortable revenue level. Borland cannot afford to lock down a relatively small profit margin and remain content with it forever. In short, Borland is not the right company to shepherd Delphi into the future.

Building the Delphi Company

So what needs to be done to make everyone happy?

I believe that spinning off Delphi as a separate private company will serve 3 major purposes:

  1. It will clear Borland from the fear of having to cover Delphi expenses. At the same time, it will allow Borland to remain a major shareholder in the Delphi company, and possibly get some serious revenue back while still allowing all expenses to be paid for by the private Delphi company.
  2. It will allow the Borland product portfolio to be more focused on the vision of ALM and SDO in order to penetrate the tough enterprise market more efficiently.
  3. The Delphi Company will be considered a small, VERY successful company in the range of ~$50 million a year revenue. It will have a small efficient team and a whopping ~350,000 to 500,000 active users that love the product and want to see it succeed.

If the Delphi company and product do well, they can funnel their profits back into the R&D team, the QA Team, support, consulting, training, sales, marketing, etc. There will be a real chance to grow the business, make serious money and achieve incredible results. Yes, I do sincerely believe that all this is possible.

The other aspect that has been brushed aside is the Delphi consulting and training business.  Borland was never really keen on that because, again, the numbers did not make much sense in terms of the Borland bottom line.  But with the Delphi company, I really do believe that consulting and training will play a significant roll in shaping up the company and bringing the community together. Much can be gained by involving people like Ray Konopka, Bob Swart, Brian Long, Jim Cooper, Charlie Calvert, Michael Li, Carey Jensen, Chad Hower, Nick Hodges, myself and others in a worldwide effort to form a strong family of Delphi lovers. A worldwide team can be formed to help companies train developers and complete projects. The Delphi Company would make money based on the filtering of these opportunity to their partners and community leaders.

Delphi is very strong in Europe, the Far East and Australia. The team has been blessed with people like Jason Vokes and Malcolm Groves that have been working extremely hard and are showing incredible results. These revenues can help the team back in the US grow and compete faster at a realistic levels instead of continuously be overworked and short staffed.

Summary

This is a tough time for both Delphi and Borland. It is at difficult times like these that the future is often decided. By forming the Delphi Company, Borland has a chance to do the best thing for shareholders, for Delphi developers, and for the Delphi team itself. Many wonderful people have made difficult sacrifices over the years to support Delphi. At last there is a plan that can offer promise for the future of Delphi, and that can reward those who have shown faith in both Borland, and Delphi technology. Do the right thing: support the formation of the Delphi Company!

I know the Delphi community is not shy! Many readers will understand and agree with what I am suggesting and others will not. I respect both opinions.  I would love to hear from you, please log in an leave a comment or even leave it anonymously.

God Bless Delphi!

Ten Things I Love about Delphi 2005. Okay, Eleven

Last time I wrote, to the shock of many I am sure, about the things I don’t like about Delphi 2005. Granted, a bunch of them were pet-peevish, but hey, it’s my column, and I can rant about pet-peeves if I want, right?

Well, of course you had to know what this column was going to be about. That’s right! Here it is: The Top Ten Things I Love About Delphi 2005. I had to do it, of course. You expect nothing less of me, I know.

  1. I love the History view. I especially love it when it is integrated with StarTeam. (Have I mentioned how much StarTeam totally rocks, and how you get a client license and the server if you buy Enterprise and above? I haven’t? Well, I just did!) The History tab has already saved my butt at least 100 times, mostly from my own silliness, and sometimes from the quirks of the IDE. It helps me be a bit more daring and brave with some hair-brained coding scheme that I come up with, knowing that I can always revert to an earlier version of my code. I have my history number at 90, the max. What’s your History Number?

  2. I love the integrated unit testing. I’ve only recently been seeing the wisdom and general coolness of unit testing, and the wizards in the IDE made doing it so easy that I started doing lots of unit testing. I started writing my code with the idea of it being tested. Shoot, I even started writing my tests before I wrote my code. And of course, once you get started, you get addicted, and then you are off to the races. Unit testing will help you write better code even if your code never fails a test. Unit testing garners the opposite of the advice I give on COM programming: If you aren’t doing it, start. If you are doing it, do it more.

  3. I love the ASP.NET Deployment Manager. I use this all the time now. I have two or three deployments for each of my ASP.NET applications so I can easily deploy an application from the office, from a hotel room, or lying in bed watching David Letterman. The thing just knows what files need to be deployed, and does it all with the push of a button. Can’t beat that.

  4. I love the DataHub/DataSync/RemoteConnection/RemoteServer components. I didn’t really have much of any idea what these things did. One day I started dropping them on a couple of forms. I hooked a few things up, set a few properties, and the next thing I know, I was serving up data over a .Net Remoting connection. I hadn’t even written any code. It was easier than getting Charlie to talk about open source software. Can’t beat that. Can’t do that in VS.Net.

  5. I love having all those languages in the same IDE. Despite the fact that I really can’t stand C#, I have to admit there is a lot of good code out there written in it. Delphi 2005 allows me to add in a C#-based assembly to a project and work with it, while still doing all my real coding in Delphi. I love the little icon in the toolbar that tells you what the current personality is. One of my favorite demos is to create a Project Group that has a Win32 VCL app, a VCL.NET app, a C# app, an ASP.NET app, and a VB app in it, and then hit Build All. Works a treat. Can’t do that in VS.NET.

  6. I love the for…in syntax. I find myself using this all the time now. All the time. It’s so natural now, I wonder how we ever got along without it.

  7. I love the StarTeam integration. This really rocks. (Have I mentioned how cool StarTeam is, and how wise and smart you’d be to start using it?). You can make a direct connection between a project in the Project Manager and a project in your StarTeam repository. You can easily check in and check out files right in the IDE. The StarTeam client is even integrated inside the IDE. Like I said, it rocks.

  8. Refactoring! I love the refactorings! This is probably at the top of the "How did I get along without this?" list. I love this stuff. I love "Rename Variable" and "Extract Method" the best. I find that I am actually starting to write code that I know will eventually be refactored. I’m making a big ol’ list of new refactorings that I’m going to start pestering Corbin about. This feature is really making my code better. Very, very nice. And unless I’m mistaken — you can’t do that in VS.NET without an expensive add-in.

  9. I like the new Welcome Page. Some people hate the welcome page, but I can’t really understand that. I guess some folks just can’t stand having valuable information at their finger tips. I like having the most recently used files right there, not hiding behind a menu. I like seeing the BDN feeds, as they contain lots of good info.

  10. I love ECO. Okay, I know almost nothing about it. I can’t hardly make it actually do anything just yet. But I sure do know what it is and what it can do, and that it does really cool things like making writing database applications about ten times faster, and a whole lot more fun. (Does anyone actually like writing SQL?) And you most assuredly can’t do that sort of thing in VS.NET. Microsoft will be glad to try to deliver some vaporware to you, but Borland is shipping this stuff today.

  11. I love the new icon. That Trojan helmet thing is cool. I really like it.

Okay, that was eleven. So I can’t control myself. Can you blame me?

A First Look at Delphi 2005

Delphi has been always a very capable product. From Delphi 1 to Delphi 2005 we witnessed 10 years of RAD compiler releases that truly changed the landscape of Software Development for millions of developers. Even those who did not use Delphi found their tools influenced one way or another by this remarkable product.

Unfortunately, I was not very fond of Delphi 8. With all due respect to my friends and colleagues at Borland, it was behind, for the first time, the equivalent Microsoft technology. In particular, it was not as good as Visual Studio.NET 2003. Delphi 8 had serious problems with its ASP.NET implementation and in the IDE features it provided.

I have been using Visual Studio 2003 and 2005 for most of my work this year. My customers pay me a lot of money to help them make the right decisions regarding software development and the choice of the development tool they use. I could not choose Delphi 8 just because of a sentimental attachment.

Delphi 8 for me was not satisfactory. I found its support for ASP.NET applications was weak, and I found the VS IDE a lot richer and more powerful. Of course, the VS IDE is not perfect, but it was clearly better than Delphi 8.

I knew that Borland could not allow the next version of Delphi to be a flop. It could not be a “me too“ version, it had to be an “Oh yes, we can do that and then some” version.

BorCon 2004

At BorCon 2004 in San Jose, CA, the Delphi team made everyone feel really good at the “Meet the Team“ event. They showed a number of great demos and made everyone feel that they had an excellent development tool on its way for all developers, whether they use .NET or Win32.

I remember attending Microsoft’s .NET events in 2001 and 2002 and watching incredulously as hundreds of people’s jaws would drop with a collective “WOW“ as the MS product team members demonstrated features Delphi has had since 1995. Looking around the room I wanted to shout, “Yes, it is called Delphi, it has been doing that since Bill Gates was in high school!”

The Shipping Version of Delphi 2005

I just received the shipping version of Delphi 2005 Architect and I installed it right away. I will be playing with Delphi 2005 for the next few weeks. I have to admit, I have missed using the product over the last year!

When I got my hands on the shipping version of Delphi 2005, I dug into it with considerable interest. A lot was at stake with this release, and I was anxious to see how it would turn out. In the next two sections of this article I will give you my preliminary report on what I have found so far.

Delphi 2005: The Good Stuff

  • The ECO stuff just amazes me! It is a technology that I believe everyone should spend time exploring. Over the next few weeks and months I will provide some articles and maybe some Free Videos here on Codefez that demonstrate the power of this interesting technology.
  • The compilation of Win32 and .NET applications in the same IDE is wonderful. Delphi 2005 is the only development tool providing this capability as of today.
  • The refactoring tools are awesome.
  • The ASP.NET Deployment Manager appears to be pretty cool.
  • Being able to develop in Delphi and C# in the same IDE (same solution even) is very nice.

All of these features are significant and represent important steps forward for Delphi. The team should be proud of their work in these areas.

Delphi 2005: The Not So Good Stuff

But not all the news about Delphi 2005 is good. Here are a few of the problems I noticed in my preliminary examination of the product.

  • The installation took a long time to finish (~35 minutes not including the Uninstall which takes almost 1 hour) on my P4 3.2 with 1 Gig RAM.
  • After installation, the Delphi IDE took 2 minutes and 45 seconds to load.
  • I have XP SP2 installed. Upon loading Delphi 2005 for the first time, I received the warning Dialog below when trying to open an HTML file.

I created a default Win32 VCL application. It took 1 minute to load and the main form flashed 3 times. I expected it to load quicker; loading the IDE itself took such a long time I thought it was pre-caching these kinds of things.

  • In the toolbox I filtered on “b“ to get a list of all components that start with that letter. From the resulting set of controls, I dragged a TButton and dropped it on the VCL form. This action created 2 buttons on the Form instead of 1. This behavior occurs only when the toolbox is filtered. Unfortunately, I prefer to work with filtered lists.
  • The most annoying problem I think was the warning message I got every time I placed a “.” after an object name to bring up code insight. When I did this, a dialog like the one below showed up.

For information on a couple of these problems please read Allen Bauer’s comments on what happened and why at http://blogs.borland.com/abauer/archive/2004/11/04/1754.aspx

I have not yet done an extensive examination of Delphi 2005. But as you can see, so far I have found some very good things, and some things that are not so good. I expect to have several articles about my findings here in the next few weeks. I am particularly interested in the following areas which I will report on: ASP.NET, .NET Remoting, Component Design, Component usage, ECO and WebServices.

So expect me to be publishing a fair review of each one of these areas very shortly. Till next time, have fun!