Nick Hodges

Random Thoughts on the Passing Scene #148

  • The Haitian Relief Auction is wrapping up, and there are still some good deals to be had.  My favorite out there right now is the “Your name (and picture) in the RAD Studio Easter Egg”.  The bidding has gone above $100, so the winning bidder will have their picture included as well.  I can tell you that it is fun to have your name in there, and so bid away!  Anders highlights a few of the final items, including some autographed books.  I think in the end, you all will have contributed well north of $20,000 to the folk in Haiti.  Well done and thank you!  I should also say thanks to Anders Hejlsberg, Danny Thorpe, Charlie Calvert, and others that took the time and effort to sign and mail back a number of items, as well as to the team members here in Scotts Valley that generously donated a number of their personal copies of software.  Well done!
  • I was noticing the other day that my Tom Bihn backpack is still pretty much as good as new.  I cannot find any way in which it is not in the same condition as the day I bought it. Seriously.  I blogged about it when I got it two and a half years ago, and I’m happy to report that reports of their excellent durability are true.  I use it every day, take it every where, shove it in my trunk every day on the way to and from work, and it appears to me to be as good as the day I bought it. I am not kidding — this thing is in tip-top shape.  I can’t recommend them enough.  Seriously excellent product.
  • If you are going to be at the Enterprise DataWorld Conference in San Francisco, March 14-18, then do stop by our booth or catch Jason Tiret, our Director of Modeling and Design Solutions, give a talk.
  • I absolutely love this site: Apparently there are a number of different applications for the iPhone, Android, Blackberry, etc., that will make an entry on Twitter based on your location – for instance, So if you are at Starbucks, Twitter will report “I am at the Starbucks at 123 Main Street” or whatever.  Well, this data is harvestable from Twitter, and so the PleaseRobMe folks are pulling it all together.  Note:  I am in no way advocating robbery or burglary.  I am, however, laughing at what those guys are doing.  ;-)

Random Thoughts on the Passing Scene #147

  • Help Update 2 for RAD Studio 2010 is now available
  • Marco has released his new book:  Delphi 2010 Handbook
  • The RemObjects guys are constantly on the move.  Their latest is a .Net scripting called RemObjects Script for .Net.  It’s written, of course, in Delphi Prism and takes advantage of the DLR inside of .Net.  And the best part is that it is free and open source.  You can download it from the repository at  And here’s the fun part – it even got onto Miguel De Icaza’s twitter feed.  (Miguel is the head honcho for the Mono project).
  • Turbopower Update:   The AsyncPro project is seeing a lot of development.  Sean Durkin has been doing some great work and contributing mightily to the cause.  If you are an AsyncPro developer or user, and want to get involved, please let me know.  Helping out in a project like this is a great way to hone your skills, broaden your horizons, give back to the community, advance your professional chops, and get recognized.  LockBox is another project that is active and looking for additional development.  Don’t be shy.
  • Hey, did you know that you can post your Delphi code at

Random Thoughts on the Passing Scene #146

  • Haiti Auction UpdateThe Haitian relief action continues.  Anders told me this morning that we are up over $19,000 raised so far.  As of this writing, you can get Danny Thorpe’s old security badge for a $57 bid.  Danny has also autographed a bunch of items as well, including an autographed copy of his book, Delphi Component Design, which is not cheap!
  • Steve Trefethen – former Delphi R&D guy and currrent consultant with Lino Tadros’s Falafel Software – has written a book about AutomatedQA’s TestComplete called TestComplete Made Easier.  He “self-published” it on  Very cool.  AutomatedQA is a former Borland Technology of the Year partner and long time user of Delphi.  I believe that TestComplete (and AQTime) are written using Delphi.  I’d recommend giving the product, and the book, a good look. We are big users of AQTime internally — everything AutomatedQA does is very nice.
  • Clean Up Update: We continue to clean out the offices around here to get ready for our big move. The stuff you find is pretty amazing, as Allen has noted.   One thing I ran across is a near complete collection of the classic Delphi Informant magazine.  I’ve been going through them looking for ones in which I wrote articles (I wrote a few along the way, and even had a regular column right before it stopped publishing.  No connection, I’m sure….).  If for any reason you want a specific issue, send me an email and I’ll get it to you.  Do it fast, though, because we are moving into a smaller space, and while I am loathe to toss them out, they will end up in recycling.  I am keeping the Premier Issue and any one with articles by me in them, but otherwise, if you want them, let me know.
  • More Cleanup Update:  I also have most, if not all, of the issues of The Delphi Magazine.  Remember them?  Again, let me know if you want one.  I was glancing through them to find any that I had written articles for, and I remembered the great column “One Last Compile….”.  Was the author ever “outed”? I never knew who it was, and now am very curious.  Anyone got the scoop on that?

Live Templates


I’ve always said that by a country mile, the most under-appreciated, under-utilized, and under-exploited feature of the IDE is the Live Templates engine. 

If you haven’t explored Live Templates, you really should.  The Delphi Wiki has a pretty nice write up on them, as well as a page with a number of useful templates that you can use yourself.  (Feel free to add your own templates to these pages) Live Templates are totally extensible, allowing you to write plug-ins in Delphi that control let you do almost anything you want.  I’ve written a small set of scripts – including a useful base class – that puts in the current date and/or time in your code or comments quickly and easily.  You can invoke refactorings and other IDE features as part of your Live Template.  They really are quite powerful.

