Posted by Shawn Oster on 4/22/2007 7:50 AM | Comments

Most developers live and breath version numbers, yet there are a few that either don't or don't really have a good rule of thumb on what their versions should mean.  There are also quite a few people that have to deal with versions that aren't developers, such as tech support, marketing and new team members.  For those people it's always a good idea for everyone to be on the same page.

What's in a version?

So you have version 1.5.4.675, what does that mean?  First, the different parts are, in order, major, minor, release and build number.  I first wrote this up as four separate paragraphs sharing all my golden nuggets of wisdom but realized in this day and age sometimes the Cliff-Notes version is better.  Here is what the various parts of a version number mean and when they should be incremented:

Major

  • All features across the same version should be either 100% compatible or in rare conditions gracefully degrade.
  • File formats should be compatible, all 1.x versions should open, save and edit 1.x versions.
  • For commercial products all updates in the 1.x line should be free
  • Only release a new major version if;
    • the flow of the application has been noticeably changed,
    • there are a significant number of new high-visibility, high-usability features,
    • the user interface has drastically changed.
  • New major versions should always be able to import or open older versions.

One key point is that only new highly usable features should mark a new major version.  New major versions usually mean an upgrade cost and nothing is more annoying than buying a new version only to find the new features are only useful to about 1% of the install base.  I've seen several products try to push a new version with inflated features that don't actually offer any benefit.

Minor

  • New non-breaking small feature, meaning it still works with other version with the same major version.
  • Bug fixes that apply to everyone.
  • You'll want everyone to be running the latest minor version so be prepared to make this available to everyone. 
  • Tech support should usually make sure the end-user is on the latest minor version before going farther.
  • Installing the newest minor version should be painless.  All user settings should transfer over seamlessly.

Release

This gets a little murky for some and there are a lot of schools of thought on this one, here is mine:

  • Represents the release of the current major.minor version.
  • Increase the release when you do small, infrequently encountered bug fixes.
  • Not everyone needs to be on the latest release, only those affected by certain issues.
  • If you do Betas and Release Candidates this is the place to note that.  If you release RC1 as version 2.5.0 and someone finds a bug you update the release to 2.5.1.
  • Resets back to 0 every time the minor version changes.

That last point is where a lot of people get into knife-fights.  Some think release should mean the number of times a product has actually been "released" into the public.  If that's how you think then by all means go for it.  Personally I think of it as a version number for the version number, in other words, how many times did I release version 3.1?

Build

  • Always increments.
  • Never gets reset.
  • Most useful for bug reporting.
  • Should only get incremented by the "official" build box.

The last point might need some explaining.  For a solo developer this just means each time you build the software from your machine.  For a large team though, with each developer probably compiling the application a few hundred times each day, this build number would get big fast as well as quickly lose it's meaning.  Instead, developers on a team usually have one machine that is the official build machine, where nothing but the compiler and any needed libraries and components are installed.  This insures a consistent, clean, known build each time.

And bob's your uncle.  Pretty basic stuff. While there are different schools of thoughts on versioning one thing that should be clear is that everyone on your team, including managers, marketing, support and developers on other teams, should all be on the same page when it comes to versions.

Posted by Shawn Oster on 3/30/2007 11:00 AM | Comments

I've noticed a disturbing trend by certain web developers to host their site's images on flickr. This is a HORRIBLE idea in so many ways so if you're thinking of using flickr to serve up your static images consider the following:

1. Flickr is an evolving service.  This means that there will be downtime, system upgrades and perhaps even changing URLs.  All of which can lead to slow load times or even broken links.

2. Flickr is public facing.  What I mean by this is that they're a self-described photo sharing web-site where most people use the flickr site to browse and manage photos.  A ramification of this is that if your site gets dugg all those hosted image requests are going to hammer the flickr site and perhaps slow down all the "real" flickr users which can in turn lead to your account being banned.  It's in flickr's best interest to watch out for it's main users, NOT for people using it as a way to get around bandwidth restrictions.

