Wednesday, September 26, 2007

NASA Picture of the Day

I like to have a look at the NASA picture of the day every once in a while. I was just catching up and ran across this one:

http://antwrp.gsfc.nasa.gov/apod/ap070819.html

Friday, September 21, 2007

Amazon Unbox

Since I don't have TV service (yes I do have a TV but it is only connected to a DVD player), if I have time and feel like it I've tried some videos from online services such as iTunes, NetFlix and now Amazon Unbox. The only reason for testing out Amazon Unbox was the new Bionic Woman pilot was free so I figured why not. Oh NBC why did you leave iTunes. Amazon Unbox had to reboot my computer 3 times each time not restarting the install, the UI is poor and the video quality is lacking. For half the show there was a horizontal line through the video and the sound was not in sync with the video. Note that I did run this over a VMWare VM running Windows XP on my MacPro. iTunes, NetFlix and many other applications and videos as a comparison point have had no such problems so I doubt it's the VM. Anyway, it was a mildly entertaining show that I won't be watching so here's a link to check it out for yourself:

Thursday, September 20, 2007

Paint.NET

I wanted to add the application to the list of Useful Applications As Suggested by Blog Readers. I recently started using Paint.NET for any graphics work I need to do at work since it is free and Photoshop is overkill. It does a lot of the basics, does them well and is way better than Microsoft Paint.

Thursday, September 13, 2007

Delphi\C++ 2007 Bug Fixes

tregsvr now works on an Assembly again.

Import Component, browse GAC Assemblies now actually shows Assemblies! Recently I ran across Delphi users having problems with the Import Component Wizard thinking the wizard doesn't show any assemblies that are registered in the GAC. The truth of the matter is the Import Component Wizard displays assemblies registered in the GAC that have a CodeBase property, but the bug fix changed all this so any GAC assembly registered for 32-bit will show up (these are the Assemblies that live in the GAC_32 directory).

C++ Remote Data Module doesn't register each time it is run which caused problems for Vista or any limited user account. Note that the registration code (/regserver) caused the exception, but for some reason the unregistration code (/unregserver) does not throw an exception.

There is a bug where if you are working on a COM project all the units in your project would be opened taking considerable time and memory. This has now been fixed.

Tuesday, September 4, 2007

September Photo of the Month


Copyright © 2007 Chris Bensen. All rights reserved.


It's that time again, the first of the month and time for a new photo. This months photo I took over the Labor Day weekend just days ago in Yosemite National Park. Click on the photo to see it larger. The photo is of a Western Screech-Owl that I tracked down over and managed to get really close to snap this great photo. This is a case where the latest technology allowed me to take a photo that wouldn't have been possible just a few years ago. The photo is taken with a 400mm hand held at f5.6, 1/50th, ISO 800 with image stabilization. What a surprise it was to get home last night to find this one sharp photo.

Wednesday, August 29, 2007

The SuProgrammer

Once you work at a company for a while there are responsibilities you can never shake. For some reason you just keep getting new tasks. This is where the SuProgrammer comes in. This would be akin to each programmer having an intern at their disposal, but responsible for specific tasks:

Debuggier - This is the SuProgrammer responsible for narrowing down each bug and getting it to that one line that takes hours to get to. Often times this involves stepping through loops dozens of times. Once the appropriate line is found and the problem narrowed down the Programmer would come in to solve the entire problem.

Mergenair - This is an expert in merging. No longer does the Programmer have to worry about multiple merges, branches, or merge conflicts. The Mergenair would handle all merging responsibilities with a sense of style.

Checkinair - The Checkinair handles comitting all files into the version control system taking special care to not break the build and cause any problems. The Checkinair would monitor that the fix actually solves the problem and notify if there was a problem.

Meetinair - Is an expert meeting attendee attending all meetings the Programmer doesn't want to attend.

Once a SuProgrammer studies under a programmer learning the trade they could use that and become popular enough, if their Programmer is popular, to get SuProgrammers of their own.

Okay, at some point soon I'll get serious again.

Tuesday, August 28, 2007

COM is Hard

I get a lot of COM questions. I mean a LOT of COM questions. I eventually answer most of them, but some are easy and some are more difficult. That's one reason I started this blog, to centralize as much knowledge as possible. Once I put post about it I don't have to remember it, it's somewhere on my blog. I haven't had time to post half the things I want to. Eventually I'll get to it all.

COM usually overwhelms people. When someone asks me a questions and I say "oh, that's easy" they respond with "well you know COM". So it got me thinking, why is COM hard? Or I guess a better question is why do people think COM is hard? COM is just a bunch of simple concepts all piled on top of one another. I think most people add ActiveX, MTS, COM+ and whatever other new technology Microsoft added to "COM" by defining some new interfaces and a registration system.

COM is nothing more than a registration system, reference counting memory management and interfaces (classes with only pure virtual methods for C++). Really pretty simple. So why is it hard? My conclutions is the main reason COM is hard is because the registration system sucks! I mean it sucks!

