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.
Wednesday, August 29, 2007
The SuProgrammer
Posted by
Chris Bensen
at
7:30 AM
5
comments
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.
Posted by
Chris Bensen
at
9:10 AM
12
comments
Labels: COM
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.
Posted by
Chris Bensen
at
9:00 AM
2
comments
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.
Posted by
Chris Bensen
at
8:00 AM
5
comments
Labels: C++Builder, Delphi, Help
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.
Posted by
Chris Bensen
at
8:00 AM
0
comments
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."
Posted by
Chris Bensen
at
7:00 AM
2
comments
Labels: C++Builder
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.
Posted by
Chris Bensen
at
1:30 PM
0
comments
Problems Compiling Old COM Projects with C++Builder 2007
There have been some reports of problems when opening old COM projects with C++Builder 2007. The error comes from the linker that the .tlb can't be found. A simple work around, and one that we should have used all along, is to add the line anywhere in your project:
#pragma resource "*.tlb"
I hope this work around helps anyone having the problem.
Posted by
Chris Bensen
at
1:30 PM
2
comments
Labels: C++Builder, COM
VMWare Fusion for Mac
Well it turns out that VMWare took down their offer of VMWare Fusion for half price two days early. I was going to buy it but like many things procrastinated too long and didn't get the price break and it didn't help that they didn't honor the date they set forth. I would have complained but then they have a $20 off rebate. I don't like rebates, nor do I count on them, but it turns out their own website flat out failed to accept my key for the last few days. I'll let you all know what happens with that. I sent an email off but I figure I'll keep trying. You can claim your rebate here.
Two things I find really annoying with VMWare Fusion:
- When I shutdown my Mac and VMWare is running in any capacity it cancels the shutdown.
- ALT + Tab and CTRL + Tab don't get sent to the current process to handle. This is annoying when running applications like Delphi and Remote Desktop. It means more mousing which I'm trying to avoid.
Posted by
Chris Bensen
at
10:00 AM
5
comments
Wednesday, August 22, 2007
Delphi and C++Builder User Statistics
In borland.public.delphi.non-technical I noticed this post by Michael Swindell that I thought people might find of interest:
"Delphi has a developer population of approx 1.75 million users worldwide in 2006. Delphi has 15% IDE marketshare overall (7.7% ranked out of 100%) and is the #2 Windows IDE and the #4 IDE overall(C++Builder is #3 and #5 respectively).
For licenses distributed per version/year we may be able to provide guidance under NDA to tool and component partners. I'll discuss this with David.
An anecdotal search yields an interesting "data":
Delphi VCL Controls and Components
1,300,000 for Delphi (VCL OR "visual component library") (control OR component)
http://www.google.com/search?hl=en&q=Delphi+%28VCL+OR+%22visual+component+library%22%29+%28control+OR+component%29+&btnG=Search
Delphi Winforms Controls and Components
800,000 for ".net" (winforms OR winform OR "windows forms") (control OR component) (Delphi OR "Delphi .NET" OR Delphi.NET)
http://www.google.com/search?hl=en&q=%22.net%22+%28winforms+OR+winform+OR+%22windows+forms%22%29+%28control+OR+component%29+%28Delphi+OR+%22Delphi+.NET%22+OR+Delphi.NET%29&btnG=Search
.NET Winforms Controls and Components
3,810,000 for ".net" (winforms OR winform OR "windows forms") (control OR component)
http://www.google.com/search?hl=en&q=%22.net%22+%28winforms+OR+winform+OR+%22windows+forms%22%29+%28control+OR+component%29+&btnG=Search
C# Winforms Controls and Components
2,390,000 for ".net" (winforms OR winform OR "windows forms") (control OR component) C#
http://www.google.com/search?hl=en&q=%22.net%22+%28winforms+OR+winform+OR+%22windows+forms%22%29+%28control+OR+component%29+C%23
Visual Basic Winforms Controls and Components
2,440,000 for ".net" (winforms OR winform OR "windows forms") (control OR component) (VB OR "visual basic" OR "visual basic.net" OR "vb.net").
http://www.google.com/search?hl=en&q=%22.net%22+%28winforms+OR+winform+OR+%22windows+forms%22%29+%28control+OR+component%29+%28VB+OR+%22visual+basic%22+OR+%22visual+basic.net%22+OR+%22vb.net%22%29"
Posted by
Chris Bensen
at
1:30 PM
3
comments
Labels: C++Builder, Delphi
The Coolest Pull-up Bar

A few weeks ago I had a great idea, to put a pullup bar in my garage. Then I had an even better idea, to make it from those little hand holds they use on climbing walls. So I went to REI (my favorite store not only for the cool things but their generous return policy) picked up a set of climbing holds used to build a home climbing gym, drilled a hole in a 3/4" piece of plywood, bolted the two climbing holds to the plywood and screwed it to the beam in my garage.
I only wish the CodeGear building weren't made of only steal so I could put one of these over the doorway of my office to go along with my Bongo Board and Medicine Ball. My current medicine ball is an Everlasting that didn't quite last. The sand is coming out which makes a mess so I think I'll try one of these rubber Medicine Balls.
Posted by
Chris Bensen
at
10:00 AM
5
comments
Review: Microsoft Remote Desktop for Mac
Yesterday I posted that there is a beta available of the new Microsoft Remote Desktop Client for Mac and said that I would give it a short review. Well I've used it a bit now and found a few problems and oddities, but my overall opinion was improved from the previous version. The two big features being improved performance and support for more than one connection.
Maybe because this is beta software but the multiple connection feature didn't appear to work for me. I also found it odd how that feature works. To connect to more than one computer you type in the compputer name or IP address into the inital dialog ,connect to a computer, then save off that connection for reuse later. The UI is just clunky but will be a welcome feature once it starts to work.
The performance is much improved which is really the biggest problem with the old client. I find it odd that the bottom right corner has resize bars when the window doesn't resize. Probably just a but because the window should be allowed to shrink. Again, beta software.
We'll see how the final product turns out, but I would suggest to the team to redo having a global preferences dialog for all connections (in other words the dialog only shows one connection's settings) and do something similar to how Mail works with multiple accounts. And to connect provide a nice little list in a menu. Anyway, that's my two cents. I'm going to go back to using VMWare now.
Posted by
Chris Bensen
at
8:00 AM
0
comments