3. Annoying for users.  I came across this one today.  Someone had a series of screen shots in their blog and I wanted to see one full size, so like I've done a hundred times I clicked on the image.  Usually you expect to see a larger version of the image but this time I ended up on flickr, showing me an even smaller thumbnail.  To see the full-size version I had to actually log in to flickr and then click on "All Sizes".  This was highly annoying and a very poor user experience.

If you are really looking for a good off-site static image host so you're not blowing your monthly bandwidth allocation try a service that was actually meant for it.  My suggestion would be Amazon's S3 service.  It was actually meant for exactly this type of thing and their rates are very reasonable, probably  under a buck most months.

Flickr is an awesome photo sharing and exploring site, but it makes much more sense to use it for actual photos.

Posted by Shawn Oster on 3/24/2007 2:00 AM | Comments

Gizmodo recently ran something I was just thinking I wanted to see, an Apple TV vs. XBox 360 showdown.  Gizmodo is one of those sites that has a bunch of different contributing news bloggers and I'd say at least 70% of them are highly biased in some fashion, with most of their "news" coming off as impassioned mini-editorials about a single product.  That's why I was impressed with how balanced the comparison between the 360 and Apple TV was.  If you're in the market for an Apple TV but are also open to a 360 give it read though.

I would actually like to see a comparison of Apple TV vs. the native photo, music and video streaming abilities of the XBox 360.  I'm pretty sure most people would consider the Apple TV UI the winner in that one but I'm interested in functionality at that point.

Another thing missing in the Gizmodo showdown was that lack of mention that you can also use the XBox 360 + MCE as a DVR, which you can't do with Apple TV.

Spoiler: XBox 360 is declared the winner by a slim margin.

Technorati tags: , , , ,
Posted by Shawn Oster on 3/22/2007 6:09 AM | Comments

Thomas Hawk, a new Mac convert, has recently been praising all things Apple.  That's why I was pleasantly surprised to see a level-headed assessment of Apple's new media extender, Apple TV.

I agree with all of his points and then some.  It was nice to see his tip of the hat towards Media Center and using the XBox 360 as an extender.  He mentioned that he never really planned on using his 360 as a game console but found some game joy none the less, which helps debunk the myth that the XBox is only for the "hardcore gamer".

Posted by Shawn Oster on 3/19/2007 7:27 AM | Comments

It used to be that the desktop ruled the computer landscape.  Servers were for large corporations while laptops were the province of rich college kids and sales creatures.  I see all of that changing, the future belongs to the laptop and the consumer-level home server.  We're already seeing more and more laptops and I know of small software companies where everyone is on a laptop, even those that never take them of off their desk.  I've seen households where the only person on a desktop is the nerdling, tinkering husband and even he usually also has a laptop.

They make sense as they are small, sleek and easily attach to a docking station for when you want a full size keyboard and multiple monitors.  The price difference between a similar equipped laptop and desktop are getting smaller everyday as is the gap between performance.  My HP dv9000 laptop screams compared to all the desktop machines at home or at the office.

There are some obvious limitations, one being the hardcore gamer's need for a top of the line video card.  There are some pretty beefy gaming laptops out there, though they are rather pricey.  As an alternative I see the external video card gaining traction.  A laptop plus external video is still easier to lug around than a full desktop unit to various gaming sessions plus you lose all those pesky cooling issues if it's in it's own housing.

Another laptop issue is expansion and storage.  That's where the consumer-level home server comes into play.  I see a future of small, headless servers that sit in a closet or a bookshelf somewhere with one, two or ten external hard drives all offering up terabytes of storage.  With the promise of remote access you are never more than a WiFi connection away from all your stored media, regardless of where you are in the world.

