infrequent grumblings of a software engineer and then some… (also some Delphi programming)

Creating Outlook-Addins with Delphi – Part 1

Posted by tier777 on 2009-06-04

Creating COM-Addins with Delphi - Part 1
I have now uploaded a screen video of the first example from my upcoming talk about creating COM-addins with Delphi at the German Delphi Tage event.

This is raw and unedited and I assume prior knowledge of some COM-basics and terminology like CoClasses, ProgIDs and type libraries and how to create and register COM-DLLs.

This was recorded at 1024×768 in English language (while the live talk will be in German) and is 7 minutes 29 seconds long.


[Part 2] Option Pages


Posted in Delphi, Outlook | Tagged: , , , , , , , | 3 Comments »

Moving on…

Posted by tier777 on 2009-06-03

I have now moved this blog from to which offers me some more flexibility. It is however quite likely that this will also not be its final location as I intend to move on to a self-hosted WordPress installation in the short to mid term but there are a couple of things yet to sort out before I do that. In the meantime you may bookmark the following address:

The preferred method to subscribe to the new blog is via FeedBurner from the following link:

Subscribe in a reader

Hopefully there’ll also be a slew of new content coming “really soon now” (keeping fingers crossed) as I get ready for my talk about Outlook Addin Development at the Delphi Tage event this weekend in Hamburg.

Signing out… (from LiveJournal)

Posted in Delphi, Meta | Tagged: , , , , , , | Leave a Comment »

We don’t support test systems?!?!

Posted by tier777 on 2009-05-23

This was one of those days… where you really want to bite a chunk from your keyboard or table and then instead just shout at the top of your lungs all the way home until you feel slightly better – and this was already the second day in a row that ended this way. So what happened? Here’s what.

I’ve had my first close encounter with the customer support of a certain big software vendor which I’ll try my best not to name here. Let’s say we have a product that works closely together with one of theirs and because of that some of our customers notified us of a problem that after close examination turned out to be what I’m currently certain is a bug in that vendor’s piece of software. One of their recent updates introduced a significant change in behaviour in a somewhat obscure area that just couldn’t have been on purpose (it’s also mentioned nowhere in the release notes). As that particular obscure area also touches on the correct functioning of our own tool we had an increased interest in getting this sorted out.

As that company does no longer have a public bug tracker (“because 90% of the filed items were really just requests for free tech support”) the only way to notify them of bugs in their products nowadays is by opening a regular support case — at the risk of having to pay for the tech support in case the tech handling the case determines that the problem was on our end after all. So, with that in mind, I wanted to make extra sure that I knew as much as possible about the issue (and especially how to trigger it) before I contacted them. I set up a test system with nothing but the supposedly defective software on it in a virtual machine and tried to reproduce and analyze the issue as best as I could. Once I was sure I knew what to do to reliably provoke the issue I phoned the first screener. That is, I phoned the first level support who noted down my data and a rough description of the problem, gave me a case number and told me that I would be contacted by a tech within 4 business hours. All fine. The call even came less than an hour later.

I first started to explain the problem again but the helpful support person quickly suggested we do a remote access session so he could see the issue first hand on my machine. All the better I thought, shared my desktop with the VM on it and Bob’s your uncle. Well, no. Not really. After having spent three days investigating, discussing with several unrelated affected customers, analyzing, probing, diagnosing, testing and consistently provoking the issue – all of a sudden the issue no longer occurred! No way, everything just worked as it was supposed to. It hadn’t been five minutes since I ran my last batch of tests where each and every single attempt succeeded in making visible the issue we were dealing with. And now – nothing to show. Quite embarrassing. I was completely dumbfounded. As the issue could no longer be reproduced at the time of first contact, the nice support person kindly offered to close the case for free. If I managed to reliably reproduce the issue again I could still contact them again and have the case reopened but in that case I better had something to show.

