Monthly Archives: April 2007

Using Subversion's support for externals in the BDS repository

I realized I probably should have linked to the book on Subversion earlier in case you haven’t found it yet. Now, yesterday I blogged a bit about how the Delphi team’s SVN repository is setup, today I’ll discuss how SVN externals are used in the BDS repository. One thing externals allow you to do is link different repositories together.

The “TP” tree, the main BDS repository, is made up of a few different SVN repositories. One example of an external repository is the C++ compiler. The C++ compiler that’s used to build the Delphi compiler, among other things, is not built within the TP tree rather the binaries are provided via an external link. The main reasons being it provides the C++ compiler team the freedom to work at their own pace and not worry about affecting the larger BDS repository and helps reduce the build overhead for those of us building the BDS tree all the time which takes roughly 15 minutes on this machine. There are other such external links but pretty much fall under this same usage pattern.

If you’re a Delphi/C++Builder developer one use of externals could be for your third party components. Since you’re probably less/unlikely to modify that code you could create a separate repository which could feed your main repository with those binaries rather than constantly rebuilding static code. The same could be true of any utility packages, DLLs or .DCUs within your project that change infrequently. Be sure to refer to the book mentioned above for more of the specifics on SVN externals.

In the case of the IDE, all IDE, RTL and VCL packages are checked into the main repository and built during the normal build process. The IDE itself is very modular and many of the different features/packages can be build independently either from the command line with MSBuild or from the Project Manager. There is an IDE project group file checked in which contains a large number of the products packages making it easier to work on such a modular code base.

There’s lots more to talk about so I’ll continue chipping away if people are finding this of value.

Please let me know if you find this useful/interesting. Thanks!

How the Delphi and C++Builder Subversion repository is organized

Here is a comment from this post asking:

How do you manage IDE packages in SVN repository? Do you have separate repositories for each package or you have only one repository for all packages and all editions of Delphi?