I'm hoping that some smart hardware vendor out there actually takes this home-server concept and runs with it.  For example I'm a huge fan of Western Digital's My Book series of external hard-drive enclosures.  They are reliable, quiet and attractive without being overstimulating or threatening.  If Western Digital was smart they'd partner with a PC OEM and create a headless home-server using the same external case styling.  Want to get even more creative, why not partner with a TV tuner card manufacture and stuff a couple inside another My Book case?  You now have a full suite of home-server related hardware components, all of which can be chained together via USB.  Instead of a hodge-podge of various hardware cases and wires you have a single suite that looks sleek sitting on an office desk or inside a closet.  Three or four identical cases purring along doing their tasks; backing up PC's, recording TV, streaming media, routing Skype calls, serving up a web page, acting as a Subversion repository.  Easily expanded or replaced.

Consumers like things to match, it gives them a sense of security, that things will work.  They are also a lot more likely to buy the matching components than another third-party simply so they can have the full set.  I know someone out there will pick up on this, probably Sony first when Windows Home Server comes on the scene with a full suite of hardware bits but I'd hope that others will recognize that consumers do want a bit of style even in their computing.

All this being said desktops will still exist, just not in the majority.  They will probably always be cheaper, especially if building one by hand, and for some tasks a desktop still makes more sense.  These will become the exceptions though, not the rule.

Posted by Shawn Oster on 3/16/2007 6:37 AM | Comments

You'd think for all the effort that went into Vista and updating a large number of the embedded applications they would have spent at least a little time making sure any previous bugs in Windows Mail were fixed.

I use Outlook Express, or Windows Mail as it's now called, to read newsgroups.  One thing I do quite a bit is drag it over to my secondary monitor, right click on a newsgroup and then select Properties.  On XP this was highly annoying because the pop-up always shows up on the main monitor, regardless of where Outlook Express is.

Enter Microsoft Mail and I make the silly assumption that since Windows Mail has been updated they'll have fixed this little bug.  Nope.  It's still there in all it's unpolished glory.  Nothing quite says "attention to detail" like ignoring a bug that's been in an application for 5+ years.

Posted by Shawn Oster on 3/16/2007 5:15 AM | Comments

I just caught a blurb from some major news outlet talking about how Apple TV is trying to bring digital content into the living room.  What I find so ironic is that you've been able to do that for awhile now with the XBox 360 and it's Video Marketplace downloadable content.

I can't blame the media outlets though for their ignorance, for the most part reporters in the mainstream media aren't really known for their depth, they're trying to stay on top of the breadth of things and the digital media download space is an ever changing landscape.  The party I put most of the blame on is Microsoft itself.

I see zero marketing on the Video Marketplace, unless you actually own a 360 you might not even know that the 360 offers the ability for TV show and movie purchases.  Only the gaming community seems aware of an ability that the non-gaming community would probably vastly enjoy.  Even a comment on this blog shows the general perception out in the community, that the 360 is only for "hard-core gamers" and if you just want a casual gaming or media experience you should get a Wii or Apple TV.

I know that Microsoft is used to letting it's OEMs do it's marketing for it's hardware but considering that Microsoft actually owns this bit of hardware you'd think they'd be stepping up their efforts to showcase everything the 360 can do.

Posted by Shawn Oster on 3/7/2007 1:05 PM | Comments

Ever hear the phrase, "lipstick on a pig"?  It applies to a vain attempt to make something ugly look pretty, as in "putting a fresh coat of paint on that water-damaged, termite-eaten, water leaking house is like putting lipstick on a pig."

The software world often has the opposite problem, let's call it "a swan wearing galoshes".  There are an amazing number of great software applications out there that I don't give a second look at because their user interface is horrible.  Everything from inconsistently positioned buttons, ugly icons, poor spelling, cramped interfaces, badly explained features or hideous splash screens.  By that same token there are also quite a few products and applications that do get used simply because they look good, even though they might not work quite as well as their ugly competitor.

