Archive for the ‘Development’ Category

Otaku Software on Twitter

Monday, May 19th, 2008

We’ve signed up with Twitter, a service that lets you keep up to date with what other people are doing. We’re trialling Twitter as a way to give everyone a better idea of what we get up to from day to day at Otaku Software, including what we’re working on at the moment and how software development is progressing.

You can see my personal Twitter updates at, and we’ll be adding other Twitter accounts in the future if the service proves to be useful.

Microsoft Office UI Licensing

Monday, November 27th, 2006

It looks like you can now license Office 2007 UI components, including the Ribbon. It’s a royalty-free license, but it prevents you from developing “products or components that perform primarily as software for word processing, spreadsheets, presentations, email, contacts and databases, and that are created or marketed as a replacement for any or all of them”. You know, just in-case you decide to develop a direct competitor to Office.

Offering these components to developers with this kind of license restriction is going to severely hinder adoption. Who in their right mind would let Microsoft have the final say on whether their application meets the license requirements? They may turn out to be very lenient about the types of applications that are valid under the license, but what developer would tie their software to these components when Microsoft can decide, at any time, that a product breaks the license agreement?

I understand that Microsoft put a huge amount of effort into developing the new UI, but why not offer the components as part of a new version of the Win32 Common Controls? Giving developers access to these new components can only benefit Microsoft (better Windows software equals more sales of Windows), and the best way to do that is to make them common controls.

Joel’s On Something

Friday, November 24th, 2006

Joel Spolsky is usually (mostly) on the money, but his latest rant, on Vista log off options, is off the mark.

As some background, when you click on the Start Menu in Vista you’re presented with three options: turn off the computer, lock the computer, and show the advanced options menu. The advanced options menu offers another seven ways to log off, including hibernate and standby.

Joel writes:

“Every time you want to leave your computer, you have to choose between nine, count them, nine options: two icons and seven menu items. The two icons, I think, are shortcuts to menu items. I’m guessing the lock icon does the same thing as the lock menu item, but I’m not sure which menu item the on/off icon corresponds to.

The fact that you have to choose between nine different ways of turning off your computer every time just on the start menu, not to mention the choice of hitting the physical on/off button or closing the laptop lid, produces just a little bit of unhappiness every time.”

and then proceeds to simplify the Vista log off options to the point where there’s one simple button called “b’bye”.

Great, you think, he’s taken something that’s complex and made it simpler and more user-friendly, but in doing so he’s made the assumption that he knows more about Microsoft’s users than they do. Sure, his suggestion seems “better”, and would, in fact, make Vista easier to use for beginners. The problem though is that Microsoft isn’t developing software targeted at a particular group of users, they’re developing software that will be used by around 500 million people. Within those half a billion users there’s a huge number of different groups, each with vastly different skill levels and requirements. With that many users you can’t just assume that everyone needs things to work the same way.

Joel does have a point: it’s good to keep things simple. However, in his quest to make things as simple as possible he’s failed to take into account the needs of all users. Ironically, given their past mistakes, it turns out that Microsoft has. They’ve recognized that not all users have the same needs or skill levels, so they offer only the two most common choices up front, but still allow advanced users to easily access the more complex options. In the end, drastically simplifying functionality might improve usability for some users, but it makes software less usable for everyone else.

How to Prevent System Tray Icons From Disappearing

Friday, September 22nd, 2006

When you’re a programmer, it seems like you learn something new every day. One of the things I’ve been working on in the next version of TopDesk is making it survive Explorer crashes. TopDesk has quite a few hooks into explorer.exe, so when Explorer goes down, TopDesk goes with it. After banging my head against the wall several times I managed to fix the problem, but I noticed that even with the fix in place the TopDesk system tray (sorry, taskbar notification area) icon failed to re-appear when Explorer came back to life.

What’s happening is that when Explorer crashes, the taskbar notification area crashes too, forgetting any icons it had. When Explorer starts back up, it re-creates the taskbar notification area and sends out a registered window message called (strangely enough) TaskbarCreated to all top-level windows. It’s up to an application to check for this message and re-initialize any taskbar notification area icons it has. Here’s how you do it in C/C++:

1. Register your application so it can receive TaskbarCreated messages:

UINT wmTaskbarCreated = RegisterWindowMessage(_T("TaskbarCreated"));

2. Handle the message in your window procedure:

LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT nMessage, WPARAM wParam, LPARAM lParam)
			if(nMessage == wmTaskbarCreated)
				// Call your system tray icon initialization function/method here

	return DefWindowProc(hWnd, uMessage, wParam, lParam);

For those of you interested, the MSDN documentation on the TaskbarCreated registered message is hidden away here.

How Not To Use A Blog

Wednesday, March 8th, 2006

Paul posted about TopDesk a couple of times, pointing out an incompatibility with one of his favourite applications. The conversation was a bit strained at times as we each tried to get our individual points across, but at least it was a conversation.

Today, Paul posted this article blasting TopDesk. Some of his claims are legitimate: in a specific situation, it is incompatible with the application he uses. The other claims are what I consider to be pure rant, but that’s not what bothers me. What bothers me is that this is the first time I’ve heard of them.

Like most relationships, user/developer relationships are all about communications. Users benefit by having their problems resolved quickly, and developers benefit from having happy users.

We’re lucky nowadays that email, blogs, and forums make communication easy. If you have a problem, please don’t sit and stew over it. If you have the time to post on your blog about how much you hate a piece of software, then you have the time to contact the developer directly first . After all, if we’re not aware of the problems you’re experiencing, how can we help?

Whether it’s positive or negative, user feedback is one of the major benefits I derive from running Otaku Software. It’s great to know that people find your work useful, and that it makes a difference (however microscopic) to their lives. So whether you have a problem, a feature suggestion, or just want to say hello, feel free to drop me a line at any time.


Monday, August 15th, 2005

Quite a lot of suggestions have been posted on the TopDesk Feature Request thread in our forums, so at this point I’d like to take a moment to clarify my position how additional features will be handled.

I’m wary of adding any additional functionality to software that’s a either subset of existing functionality or that differs slightly from existing functionality, or any configuration options that don’t have a real impact on the functionality of the software, because if you do this an application tends to end up with “featuritis”, and becomes so confusing and complex that it’s no longer fit for it’s original purpose.

Examples of what I consider “featuritis”, there’s WinZip (all you want to do is zip and unzip files, so why is it so complex that it needs a configuration wizard?), and one of our competitors (I’m not going to mention names, but they had a good product that has unfortunately ceased development), who allowed users to configure almost everything about their application.

There’s nothing wrong with this approach to software for some applications, but I’m of the opinion that general-use software should just do what it says it does, and only provide configuration options that actually make a difference to the functionality of the application. After all, do users really benefit from being able to turn WinZip toolbar tooltips on or off? Couldn’t development time have been better spent on improving the zip/unzip workflow?

Getting back to the forum posts, there’s been a lot of great suggestions from users, some of which have been implemented already, and some of which will be implemented in future versions of TopDesk. However, if it’s found that adding a feature means introducing additional complexity, the feature will be dropped without ceremony. The challenge for me is to keep improving TopDesk while still keeping it simply useful software.

Update 19/08/05: I’ve seen a couple of posts on our forums that talk about how we’re into making simple software. I’d just like to clarify that this isn’t the case. What we’re about is making sure that software that may be complicated for us to develop is simple for others to use.