Needless to say, less than five minutes after hanging up I was able to reproduce the issue again – and again – and again. Not quite as reliably as before the call but still quite definitely there. I started to remember that in the release notes for the update that introduced the issue it was mentioned that several operations that were previously carried out sequentially had now been parallelized or moved to background threads in order to improve performance and responsiveness of the app. OK, so timing obviously plays a role here as well – and that could well be affected by a remote support software hooking into the video driver – we had a similar case ourselves a mere three months earlier.

Once I had been able to trigger the issue again after the call I installed Camtasia into the VM and began stress testing for good. At first I only managed to reproduce the issue about 4 out of 30 times but soon I was getting better. Apparently the issue was more likely to happen right after the app had been restarted. Most importantly, I finally had the bugger on camera. I trimmed  the video and sent it to the support people – and waited.

Today, less than two hours before closing time I sent another reminder, asking for confirmation that the case had been reopened. I quickly received a response that they were still checking whether the video would actually suffice for “producing evidence”. I was also told that it would probably be better if I was able to reproduce the issue in a really clean environment without any other software involved at all (keep this snippet in mind for later).

I just as quickly replied back pointing out that the only other software installed on the machine where the video was produced was Camtasia and anyway, we could simply do another remote access session and just try a little harder to trigger the issue this time – after all, when we tried it the last time I fully expected the issue to occur on each and every try so when it didn’t, we immediately aborted the whole show. I also reported that by now I was able to reproduce the issue in my test environment in more than 20 out of 30 cases. I also inquired (and neither for the first nor the last time during that exchange) whether there was some kind of diagnostic logging I could turn on or whether sending the produced output files (which exhibited the error) would help.

No direct reply to any of those offers and questions. What I did get was a message that they had now at last watched the video I sent and that they would reopen the case – but in that case all further reproduction tests should be workable in a non-virtualized environment. Sure, no big deal, we have lots of unused physical boxes lying around here that could be prepared for this (remember: “ideally without any other software involved at all”), not to speak of the limitless amounts of time on our hands – not!

After my somewhat snappy and already more than slightly annoyed response the phone was quickly ringing again. The case had now been officially reopened and we started noting down the specs of the test environment (OS and program versions, network setup, etc.), possibly in preparation for another, more in depth analysis session. Somewhere in the middle of all that came the sentence “well, we do not support test systems really” and then “we’d prefer to see the issue reproduced on a live production system”… WTF?!?!?!

“Yes, just imagine we fix that issue in your test environment and then you take the fix to the production environment and it fails again.”

Um, I don’t know about you but the first thing I do when I’m hunting down a bug in my own programs is to eliminate outside factors to the point where I have distilled the exact minimum set of factors that are responsible for causing the bug. The last thing I would want to do is maximize the number of outside factors as was being proposed here.

At that point I realized that what the friendly tech guy was doing had nothing at all to do with trying to find the bug. He was still trying to prove (or rather make me admit) that there was no bug in the first place! After having supposedly watched the video of the bug happening! This was probably just the second screener that I had to get past before someone actually started taking me seriously and finally looked into the issue. I’m fully convinced that noone there has taken any steps to try and reproduce or otherwise investigate the issue themselves so far.

Did I mention that at that time I was able to reproduce the issue with something approaching 95% certainty in the test environment again?

Right, so if that’s the way they want it… I agreed to contact some of the affected customers and ask them for participation in “producing evidence” (I guess I should mention that we are not using the affected version of the software in production ourselves).

So I called one of the customers who immediately agreed to assist. As I had tentatively scheduled the remote access session for after the weekend I wanted to “rehearse” the whole thing to be on the slightly safer side this time and connected to the customer (who also consistently experienced the issue ever since the update). Guess what? Yep, no longer reproducible on that box as well as soon as I started watching… then again, we only tried three or four times because it was already late.

What a way to leave for the weekend…

And yes, as you can probably tell, I am so looking forward to Monday…

(to be continued)

Posted in Rants | Tagged: , , , , , , , , , | Leave a Comment »

Delphi 2009 Installation Experience

Posted by tier777 on 2008-12-16

This was a mixed bag so far. On the plus side it indeed was faster and less convoluted than the Delphi 2007 install. Also, it appears to have produced a working installation eventually. But…