One of the reasons for this is because developers are usually horrible designers.  While we can coax the most amazing things out of a few lines of code we often can't pair two colors together in a pleasing way.  Worse is that many times developers think they are actually artists... and they're not.  They'll beam at you while they show off the latest splash screen or icon and you'll be trying to hide your sudden need to gouge out your eyes.

Another reason is just time, developers will get so excited creating a feature that they'll just drop buttons all over an interface.  Perhaps they're a control freak and they'll feel the strong need to make every single option a control on the main form.  Perhaps they just don't care, as long as it works, what does it matter how it looks?  Well, if that reasoning applied I doubt there'd so many different brands, models, colors and types of cars.  Perhaps that person really doesn't care how it looks, then again they are probably wearing bland or ill-fitting clothing, perhaps slightly stained, most likely not matching.

The sad thing is a lot of these issues can be avoided with just a little effort.

1. Think of the UI from the beginning.  This means both in terms of usability, design, time and budget.  Don't leave this part towards the end.  Actually add it to your task list with a real amount of time instead of just assuming the UI features will magically appear at the end.

2. Don't use temp images or icons, even as placeholders.  In the software world there is no such thing as a temporary placeholder.  Pick a silly splash screen or funny icon or just a "quick button for testing" and there is a good chance your application will go out the door just like that.  People grow used to things rather quickly, even the most hideous of icons.  They will also mentally check that off a  "to-do" list in their head so if you later say you need to spend some budget on a graphic designer they'll usually just say, "what about what you already have?", even if it does cause the elderly to void their bowels.

3. Use stock icons.  There are several great icon sets available for purchase these days, as well as custom icon design.  Visual Studio 2005 even comes with a huge set of high quality icons for use.  Please, use these.  View the price of the icons not as "some pretty things" but as you would a component.  I've spent anywhere from $50 to $500 on various development tool add-ons and dropping $49 for some icons seems like a pretty good deal.

Do not attempt to make your application look different by using your own custom icons unless your's are actually good.  I've seen apps where the toolbar is littered with mutant variations of standard open/save icons with some vile gradient or abstract take on "Open".  All of those fail because while you may enjoy making your app look like some Dali painting your users would much rather have a consistent look and feel, including icons, across all of their applications.

Here are a few links to get you started:

StockIcons, IconBuffet, IconShoppe, glyFX

4. Use the OS as a guide.  While you might not be able to afford a designer I bet the devs of your OS could.  If you're stuck on how certain controls should work or look then go to your OS and find something roughly similar.  If you have other applications that you like the look of by all means get inspired by them, though if they have a distinctive interface be careful not to rip it off.

5. Be consistent.  If one option dialog has all the labels ending in a colon (like "Password:") make sure EVERY dialog in your application follows that convention.  If one form has all of it's controls 8 pixels from the left make sure ALL of them do.  Even if you hate how the original forms look you still need to be consistent, or change all of them.  Nothing makes an application look more shoddy than dialogs that all look slightly different.

You know how you can tell when someone has slept in the same clothes they're wearing?  How no amount of smoothing and splashing of water and combing of hair really gets rid of that disheveled look?  That's how an application that isn't consistent looks, you may not notice it at first but it is making an impression, and not usually a good one.

Given the stiff competition in the software world today you really can't afford to release ugly applications anymore.

Posted by Shawn Oster on 3/2/2007 12:48 PM | Comments

A post by Ed Bott recently reminded me of a topic that I think about from time to time, that of newsgroups (NNTP) vs. blogs (RSS).

I've been using newsgroups since before there was Google, before there was Yahoo!, and definitely way before blogs.  Developers like myself seem to favor them because they are a great way to post a quick question, learn something new or help out a fellow nerd.

I've heard a lot of people say that now that blogs and RSS are here that newsgroups should be ditched and everything should be a feed.  I have a few issues with that:

1. Blogs require mass.  If you want to ask a question on your own blog then you are dependant on those reading your blog.  Not until you have a large group of followers can you even begin to hope to get an answer.