The COM registration system sucks for two reasons. The first and primary reason is GUIDs are nasty to look at and the registry is littered with them making it impossible to clean or know what you are looking at. The second is the initialzation for the COM subsystem, CoInitialize, CoInitializeEx, OleInitialize, CoUninitialize and OleUnInitialize, are horribly complex even though they are very simple functions. These two problems make COM hard. Not just hard, but a monumental task for people who haven't made that epiphany to understanding and spent a lot of time to understand. These are the people who have to code for a living or hobby.

I thought Side-By-Side would solve the first half to the registry problem. Turns out it made the problem even worse because Side-By-Side is even more complex and hardly works. I plea Microsoft to make Side-By-Side easy. All I need is a .ini file that defines all the GUIDs and the .dll or .ocx containing the type library or Assembly. Just one .ini file per applications please. I don't want each .dll or .ocx to have their own .ini file. Just one .ini file for the entire application.

Green Tea Partay

Have you ever wanted to know what it's like to live in California? Here's a hilarious video all you Midwest, East Coasters and Europeans can watch to see if California is a place you'd like to live. I have to admit, this is more typical of southern California. Northern California is much different.

Monday, August 27, 2007

Help Examples

Last week Dee Elling, our documentation manager, posted Old Help and New where she goes into details about how our help has fallen short since Delphi 7. I want to elaborate with a brief overview about how we are bringing back the examples in the help and the work that has gone into that. This is item #1 on the list Dee's provided.

Before we started the process we did some brain storming to figure out what we wanted, what we could do, and problems we had with the old system. One of the problems with the old format is many examples fall short of being compilable and functional. So I wanted to provide functional compilable examples. So we set forth to build a system where we have projects similar to the Demos that compile, run and can be automated so we can verify their behavior. The side affect of this is we instantly have more automation testing.

The next phase is to go through all the Delphi 7 and C++Builder 6 help files to get all the examples, create the .cpp/.h and .pas files, create projects out of them and then add metadata in the form of easily parsable comments so we can rip out the pieces of the projects we want to show in the help files. A scanner and parser will be built which pulls out the example pieces and injects them into the .xml files before the Doc-O-Matic build process.

This will all happen automatically on our help build server that is using Cruise Control to run automation builds of all help languages daily.

Friday, August 24, 2007

New Nikon Cameras



Yesterday Nikon announced two new cameras. The first is the Nikon D300 to compete with the Canon 40D with a 12.3MP 14 bit sensor, sensor dust cleaning, 3" rear LCD, 6 FPS, ISO 200-6400 and new auto focus system. There is no data on the size of the RAW buffer. www.dpreview.com mentions something about a vertical grip that will increase the frame rate to 8 FPS. The Nikon D300 matches the announced Canon 40D feature for feature and adds a few appealing features in addition.



The second announcement is a new line of Digital SLR, the Nikon D3. This camera sports a full frame sensor 12.1MP 14 bit sensor, 3" LCD, 9 FPS and 11 FPS cropped, and HDMI output. There is no data on the size of the RAW buffer. This is the first full frame sensor by Nikon that they call FX. The Nikon D3 is a competitor to the Canon 1D Mark III announced in February and is better in sensor size and resolution. This is an important release for Nikon. The sensor inside the Nikon D3 is a Sony sensor, so I expect the SLR market to get a whole lot more interesting in the next year. I expect Sony (remember they bought Minolta and produced the Alpha cameras) to come out with a full frame camera.

C++Builder User Statistics

David Dean posted a comment to my post yesterday about Delphi and C++Builder User Statistics with additional information I hadn't noticed from the newsgroups specifically about C++Builder:

"Now that you mention it, I'd like to point out two other posts by Michael: (made in borland.public.cppbuilder.non-technical)

Message-ID: <46c10d16@newsgroups.borland.com>

We've sold approximately 1m C++Builder licenses since 1996. However, there
have been several times that number of free compiler downloads and
personal/Turbo Explorer registrations.

Approx +1.5m active C++Builder users WW in 2007, VS.NET is +6m users.

and
Message-ID: <46c602cb$1@newsgroups.borland.com>

Interestingly C++Builder has typically sold more copies that Delphi per
version *but* they have been more heavily weighted toward Pro where as
Delphi is more heavily weighted toward Enterprise (Client/Server) *and*
hasn't had as many versions as Delphi. C++Builder population slowed down for
a few years during the time we were not upgrading C++Builder (during the era
of CBX etc). But interestingly during that time, C++Builder 6 continued to
sell very well and sold almost as many copies as C++Builder 3 and 5, the two
best selling C++Builder releases of all time. As CodeGear, C++Builder is
back in a big way with C++Builder 2007 and we have multiple minor updates
planned each year, and major version releases planned every year with no
plans to stop or slow down - there are many important things to do for C++
developers in the next several years. We plan to grow and beat the v3, v5,
and v6 stats over the next several releases."

Thursday, August 23, 2007

VMWare Fusion for Mac Rebate

So earlier today I mentioned that the rebate form didn't work. Well I finally was able to get past step 1, but all morning it wouldn't allow me to proceed to step 3. Fortunately I just tried again after lunch and BAM! it worked.