I have installed Delphi 2009 Professional myself on two different machines now. A co-worker did the same on his own machine. On all three machines the main install was not successful initially, failing to install the "dbpack" component for some unexplained reason. Also, after the main installer was finished all three machines rebooted without warning or a prompt to delay the reboot. All open apps were simply terminated hard as soon as I hit the Finish button and Windows went into shutdown.

After the reboot I manually installed the dbpack as recommended in the preceding error message. This worked flawlessly. On my home machine I had to reboot again after this was done. At least this time it gave me a chance to first save my work and reboot when I was ready.

Help installation took a while longer than the main installer but otherwise also worked flawlessly. Online registration also was no problem on all three machines using existing CDN account data.

Checking for and installing the updates did not work out of the box on the two machines here at work, both failing with exactly the same symptoms. Strangely enough after having correctly identified the available Update 1 and downloading it the update installer aborted with an error from the 16-bit MS-DOS subsystem (huh?) and then hung itself. After I terminated it any attempt to check for updates always resulted in the message that no updates were available. Running the downloadable Update 1 installer from the registered users page however worked flawlessly again.

I don’t remember having had any such problems when I installed the trial version a month ago – well, except that I couldn’t install the Update 1 – but I think that was by design as it only appears to be available to registered users.

Posted in Delphi | Tagged: , , | Leave a Comment »

CVSNT (“Scorpio” SP1 stable) Inno Installer for Win32 ready for download

Posted by tier777 on 2006-03-10

Here’s the final 2.5.03 release. According to Tony there will be a 2.5.04 release soon but it will likely include no changes to the open source portions of CVSNT. From now on all work is focused on the new 2.6 line with full database backend. (3.706 KB)

Note that this installer is not yet 64bit-enabled (whereas the original MSI installer is) as I did not have time yet to look into the requirements for making it so (not to mention that I am lacking the test environment). I will update this entry (or post a new one) once I have gotten round to that.

See my previous announcement for a short summary of what’s different with regards to the official MSI installer. I also took the opportunity to add a “Server only installation” install type in addition to the “Client only installation” one I added some releases ago which is also not available in the MSI installer. I have included the install source script for InnoSetup 5.1.6 inside the download archive as well this time .

>>> Official Release Notes <<<

If you intend to use this build as a client binary for WinCvs, make sure you read my notes accompanying the original 2.5.03 release as unfortunately a minor incompatibility has crept in at that point. Said entry also describes the workaround.



Posted in CVSNT | Tagged: , | Leave a Comment »

CVSNT (“Scorpio” SP1 Release Candidate) Inno Installer ready for download

Posted by tier777 on 2006-02-09

Here’s another one: (3.704 KB)

See my previous announcement for a short summary of what’s different with regards to the official MSI installer. I also took the opportunity to add a “Server only installation” install type in addition to the “Client only installation” one I added some releases ago which is also not available in the MSI installer. I have included the install source script for InnoSetup 5.1.6 inside the download archive as well this time .

>>> Official Release Notes <<<

If you intend to use this build as a client binary for WinCvs, make sure you read my notes accompanying the original 2.5.03 release as unfortunately a minor incompatibility has crept in at that point. Said entry also describes the workaround.



Posted in CVSNT | Tagged: , | Leave a Comment »

Welcome to the CvsGui group…

Posted by tier777 on 2005-11-30

As I realize that many people tend to discard Welcome messages sent by web communities upon subscription as auto-generated junk I thought it would be a good idea to replicate the CvsGui mailing list‘s Welcome message here. Below is the original text of the welcome message sent out by the group subscription interface, which in fact is not auto-generated at all but instead contains some unique and useful information as well as important guidelines for list usage. Emphases in the below reproduction are mine.

Note that below the welcome message I have added some additional things I thought worthy of mention. Unfortunately Yahoo has limited the length of the Welcome mail so I couldn’t put those in there as well.

Welcome to the CvsGui group at YahooGroups, a free, easy-to-use email group
service. Please take a moment to review this message.

