Wednesday, May 16, 2007

Hey that car looks just like mine!

How To Keep Hostile Jerks From Taking Over Your Online Community.  Interesting.  I guess it's like buying a new car.  Before you bought it, you hardly ever saw another one, but as soon as you drive off the lot, it seems like on every street corner there is another one just like yours.  Along the same vein, I posted yesterday about the interconnected developer community and mentioned things like wild and wooly newsgroups and flaimbait, trolls and such, so I was bound to find some other information about such things.  You can bet I'll be forwarding this article around internally...

Why can't I be a fanboy??

Why aren't the so-called “fanboys” taken seriously?  Why is it always assumed that a “fanboy” is a blindly faithful, shill or troll?  With all the hype and press around Ruby and Rails, wouldn't you classify these folks as “fanboys?”  No? So if you're an early adopter of anything new, you're on the bleading edge, but if the technology is more mainstream and mature but is still clearly valuable and has an excellent track record, you're a “fanboy.”  One of the comments many folks make in arguments against the “fanboy-ism” is that they don't have an open mind.  To me that is simply a “PC” way of saying “you have a closed mind because you don't agree with me.”  I'm sorry, but how do you know that?

I was in a very mixed social setting this past weekend with a lot of folks of varying disciplines.  There were the financial folks, the sales/marketing folks, there were the sofware engineers (most of which were not from CodeGear).  I find that the engineers are usually the most closed minded bunch of folks, yet continue to think they are the most open-minded!  My wife was with me and happened to overhear a conversation between two non-CodeGear engineers.  She came and whispered in my ear saying, “That group over there is really trash-talking Delphi!  Don't they know that there are some folks from CodeGear here?” 

Now I don't know these folks and never actually had a chance to engage with them so I'm going to make some wild speculations here.  I'm probably wrong, but I'm going to use this to illustrate a point.  I've talked with folks that have “trash talked” Delphi and other CodeGear products.  There have also been times where I've just let them rant and rave, and when they finally ask what I do... the look on their face is priceless!  If they happen to actually remain in the conversation and I ask them what is it they're basing this opinion on, invariably it is either that they heard something about it, or it is based on a mental comparison of what their current tool of choice is doing for them and Delphi 1-3.  The former is just inexcusable, and the latter is like comparing and old Ferrari 308 GTB against the new Saleen S7.  Both are fine examples of automotive engineering for their respective eras, but the 308 just isn't quite up to modern day technical standards.  The comparison just isn't valid.

So, I guess the point I'm making here is that I think it is great to be a fanboy.  Passionate, dedicated, excited; these are qualities people view as positive attributes.  But isn't that what a fanboy is?  Maybe what causes folks to bristle at the notion of a fanboy is that they're not as passionate, dedicated, and excited about their tool of choice?  This is something I see in spades among the Ruby on Rails crowd.  They're passionate, excited, dedicated to this emerging technology.  Why should we be threatened by this?  We should be looking at what it is about their choice of tool and library that is getting them excited.  So maybe there is something behind that excitement?  Should I be looking at that technology?

So, are you a fanboy?  C'mon, stand up and be counted!  You don't even have to be a Delphi fanboy.  What would you consider yourself as being a fanboy of?

UPDATE: “fangirls” are welcome to participate... While I was using “fanboy” in the genderless, generic sense I figured I'd clarify.

C++Builder announced, why should Delphi folks care?

During the development of C++Builder 2007 after the release of Delphi 2007, a lot has been happening.  We've been getting a lot of excellent feedback on how our drive to increase quality and stability has been going.  If you haven't tried Delphi 2007, I think it is worth your time to check it out.

One thing that is really exciting is the potential behind the use of the new installer technology from InstallAware.  Delphi 2007 was the first release that was using this new installer so there was bound to be a few rough edges and that need to be polished.  We've been able to incorporate a lot of your feedback in a newly updated version of the installer for C++Builder 2007.  But that doesn't mean that only the C++Builder folks are going to benefit.  Part of the overal design of the installer is that it is the same installer for all the Windows IDE products.  So when C++Builder is released, a new install of Delphi 2007 will be available.  Here's just a couple of things we've added as a result of direct feedback.

