Widgets Nick Hodges | A man's got to know his limitations


By Nick at December 12, 2010 14:23
Filed Under: Leadership

Imagine this (it shouldn’t be all that hard):  You are a widget manufacturer.  You’ve been tasked to figure out how to make 1000 widgets.  You’ve been planning for weeks.  You’ve gathered data, run the numbers, made estimates, and come up with a plan you believe in. You’ve left a little wiggle room for inevitable unknown obstacles.  You’ve put it all into MS Project and up on the screen in Powerpoint slides.  You are an experienced team – you’ve done this all before many times --  and the guys doing the work are battle-hardened  veterans who know their business.  Everything looks good.

Now it’s time to present your plan to the executive team. You lay everything out in a Powerpoint presentation that you’ve reviewed seventeen times.  But when they hear the plan, they say:  “Sorry, but that’s all wrong.  You say you can make 1000 widgets in fourteen months.  We say it only takes eight months to make that many widgets.  Get to work”.


Now you and your team know how long it will take to make 1000 widgets – 14 months.  But somehow your “leadership” has decided that it only takes much less time than that.  Never mind that these guys have only been with the company for a year or so, and have no real experience with the difficulties and the process of building 1000 widgets.  They are the bosses and their style of “leadership” seems to be to assert their all-knowing authority over the guys who actually know what is going on.  It seems to them that “leadership” means being a hard-ass and “pushing” the team to get more out of them than is possible.  Bottom line:  They didn’t listen and they didn’t trust you.  Why did they ask you to do all that planning when they were just going to tell you the schedule anyway?

We all know what happens next: after about seven months, it becomes hopelessly, overwhelmingly, manifestly clear that there is not going be 1000 widgets on the loading dock in a month.  Now everyone is scrambling to adjust course.  This, naturally, is a vastly worse situation than if they had merely planned on the 1000 widgets being available in 14 months from the start. Or agreed to make the number 500 in seven months instead.

True leaders listen to their people and believe them.  Good people tell you the truth they know they will be trusted.  The last thing you want to do is create a situation where your folks start “gaming” you and telling you what they think you want to hear.  This is a direct result of not trusting them.

If you are a leader and you don’t believe what you are being told, then it is overwhelmingly likely that you are the one with the problem.  You either need to radically change what you are doing or get new people – and again, it is very, very likely that you are the one that needs to change, not your people.  And if you have the wrong people, that is probably your fault, too.

The people in the trenches are the ones closest to the issue, and they know best what is happening “on the ground”.  Believe them, and you can adjust your plans and needs accordingly from the start.  Don’t believe them, and your plans will get adjusted anyway.  You can’t  make a baby with three women in three months, and if your plan requires that you do that, your plan is in trouble no matter how much of a hard-ass you are.  And the team knows that you can’t get a baby in three months, and they will be the ones who suffer for a bad plan.  They learn not to trust you and their morale goes into the tank.

Building and maintaining trust in both directions is a critical requirement for a good leader.  Trusting your people will engender their trust in you. It’s a virtuous circle.  Sometimes you even need to trust them even when they are wrong to help build future trust and to show that you believe in them.  If they trust you, they’ll follow you. Their morale will be up.  They’ll do the extra work and they’ll put in the effort because they want to.  People who are trusted and believed do that as a matter of course.

And isn’t that what we want our folks to do?

Be a Rockstar!

By Nick at December 09, 2010 13:56
Filed Under: General, Delphi

I am hoping that this will get people to stop teasing me about TSmiley sort of in the same way that hitting yourself in the head with a hammer makes you forget that it hurts when you hit your hand with a hammer.

Strange Poster

By Nick at December 08, 2010 16:51
Filed Under: General, Delphi

Someone posted this in our developer lounge this week:


Flotsam and Jetsam #16

