Ryan's Rambling

Saturday, December 01, 2007

Chris Bensen: Upgrading Delphi

It is always interesting (frustrating) following the upgrade/stick/switch turmoil that goes along with any consideration of moving from a stable devil you know tool versus the shiny new thing. Often the implicit upgrade cycle you would hope to happen is hindered by a slow release cycle on the tool of choice or lack of compelling features. These items have been beaten to death by others but I thought some personal insights from similar struggles I have seen may as well be added.

In any upgrade it is generally the "little things" that surface to haunt you so anyone that has been through a prior upgrade always entertains the idea that there are many of those gremlins just waiting for a chance to laugh at you publicly after you have deployed to your clients.

I participate in two significant products, one based on Delphi 6 and another still on Delphi 5. In both cases the volume of code, testing capacity, and potential re-platforming as are always cited as significant barriers to attacking the upgrade cycle. Due to 3rd party dependencies the latter project has an extremely high bar for upgrading. In both cases the problem is firmly rooted in not carrying out a natural and continuous upgrade cycle with robust testing. Until you have the "must have" in the new version you can't really afford to make the move. The business case simply does not exist and diminishes the further you get from the tip release of you development tool.

Rather than suggest you should not upgrade I think a pragmatic approach that I have found moderately successful is worth highlighting. For much of the server components of one of the products the code has been maintained in each new release of the Borland/CodeGear toolset but always back-compiled and tested using Delphi 6. So, all along the code was maintained in Delphi 7, BDS 2005, BDS 2006, and finally in RAD Studio 2007. That is great, after getting over the the initial hate for some of the IDE changes (SDI) you start to rely heavily on the new features like live templates, refactoring, code metrics, and models. Still nothing new is needed for the product that goes out the door though so upgrade sell is weak based on a "feature case."

But there are definitely reasons to upgrade. Recently, we were doing capacity testing and were a bit disappointed with our numbers and needed a quick hit. Without a single change to compiler options, code base, etc. we performed the same capacity testing with the application suite complied under RAD Studio 2007. We immediately saw a consistent 25-30% capacity volume increase. The majority of this is easily related directly to the the new memory manager (FastMM) and better inlining of key functions. Most of these items we could get if we were willing to alter the system to include or use 3rd party tools but the whole point was OOTB improvement. Since it was server-side code VCL changes really were not a factor.

We did not need the increased capacity immediately so we simply tucked it away in the "good to know" column. Had we needed it I am sure an upgrade on the server components would have happened right then (not a strong enough business case). We are now taking steps to assess a full upgrade on the client and server components and work out a process that will not leave us hung on an older version as we are now. What is the biggest hang up? Proper coverage for the testing. You can never have enough and dealing with tool related problems is never a good sell. An upgrade advisor tool that can run on a project would certainly be nice to have.

Over time though there has been a persistent set of issues that never quite seem to be addressed when you are trying to push a particular upgrade. Don't get me wrong, I am fully in the "upgrade often and stay upgraded" column but this list contains the items that most often leave me hesitant:

  1. Install Experience - What you get after you finish the install is great... but getting there is appalling and there is no amount of counter argument that can ever suggest it is acceptable. Most persons that have installed any recent BDS/RAD Studio have most likely installed other products that are equally complex. I can get through OS + Service Packs often faster than I can do the same for RAD Studio. Suggestions that this is an MSI (Windows Installer) problem only serve to alienate those who actually know that it isn't MSI, rather it is how it is being used. MSI may not be fun but it is often a necessary evil.
  2. Software Assurance vs Upgrade Cost - Upgrade costs always factor. The problem is they shouldn't, CodeGear has a fabulous subscription service called Software Assurance. While information about Software Assurance is more readily available these days it is still difficult to get your head around it and why it makes so much sense. Make subscriptions the only sales model and show clearly how your frequent release cycle makes this a cost benefit. There are blogs and even calculators out there that demonstrate this but "direct from CodeGear" means something.
  3. Difficultly in showing the big benefits - The integration of dUnit, nUnit, MS Build (hmmm, wanted NAnt myself), FastMM, for each looping, code metrics, refactoring, generics, live templates... the list goes on and anyone following along with the upgrades is inherently aware of them and enjoying them but each of these is small by itself and information on them is more often found in blogs or secondary sources. These factors all play into quality and effort reduction improvements in our own projects in terms of quality, defect rates, and performance. The leading question is how do you turn that into a strong business case. The sales pitch "have less defects, more developer time, and a faster more robust product" may exist on the CodeGear site but I haven't seen it.
  4. Documentation - Having used Delphi for so long I can't really appreciate the documentation woes that exist but on the occasions I find myself hunting for something in the help I realize just how difficult it can be for an OOTB experience. The help has been improving in first-use and correctness with each release but in some ways is still not on par with Delphi 7 and earlier releases (the language guide is still hard for me to locate to this day). The "little things" kill you here. Try finding the list of VERxxx compiler defines... (tell me if you find it).
  5. Features only beneficial on new projects - ECO... everything I have seen and played with suggests this is a great addition to Delphi but the fact remains it is similar to re-platforming when it comes to making use of it. Give me MAC's, 64-bit, Unicode and even CF. These are core improvements I can use on products that have hundreds of man-years invested.