Many folks that didn't purchase a media-kit and used the installer to download complained that they wanted to be able to save off the original download files so they could archive it.  We've fixed that.  If the installer sees that it will be downloading anything, it will give the user the opportunity to select a local folder into which the downloaded data blocks will be placed.  So if you ever needed to reinstall, simply re-run the setup from that folder and since, presumeably, all the data blocks are already present, there would be no need to redownload.

Due to the way the install is designed for flexibility, it does tend to keep a cache of all the data blocks under Documents and SettingsAll UsersApplication Data, which can be fairly large.  Another option that has been added is to allow the user to tell the installer to delete this cached information once the product is installed.  This does have a down side, but I think it is a fair compromise.  The main down side is that should you ever need to do a repair, patch, or upgrade, the installer will need to unpack that cache data again.  You will always be able to uninstall without that cache data... but then again... why would you be uninstalling? :-).

Another thing we've done to greatly increase the overall delivery efficiency is that we build one, and only, one install image.  Rather than building upwards of 16 (many, many more if you include trials, and Turbos) different install images, we build only one.  This also reduces our costs both in terms of time for install testing and also in actual Cost of Goods Sold (COGS).  Why should you, the customer, care?  Because this means we now have more money available for other things, like more developers, QA engineers and documentation writers.  This also goes back to former CEO now advisor, Ben Smith's, driving mantra of simplifying the business.

I hold no illusions that we're done.  We will still continue to improve the experience as we move on ahead.  One of my favorite sayings is, “How do you eat a 3 ton elephant?”  It's really simple,  “One bite at a time.”

 

“If you're going through hell, keep going.”  Winston Churchill

Tuesday, May 15, 2007

Who is not connected these days?

This probably seems like a stupid question to ask.  It's like a teacher asking all those not present to please raise their hands.  Aside from that mythical programmer living in a cardboard hut in East Botswana (appologies to anyone who actually live there...) with some strange bastardised bicycle generator device powering their all night binge programming session, I'd say that most folks these days are connected at least some of the time.  By connected, I connected to the Internet in some fashion.  Of course if you're reading this, you're obviously one of the connected ones.  Because of this one of the many things we're always thinking about is what do connected developers mean for how they work and interact on a day-to-day basis.  This goes for globally interconnected virtual teams as well as physically localized teams.

What kinds of online resources do you use on a day-to-day basis?  Blogs, Newsgroups, forums, chat, IM?  For all these kinds of resources, do you prefer RSS/Atom feeds, direct web-browser access, or some combination of these things?  Do you like  online forums with a reasonable level of moderation or the mad, mad world of open, anonymous, unmoderated newsgroups?  What about something in-between?

My personal feeling is that the Borland/CodeGear newsgroups in their current form are not as helpful as they could be.  It'd be nice to be able to quickly identify those folks who are the most helpful, insightful, and generally add value to that experience.  This is actually one thing I tend to like about web-based forums that have a peer rating system.  This allows someone to easily filter out the flame-bait and only look at the stuff that meets certain criterion.  NNTP in its current form just hasn't caught up to this kind of online experience.  Of course I'm not advocating that we eliminate NNTP, but rather provide a richer experience while still allowing those old-skool folks to stick with their news-reader of choice.  I'm sure there will be many of you shouting “Heresy!  You'll pry my news reader from my cold, dead- fingers!”  But maybe it's time to mix in a richer, more interactive experience?  Not just in online discussions but in all aspects of the developer's everyday online experience...

Links and such

Just some links to some news:

New C++ IDE from CodeGear™ Brings Rapid Application Development to Windows Vista

CodeGear™ Unveils First IDE for Agile Ruby on Rails Web 2.0 Development

CodeGear shines up Ruby on Rails tool

CodeGear goes Ruby on Rails route

Allen Bauer on CodeGear, Dynamic Languages and Delphi

 

Monday, April 30, 2007