RAD Studio comes with a set of default live templates for all the common language constructs and other common coding patterns.  I use them all the time.  I find, however, that they all don’t work like I want them out of the box.  The cool thing is that they are totally editable.  Live Templates are just XML files, so you can easily edit them.  One template that I’ve edited is the default for template.  I don’t like the “- 1” in there, so I just took it out. 

Another thing that you can do is to change templates from being automatically invoked to be manually invoked.  I’ve done that for a couple that would  pop-up with I didn’t want them to.  That’s one of the best parts about Live Templates – they are totally configurable to suit the way you work.

So here is my question – do you have any suggestions for changing the defaults that are part of Live Templates?  I’m thinking about changing the default behavior of the for template, because I know I’m not the only one irritated by it.  Any others?

Random Thoughts on the Passing Scene #145

  • Hey, Delphi at the Olympics! Cool that Marco spotted that.
  • Sunday was the 15th Anniversary of the launch of Delphi.  As I’ve probably said way too many times – I was there at the launch at the Moscone Center that fateful evening in 1995.  It really was a thrilling event.  The whole two days was a gas.  I blew off class a the Naval Postgraduate School to be there for SD’95.  The crowds were amazing, and they had to call security to take control of the crowd of people waiting to get the free prerelease copy.  It’s great that fifteen years later, Delphi is still going strong. Others like Marco, Julian at DevExpress, Robert Love, and Bruno at TMS Software have memories of those heady days as well.  Many of you have been along for the whole ride, and many have joined along the way.  In any event, we are all grateful for the wonderful things that Delphi has meant to us and been to us over these fun fifteen years. Here’s to fifteen more.
  • It’s not too late to bid on Borland Memorabilia to support Haitian Relief – but you’ll have to dig pretty deep to own Anders Hjelsberg’s Compaq II Turbo Pascal 4.0 development machine. As always, thanks to all of for your generous bids.  We’ve raised over $10,000 so far with many more items to go. 
  • Mason Wheeler asks a very interesting question:  “How would having generics available from Delphi 1 have affected the design of TStrings and the VCL in general?”  I think the answer to that is undeniably yes.  TStrings is quite integral to the workings of the VCL, and I have no doubt that generics would have radically altered the way that the VCL dealt with list and particularly collections. However, generics weren’t available back in the day.

Random Thoughts on the Passing Scene #144

  • The Haiti Auction continues apace.  Thanks so much to all of you who have purchased items and helped to raise a lot of cash for the people of Haiti.   Many of the items have been sold, but there are still many items out there to be bid on. (Why you all aren’t jumping over this classic Borland OOP jacket is a mystery – Don’t you want to look like an extra in Miami Vice? ) For instance, Michael Swindell blogs(!) about another Borland Letterman’s Jacket graciously donated by Doug Barre, the former Borland COO. 
  • Malcolm Smith tells me that the next issue of the C++Developers Journal will be very C++Builder 2010 centric.  He has a Call for Papers out, so if you are interested in writing for them, let them know. 
  • We have a new “Prism in Action” web page. Download a white paper by Brian Long on how to get started doing cross-platform development with Prism and Mono.   In addition, on the 18th of February, we are doing a Delphi Prism webinar.  There are three times during the day, so no matter where you are in the word, you should be able to catch it.
  • Newsgroup Quote of the Week:  “I have used every version of Delphi except for 4 and 8 — and D2010 is by far the best yet. As long as that level of innovation and bug fixes continues, Delphi will continue to bring an exponential ROI for me.” — Loren sZendre

Random Thoughts on the Passing Scene #143

  • Hey, feel free to weigh in on Delphi as your favorite language over at StackOverflow. Hat tip to Moritz Beutel for his answer.
  • The Haitian Relief Auctions are going like gangbusters.  We even made the Santa Cruz Sentinel!  (Way to go, Anders! And hey, I even got my name in the papers!)  Many of the items end on Sunday evening here on the US west coast, so you only have a little bit of time left to bid.  But we have been adding items as the week goes on, and we will be adding more this week as well, so if you want to  jump in, please feel free. (For instance, Anders just added this “only one in the whole world” Borland Skateboard! )  We are very grateful for all the bidding that has gone on so far, as are the people of Haiti, I’m sure.
  • Don’t freak out too much, but I am actually doing some coding for the next release. Well, I’m actually adapting some great work done by John Kaster and making it fit into the RTL, as well as componentizing it.  Anyway, as I look at it, I realize that it is a good opportunity to use class constructors.  But I wasn’t 100% sure on how they worked, and luckily for me, Allen wrote all about it while back.  This is a pretty cool feature, so if you haven’t given it a look, you should.
  • WooHoo!  I finally got my first gold badge on StackOverflow
  • As I’ve mentioned before, we are cleaning up and generally getting rid of things in anticipation of moving to new offices at the end of March.  Some of these guys around here have been in their offices for a while, and so when they start excavating, they find some interesting things. Chris Hesik found a copy of an original marketing analysis for the Pascal Language from 1993.  Pretty fun to read – especially given that I created a Windows95 Virtual PC and put Borland Pascal for Windows on it.  I’ll be loading up Delphi 1.0 this weekend.  Man, how did we ever get any work done with those basic tools?  ;-)
  • Alex has been busy improving the amazing DeHL framework.  He’s working on an object serialization framework.   If you haven’t taken a look, you should.  Very impressive stuff.  We are quite happy to have Alex on our RTL team now.
  • Robert Love has been on the bleeding edge of using Delphi 2010’s new RTTI features.  He’s done some pretty cool stuff with it – attributes, databinding, and more.  Here’s a look at how he’s using all this new power to create a prototype for an object binding framework.