By Nick at November 30, 2010 12:42
Filed Under: Flotsam and Jetsam
  • New Delphi Blog of the Week: From Zero To One  The author made an interesting comment on my THMLWriter post, and has given me some ideas.  Looks like an useful set of downloads as well.
  • THTMLWriter Update:  As per the excellent suggestion by Francisco Ruiz, I’ve added a new feature for attributes, enabling you to declare attributes as an indexed property with two strings.  Great idea. 
  • Document Insight has been released and for the present, it is on sale for half price.  I have been making extensive use of Document Insight with the THTMLWriter project, and can easily say that it is one of the coolest Delphi plugins I’ve ever used.  It does exactly what I want, and it is utterly intuitive.  Very nice.  The XMLDoc feature of Delphi is cool once you really start using it, and Document Insight makes it pathetically easy to do.
  • Cool Delphi Open Source Project of the Week:  DotNet4Delphi – This is a brilliant idea, actually.  First, it utilizes generics to create a nice set of collections and lists based on the same set of .Net classes.  But the fun part is that it creates TDataset descendants than enable you to hook those lists and collections to data-aware controls for display and editing.  Very cool idea indeed.  Add this to the growing list of very excellent libraries for Delphi that are taking advantage of generics, RTTI,  and anonymous methods.
  • In Flotsam and Jetsam #14, I mentioned Cliff Stoll’s horrifically inaccurate prediction about the Internet.  Could this be the greatest single example of “Claim Chowder” in the history of the tech business?

Novell, Attachmate and Embarcadero

By Nick at November 25, 2010 21:29
Filed Under: TechBiz

As you’ve probably seen/heard, Novell has been purchased by Attachmate.  I can remember when Novell was a real high flier, right up there with Microsoft and Borland.  Of course, that was in about 1995, but hey, they were all up there during those heady days before Delphi was released.

I also remember when there were some pretty strong and perhaps well founded rumors that Borland and Novell were going to merge, or one was going to buy the other, or something.  Would have been interesting at the time, I guess. 

Anyway, Marco makes an interesting point (via Olaf Monien) – that Attachmate is owned by Thoma Bravo, the same equity firm that owns Embarcadero.  Attachmate is one of those companies where you can stare at their website for a long time and still not be clear about what they do or why you’d want them to do it for you.  (Sort of like Microfocus, who recently also acquired a formerly high flying company….) 

The Thoma Bravo guys were always pretty mysterious.  They never seemed very interested in any particular business needs that Delphi might have had after the Borland years.   They did seem interested in making money, though.  Nothing wrong with that, as that is pretty much exactly what private equity firms do.  

I can also say that being a “sister company” in the Thoma Bravo family to Novell/Attachmate probably means little to nothing for Embarcadero.  TB owns a number of software firms (did you known they own InstallShield, for example? They also own Plato Learning, a former client of mine in Minneapolis who was at the time a pretty big Delphi shop.)   But as far as I know, we never had the occasion to cross paths with any of the other “family members” when I was at Embarcadero.. TB seems to be buying up properties at a fairly furious rate, though, so perhaps that will change at some point. 

I hope so, because there are any number of things that Novell in particular is involved with that might make for some good synergies with Embarcadero, most notably the Mono project and MonoTouch for the iPhone.  It would be cool to see those two members of the “family” working more closely together. For example, one would hope it would make it easier for Embarcadero to include MonoTouch with Prism and RAD Studio. 

Anyhoo – it was an interesting point that Marco and Olaf brought up.  Something to think about and keep an eye on for sure.

Flotsam and Jetsam #15

By Nick at November 22, 2010 16:42
Filed Under: Flotsam and Jetsam
  • A lot of things bug me, but the thing that is bugging me a lot lately is a seeming proliferation of popup windows without a button that says – more or less -- “Save and make me go away”.  For instance, I use LiveWriter to write these posts, and the category drop down box doesn’t have any way to tell it “I’m finished”.  Apparently  you are supposed to just nookaybuttonknow that the way to apply your selections is to click somewhere outside the dialog.  I find this to be bad design and, well, irritating.  I like to know that when a dialog goes away, it has either definitely or definitely not saved my settings.  When clicking outside the box to make it go away, there’s no way to know for sure.  Very irritating.  What’s wrong with a good ol’ “Okay/Cancel” set of buttons? 
  • Hey, this is cool:  The mighty Joel Spolsky himself answered one of my questions on StackOverflow
  • Not surprisingly, since I added moderation to the comments here, I’ve gotten very few of the “Great post, this is exactly what I was looking for, I’m going to bookmark this site and come back later” comments.  What a shocker, eh?  Smile
  • I just discovered that there is a Reddit just for Delphi stuff.
  • If you are looking forward to 64-bit Delphi, then this StackOverflow answer from the prolific and always informative Barry Kelly is must reading.
  • Interesting Article of the Week: Implementing a Partial Serial Number Verification System in Delphi by Brandon Staggs.  Ever wonder where those four-chunked serial numbers come from and how they work?  Brandon does a pretty good job explaining it all and giving a “getting you started” implementation.  Good, interesting stuff.
  • As Allen Bauer taught me – “Shipping is a feature”.