In the end the Delphi product is targeted at developers but the install process is so burdensome that it is difficult for a business application developer to potentially have to spend time on assessing and using the tool when the install experience takes up valuable time and leaves the wrong taste in the mouth and leaves little for a concrete experience in the software.

After all the non-positive comments above I still have to say that the upgrades are well worth the effort but that is more from the fact that I know the benefits are in there from constant exposure to them as opposed to looking at any given

information on the CodeGear site and going "Wow". So, if you have been hedging on upgrading I strongly encourage you to get past the OOTB experience and get used to the product. The benefits are there and your productivity will actually increase. You may even like the SDI interface after some time ;-).

Chris Bensen: Upgrading Delphi
Why aren't you upgrading Delphi- Reasons and myths

Labels: ,

Technorati: , ,

Labels: ,

Monday, September 17, 2007

MSN Desktop Search Delphi code

It was quite some time ago that I discussed an IFilter implementation using Delphi code. Here is the code for that blog post.

 

Source download link (v2.1)

Technorati: ,


Labels: ,

Labels: ,

Sunday, January 07, 2007

OpenSSL and OpenSearch

Some of the development I have been doing lately has had me searching through the OpenSSL online documentation quite frequently. While most times the OpenSSL site pops up first in the google results it is not always the case. Google allows you to constrain the search to a particular site by adding a site:site-name expression to the search. This is great but more typing than I care to do repeatedly. My solution was to add an OpenSearch to the IE7 search.

The great thing is that this works in both IE and FireFox through the simple inclusion of a <link/> HTML element. If you check your search drop down you should see that OpenSSL Search Provider is availabe for using to search.


<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>OpenSSL</ShortName>
<Description>OpenSSL constrained search using Google</Description>
<Tags>OpenSSL SSL TLS</Tags>
<InputEncoding>UTF-8</InputEncoding>
<Url
type="text/html"
template="http://www.google.com/search?hl=en&amp;q=site%3Awww.openssl.org+{searchTerms}"
/>
<Query role="example" searchTerms="SSL_new"/>
</
OpenSearchDescription>


This <link> should really be in the <head> section of the HTML document but luckily both browsers will pick it up even when it is embedded in the body.


<link
title="OpenSSL Search Provider"
href="http://www.run-time-systems.com/blog/openssl-search-provider.xml"
type="application/opensearchdescription+xml"
rel="search"
/>

Labels:

Tuesday, November 07, 2006

Borland Drops StarTeam Standard and Web Editions

Well it looks like Borland will continue the pattern of introducing version control sub-systems that I like and then removing them from the line up after two or three years. It appears the Standard Edition of StarTeam does not meet with the Borland ALM direction so anyone using it can either move up to the Enterprise licensing or somewhere else. The notice indicates that version control is a commodity so I would expect they believe that anyone who thought that the standard SKU was satisfactory will transition to sub-version or some other free tool.

This is twice now that Borland has provided a version control solution with the Delphi license and then go on to drop support. Both times I was quite happy with the solutions and happily moved to them. TeamSource was a great small shop tool and I really liked the model and integration. I didn't mind switching to StarTeam either and had become rather attached to the great linking support and build tagging.

The problem with this announcement is that the it leaves StarTeam in an all or nothing (planned it would seem) position and if you already have the rest of the change request/ticketing/project management bits taken care of outside of the Borland suite of tools. So, the upgrade scheme isn't really going to fly with me :-(.

The documents that are linked below make no references to the status of StarTeam within the DevCo/DTG but I am sure something will pop up shortly.

Further reading:

Borland Support Newsletter October 2006
Borland StarTeam Standard Edition CR-only Sunset FAQ
Borland StarTeam Edition Sunset Customer Notification

Labels: ,

Monday, August 21, 2006

Sample post using Windows Live Writer

This is just a quick post to confirm the install and use of the beta Windows Live Writer.

If this works it is pretty simple to install and get working.

Thursday, September 15, 2005

Delphi 2005 Rollup Update

Allen Bauer has posted a rollup of his recent Delphi 2005 fixes. It is really good to see Borland rolling out these informal (read pre-beta) patches as they are being corrected in the next major release.

You should also head over to the Borland site to pick up the preview release of the compact framework support (compiler only). This is just what many of us were asking for and it is a great thing to see them deliver. I haven’t had much time to play with it myself yet but it is definitely on the list and I will be converting a smallish golf related applet over to it as soon as I can.