Random Thoughts on the Passing Scene #142


Haitian Relief Auctions are Live


Okay – the Haitian Auctions are live! Three pages of historical goodness and fun, all for a good cause – with more to come, I believe.

Note, that even though the auctions state:

“90% of the final sale price will support Clinton Bush Haiti Fund (Small deduction may apply. Learn more)”

all the proceeds for the auctions go to Haitian Relief.  We had to “hold off” 10% to cover PayPal expenses, handling costs, etc.

There are some pretty cool things in the auction. Let me highlight a few of them:

  • Haiti Relief: Borland T-Shirt Signed by the Delphi Team – I won this T-Shirt at the Borcon where Delphi 8 was released.  It is signed by the Delphi team at the time.  I won the shirt by answering – at the Meet the Team event — the question “What day was Delphi 1 released?”  (February 14, 1995 for  you trivia buffs).  I remember that Dr. Bob really wanted the shirt, so I expect a big bid out of him.  ;-)  Note that the shirt has never been worn, and I’m happy to donate it to the cause.
  • A shrink wrapped copy of Turbo Pascal 3.0 – Nice!  This was a classic version – the last one to produce COM files.
  • Haiti Relief: Borland Suede Varsity Jacket – I won one of these at the second to last Borcon in the Borland Bucks Lottery at the very end.  I saw them and really wanted one, and was excited to have a chance to win. And this is a true story:  I was sitting in the middle of everyone at the final keynote, and they started drawing names for the jackets.  First, the guy directly in front of me wins.  Then, next, my friend Bryan Bushay who was sitting right next to me won.  And I’m like “Hey, I’m going to win one for sure”, and next up?  Me!  What are the odds?  And just so you know, this is a really nice, high quality jacket.  I wear mine all the time.
  • And finally, I’d be remiss if I didn’t mention the first ship copy of my favorite discontinued Borland product of all time: Intrabuilder. Sigh.  That product was ten years ahead of its time.

Anyway, thanks for your consideration.  I encourage you to bid generously– we’ll ship this stuff almost anywhere in the world – and it is all for a good cause.    And if you have any items yourself you’d like to donate, let us know – we’ll make it work somehow.

Haitian Relief Auction: Sneak Peak


Anders Ohlsson has posted a couple of “sneak peak” auctions to make sure that our system is working.

Bid early and bid often!  Look for more opportunities next week.

Buy Cool Old Borland Stuff, Support Haitian Relief


As some of you may know, we are moving our offices to a new location here in Scotts Valley.  This beautiful, big building we are currently in (and that was built and owned by Borland for many years) isn’t matching up to our needs anymore, and we are moving to a shiny new place very nearby.  (Closer to food for lunch!  Yeah!  Farther from the gym for Lunchtime hoops! Bummer!  Well, not much father. Anyway….) 

So when you move, you generally use that as an opportunity for cleaning up, clearing out and generally clearing away the build up of years and years of hard work.  As we are doing that, we are finding tons of cool old stuff from “back in the day”.  Hats, first ship software, posters, bumper stickers, t-shirts, and all kinds of different stuff.  It seems a real waste to just throw it all out.

So we aren’t going to throw it all out.  Instead, we are going to put much of it up for auction on eBay.  We’ve been gathering it all up, and we’ll be putting it up for auction.  You can bid next week for any item that you please.  (Anders has put up some photos as teasers….)  All the proceeds from the auctions will go to Haitian relief.  We will ship things world-wide (with a few exceptions that the US Postal Service and the US Government define….), so you can bid no matter where you are in the world. 

So keep an eye out for those auctions starting next week. And don’t be shy – bid early and bid often.  All the money goes to help the people of Haiti, and you can grab a small piece of tech history along the way.

Random Thoughts on the Passing Scene #141

  • Well, there certainly is a lot of folks using serial ports out there.  ;-)
  • Allen Bauer goes on quite a tirade about stack frames and stack alignment.
  • We originally set 31 December 2009 as the last day you could upgrade from Delphi 2005 and below.  A bunch of you were still a bit hesitant, so we extended the date to 31 January 2010, but as I understand it, the end of January is really, no kidding the last day.  If you are using an old version of Delphi, the time to upgrade is now, before the end of the month.
  • Cool Delphi Open Source Project of the WeekDelphi Spring Framework  It is cool for a number of reasons, not the least of which is that they provide Live Templates to support coding with the framework.  That’s a great idea – one that more third-parties should take advantage of.
  • TSmiley Update:  I just checked in a new version that has quite a few XMLDoc comments in it, enabling easy processing as well as HelpInsight support.  Question – Is there an official definition on the web for XMLDoc comments?  Is XMLDoc even the right name?  There seems to be a lack of standards here, or maybe I’m just missing something……