Parallel or Serial...

Steve Trefethen has been posting some great information about our use of the Subversion source code control system and Cruisecontrol.NET.  One thing that I've noticed is that over the years version control systems are becoming more and more sophisticated and have finally begun to realized that version control is not just about files.  It is also about configurations.  They're also starting to realize that files are islands unto themselves.  How many larger projects have you worked on where adding a feature, fixing a defect, or refactoring operation affected only one file?  Project changes come in the form of “change-sets” or a group of interrelated files and configurations.

Prior to coming to work for CodeGear (and Borland), I was using a stand-alone version of PVCS and was manually doing check-ins and check-outs on a per-file basis.  So I already knew the value of version control systems, even ancient and early systems like PVCS and it's predecessor, RCS.  One of my first tasks on the day I arrived at work, was to “check out” the development tree from the PVCS archives.  What was different was that there were a whole suite of internally developed tools and wrappers around the PVCS command-line with other command-line tools.  These tools allowed “scripting” of the check-in process whereby the developer would fill in a “script” text file that contained the references to all the files to be checked in along with a space for a comment associated with each one.  There was also a global section for adding a summary comment that was a suppose to describe in higher-level terms what was included in this check-in.  This information was appended to a running log file that was used by QA to assist them in figuring out what R&D was actually checking in.

The one key point to all of this was that we never employed any kind of locking model that seemed to be so prevalent among the vast majority of version control systems, including PVCS.  So I learned the modify-at-will and merge-when-needed mode of working with the source trees.  I remember getting into philosophical discussions with folks regarding the overall merits of the lock-modify-checkin modal compared to the modify-at-will model.  I came to refer to these models as the Serial and Parallel models, respectively.  Over the years, there was a lot of effort put into layering tools over the existing version control systems in an attempt to “fix“ many of their drawbacks.  When working in a parallel model, nobody is ever blocked from making changes, but that does require a little bit more from the tools.  The issue of an atomic checkin becomes way more important since the archives can be changed by one person while another is in the midst of a bulk checkout.  The chances of getting a partial check-in has greatly increased.  Some folks tend to use these “drawbacks“ as a reason for staying in the stone ages of lock-modify-checkin.  However, with the proper discipline, toolsets, and overall mindset, the parallel model is very liberating for a team.

It seems that after many years of debate, the parallel model is beginning to hit more mainstream.  It kind of started with the introduction of CVS.  However, CVS suffered from one major problem; the lack of an atomic check-in model.  It also suffered from not being able to handle binary files in a very efficient manner.  Subversion was introduced to solve these (and other) issues.  In fact, Subversion's main charter was to supplant CVS as the dominant open source (or otherwise), version control system.  I must say that after using Subversion on the Developer Studio team for a little over a year, they have a real shot at retiring CVS.