Announcing THTMLWriter

By Nick at November 22, 2010 09:44
Filed Under: Delphi, Software Development, Tech Stuff

I have started an open source project on GoogleCode called THTMLWriter.

THTMLWriter is a Delphi-based class library that enables you to create HTML code and HTML documents. It uses the fluent interface to make creating HTML text easy and natural.  You can create HTML Documents or HTML “chunks” by  using any tag as a base.

THTMLWriter is all class based.  I started out trying to do some fancy things with interfaces, but it just got too complicated, and so I opted to go with the “simplest thing that will work” option, and now you can write code that looks like this:


Temp := THTMLWriter.CreateDocument;
     TempHTML := Temp
                        .AddAttribute('this', 'that')
                        .AddStyle('font: italic')
                      .AddBoldText(' Shadooby')


The project more or less produces XHTML code at the 4.01 level – I’ve tried to be XHTML-compatible, but I confess I haven’t been fanatical about it.  That is one of the things I want to in the future.  In addition, I want to update the project to support HTML5.  I’m still thinking about how to do that.

The project is pretty complete – you should be able to construct most HTML constructs.  I’ve provided a lot of overrides and default parameters for many of the “normal” attributes on a given tag.   I’ll continue to update the project with improvements and refinements.  I’ve used HTML & XHTML Pocket Reference from O’Reilly as my guide. I haven’t quite implemented everything, but it’s definitely at the point the that it is ready for you fine  people.

The project includes a full set of DUnit tests to give you confidence that the code actually does what it is supposed to. 

I have added a lot of XMLDoc comments to the code, but it’s far from complete. I’ve used the Documentation Insight plugin from DevJET software – the guys who do the Delphi Spring Framework.  (I can’t recommend this plugin enough – an outstanding contribution to the Delphi community, above and beyond the amazing Delphi Spring Framework.)

You can get the code from Google code using Mercurial.  We are planning on migrating our codebase here at Gateway Ticketing to Mercurial after the first of the year, and this project was my learning curve for using Mercurial.  Now that I’ve been using Mercurial – a distributed source control system – I wonder how we as developers ever managed to use anything but a DVCS.  It is that good and that powerful.  I heartily recommend looking at migrating to a DVCS.  It’s so much more flexible and more powerful than a server based solution such as Subversion

I’d be very happy to add anyone to the project who is interested in contributing.  I’ll also be happy to integrate submitted patches as well.  This have been a fun project to keep my toe in the water of coding – being a manager now means I don’t get to code as much as I want --but living alone in Pennsylvania while my amazing wife moves our house out here has given me a lot of free time to code.

Enjoy and let me know what you think.

Flotsam and Jetsam #14

By Nick at November 12, 2010 16:10
Filed Under: Flotsam and Jetsam
  • One hidden benefit of working at a ticketing company:  Unlimited book marks!
  • Video of the WeekTeacher has trouble showing a video.
  • This article by Cliff Stoll cracked me up. Written in 1995, it basically says “This whole Internet thing is a big mess and will never take off”. The article was a companion piece to his book Silicon Snake Oil: Second Thoughts on the Information Highway.  Stoll is probably most famous for writing one of the first tales of hacking and security on the Internet called The Cuckoo's Egg .  I’m sure that he’s utterly embarrassed by the article – and probably the book -- today. And if he’s not, he should be.  Winking smile
  • I posted this comment on StackOverflow: “Empty catch/except blocks aren't code smells, they are code putrids.” By the way, that whole question is worth reading.  Some good wisdom there.
  • And while we are on the topic of good questions to read, this one about people’s favorite programming quotes is pretty fun to read.  My favorite quote:  “Some people, when confronted with a problem, think ‘I know, I'll use regular expressions.
    Now they have two problems.
    ”  What is your favorite?