Random Thoughts on the Passing Scene #140

  • Check out Channel E – a central location for Embarcardero’s online stuff: video, blogs, twitter, etc.
  • Interested in finding out more about Delphi Prism?  Long time Delphi developer Brian Long has written a White Paper which discusses using Delphi Prism and  Mono.  You can also download papers from Dr. Bob and Marco Cantu on REST, DataSnap, and other topics.
  • When is the last time you plugged something into a serial port? I ask because I actually have a serial port on the back of my notebook, and I don’t believe that I have ever connected anything to it.  I notice that newer laptops (we all have Dell’s around here) don’t have this anymore.  It’s USB all the way. 
  • Over the Christmas break, Mike Rozlog made 12 videos about Delphi 2010.  And while you are at it, feel free to weigh in on Mike’s Annual Ten Predictions for the Coming Year (though it looks like there are 11 this year….)
  • Did I point you all to Chris Bensen’s “Hacking the Touch Keyboard” articles – Part I and Part II.  Chris did some pretty cool and interesting things in building the TTouchKeyboard, and he designed it so that you guys could have a lot of control over what it does and what keys are available, etc.  Worth a look.

The Best way to Get TSmiley, or…. A Subversion Primer


Okay, the response to TSmiley has been amazing.  At least ten of you have downloaded it.  Unbelievable.  I’ve even made a few updates to it.  And I’ve checked those updates into the Subversion server on SourceForge.  I’ll try to keep up with the ZIP file download, but seriously, you really should get used to the notion of pulling from the Subversion server. 

It’s really easier than you might think, and I find that it is actually faster than downloading a ZIP, unzipping it, and putting it into the right folder.  Ever since I became the admin for the Turbopower projects, I’ve been using the Subversion command line all over the place.  We use Subversion here internally for RAD Studio, so I was used to pulling and updating with that, but the notion of maintaining a codebase off of SourceForge using it was pretty new to me. 

First, if you are totally familiar with Subversion, this post will be very basic for you.  I just want to show how easy it is to keep updated with the latest version of a Subversion repository on your machine.