This is a great question. First off, our repository is still referred to as “the TP tree” dating back to Turbo Pascal days.  We have one main repository for the entire BDS product. There are roughly 44K files in the TP tree totaling ~1.1GB of diskspace. When checked out to a local machine, including the SVN overhead, the tree is roughly 107K files and ~2.55GB of diskspace. The build process uses $g(MSBuild) and can build all of the SKU’s, including support for all the different languages (English, German, Japanese etc.). Typically, each directory has a make.proj file which details how that directory is built and what it’s dependencies are (among other things, refer to ccnet.config). There are some external projects which I’ll discuss in another post but the core BDS
R&D team generally works in this single SVN repository. Some of the major pieces included are:

  • Delphi compilers (Win32/.NET)
  • RTL/VCL (again Win32 and .NET)
  • the IDE (Delphi, Delphi for .NET, C++ Builder and C#)
  • Together
  • ECO
  • Zombie test framework
  • Zombie .DFM models (roughly 1000 .pas files)
  • Lot’s of other things

I’ll leave it here for now and will look to continue this discussion in follow-up posts. In the mean time, here are some links to older post I’ve written regarding our development process:

Use Google Site Search to find items on CodeGear's CodeCentral website

I’ve noticed what I believe could be a problem with how CodeCentral handles the $g(HTML title tag) for entry pages. I’ve blogged about the importance of the title tag and I’m certainly not alone on the subject. In CodeCentral the title includes the ID for the entry like this:

ID: 24211 Delphi for .NET example using AJAX.NET Pro

I think the colon adversely affects the search results on Google. For example, take the following Google search (click the link to see the results):

Delphi example AJAX.NET Pro

I fully expected to see the CodeCentral entry I mentioned but it’s no where to be found. Likewise when searching for:

ID: 21679 Query Microsoft Index Server Using Delphi

I tried the following search terms:

Microsoft Index Server Delphi

Once again, CodeCentral isn’t listed leading me to this following conclusions. First, don’t use a colon in your title tag. Second, if you’re looking for items on CodeCentral you may have much better luck using a Google site search like this:

Delphi example AJAX.NET Pro site:cc.codegear.com

Looking for an alternative to the Western Digital MyBook Pro Edition II

After this, then this, I headed back to CostCo to return a second dead MyBook in a week. The guy at the return counter said “Yeah, we’ve gotten a bunch of these back.” He then looked it up and the CostCo here in Santa Cruz has sold 12 MyBook Pro Edition II’s (I’m guessing that’s over the last 5-6 days which is when I first saw them) and six had been returned so far. Of course, I purchased two of those but a 50% return rate? That’s certainly enough to convince me to look elsewhere. I can’t imagine CostCo will continue carrying these much longer if that record keeps up.

Btw, I’ve since found this blog post, unfortunately, I was unable to reach that site the other day nor did the cached version on Google work for me, go figure.

Ok, I believe I’m done blogging about the MyBook.

Western Digital MyBook Pro Edition II 1TB second try goes up in smoke

After this experience I finally made it back to CostCo to pick up another $g(Western Digital MyBook Pro Edition II) and get back to work backing up my images and video. I got the software installed (again) and plugged the MyBook into the wall then plugged the Firewire 400 cable to the MyBook then into my Dell 530. Right after making the connection I noticed a small curl of smoke rise up from the back top edge of the brick, right above where the Firewire 400 plug is located on the back of the MyBook, and that’s where it ended. I immediately yanked the plug on the, now literal, Firewire cable and pulled the MyBook power cable from the wall. I guess they don’t call it Firewire for nothing. Unlike last time, where I never actually saw smoke but thought I smelled that unique scent of electronic smoke, this time it was clearly visible and now I’m fairly certain something rather catastrophic must have occurred in the previous go-round and I’m guessing today’s experience is probably related.

I tried powering up the MyBook again without any I/O cables attached and the circular indicator lights no longer respond. I also tried reconnecting my external Sony DVD burner into the same rear Firewire port and Windows failed to acknowledge it’s existence. Switching to the front Firewire port worked just fine. Great, so now, not only do I have a second MyBook which is now toast, I’m down to one built-in Firewire port on my machine.

I’m pretty darn frustrated at this point and my confidence in the MyBook hard drive enclosure, specifically the enclosure, has taken a severe beating. This has left me wondering what if the Firewire failure had occurred at some later point when the machine was unattended (even five minutes later)? Would it have actually caught fire? The MyBook was two inches from a stack of recorded family DV tapes sitting here on my desk. Ok, I don’t want to think about that anymore.

Anyway, just prior to all this MyBook stuff I had successfully copied several DV tapes from my Sony Digital HandyCam to my machine without any problems using this same Firewire port so I’m pretty sure the MyBook is somehow related to it’s demise.

Ok, one last thing, I’ve now purchased two MyBook Pro Edition II’s and upon opening each box I noticed the devices had the same odd smell which I think I’d describe as “solvent-like”. It wasn’t particularly strong though it did cause me to actually sniff the enclosure to ensure that’s where it was coming from. The first thing that came to mind was that of airing it out before sitting in the same room with it for any extended period of time. I know PC’s typically have a unique smell when first unwrapped/installed/booted but this smell distinctly stuck out to me as something I didn’t want to be inhaling for any length of time.

Thunderbird can't connect securely to x.y.com because the site uses a security protocol which isn't enabled

Mozilla Thunderbird

After installing Thunderbird 2.0 I started getting the above error message upon attempting to connect to a secure newsgroup server that I had been using successfully in Thunderbird 1.5. The issue is that Thunderbird 2.0 has disabled certain secure protocols which are considered less secure by default though the error message doesn’t really help you resolve the issue. Here is what I did to gain access to this server:

  1. Start Thunderbird
  2. Select Tools|Options
  3. On the Advanced page
  4. Click “Config Editor…” button
  5. For the news server I was trying to get to I had to enable the following security property “security.ssl3.rsa_rc2_40_md5” so I typed that into the Filter edit box and double clicked it to toggle it from false to true.Close
  6. Close the Config Editor and click OK on the options dialog.

Now I’m able to get to the secure newsgroup server.

Western Digital MyBook Pro Edition II 1TB: Take One

windirstat

I’ve been looking for a solid storage solution primarily for digital photos and video which currently consumes just over 110GB of disk space (50GB/photos and 60GB/video). I was in CostCo (a “big box” warehouse store) the other day and they are currently selling the 1 terebyte Wester Digital MyBook Pro Edition II with the triple Firewire/USB interface for $369 which appears to be a very competitive price according to Froggle. I’d done quite a bit of searching for good solutions and this seems to fit the bill fairly well especially considering it has the flexibility to easily support both RAID 0 and RAID 1, my preference.

So, I get the box home and I’m excited to get it hooked up and put an end to the constant stream of DVD’s I’ve been burning which covers only photos since the videos are too large. The MyBook couldn’t really be much easier to to install, pop in the CD, hook up the desired I/O interface cable, firewire 400 in my case and plug it in. Unfortunately, that’s where my experience ended, the small led indicator on the AC adapter brick lit up but the device never responded. The blue indicator lights on the front never flickered nor did the power button respond. I thought I’d noticed a hint of an electrical smoke smell briefly after I plugged it in and I’m guessing that had something to do with it. I fooled around for a bit adjusting the connections but the device was simply dead. Having purchased it at CostCo returning it other than a trip to the store was painless though I didn’t have time, with two tired kids in the cart, to wait in line to pick up a replacement so I’ll have to wait for another day.

I really like the device and even though I’ve read about it being rather loud I don’t intend on having it on all the time so that doesn’t really both me unless it wakes the kids which I can’t imagine.

On a related note, I found this blog post by Jeremy Zawodny as it has some great information and lots of good comments.

Btw, in case you’re wondering the screenshot here is a picture of $g(WinDirStat) of my existing backup drive which is a $g(LaCie 250GB USB external drive) of which I’ve recently found some not so glowing reviews.

What are you doing for storage? What about some of the available online storage solutions?

Amending the Delphi 2007 readme

A few years ago I mentioned the notion of a living readme which got me thinking about how to best handle issues raised by people commenting on my previous post. I’ve now created such a readme on my wiki and have started amending it with these new items which I’ve marked with a solid vertical blue line in the left hand margin. That wiki page has it’s own RSS feed so you shouldn’t have to actively watch it for new entries. Additionally, as an experiment, I’ve opened the Discuss pages on my wiki so people can comment directly on the wiki. Of course, if that decision turns into a spam nightmare I’ll turn it off but it’s on for now. Please let me know of any abuse.

[UPDATE: April 17, 2007] Fix the link to the actual readme.