Setting up Hudson to compile Delphi Projects

By Nick at November 05, 2010 21:37
Filed Under: Software Development, Tech Stuff

Just like you should be using Source Control (even if you are a one man operation), you should be doing continuous integration.  We currently use, but we are giving Hudson a look here at Gateway Ticketing, and it seems likely that we’ll end up switching and using it.  So naturally, I decided to play around a bit with Hudson. We used Hudson quite extensively at Embarcadero, but I had never really given it a whirl myself.

This is the Hudson Dude whose picture shows up in the Hudson interface. 


He’s quite dapper, no?

Hudson is Java-based, but don’t let that scare you.  You need not know a lick of Java to use it effectively.  It is very, very easy to download, install, and get up and running.  I found this blog post helpful in that regard.  I was up an running in minutes.

Hudson has a very nice browser interface for configuration.  It also has a very large and growing collection of community of plug-ins.  Hudson also makes it really easy to install plug-ins by providing support right in the interface.  Add them isn’t much more than selecting them in a list an clicking install.

Plugins are important, because you are going to need them in order to do a Delphi build.  The first one you’ll want to install is the MSBuild plug-in.  This will allow you to choose MSBuild as a build environment.


All of the popular source control systems have plug-ins. I’ve been using Mercurial on my local machine, and so I chose that plug-in as well. 

I also discovered, after a series of trial and errors that the setenv plug-in is pretty much required as well.  As you may know, to do command line builds of Delphi projects, you need to set a number of environment variables. This is usually done via the rsvars.bat file.  Well, Hudson doesn’t know about that at all, and I didn’t have much luck running it as a batch file before doing the build.  Hudson seems to isolate the environment for each individual action.  The setenv plug-in lets you set global and local environment variables for Hudson.  Since I’ll be doing a lot of Delphi builds, I selected “Manage Hudson” and took the items from rsvars.bat and set them up as Global Properties:screen1

Doing that is critical, as that sets everything up so that Hudson can find the files needed by every Delphi project to define the build targets.  There are a couple of StackOverflow questions about this very topic that recommend passing a few parameters, but I found that if you set up setenv to incorporate what rsvars.bat does, you don’t need to pass any parameters on the MSBuild command line beyond the *.dproj or *.groupproj filename. 

In addition, you need to tell Hudson about MSBuild specifically – that’s easily done in the global configuration as well. Basically you give each installation a name and the full path to the MSBuild.exe for that .net version.  You might want to set up different MSBuild installations for  the .NET 2.0 and .NET 4.0 versions, for instance.


Once all that is set up, it’s really a matter of setting pretty self-explanatory properties of Hudson.

  1. Select “New Job”. 
  2. From here, I just chose “Build a free-style software project” to do a simple build of a Delphi project group.
  3. Give your job a name and click Ok.
  4. From there, you can pretty much figure things out.   I did the following.
    1. Pointed Hudson to the Mercurial repository I wanted it to pull from, including the branch I wanted.  The settings for Subversion and other SCM systems may have different settings.
    2. I chose to poll Mercurial for changes.  The “code” for setting that up is a bit tricky, but I found pressing the help button gave a pretty good rundown and some examples.  I just set it to poll every minute.  Not a big deal on my local machine, and it makes it easier to see how things are working while testing it out. screen4
    3. The final thing to do was to actually tell Hudson what to build.  That was easy – I have a project group called


      and I simply added that as the MSBuild build file after telling Hudson which version of MSBuild to use.

And that is pretty much it. From there, you can tell Hudson to build for you on demand, or you can just leave it to run, and it will build everytime it sees a change in your source.  Again, the “tricky” part was getting and using that setenv plug-in.  That simplified everything. 

UPDATE: Christer Fahlgren has also written a very nice blog post about running Hudson on Delphi projects.

Flotsam and Jetsam #13