So, currently, I have a folder – c:\code\TSmiley  — on my hard drive where Smiley resides.  That folder is associated directly with the TSmiley Subversion repository on SourceForge (  I use a combination of the Subversion command line tool and TortoiseSVN to manage the codebase on SourceForge from my local machine.

What do you need to do to access it?  It’s pretty easy.  You download the Subversion command line client (you’ll have to set up and account on CollabNet.  Be sure to download the second item on that page, which is the client only. ), install it, and that is it.  Once the client is installed it “just works” and makes it really, really easy to keep updated.   For instance, you can check out the code to TSmiley with the following steps.

  1. At a command prompt, do to the directory where you want your TSmiley directory to reside.  (The code will end up in a subdirectory of this directory)
  2. Issue this command: svn co tsmiley
  3. That will "pull" the TSmiley code into a sub-directory called \tsmiley
  4. Then, to update and ensure that you have the most recent version, you simple go to the \tsmiley directory and type: svn up .  That’s it.  The SVN client will go out to SourceForge and pull down the most recent code. 

That is way easier than messing around with ZIP files.  You can even write a batch file to update all your projects.  I do that.  I keep all my code in a c:\code directory, and have a batch file that goes through and updates everything.  Very, very simple and easy. 

The other tool that I use so TortoiseSVN – which is a shell integration for Subversion.  You can manage your code and repositories right in Windows Explorer.

If you are looking to set up a Subversion server, you can’t get any easier that VisualSVNServer, which will have you up and running in a matter of minutes. 

All in all, I strongly recommend you becoming at least basically proficient with the Subversion command line client and TortoiseSVN.  It makes managing the code you get from SourceForge way, way easier.

Random Thoughts on the Passing Scene #139

  • Whoops – found this post with a few items hanging around from before the Christmas break – some of this stuff may be a little older……
  • Chris Hesik has posted an informal update to Delphi 2007 that will enable the debugger to work properly in Windows 7. Please note what Chris says about the informality and level of testing.  Please back up any files before overwriting them. 
  • Did you know that the Delphi Language Guide is online and available for your perusing pleasure?
  • And did you know that Embarcadero has had a Delphi ad in every issue of SDTimes for the last six months?  (Feel free to point that out to your boss.) And that you can see Delphi banner ads on StackOverflow (though mostly if you have a relatively low reputation, that’s the way it works on StackOverflow.  Folks with higher reputation see fewer ads……)  Our marketing folks have been busy.
  • We have apparently extended the upgrade period for D2005 and below through the month of January.  If you are running an ancient version of Delphi and you missed out last year, now’s your chance. 

TSmiley 2010: The Next Generation in Uselessness


If I had a dollar for every time I’ve been “teased” about TSmiley, I could finance my own startup. 

TSmiley, for those of you that don’t know or haven’t heard, is maybe the very first third-party VCL component ever.  I built it for the first time way back in the fall of 1994 when I was on the original Delphi 1 beta.  The VCL was brand new and in development, and the notion of building a component in Pascal was so cool, I couldn’t resist.  (Remember, those were the days when the only “components” were VBX controls, used in Visual Basic, but written in C++.  Remember when Delphi actually could consume VBX controls?) 

I couldn’t wait to write components, and of course, half the battle is coming up with an idea – not always easy.  Windows95 was brand new at that time, and so was MineSweeper. Remember the old school Minesweeper version, with the little smiley face up there? It was a fun game. MineSweeperI used to play on the smallest size and see how fast I could clear the board.  Anyhoo – I thought it was cool that it has this little smiley on there that would make faces at you if you lost, etc. So I decided to build a Delphi-based version of this little control.

I built the thing with two purposes in mind:  to learn how to build components and to create something that others could learn from.  It started out as a descendant of TImage (made sense at the time — trust me) and I did a few things like override protected methods that fire events, trap and handle Windows messages, etc.  I even figured out how to build a property editor for it. 

I posted it on the Compuserve forums, and the next thing I know, Charlie Calvert, David I, and the Borland gang were all using it in demos all over the world.  It became a pretty good running joke (to this day, Xavier Pacheco still teases me about it.  Let it go, X….) and I sort of ran with it.  I had a press release, I said things like “The usefulness of TSmiley cannot be measured” and I generally rode that handy little component to fame and glory. Okay, maybe not much fame and glory, but it was fun, and I do believe that folks learned a thing or two from it. I mean, the thing was basically useless (though I did have people tell me that they used it in production apps……) but it did show some interesting ways to build components. 

If you want to take a trip down memory lane, a very early version of the TSmiley page is available on the Wayback machine, as is a copy of the “press release” that I wrote. 

Recently, someone on the newsgroups asked if there was a version that worked with Delphi 2010. So I scrounged around and found the code.  I had to blow a few layers of dust off of it, but there it was, sitting on my backup/archive hard drive. I cracked it open, and man, was it embarrassing.  Talk about code that was clearly written back in the early days before I could even pretend that I knew what I was doing. (At least I had changed it to descend from TGraphicControl)  I mean, it worked, and for the time it was written it was pretty well done, but over the years, the “best practices” of component Delphi development have changed, and so it was time to update.

So, update I did.  Here’s a summary of the updates that I made, and some discussion about why.  Hopefully there are some tips in there.

  • First thing I did was notice that I hadn’t followed the DRY (Don’t Repeat Yourself) principle.  There was common code all over, and the bitmaps themselves were in both the runtime and the design-time packages.  It would have been a real pain to add another TSmiley mood, so I added the bitmaps as resources to the runtime packages, I ensured that the design-time package got all of its needed information from the runtime package, and tried to refactor code patterns that repeated themselves. Hopefully thinks are much more efficient.
  • I added a mini-API to TSmiley in the form of some class methods.  These allow you to get a bitmap, a name, and a description for a given Mood from TSmiley without need an actual instance. (For instance, that’s how the
  • I declared all the strings as resourcestring to help anyone that wants to localize TSmiley
  • I updated the Mood property editor.  The original property editor was a series of fixed speedbuttons with the bitmaps on them as glyphs.  This was utterly inflexible, because you had to add another speedbutton if you added a new mood.  Now, theproped. Property Editor is a ListView that dynamically loads up the graphics, names, and descriptions without caring how many there are.  This makes it much easier to add a mood as the new mood will automatically be added to the property editor.
  • I made DoMoodChange virtual.  This means you can more easily override it and add any functionality you might want to a descendent class. It is a good practice to have your events fired in a stand alone, virtual method.  That way, you allow descendent components to easily augment the behavior if desired.  If you have an event called OnMoodChange, it’s good to have a DoMoodChange method that is virtual and does nothing more than fire the event.
  • I stopped trapping and handling WM_PAINT and simply overrode the Paint method.  No need to illustrate how to do that anymore – too old school.  ;-)
  • I published a bunch of events from TControl that didn’t get published by TGraphicControl.  Now you can provide handlers for events like OnMouseOver, OnDblClick, etc.
  • I added the ClickMood property. The original TSmiley would wink at you if you clicked on it, but I figured that the face that shows up when you click should be configurable, so now you can set what mood you want to appear when a user clicks on TSmiley.
  • I added two constant arrays, one for the Mood name and one for the Mood description.  TSmiley will automatically update its own hint with the <short hint>|<long hint> pattern when the Mood is set.
  • I added a small test/demo application that shows how TSmiley might be used, and to verify functionality. Nothing much – it just creates a TSmiley on the fly and toggles the mood, as well as displaying the hints. 

That’s all I can remember right now – there are probably a lot of other subtle changes as well.  I tooled around with it for a while until I felt comfortable with the code.  I’m not claiming it’s any great chunk of code, but it looks “clean” and well organized to me. 

In any event, hopefully this will bring TSmiley into the modern age.  So, how do you get it?  Well, I’ve put TSmiley up on SourceForge, making it easy for you to get and easy for to enhance, fix, and update.  I’m totally open to enhancement ideas, bug reports, etc.   

TSmiley is freeware, so have at it. And don’t worry, I can take all the teasing.  After all, one really can’t describe how useful TSmiley is.

Partner Spotlight: SOCK Software and CodeHealer


Jud Cole and SOCK Software have been long time Technical Partners of Borland, CodeGear and now Embarcadero, and they have recently released version 2.6 of their flagship product CodeHealer that includes full compatibility with RAD Studio 2010.

In case you haven’t heard of it, CodeHealer is a powerful and easy to use source code analysis and verification tool that can find and generate reports on a significant number of programming bugs, mistakes and inconsistencies in Delphi programs simply by parsing its source code in the same way that the Delphi IDE does. It also calculates and reports numerous metric values such as counts of classes, methods, units etc., and cyclomatic complexity for the code parsed.

The issues for which it checks, the reports it generates, and the export formats for those reports are all highly configurable, and its operation can be fully automated using a comprehensive set of command line parameters, so it can be run automatically as part of an automated build process using tools such as MS Build, Automated Build Studio and FinalBuilder.

The new version of CodeHealer supports all versions of Delphi from Delphi 5 through to  2010, and can quickly and easily switch between versions on a per project basis, which can help greatly when checking compatibility of your source code between multiple versions of Delphi.

You can read more about CodeHealer at

As a special treat for readers of this blog, SOCK Software is offering a limited time special deal of CodeHealer 2.6 for only $199, which is almost half off their normal list price of $379.

To get the deal price, just use the coupon code HEALER26 at check out when ordering from their Web site at

Lastly, if you want to take it for a test run first you can download a fully functional, but time limited, trial version from the same web site. The trial version (and full product) are only an 8 MB download, but it includes the full documentation and email technical support, so why not take a look and see what it finds in your code!

Random Thoughts on the Passing Scene #138

  • When we told Microsoft about Delphi Prism, they were really excited at what we were doing with the VS Shell.  So excited, in fact, that they did a complete Case Study on it.  And I even get a nice quote on the side. :-)
  • Be sure to read Chris Hesik’s blog post about how we leverage all those “Automated Incident Reports” that you guys submit to us.  We’ve found a lot of good bugs and been able to fix a lot of hard to find issues by aggregating those reports.  Please keep submitting them because, as you can see from Chris’s post, they are really valuable and helpful.  We are grateful for every one that we get.
  • YES!  I have now earned the “Delphi” badge – that’s 400 upvotes on answers to questions with the tag “Delphi”.  Sweet!  Thanks!
  • TurboPower Update: Roman Kassebaum continues to amaze.  He has been doing amazing work on the TurboPower projects.  His latest effort has been on the OnGuard project, which allows you to create demo versions of your applications.  Roman has been busy.  The OnGuard project now has:
    • SVN support with the latest version from Songbeamer checked in, which means that it is Unicode ready
    • all the code warnings removed from the build.
    • Packages and a project group for Delphi 2010.
    • Additional D2009 packages.
  • Marco Cantu and Cary Jensen are at it again – they have set up Delphi Developer Days 2010 with dates in May for Washington/Baltimore, Chicago, and Los Angeles.  Those two guys can definitely fill up your brains in two days.

