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

Announcing THTMLWriter

By Nick at November 22, 2010 00: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
                  .OpenHead
                    .AddAttribute('dweezle')
                    .AddText('farble')
                  .CloseTag
                  .OpenBody.AddAttribute('ding')
                      .OpenSpan
                        .AddAttribute('this', 'that')
                        .AddStyle('font: italic')
                        .OpenDiv
                          .AddAttribute('floo')
                          .AddText('Blah')
                        .CloseTag
                      .CloseTag
                      .AddText('Hoorah')
                      .AddBoldText(' Shadooby')
                      .OpenBold
                        .AddText('Goombah')
                      .CloseTag
                  .CloseTag
              .AsHTML;

 

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 07: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 12: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 CruiseControl.net, 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. 

hudsondude

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.

screen

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.

screen3

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

      C:\Code\HTMLWriter\HTMLWriterGroup.groupproj
      ,

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

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 05: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 09: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 07: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 16, 2010 23:44
Filed Under: Flotsam and Jetsam
  • You Delphi people are probably well aware of the excellent documentation and reference site --http://www.delphibasics.co.uk/. 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 09: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 10: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. 

Flotsam and Jetsam #9

By Nick at October 06, 2010 08:13
Filed Under: Flotsam and Jetsam
  • We here at Gateway Ticketing are looking to migrate to a Distributed Version Control System, and so naturally I’m scouring the Internet for information, thoughts, opinions, ideas, etc. (Your thoughts and comments gladly accepted, BTW).  I ran across this document about Mercurial and found a curious thing – per-paragraph comments in the documentation.  Interesting.  People there are making some good comments about each individual paragraph to help improve the document and the book.  Pretty cool.
  • I’m sure that some of you may have an opinion on this particular question at the Programmers StackExchange site. 
  • Are you guys reading Mason Wheeler’s blog?  If you are a Delphi guy, I’d recommend it.  Mason is a really smart guy who likes to stay out on the bleeding edge of what is going on with Delphi, and his blog always makes for an interesting an educational read.  This post is no exception, in which he does a little digging and discusses some things he’s heard and how it might be culminating in native LINQ for Delphi. Exactly the kind of blog post that is fun to read.
  • It’s not often that you see an invention that is so simple and yet so useful that you say “Why didn’t I think of that?”.  Well. here’s one:  The PageKeeper. Ingeniously and fiendishly simple.  Why didn’t I think of that?
  • It is readily apparent to me that the people who make those copier/scanner/fax/printer machines that we all have in our offices now have done a negative amount of usability testing.  That is, these devices are so utterly unapproachable and completely un-figure-out-able that they actually seem to have done some sort of testing that actually made their usability go negative.  Unbelievable how bad the interfaces are.  Seriously.

Quick Note: Nick at DC event

By Nick at September 21, 2010 23:55
Filed Under: General

Just a quick note – I’ll be at the Washington, DC RAD Studio XE launch event tonight.  If you are going or thinking of going, I’d love to see/meet you there.

Flotsam and Jetsam #8

By Nick at September 13, 2010 00:41
Filed Under: Flotsam and Jetsam

Flotsam and Jetsam #7

By Nick at August 30, 2010 04:55
Filed Under: Flotsam and Jetsam
  • Julian Bucknall of DevExpress has a great post about a coding pattern that I didn’t know had a name:  the Composed Method pattern.  The idea is to break your code down into many methods with only a few lines of code.  His second point is the really important one, though:  We should be writing code to be read by people, not by the compiler.
  • Here’s an interesting article:  10 things non-technical users don’t understand about your software  Do you take utter noobs into account when designing your software user interface?
  • Question of the Day:  Can (or should) a software installer assume that an internet connection is in place?  I notice that most of the applications that I download and install these days are actually internet installers.  Thoughts?
  • Here is a good run down/review of Microsoft LightSwitch by long time tech writer Tim Anderson.  Interesting stuff.  Here’s the most intriguing quote by Tim:  Speculation – LightSwitch will one day target Windows Phone 7” 
  • Argh!  The iPhone now has a NetFlix app. I confess I am jealous and am anxiously awaiting  the ability to watch NefFlix on my Android.
  • This is an oldie but a goodie: Things To Remember If I Ever Become an Evil Overlord (Hat tip to Jeff Dunteman for reminding me....)

Nick’s New Job

By Nick at August 28, 2010 03:15
Filed Under: Personal, General

I’m very happy to tell you fine people that I have accepted the job as Director of Development at Gateway Ticketing in beautiful Boyertown, Pennsylvania.  I’m really delighted and happy.  The job is exactly what I’ve wanted with a great small and growing company. If you’ve ever been to Disneyland or an amusement park or one of the major zoos around the US, chances are you’ve used our products.  The Gateway people are great, and the Boyertown area – where I will be moving eventually – is lovely.  It’s a great opportunity for me, and I’m very pleased.  I’m looking forward to leveraging my technical skills as well as these great leadership skills I supposedly know so much about.  ;-)

Many of you have been very supportive and sent me words of encouragement during this time, and I’m grateful.  It’s a tough time, being uncertain of the future, and I’m grateful for the support.  Gateway is a Delphi shop, so I’ll still be around.  And I must confess it will be strange to move to the other side of the table as an Embarcadero customer.  ;-)

Flotsam and Jetsam #6

By Nick at August 20, 2010 13:10
Filed Under: Flotsam and Jetsam
  • We can’t all hire awesome programmers and we can’t all hire great team members, but you can consciously decide what you are going to get.  ;-)
  • Nice writeup on RAD Studio XE in SDTimes.
  • Remember when we were supposed to be wary of "chat rooms"? Do "chat rooms" even exist anymore?
  • Google looking at doing a tablet with Chrome OS?  My question:  What is the difference in Googles mind between Chrome OS and Android?  I would have thought that Google’s tablet would be Android based, but it appears that they are going to be using Chrome OS.  Huh.
  • My 11 year old son has done some pretty cool things with Scratch, so this article was of interest to me:  4 Tools for Teaching Kids to Code I am particularly interested App Inventor, which is for building Android apps.  That looks like something that might not just be for kids!
  • Here is a huge pet peeve for me:  Blogs that have “<—Previous Next—>” at the bottom.  Does previous mean “older” or “where you just were”?  Shouldn’t “Next” mean “I want to see the newer stuff”?  In addition, it never seems consistent.  How about “Older/Newer” instead?  That is obvious.

My Book

A Pithy Quote for You

"There is nothing so useless as doing efficiently that which should not be done at all."    –  Peter Drucker

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.