By Nick at October 29, 2010 14:53
Filed Under: Flotsam and Jetsam
  • Okay, as you’ve might have noticed, I’ve had to turn on moderation for comments until I can figure out how to keep spammers from posting to the comments.  They usually post some comment with a link that they want to be more popular on Google.    Most of them are banal – “Thanks for this great post!  This was exactly what I was looking for!” – but some are funny – “STOP DELETING OUR LINKS!!!”.  That’s what they want, of course, a link to a particular site to try to sway Google into ranking that link higher.  The spam filter catches a lot, but not all, and I am just having to spend too much time deleting these comments.  It’s irritating.  Suggestions gladly accepted.
  • One of the divisions I manage here at Gateway is the folks that do documentation, training, and marketing support.  Basically, if it needs to be written or otherwise communicated outside the company, this team does it.  The team name is “Product Communications”, which I think is a cool name for them.
  • I think I posted this link on my Embarcadero blog, but it is such a good presentation that I want to post it again: Drive: The surprising truth about what motivates us.  Sometimes something you want, read or hear really resonates, and this video really resonates with me.  The notion that people really want the ability to direct themselves,  to master something, and to find purpose in what they do is a profound truth.  I think if companies were to really ingrain this into their culture, you’d see a lot more people doing a lot more amazing things.
  • By the way, you can see more of the excellent whiteboard presentations at the RSAnimate channel on YouTube.  That is a really cool and effective way to listen to/watch a presentation.  For instance, here’s a fascinating presentation called “Changing Education Paradigms” that uses the whiteboard animation technique.
  • “Item Worth Reading” of the Week:  How We Got Rid of Time Reports

Flotsam and Jetsam #12

By Nick at October 25, 2010 18:25
Filed Under: Flotsam and Jetsam, Personal
  • Here’s a great article about roadmaps and how they generally, well, suck.  Smile My favorite quote: “You can’t predict which unexpected events will occur, but you can predict that some unexpected events will occur. Therefore, a rational person builds adequate buffer room into a schedule to accommodate unexpected events.”  That is sound advice for anyone involved in software development.  This is actually one of the best articles I’ve read in the software development field in quite a while. (You can Digg the article if you like.)
  • There is now a chat room for us Delphi people over at StackOverflow.  Seems like a nice centralized place for Delphi developers to hang out.
  • One of the common complaints about the Delphi Market is that there are not many new guys or young guys coming in to the market.  There are a number of reasons for this, and among them is the fact that many young people consider NNTP-based newsgroups to be archaic and old, and when they see that is how most online Delphi discussions get done, they think the same of Delphi.  And I think it is interesting that the same people asking for new, younger customers seem to me to be the same ones that would go into meltdown if the NNTP news server went away.  Winking smile
  • Off-Topic Comment of the Week:  My Economics professor from the Navy Postgraduate School, Dr. David Henderson,  pointed to this amazing collection of interviews by actor/singer Will Smith. I confess I had no idea that Mr. Smith wasn’t just another Hollywood knucklehead, but is instead a rather remarkable man of substance and depth. I’m actually quite stunned and moved by what he had to say.  I loved the story about the brick wall in particular.    I feel bad for my misconception, and am happy to say that I am now a great admirer. And he can even do the Rubik’s Cube in less than a minute.

A Tale of Two Companies

By Nick at October 22, 2010 16:49
Filed Under: Leadership

I had two very interesting conversations this week. I’ll describe them, and then I’ll have a question for you at the end.

First Story

Here at Gateway, we have a top notch Human resources (HR) Department.  I’m normally very wary of HR – especially given my recent experiences – but our folks here are great. They are squared away, generally concerned about all the employees, and they are very helpful and welcoming to new hires, me included. 

One of HR’s roles is recruiting, and we are actively working to find developers and QA people.  Earlier this week, I was meeting with one of our HR people on that topic, and she was telling me about being excited that she and her husband were buying their first  house.  They are a young couple with a baby, and so getting their first house is a big milestone.  However, there was a snag:  her husband couldn’t get the day off for their closing date.  And here’s the kicker – her husband works at a bank!  You’d think that a bank would now what a big, exciting, life-changing event a house closing is, but I guess he couldn’t get the day off for it. 

Second Story

One thing that happens for all new hires here is that we get an orientation from the two owner/founders.  They tell us how the company was founded, how it grew, what the company core values are, etc.  It is a really cool thing, because you see that our owners really value the company and us as employees.  One of the things that they stressed – and something that has been clear to me even before I started here – is that they really want to create a “job for themselves”; that is, a place where they themselves want to work.  That drives much of their decision-making about benefits, compensation, etc. 