RAD Studio 2010 Update 4/5 Released


Okay, the Update to the Update is out. You can download it from the Registered Users page or you can let the IDE do the update for you by checking for updates.  To find out more, you can read the README.  I know you all always read the README, right?

You probably have some questions. I’ll try to answer some here.  But first, the main point to get across is that this new Update is “good for what ails ya.”  It covers all the bases.  Everyone in all scenarios with regard to RAD Studio 2010 installations should apply this update.

I installed Update 2 during the brief period it was available. What should I do?

Install Update 4/5.

I have the original RTM version and haven’t updated anything yet.  What should I do?

Install Update 4/5

I’ve only installed Update 1.  What should I do?

Install Update 4/5

I have <done/not anything at all with regard to updating/not updating RS 2010>. What should I do?

Install Update 4/5

Are you going to answer “Install Update 4/5” to every question I ask?

Well, pretty much.  If the question is about what your configuration is and what you should do about it to get the latest fixes, then the answer is “Install Update 4/5”

How do I tell if I have the most current version?

Open up your about box.  If you see “Update 5” in the “Installed Updates” box, you are good to go. If you don’t, see the answer to every question above. 

What bugs are fixed in this update?

List of Bug Fixes in Updates 4 and 5 for Delphi 2010:

List of Bug Fixes in Updates 4 and 5 for C++Builder 2010:

Why is it called Update 4/5?

For various reasons, we do the database portion of the install separately, and merely include it as part of the “Master” install.  Therefore, it needs to be updated separately.  Update 4 is the main product update.  Update 5 is the “Database Pack” update.  They go hand in hand and should be installed together always.

This all took longer than I thought it should  Why?

Well, first, this second go-around wasn’t exactly planned, so we had to adjust a thing or two.  The problem we found was one that we hadn’t tested for.  (We test for it now, believe me).  Then, we wanted to make sure that it was absolutely right this time.  We also added in more fixes.  We test a huge combination of install scenarios, involving multiple operating systems, languages, localizations, editions, and more.  It takes a lot of time and effort. Ultimately, we were extra double-secret-probation-careful to make sure that it was good. I believe it was worth the wait.