Kudos to the Delphi team for their devotion.

Labels: ,

Monday, May 30, 2005

Delphi and the Compact Framework, Real Soon Now?

David I posts about a preview they are showing at the SDC sessions. From the blog post it appears that we may very well see a preview compiler targeting the .NET Compact Framework prior to the next major release of Delphi.

While details are sketchy it is extremely positive to hear about the compiler showing up prior to the next major release. Hopefully we can do our bit and flush out any major platform issues as part of a preview so the next major release can have something robust and workable.

Some background materials:
My point of view
Danny's preview of Delphi on CF
Allen's follow up on VCL/WinForms positioning


Kudos to the Delphi team for pushing it out the door :).

This is probably a good time for you to pick up Software Assurance if you haven't already. After you figure out what it is it doesn't make sense to not have it if you are using any Borland Tools.

Labels: , ,

Saturday, May 28, 2005

Delphi and CaliberRM, getting an error

I was delighted to see the CaliberRM 2005 plugin being released (preview at least). However I had already downloaded and fiddled with the 5.1 SDK so I was left with a wonderful Unable to load Java VM specified in C:\Program Files\Borland\CaliberRM SDK 7.0\lib\CaliberRMSDK70.ini error message each time I tried to install the package. Pretty much the same thing I got when I wanted to try CaliberRM after having installed Delphi 2005. In my prior attempt I simply gave up. I continued on with my review of CaliberRM and must say that I really do like it (or anything like it). I tried it on a small project and the additional process and breakdown resulted in some extremely clear requirements being pumped out the other end. So, even within integration into the Delphi IDE I am impressed with the tool as a whole.

I figured the updated plugin would fix my problems... all it did was change the error message from the 5.1 SDK message to the 7.0 SDK message :(. Since my eval period is coming to a close I really did want to see it working in the environment. I tried reinstalling the SDK (well, a repair install on Caliber anyway) but that didn't resolve the problem. Since the SDK seems to be merged with the StarTeam SDK I figured I would start searching on that for some tips... StarTeam Support Entry solves the problem very nicely.

Now I can finally see if the integration is of any benefit :).

Labels: ,

Tuesday, May 17, 2005

Free Pascal 2.0 Released

For those interested in moderately compatible alternatives to Delphi you should definitely check out FreePascal 2.0 release. The compiler core has been rewritten and the beta versions I have played with seemed to work quite well. I was hoping to see Itanium support though :(.

Labels:

Wednesday, May 04, 2005

Cyclomatic Complexity for Delphi

I am releasing an internal tool for determining Cyclomatic Complexity of Delphi (or Pascal) source code. Cyclomatic complexity is a great way to determine the level of unit testing required on different methods in a class or module. It is an integrated tool in the Delphi IDE and supports Delphi 6, 7, and 2005. The wizard integration is something new so there might be a glitch or two - let me know.

Anyway, you can find out more on the CCP page.

Update: There was a bug when exiting Delphi if you had any ccp messages in the message view. An updated 0.9.1.2006 build and source are on the site now for anyone that downloaded the software already. You can confirm the version by right clicking on the bpl and choosing properties.

Labels:

Monday, April 04, 2005

Finally started updating the site

Main site

I have really ignored my company site for the last five years. It was time for a logo change so I took the opportunity to clean up the site a bit. No content changes were made and all the existing (old) downloads are still available. I am going to make a concerted effort to get updated examples, programs, and libraries up on the site with some supporting documentation. I have been keeping everything up to date and using most of the stuff day to day but simply have not had the time to get around to it.

Labels:

Saturday, April 02, 2005

Quickly jump to Quality Central Items with MSN Desktop Search

In your MSN Desktop Search type the following into the search bar (without the quotes) "@qc,http://qc.borland.com/wc/qcmain.aspx?d=$w". You will get a message that the shortcut has been added. From that point on you can simply type "qc ####" into your search bar and it will faithfully open up a new browser window to that QC report.

Labels:

Friday, April 01, 2005

A Good Chuckle

:^) TheServerSide

Monday, March 28, 2005

Delphi2005 and tlibimp

It appears the new type library import wizard is broken (or inconsistent). If you want to ensure you don't get component wrappers generated for a particular type library you should open up a console (dos box) and execute the following command "..\bin\tlibimp.exe -Ha- -Hr- -Hs- msxml4.dll" after having changed in the "\bds\3.0\imports\" folder. Change the library name and path(s) as required for your case.

As usual, you can edit the uses clause to remove the extra units that are automatically inserted (normally leaving only Windows and ActiveX are sufficient). This can be a benefit depending on your intended use as the compiled binary will have less dependencies and you can have a significant benefit on your binaries size.

Labels: ,