Okay, so to follow up on that.   Two weeks ago, we had a new part-time developer start here.  She’s an interesting case – she’s got a Masters in CS but hasn’t had a job for the last eight years because she was a full-time mom.  Both of her kids are now in school, so she decided to re-enter the work force on a part-time basis.  She’s had her eye on Gateway Ticketing for a while as one of the few software development companies in the area, and we were very happy to find a skilled, capable developer to add to our staff.  It’s working out great for everyone. 

So, being “the boss”, I stopped by to see how things were going.  I asked her how her kids were doing, and she said they were fine – her hours are such that she is there when the get on and off the bus – but that they were concerned that she would have a meeting or something that would keep her from meeting them.  With great pleasure, I told her that there was nothing going on here – no meeting, no task, nothing – that was more important than her meeting her kids at the bus.  Why did I tell her that? Because I have kids, and I know that that is how I’d want the company to react if I were in her shoes. It was great to put that company value into action.  And our new hire seemed pleased to know that the company felt that way.

Okay, so now the question I mentioned up top:  Which company would you rather work for – Gateway Ticketing or that bank?

Flotsam and Jetsam #11

By Nick at October 17, 2010 08:44
Filed Under: Flotsam and Jetsam
  • You Delphi people are probably well aware of the excellent documentation and reference site -- Did you know that you can support them financially by purchasing a desktop version of the site for only $10?  I didn’t realize that, and thought that it was a nice way to support an excellent site.  I’m going to look at getting some copies for some of the new developers on our team here.
  • Question of the Week: Can you be agile if you have a fixed ship date?
  • I just upgraded to Pandora One.  I am a huge Pandora fan – it’s really all I listen to on my PC at work – and I am happy to pay the meagre $3.00 a month for the service.  One of the reasons that I really like it is that it constantly is feeding me new artists and new music.  I’ve come to love a lot of singers – Sarah Bareilles, Matt Nathanson, 3 Doors Down – that I might not have otherwise heard of.  The music industry should also take note that I’ve bought quite a few CD’s as a result of finding new music to love via Pandora.  Pandora has had trouble with the music industry regarding royalites, etc.  I’m sure I’m not the only one that  has bought more music because of Pandora, not less.
  • Clever Item of the Week:   The name of the company that inspected the house that I am buying is “Sherlock Homes Inspections”.  I like that.
  • Craig Stuntz posted this fascinating video on his Twitter feed.  A town in England had an intersection that was notorious for being jammed and hard to get through as people waited at traffic signals.  One day, they simply turned off the traffic lights (with ample warning).  The result?  Smoother traffic and less congestion for both cars and pedestrians.  I really enjoy when someone goes radically against the forces of “You can’t do that!  It will never work and cause chaos!”.  I actually saw the link in the newsgroups, where Craig made the insightful connection between this video and the “Lock/Unlock” model of source control management.

Flotsam and Jetsam #10