Random Thoughts on the Passing Scene #138

  • I spent some time working on the “Enhancements Since Delphi 7” page on the Delphi wiki.  Feel free to pitch in.  I’m sure that I missed a lot of stuff, as I did it kind of late of a Friday afternoon.  I’ll try to get back and fill it out as well.  (I referenced the page in my answer to this StackOverflow question.)  And remember, if you are thinking about upgrading, then you need to do it soon – upgrade pricing goes away for Delphi 2005 and below at the end of the year. 
  • Speaking of StackOverflow, the “Delphi” tag has now blown through 3000 questions.
  • And if you are looking for resources to help you upgrade, we have a complete Migration Resource Center.
  • Marco Cantu is pulling together a web page for his new Delphi 2010 Handbook.
  • TurboPower Update:  I have enabled Subversion access for all the projects.  Perhaps I was way to optimistic, but  I assumed that if I enabled Subversion for a given product, it would automatically point to the root of the existing CVS repository, but no, such is not the case.  I’ll begin migrating the source over to the Subversion servers as well.  If anyone wants to help to do that, please feel free.  :-)

Random Thoughts on the Passing Scene #137

  • Some of you were having trouble running the Delphi 2009 debugger under Windows 7.  We’ve posted a hotfix for that.  Chris Hesik has some details.
  • From the EmbarcaderoTech twitter account: Are you a LinkedIn user?  Embarcadero Technologies has an awesome new group for customers and users, join us!
  • I’ve just published an article on EDN called “What We Expect from our Field Testers”.  We couldn’t ship a product with out great field testers, and we are always looking for more folks willing to make the commitment to do what we need doing.  You can look on the Embarcadero Beta Site for more information about becoming a Field Tester for RAD Studio.
  • Some folks don’t like to see the MS Windows SDK content in their Delphi help.  Dee Elling shows you how not to install it.  At the end, she writes “For future releases we are considering whether to switch the default around, to not install the MS SDK Help; if you have an opinion one way or another I appreciate hearing from you,” so be sure to let her know either way via comments.

Random Thoughts on the Passing Scene #136


Random Thoughts on the Passing Scene #135

  • Phew – okay, been a while.  I was “on the road” last week.  Thanks to all the great folks that showed up in Philadelphia, Raleigh, and Minneapolis for my road show.  I hope I was able to convey the great stuff in the latest version of RAD Studio.  (Don’t forget to use your “special codes” to get at 20% discount on purchases. They expire soon.)  It was great to get out again and meet with customers, developers, etc.  Thanks to everyone who helped out with getting the events going.  It was fun, and I even got to spend the weekend with my parents in Minneapolis.  Great times.
  • Developer Express has been a long time partner and provider of outstanding VCL components.  I know that many of you use their stuff rather faithfully.  I know that early every year they have a meeting to plan out what they will be up to for the coming year.  This year, long-time community member and DevExpress guy Richard Morris is asking for input from the DevExpress VCL customer base.  This is a great opportunity to give some feedback to a company that loves to hear from you.
  • Here’s a curious phrase, or at least one that has become curious over the past few years:  “Online help”.  What does that mean to you today?  Today, it means to me “Help that is on the internet somewhere, and that I can look at with a browser”.  But of course, say, fifteen years ago, it mean “Help that is on my hard drive and connected via the F1 key”.  I think if you say the phrase now, the former definition is what people will understand it to mean.  So that begs a question:  What should we call help that is on your hard drive?  "Local help”?  Anyone have any ideas?
  • Marco is offering a nice special on his two latest books.  These are the same books that many of you got as part of your Delphi/RAD Studio purchase, but if you haven’t gotten them yet, now is the time to buy.  Marco’s books are always good, and these two are particularly good for folks moving to the new versions. 
  • And finally, I am thankful for many things on this Thanksgiving day here in the US – my family, my friends, my freedom.  I’m also thankful to the Delphi community and to all of our customers that make it possible.

The Coming RAD Studio Update


This week we were in the early stages of rolling out what was to be “RAD Studio Update 2” with a large number of bug fixes.  We put the update out on the web and the registered users page, and posted an article on the Embarcadero Developer Network. We were excited, because there are a lot of bug fixes in it, making an already solid product even more solid.

However, once a few people started installing it, they noticed that they were being asked to register every time RAD Studio was run.  The product is properly registered, but the dialog box still pops up every time you run RAD Studio.

So, first, if this is happening to you, we’re sorry.  You can simply click cancel whenever you see that dialog and be on your merry way with the benefit of the fixes for Update 2.  Your product should be properly registered, regardless of what the dialog may tell you. 

Second, we have recognized the issue and pulled the Update from distribution.  We want you to have the best experience, obviously, so the continued distribution of the Update clearly isn’t in anyone’s interest.  We don’t want folks to run into the problem – again, obviously. 

Third, we are working on a fix that will cover everyone.  If you’ve installed Update 2 and are running in to the issue above, then we’ll have a fix for you.  If you haven’t installed Update 2 yet, we apologize for the delay, and we’ll have an update for you that doesn’t have this issue.  I can’t say when we’ll have it, but obviously we want it to be as soon as possible.  We want you to have this Update in your hands as much as you do.

Finally, we’re sorry for the hassle, and we’ll get this fixed as soon as possible. 