2. Can't have a multi-person conversation.  If I post a comment to a blog then there is a good chance that the blogger will read my comment, a little less chance that they'll actually respond and a slim chance that another commenter that I actually wanted to address will read AND respond.  I know I rarely go back and re-read comment sections.

2. Comment notifications.  Even if by some chance a fellow commenter does answer a question I posed in someone's comment section there is a good chance I'll never know unless I constantly go back to that page.  Even the pages that do have comment notification feeds aren't a good solution because often I don't care about everyone's comments, I just want to see if someone responds to mine.

3. Offline support.  This is probably unique to developers but I often come across a great bit of code or advice in newsgroups that I want to save for later.  With my newsreader I simply drag and drop that post to a folder and now I'll always have it.

4. Speed.  You are very much at the mercy of the web-site hosting a blog.  I've seen some popular blogs just tank when they get dugg or seen poor comment systems slow down to a crawl.  I've rarely if ever had issues with NNTP-based newsgroups in terms of speed.

5. Information density.  I can take a quick glance at Outlook Express and see all the groups I'm subscribed to, which ones have new messages, whose posted, when, what watched posts have been updated, etc.  Even with a desktop RSS reader I can't get nearly the same amount of information quickly.

6. Variety.  One great thing about newsgroups is that anyone can post so you get a much more varied selection of topics.  While I love reading a person's blog it's always that person talking and it's usually that person talking about something that is blog-worthy.  I've often just dropped a message in a group with one or two lines, "Anyone know of a good PDF component for Delphi?" yet I'd never think of doing that here, even if I actually did have a readership.

I've purposely left out online forums and that's because to me they are an unholy union of the worst bits of both newsgroups and feeds.  Off the top of my head I dislike them because:

1. Slow.  Anyone use The Green Button forums before they upgraded?

2. Ugly interface.  'Nuff said.

3. Yet another login and password you have to remember.

4. Notification options almost as bad as RSS.

5. Low information density.  Once you factor in site styles and overly large buttons and large headings you aren't left with much room for actual content.

6. Avatars.  Seriously, I hate them.  They take up space and bandwidth and only serve to remind me that just because you can do something doesn't mean you should.

Posted by Shawn Oster on 2/21/2007 11:50 AM | Comments

I came across this interesting post the other day.  Seems the author recently switched to OS X and while for the most part he seems to like it he has come across a few things that he misses from Windows.  What I enjoy about his post is that it feels more like he is comparing tools vs. religions, with calm observations vs. frothing at the mouth.  Some of the more interesting tidbits:

- He dislikes iPhoto and considers it featureless.  I usually hear OS X users touting iPhoto as one of the key features of OS X so to hear someone pine for Picasa, which doesn't seem to be available for OS X is new.

- He considers Window's Explorer the better file manager, citing among other things the fact that it feels more functional  I've always wondered about this because every screen shot I see of Finder shows these 32x32 or 48x48 icons of each file.  I'd go crazy looking at a source code or music folder unless I could see them in either List or Details mode.  In fact switching out of the default 32x32 icon mode in Explorer is the first thing I do on any new computer.

- At first he missed the Start menu but as he grew to use Spotlight and Quicksilver he no longer pines for it.  What's odd is that when I'm on a Vista machine I almost never use the Start menu anymore, instead I press the Windows key to bring me to a search box and I just type the first few letters of the app I'm looking for and ta da, there is my app.  The only time I use the Start menu is when I install a new app, I'm not always sure how it's going to be named so sometimes I have to go hunting for it.

- No good IM software with iSight support.  This just blows me away.  The whole camera bit is one of Apple's big selling points and there is no rocking IM client with native support?  Someone suggested Skype but that's not going to do him a lot of good for his buddies on AOL, Hotmail or Yahoo!.

All in all it was refreshing to see a level headed discussion about OS X.  Most people rave about the wonderfully sexy Mac hardware, and I do agree, Apple makes some damn good hardware, but oddly enough I don't hear much about OS X itself from new converts.