By Nick at October 12, 2010 18:10
Filed Under: Flotsam and Jetsam
  • I wish that my iPhone was too big for my pocket and couldn’t make phone calls.
  • I mentioned in my Smartphone rant that I have an Android phone.  The actual phone that I have is an HTC Hero from Sprint.  I like it a lot, especially the HTC version of Android.  I was worried about the no physical keyboard thing, but the predictive typing has worked out pretty well now that I’m used to it.  However, I’m not here to talk great things about it, I’m hear to bitch.  Here’s some things I don’t like:
    • I often put the phone in my pocket without locking it.  This drives me crazy, because it leads to butt-dialing, strange emailing, and other things that can go wrong as the touch screen interacts with my pocket.  Here’s the solution – and a great idea for an app.  I almost always end up putting the phone in my pocket upside down.  The phone should detect if it is upside down, and if it is, immediately lock itself.    I guess that could be a problem when just carrying the phone, but there has to be some way to get this to work.
    • There are some apps that come loaded on it that cannot be removed.  I find this astounding.  My phone came with “Peep”, a very mediocre Twitter client, and I’d like to get rid of it.  But no, I can’t.  I have to “root” the phone to do that, and I’m not sure I want to take that drastic step.
    • The process of working with the phone call part of the phone is really, weirdly, slow.  If I press on a contact to make a call, it can take up to 20 seconds for the phone to place the call.  If there is one thing a smartphone should do well, it’s place phone calls. 
  • This is really cool:  The folks at DevJet --- they most famously produce the Spring for Delphi Framework – have fully documented the XMLDoc features in the Delphi compiler and IDE.  These are the “triple slash”  (///), XML-based comments that you can add to your code that enable both automatic documentation generation as well as live help hints in the IDE. It has always been kind of a dark art to know exactly what the tags are, and these guys have produced a great document with examples and pictures showing you how it all works. It’s actually quite feature rich what you can do with the comments.  I hope this great information can make its way into the the Delphi documentation itself.
  • The DevJet guys are also working on an IDE plugin that will let you write your comments in a WYSIWYG editor. 
  • I would be remiss if I didn’t point out once again that TSmiley has its code rather thoroughly documented with XMLDoc.  Winking smile

Mobile Marketplace Madness

By Nick at October 10, 2010 19:49
Filed Under: TechBiz

Got Your Smartphone Yet?

It seems everyone has a smartphone.  Everyone.  Hey, even my mom has a smartphone. I love my Mom, and she’s super smart, but I am not kidding – this is the woman who was still typing her book  manuscript on an IBM Selectric in like 1996. And she has an Android phone.  Can you even buy a non-smartphone anymore?  The whole world is staring at their phones and dragging their index fingers across that smooth, velvety touch screen. 

As a result , there is a battle going on  for the big money involved.  Apple blazed the trail, but Android is now at least pulled even, and the wild card of Microsoft is out there as well.  I’m not even going to talk about Palm or Blackberry, both of whom I think are out of the picture.  Nevertheless, the big question is:  Who’s going to win in the latest battle for supremacy in Silicon Valley?

Apple and the App Store

Apple, of course, has a good chunk of the smartphone mindshare out there with the iPhone.  All the cool kids have one, and “There’s an app for that” has climbed right up there with “Can you hear me now?  Good.” as a culture meme.  Apple has also garnered  lot of attention – not necessarily the good kind -- in the developer community for its heavy-handed approach to rules for the App Store. 

Apple has had a long and storied history of being “anal” about their platform.  Apple– some say to their detriment -- famously never  let anyone run their operating system on anything but Apple hardware.  They’ve always wanted to control every aspect of their platform and the  user experience on it.  That has been a key to much of their appeal.

The same is true for the iPhone/iPad.  Apple is the sole vendor for the iOS software and iPhone hardware.  They have an exclusive contract with AT&T to provide phone service, so if you are an iPhone owner, you are – for good or for ill – stuck with AT&T.  The only way to get anything onto an iPhone is via the App Store.   They take a strong-arm approach by controlling the applications that can be loaded onto an iPhone and by limiting the ability of developers to use runtime support such as Flash.  They are very concerned about controlling the user experience and have made technical decisions based on this.  For instance, because they are concerned about battery life, even the latest versions of iOS don’t allow for true multi-thread/multi-tasking, a feature which (as I can testify with my Android) can be murder on battery life if not done well. 

Apple is the sole gatekeeper for every application on every iPhone in the world. If Apple doesn’t like your application, it isn’t going on anyone’s phone.  It was only recently that Apple actually published a set of guidelines for what could and could not go up on the App Store.  Before that, they could – and often did – ban an application for seemingly capricious reasons.  Although they recently backed off the idea, they proposed the notion that developers would only be able to use Apple tools to build App Store applications, effectively specifying the language and frameworks that developers had to use. 

The ‘Droid You Were Looking for

(Okay, that’s corny title, I know….) Anyway, while Apple blazed the trail, others are following and even catching up. Google has recently made great headway in the market with the Android operating system.  Depending on who’s market numbers you believe, Android is the fastest growing and most popular smartphone platform.  iPhone has a large mindshare, but Android apparently has the numbers. 

With regard to application distribution and development, Google has taken a completely different approach than Apple.  Android is available on multiple phones from multiple network service providers.  The Android marketplace is open to all, with basically no limits on what can be built and uploaded.  Android developers today use Java and C++, but there is nothing stopping anyone from creating runtimes and libraries for using any language at all.  Delphi for the Android is clearly a possibility.  The world of Android applications is the Wild West of the smartphone world.

What is up in Redmond?

Microsoft isn’t taking all of this lying down, either, and after a number of furtive starts,  they are well on their way to providing Windows Phone 7, a .NET-based phone platform that is just now coming to the market.  Microsoft reports that they, too, will have a “gatekeeper” system for applications.  They appear to be taking somewhat of a middle road between Apple’s tight control and Androids free for all.

Microsoft is a bit late to the game, but since Phone 7 is based on Silverlight and .NET, they have an army of developers ready to start programming for their platform.  We can’t count them out yet, but they have some catching up to do.

So What?

So, what does this mean?  Who will win?

I’m going to go out on a limb and say that history is going to repeat itself.  In the 1990s, there was a battle in the marketplace for the desktop between the Mac and the PC.  Sorry, Mac Fanboys, but the PC running Windows won – the actions of the US Department of Justice pretty much settle that argument.  The PC became the dominant desktop platform.  And it became so because it had the best applications. 

And they had the best applications because the PC was the OS with the “Wild West” attitude.  Who doesn’t remember downloading reams of crappy shareware applications written in Visual Basic with garish interfaces and 23 different versions of THREED.VBX?  Sure it was a mess, but it succeeded. 

I’ll argue that it succeeded because it was a mess.  There were a lot of really crappy applications out there to download, but because there were a lot of them, there was a much greater chance of a good one being created.  And inevitably, the good one’s rise to the top and squeeze out the bad.  The platform with all the most applications, good and bad, became the platform that people wanted to use.  

This compares with Apple’s model of tight control and a desire to “control the user experience”.  Well, I don’t think that the user wants their user experienced controlled by a large corporation. I think they want to control their own experience.  The free wheeling, wide open marketplace produces a lot of crap, but it also is the means by which the best applications can thrive.  The Mac suffered because users didn’t have the breadth and depth of applications to choose from – good and bad --  that Windows users had.

The open marketplace creates the best applications for two reasons.  First, just as the marketplace and not a government mandate created the iPhone, so does the competition of  the marketplace produce the best applications.  Tightly controlling how apps are developed, what tools can and cannot be used to develop those applications, and providing a tough gauntlet for getting apps out to consumers is not a recipe for true innovation.   Innovation comes from no limits and no restrictions.

Second – and this is something that Microsoft knew well back in the 90s – the platform that attracts the developers will be the platform that produces the best applications.  Developers like freedom, and Apple left a bad taste in the mouths of many developers with their famous “Section 3.3” trial balloon.  Attract developers, and your platform succeeds.  Microsoft proved this with Windows.  Given the uncertainty and the capriciousness of Apple about the App Store, a lot of developers are going to be both hesitant and ideologically resistant to developing for the iPhone.  With Apple basically owning the development tools market, is anyone going to invest a lot of time in tools and frameworks for iPhone development?   Limit development to one language and you limit the number of developers who will build apps for your platform.

Now, I admit that there is no dearth of applications for the iPhone. There are about three times as many as there are on the Android Marketplace.   But the market is still young, and what can be done with a smartphone is still in it’s infancy stage.  We are still looking at the “DOS Phase” of smartphones.  The best is yet to come, and someone is going to rule the next phase.

Finishing Up

If you look over the list of strengths and weaknesses for the Android platform in the Dr. Dobbs Mobile Development issue, you’ll see that bears a remarkable resemblance to Windows circa 1994, and we all know how that turned out.  Now, I’m not saying that the iPhone is going to disappear-- not by a long shot. The Mac is still around and going strong.  But I believe that in the coming years, the “defacto” smartphone – the one that will rule the “post-DOS” smartphone world will be an Android.

I have an Android phone and I’m betting that it is the platform that comes out on top in the current shootout that is going on in the smartphone space. 

My Book

A Pithy Quote for You

"Go confidently in the direction of your dreams. Live the life you have imagined."    –  Henry David Thoreau

Amazon Gift Cards

General Disclaimer

The views I express here are entirely my own and not necessarily those of any other rational person or organization.  However, I strongly recommend that you agree with pretty much everything I say because, well, I'm right.  Most of the time. Except when I'm not, in which case, you shouldn't agree with me.

Month List