Random Thoughts on the Passing Scene #134

  • We have published Help Update #1 for the RAD Studio 2010 help.  You can find out more at the Developer network.  The Help Update should be available through the IDE’s automatic update system.  If you have that turned off by default, you can invoke it via the Start menu.
  • Question:  Can you ever really have “Release Candidate 1”?  If you call it that (as opposed to just “Release Candidate”), is it really a release candidate?
  • The marketing folks have been busy – they’ve taken your input and created a Delphi and C++Builder Application Showcase page.  On that page, you can find all different kinds of applications that are built with RAD Studio, from licensing tools to Client/Server applications to games and media players.  If you want to see the power and speed of what can be done with your favorite development tool, that is the place to go.  And of course, if you want to be included in that impressive lineup, then let us know.
  • I’ve mentioned this before, but it bears repeating:  If your most current version of RAD Studio is 2005 or earlier, then 31 December 2009 is the last day you can take advantage of upgrade pricing.  So if it has been a while since you’ve upgraded, now is the time.  That page is also our Upgrade Center, which has information and links about the latest new features, how to migrate to Unicode, and getting your third-party tools updated to the latest version.  There isn’t going to be a better time to make the move to the best version of RAD Studio ever. 
  • And of course, if you’ve moved to Windows 7, RAD Studio is the tool for doing your Windows 7 development.

On the Road with Nick


Hey, I might not be the Delphi Product Manager any more, but that doesn’t mean that I won’t be going out on the road to see customers and show off RAD Studio 2010!  I will be making three tour stops as part of the RAD Studio 2010 Road Show.  I’ll be doing the Philadelphia, Raleigh, and Minneapolis/St. Paul meetings.  (The last one is nice because I’ll get to see my folks and my old running mates in the Twin Cities).  Each of those three events will be held “right after work” from 0:600pm – 08:00pm.  Follow the links for more information about the venues.

So please sign up – I’d love to see you all again or meet you for the first time, as the case may be.  :-) And remember, it’s all free!

The Delphi Survey


Hey, the Delphi Survey is back!  It’s long, but well worth the time.  Please go and fill it out as completely and as thoroughly as you can.  We really read and study and use and act on the valuable information we get from it.  Your opinions really matter and really make a difference. Thanks in advance for taking the time.  We really do appreciate it.

Random Thoughts on the Passing Scene #133

  • First the GOTO was disparaged into oblivion.  Then the ‘with’ statement came into the cross-hairs.  Is the ‘if’ statement next?
  • Hey, the CodeRage 4 replays are online – lot of good stuff in there, especially about the new things available for RAD Studio 2010.  If you are looking at upgrading, the presentations from CodeRage 4 would be a good place to get a look at what you can do with  RAD Studio 2010. 
  • Are you using Windows 7? Want to develop for Windows 7?  Delphi is ready for you to do just that.
  • Learned a new term today: Cargo Cult Programming.  (Saw the term on this excellent answer given by Mason Wheeler on StackOverflow).
  • I know that a lot of you do database management and development.  If you do, you should look into DBArtisanHere’s a nice review of the product if you want to learn more.  Being able to write an then really tune your SQL is a good thing.  We’ve used the tool internally on our database frameworks to ensure that dbExpress uses the most efficient SQL possible.

Random Thoughts on the Passing Scene #132

  • Oh, by the way, another good way to get your comments deleted is to use profanity.  Should have mentioned that before.
  • The guys over at Gurock Software have a really cool article called “Working with Delphi’s new Exception.StackTrace” showing how you can get more information about stack traces at runtime. 
  • Want to write an iPhone application in Pascal?
  • If you haven’t tried IDE Insight in RAD Studio 2010, then you should.  It is easy – hit F6 or CTRL+. – and then start typing what it is in the IDE that you are looking for.  Cool feature.  But here’s the question – what would a 16×16 pixel glyph look like if it represented “IDE Insight”?
  • Have you checked out all the code samples on the Delphi DocWiki?

Random Thoughts on the Passing Scene #131

  • We are looking for folks to submit their Unicode migration stories to the Unicode Migration Best Practices Cookbook.  If you have a tip or two, or a good story to tell, please let us know and help out the Delphi community.  Looks like you might win an iPod Touch if you submit something.  You’ll also get fame and glory and credit on our web site.  Nothing to blow your nose at.
  • If you are on RAD Studio 2005 or earlier and haven’t yet upgraded, now is the time to do it.  Your time for getting upgrade pricing is running out.  After January 1, only users of BDS 2006 and up will be eligible for upgrade pricing.   And with the release of RAD Studio 2010, there’s never been a better time to upgrade.  I may be biased, but I not so humble that I’m not willing to say it out loud:  Delphi 2010 is the bestest, most powerfulest and coolest Delphi ever.  :-)
  • I love IDE Insight.  You can get get to it two ways, F6 or CTRL-<period>.  (I tend to use F6, since that was the “original” keystroke during the beta.)  Getting in the habit
  • StackOverflow Post of the Week:  What are good arguments to convince management to upgrade to Delphi 2009 / 2010?

© 2016 Nick Hodges | Entries (RSS) and Comments (RSS)

Your Index Web Directorywordpress logo