So, how does your team work?  Serial or Parallel and why?  I do understand some of the virtues of the lock-modify-checkin model.  But as your team grows and/or becomes more geographically disperse, you may begin to notice that team members are forcefully breaking locks in order to get their stuff checked in.  One bit of advise I can give you and your team should you ever move to a parallel model is to get yourself a very good source code differencing/merge tool such as Beyond Compare or Araxis Merge.  Make sure *all* your .dfm files are checked in as text (this allows easy diff'ing and merging of changes).

So, there's your assignment.  Let me know how your team works, what version control system you use and why?  One's choice of VCS systems can sometimes elicit nearly the same passionate responses as one's choice of development tool.  I'm looking for objective analysis and an understanding of why you came to that descision.  Things like, “I use XXX because everything else sucks!” are simply not helpful. 

I'll start with why we chose Subversion.  It closely matched our overall development process, had true atomic check-ins, extensive and growing number of supporting tools, it also handled renames, moves, and deletes very well.  Every check-in is represented by a single revision number which can be used to check-out the entire source-code tree by using only one number.  No need to use error-prone dates or create a tag/label for every checkin.  It was also a natural fit for our extensive use of CruiseControl.NET continous integration server.

Friday, April 20, 2007

C++Builder field test now open...

Do you want to help test the next version of C++Builder?  If so, we need your feedback.  Go here to apply to be a C++Builder field-tester.

E-Staff dinner and oh the thoughts we think...

Evening dinners with colleagues and friends is always a great opportunity to just get to know each other and to more informally discuss some of the issues and concerns of the day.  Last night was such a dinner.  What made this dinner more special what that CodeGear advisor and former CEO, Ben Smith was present.  It is always great to hear his stories about different goings on in various sectors of Silicon Valley.  The best conversation was in the parking lot after the dinner where Ben, Michael and myself stood in the mild drizzle for nearly 30 minutes discussing things like Borland moving their HQ to Austin, blogging, team focus, and some various radical thoughts about Delphi and it's market.

Throughout the various conversations, I was reminded of how much we all think about the CodeGear business from such varying perspectives and insights.  It is always great to bounce ideas off other members of the team because they always put a new spin or insight on that thought.  Which is another point of this post.  What kinds of things do we think about all the time?  In no particular order or even priority; Win32/64, Aspects, Generics, Dynamic languages, PHP, Ruby, Python, Perl, Rails, ASP.NET, .NET, Vista, MacOS, Linux, WinMobile, GC in Win32, Multi-Core, DirectX, XML, XAML... I think I could continue for several more paragraphs with just listing all the things that I and the rest of the team thinks about.  The number of technologies in the developer tools space is staggering, just as the number of developers out there continues to significantly grow, especially in various emerging markets such as Russia, India and China.

As CodeGear continues to charge ahead, you will start to see some actions taken surrounding some of the above items and even some I didn't.  I got various comments to my post about Borland moving its HQ to Austin saying that CodeGear can finally bring back the “old Borland.”  I agree that it would be nice since there is a lot of excellent things about those times.  However, what we are doing is have CodeGear define its own identity and culture.  Sure, we'll take a lot from the “glory days” of Borland,  but the developer and technology landscape has changed, so we also need to change.  I think we've got a good start and are continuing to refine and define things.

Oh, what were those radical thoughts about Delphi?  It's way too early to say.  I'll just say that we have radical and crazy thoughts all the time and some of them we actually take action on.  Delphi 2007 was one such thought only 5 months ago.

Tuesday, April 17, 2007

The parents moved to Florida and left the house for the kids...

Well not really Florida, but Texas... and the parents have been out of this house for a while here in Scotts Valley... but I think the analogy is apropos.  What am I talking about?  In case you've not heard, Borland has decided to relocate their headquarters from Cupertino to Austin, Texas.  First of all, WE HAVE ABSOLUTELY NO PLANS TO RELOCATE CodeGear FROM SCOTTS VALLEY, CALIFORNIA.  Did you get that?  I hope that was as crystal clear as I could make it.  I know the conspiracy theorists will completely ignore that statement, but I just had to say it anyway.

One thing this change clearly highlights is the difference in priorities and directions that CodeGear is heading compared to Borland.  I had an informal meeting with Tod Nielsen last friday over a beer and we discussed the implications of this announcement.  At first I'd asked to meet with Tod since it had been over a year since our last one-on-one meeting and with all the changes over the last year, I wanted to just have a chance to clarify some things.  I figured what is better than shooting for the top.  We talked about the leadership change with bringing Jim Douglas in, about the product strategies and directions, how the development teams were doing and the impact of the Delphi 2007 release.

I had the whole weekend to think about the impact that this move will have on CodeGear.  Basically, it has little to no impact.  Nobody that works directly for CodeGear is impacted (ie. they're not moving to Austin).  We were already in different locations and, since the formation of CodeGear, have had no need to even visit the Cupertino facility.  When we did need to interact with the Borland folks, it was done via email or tele-conference.  There are still some shared services still in place, but we're on track to having those separated prior to the completion of the Austin move.  So, all-in-all, we're good.

With that out of the way, another point I'd like to mention is that I was pleased to hear Tod continue to express that he still believes in the CodeGear strategy and that creating this separation was the best move for the dev tools.  So CodeGear is looking after the parent's house here in Scotts Valley.

Tuesday, April 10, 2007

The APAC trip, the new CEO; a recap.

This always seems to happen;  I go out of town for a while and major things happen at Borland and now CodeGear.  First of all, let me recap my trip to the Asia/Pacific region.  I started by heading down to Sydney, Australia.  I flew out on Sunday, March 25th and arrived early in the morning on Tuesday, March 27th.  (It was a 14 hour flight... so what happened to my Monday ;-).  I spent the next day getting acquainted with the folks in the Sydney Borland/CodeGear office.

Picture 194

I met up with Malcolm Groves, who works out of that office. We then flew to Melbourne on March 28th and met up with Tim Jarvis.  I spoke at the ADUG Symposium the following morning.

Picture 096Picture 097Picture 098

After that, Malcolm and I caught a plane to Brisbane and did the same thing the following day.  You can see Marco Cantu at the far right in the first photo.  He had two sessions each day.

Picture 103Picture 104

Then it was back to Sydney where I had that Saturday, March 31st to explore Sydney.  So I took the ferry across Sydney Harbor from Circular Quay out to Manley.  I got some good shots of the city, the famous Harbor Bridge (including some good shots of several groups of bridge climbing tour groups) and the famous Sydney Opera House.

Picture 147Picture 109Picture 133Picture 077

Early the next morning I boarded a flight heading out to Tokyo, Japan.  Geez, there are Starbucks Coffee shops everywhere!

Picture 018Picture 014Picture 017

I also visited the Borland/CodeGear offices there in the Shinjuku district where I was staying.  Fujii-san and Yaegashi-san were both excellent hosts. They had lined up an interview with a local Delphi magazine, a customer visit and later that evening we had a very good dinner meeting with some Delphi community members.  I found it very interesting to speak through an interpreter.  You have to be very conscious of how much you've already said so that the interpreter doesn't get lost.

Picture 005Picture 003

Once finished there in Japan, Malcolm and I then boarded a plane to Bangalore, India. We had to stop in Bangkok, Thailand to change planes so I got some photos of their new airport.

Picture 022

From there we landed in Bangalore, India.  That's a different world...  This is a photo from the hotel room, which was very new and modern.  The contrast between the two was remarkable.

Picture 002Picture 025

Then there was the traffic!

Picture 011Picture 014

Like Japan, I had a very full day with a customer meeting, met with members of the India Delphi Users Group (InDUG), and finally had two interviews with a couple of Indian IT magazines.  Arul, from the Indian office, did an excellent job of getting all of these events lined up.

Picture 009

A new CEO.

I had my first one-on-one meeting with CodeGear's new CEO, Jim Douglas (who is in the process of setting up a blog for himself, which is excellent news!).  Besides the fact that I'd been out of town when he started, it was actually good that I had my meeting with him just yesterday.  I was able to read all the press and various comments from the community.  I was able to ask some very hard and specific questions, like “what is your agenda?  Why did you take this job?  What are your long-term and short-term goals?  Are you in it for the long-term or is this just a stepping stone to something else?”  The good thing is that he didn't flinch at any of these very pointed questions and was very candid.  The good news is that he definately took this position with an eye for ensuring the long-term viability of CodeGear.  There is no “pump and dump” agenda here.  So far, I was duly impressed and appreciated his candor as well.  It will be good to hear what Jim has to say in his blog.

I was actually very disappointed when I got word that Ben was leaving.  However, after speaking with Ben the Friday before the announcement and thought about what had transpired over the last year, it was clear that CodeGear was entering a new phase of it's development.  Ben was key in setting CodeGear up and making sure the key positions are filled with the right folks.  But now we need a more of an operational leader that can help drive things that standpoint.  The good news is that Ben is still local and has offered to remain available in an advisory capacity.  His experience and insights will continue to be welcome.

Now that I've got my first international tour done, I'm eager to start visiting some of the other regions and meet even more folks from the community.  Hopefully my next trip takes me to the EMEA and/or South American regions.