If you’ve already got a specific problem, question or suggestion please make
sure it hasn’t already been covered
. The message archives are accessible at
There’s also a newsgroup mirror at
news:// .

Furthermore, make sure you’ve checked the available documentation, especially
the current FAQ at
(this is a work in progress – an older, slightly outdated version is still
available at

To send messages to members of this group, simply use the NNTP or web
interfaces or send email to

Note that attachments are not allowed on group messages. If you have files to
share, upload them to some public webspace or use the Files area
( .

Please also be aware that during phases of increased spam activity the list
will be switched into “new member moderation” mode which will require posts by
new members to be approved by a moderator first
. As moderators could be busy
please be patient and don’t repost. If your message hasn’t turned up on the list
(please check the archives – see above for link) within 2 days, please contact .

In everybody’s best interest, please do not contact or CC moderators or
members of the group in private
unless the issue discussed is of a truly private
nature and of no potential benefit to the group as a whole. Generally, all replies
to such messages from the moderators will be forwarded back to the list without
further notice

If you do not wish to belong to CvsGui, you may unsubscribe by sending an email to

You may also visit the YahooGroups web site to modify your subscriptions:


Moderator, CvsGui

Additional notes
(updated as necessary)

More useful information on WinCvs, CVS, CVSNT, etc.

Important FAQ items

There are some FAQ items that could be considered close to being mandatory reading:

Other useful resources

Some of these are already listed in the Getting Started FAQ item quoted above, but I feel you couldn’t really mention them often enough:

Additional notes on participating in the CvsGui group

Posting guidelines

Most of this is not really unique to the CvsGui list. Instead it’s really just general “netiquette” valid for all types of discussion fora, user help channels, mailing lists, newsgroups, etc.:

  • Always use unique and meaningful subject lines. The readers of the list, especially those who have the knowledge to help you, do typically not have all the time in the world. They have daytime jobs just like you. Most of them just have time to scan the subject lines to decide which posts are worth looking at. The same goes for people who search the archives. They might have a similar problem as you did but the chances that they find the solution that was posted in reply to your post are considerably lower if the problem at hand is not already apparent from your subject line. Some (more or less) random real-world examples (anonymized where necessary):
    Good Bad
    How to remove CVSROOT’s from the login window Marco: can anybody answer to my query
    Newbie problem – most of the menus are disabled ?!? Help!
    WinXP Problem: WinCVS does not start up Hi everybody
    WinCVS / CVSNT error during add: “[add aborted]: there is no version here (no subject header)
    cvs [login aborted]: authorization failed: server ABCDEF rejected access to /AB mikail: requesting to clarify my doubt
    what does “P” mean during update? (unknown)
    How can I change revision number from 1.1 when importing a module? WinCvs
    How to set up ssh in WinCVS melvin : can i know the difference


  • Do not start a new topic by replying to an existing message, especially not without modifying the subject. No matter how convenient this may be in terms of setting the addressee of your message it will also store a reference to the original message inside your new message which many mail and news clients will correctly interpret as a reply. If that reader is configured to display discussions in a threaded manner your new message may well end up deep down a thread which many of your potential readers are maybe no longer even reading. And if you don’t even change the subject line they’ll never know.
  • Please confirm working solutions. A mailing list is not an automated answer system where you throw in your question and get back an answer and that’s it. Both questions and answers are visible to everyone and remain so indefinitely for others to search. When somebody replies to your question and thus solves your problem please confirm this by posting a quick note saying thanks or whatever. Even if the solution did not help but you solved your problem on your own please do post back and let us know what the real problem was, otherwise people searching the archives might get the false impression that the posted solution was correct. Consequently you should also never post these confirmations in private. That is simply helping noone. On top of all that, please remember that all the people offering help on the list are volunteers. Your acknowledgement is the only pay they could ever hope for in return for what they do.
  • Please do not repost unmodified posts unless you are sure your original message got lost somewhere. Reposting the same question over and over again is usually more annoying than it is catching positive attention. While some messages indeed get lost among the hubbub during phases of increased list activity the more common reason for a lack of answers is that nobody knows one. In that case try rephrasing your question and/or supplying more information.
    By far one of the most impolite things to do on a mailing list is reposting a question after someone did reply to your original message. If that reply did not help you then please state this in a directed reply and try to indicate why that particular advice was of no use to you or what was the outcome of trying that suggestion. Simply acting as if you never got a reply is a sure way of pissing people off and never getting another reply indeed.


As stated above, the easiest way to unsubscribe is by sending a message to Neither the subject line nor the content of that message carry any significance at all. The only thing that is important is that you have to send that message from the email account which you used to subscribe to the group in the first place.
If that is for some reason not possible the next best alternative is to use the Edit membership page at Yahoogroups and click the “Leave Group” button at the bottom of the page.
Obviously you will need to login to Yahoogroups first for that. If you have lost or forgotten your password (and only then) contact and supply your subscribed email address and/or your Yahoo user name and we will see what we can do.

Posted in WinCvs | Tagged: , | Leave a Comment »

CVSNT (“Scorpio” Stable Release) Inno Installer ready for download

Posted by tier777 on 2005-11-15

Here it is at last: (3.398 KB)

See my previous announcement for a short summary of what’s different with regards to the official MSI installer. Note that some releases ago I also added a new install type labelled “Client only installation” which is also not available in the MSI installer. Here’s the install source script for InnoSetup 5.1.5 .

>>> Official Release Notes <<<

Note that this new release is somewhat incompatible with WinCvs’ CVSROOT wizard as it no longer advertises hostname and username as valid keywords (though they still are). Therefore with this release you would have to manually prepend username (if necessary) and hostname (required) to the field labelled “Repository Path”:

WinCvs CVSROOT Wizard showing entry for anonymous access to CVSNT server



Posted in CVSNT | Tagged: , | Leave a Comment »

“Undo Add” macro available.

Posted by tier777 on 2005-11-04

Inspired by another recent thread on the CVSGUI list, I just wrote this little macro:

From the comment header (give a few hours for the ViewCvs-links to become valid – in the meantime use the link above):

WinCvs Macro "Undo Add"
$Revision: $

written by Oliver Giesen, Nov 2005
email:  ogware@...
icq:    18777742
y!:     ogiesen

Feel free to modify or distribute in whichever way you like, 
as long as it doesn't limit my personal rights to modify and
redistribute this code.
Apart from that the code is supplied "as-is", i.e. without warranty of any
kind, either expressed or implied, regarding its quality or security.
Have fun!

You will need at least WinCvs 1.3.5 to execute any Python macros
from within WinCvs! This macro has last been tested against WinCvs 2.0.3 .


- Select one or more added files

- Run the macro from the Macros|Add menu.

Known Issues / "Un-niceties":

- None so far.

Please report any problems you may encounter or suggestions you might
have to ogware@... .

I’d be happy to hear your comments.



Posted in WinCvs | Tagged: , , | 1 Comment »

CVSNT (“Scorpio” Release Candidate) Inno Installer ready for download

Posted by tier777 on 2005-10-26

Here it is: (3.335 KB)

See my previous announcements for a short summary of what’s different with regards to the official MSI installer.

This one has a client-side goodie that will be immediately useful to WinCvs users. You could now browse non-CVSNT repositories like the ones on or right from within the Checkout dialog in WinCvs just like you already could with CVSNT repositories.

From the official release notes:

CVSNT 2.5.03 (Scorpio) Build 2132

ready for 2.5.03 release (this is mostly suite changes so the cvsnt
builds don’t really change a whole lot, hence the short release sycle).

* Add MSDE/SQLServer direct connection
* Add buttons in audit config to test connection and run setup script
* Fix rcsfile/audit problem
* cvs ls can now do a limited ls client side simulation if the remote
server doesn’t support it. Only names and directory status, no
recursion… enough to put a frontend on it.



Posted in CVSNT | Tagged: , | Leave a Comment »