28 November 2006

More Vista - Menus

One thing I have been continually sidetracked from sorting out recently is menus for Windows Vista.

Currently we use DrawItem() and MeasureItem() to custom draw the menu items so that they have icons next to the items. Unfortunately on Vista the custom drawing of the base implementation of DrawItem() simply does not look right under Vista. It utilises the solid dark blue bar when you hover the mouse and the spacings look odd, and this is the default implementation. Also, the background colour is a little darker and the disabled text does not look very good. Without the custom draw functions it integrates much better in Vista, but I need to finish implementing some code for the associated icons.

So, I was using Windows Explorer under Vista and realised the context menus have EXACTLY the same problem. This is just completely insane, they obviously implemented the functionality in exactly the same way, but the underlying Windows API could not have been updated for this.

27 November 2006

Windows Vista - The Start Menu

A few days ago I mentioned the href="http://garrys-brain.blogspot.com/2006/11/windows-vista-new-start-menu.html">Windows Start Menu mess. I simply wasn't impressed by it (you can also see the link to the Joel on Software blog post about it).

Apparently 24 developers got their hands dirty working on this, and it still turned out the way it has. I still look at the menu that pops up with the restart, etc. and wonder who let it out the door as it is a simple pop-up menu, not really revolutionary, and it doesn't even have associated icons.

All I can say about the turning off scenario is most people know what to do with a TV or DVD player, why is not that simple?

CAM Development

In my job I develop CAM (Computer Aided Machining) software. To be honest there are very few decent resources on the web for it and it is a very closed development arena.

There are some people out there trying to change this. There are two developers (who I used to work with) called Julian Todd and Martin Dunschen who believe in open-ness in development. They have a great little blog here. You can also try out the online version of their machining algorithm.

GUI Programming

It's not often a thread on GUI programming comes up on Slashdot but there is one here. There are probably some useful links in the comments if you dig enough.

I dunno, it strikes me there is a lack of discussion about GUIs in general compared to other programming subjects, possibly due to entrenched positions about what everyone personally sees as "best".

24 November 2006

More Vista and OpenGL

I finally got to the bottom of my outstanding OpenGL problem on Vista. It seems that the drivers were throwing floating point exceptions in random places, I tidied up the code as much as possible but it still happened. The only way to get around this problem was to not unmask the floating point exceptions in the thread performing the OpenGL rendering (although most applications seem not to unmask floating point exceptions as I have discovered).

I imagine when the drivers are as mature as the XP drivers these will be but a distant memory, as in the olden days the way the OpenGL drivers handled exceptions was pretty random.

One thing I want to reiterate is that OpenGL works seamlessly on Vista with the dwm Aero experience. People still think they have to migrate away from OpenGL to DirectX/Direct3D, I cannot emphasise enough this is not the case. I know some companies still haven't managed to filter through that information, but it is the case and the computer I am using is evidence of that.

So spread the word OpenGL is fully compatible and runs natively with Windows Vista!

23 November 2006

OpenGL - The Future Looks Rosey

In the recent past the perceived as slow-moving OpenGL ARB (Architecture Review Board) handed over the guidance of OpenGL to the Kronos Group. The Kronos Group were responsible for the very popular OpenGL ES standard for embedded devices.

Something that had completely bypassed me on the OpenGL website was a new Pipeline Newsletter for the latest goings on in OpenGL land. There are currently two volumes:In the first volume we are introduced to the OpenGL Ecosystem Working Group which was formed in March 2006. This group is going to do all the work as developers we will probably find most useful - examples, documentation, testing, etc. Most interesting though is the thought of the OpenGL SDK which I will come back to.

According to the second newsletter there will be two OpenGL specification releases in 2007, with a substantial restructuring of the object model. Also there is some information about the work for OpenGL on other platforms. Just the communication from these newsletters makes OpenGL seem much faster moving.

But back to the OpenGL SDK. As the Ecosystem Working Group put it, developers want a single SDK for OpenGL that is ratified by the ARB. This would also contain the documentation and examples and more. In the newsletter article "One SDK To Rule Them All" more detail is revealed. If all goes to plan then this should be a very impressive start. One part of particular interest is the suggestion there will be more to the SDK, with layers that abstract away platform specifics. THis can only be a good thing - no need to reinvent the wheel.

OpenGL and Vista

Well, that was easy. OpenGL works seamlessly on a composited desktop with DWM. I am using the nVidia QuadroFX drivers and it seems okay.

Kind of anyway. Performance is a little off, especially in debug, but this could be related to any number of things. Also I am getting lots some weird crashes setting OpenGL colours, but that requires more investigation.

Anyway, it was far from worst case scenario.

22 November 2006

Office 2007 UI

Microsoft have announced the licensing behind the Office 2007 "ribbon-style" UI. The weirdest thing is you are not licensing the source code, you are licensing the "ideas". It seems related to their current intellectual property surge (with their recent deal with Novell).

The details are available from Jensen Harris's blog. The press release is here. The details for the license are here.

What it amounts to is this:
  • You are allowed to copy the UI style.
  • No source code is supplied.
  • You are not allowed to use the style if the application is in direct competition to a Microsoft product already using it (ie, a word processor).
  • Essentially Microsoft have to sign off on your version.
Here is a quote:
For those that want to build their own UI that takes advantage of our design guidelines, they will need a license.
I'm not entirely sure how you would show that you did not follow their guidelines which are available in order to implement a similar interface. And since the guidelines are available on the Internet it is impossible for it not to be found in Google searches and the suchlike.

I'm sorry, but this is a backdoor way to legitimise the idea of software patents, where they are identified with some sort of fuzzy or not so fuzzy description of something that most probably has prior art. I believe in the sharing of knowledge (this is not the same as sharing sourcecode necessarily).

21 November 2006

Windows Vista - The new start menu

Joel on Software has a little post about "Choices = Headaches" about UI design.

It looks at the start menu and the number of choices to shut down a computer. I personally was even more concerned about the bad design presenting it to the user (and to a lesser degree there were far too many options), in fact XP did it better. I realise that there are lots of options, but initially I missed where Restart was.

Simply cutting down the number of options is not enough I feel, someone should have sat down and actually used the design that they have foisted on the user.

20 November 2006

Windows Vista and MDI Applications

If you have an MDI application and you are going to run it under Windows Vista you could be in trouble. I mean the MDI applications that have multiple windows and are not tabbed. The child windows you will notice are rendered with Windows Basic even in a fully composited theme.

Probably where I should start is the "Desktop Window Manager" or in your Task Manager dwm.exe. This is what does the Window effects, so it is not a massive re-architecture but another application providing the extra rendering effects. This applies the effects to the main window of your application via your graphics card.

Now this leads into the MDI problem. An MDI application hosts multiple windows inside one main window. The dwm.exe provides the rendering capabilities for your main Windows, not your child windows. This is where the problem lies, your child windows will be rendered with Aero Basic and hence look out of place in a full Aero desktop.

Unfortunately this will make your application look a bit messy and inconsistent. There is no solution as far as I can tell so far, although I am dedicated to finding an answer. By far the simplest answer would be to make it a tabbed user interface, although this may not suit some applications.

Hopefully I can find some sort of answer soon.

Windows Vista - The User Interface

The user interface in Windows Vista simply doesn't feel finished. The technology seems like it is there, but the user interface lacks consistency and the final finishing touches, an subsequently feels a bit pre-release - not the final release.

Windows Explorer doesn't have toolbars any more, no problem I suppose until you want to go up one folder. This is beyond me, you have backwards and forwards (but it isn't a web-browser), and no toolbar of common functionality.

Most applications haven't even been touched from their earliest incarnations, see Notepad, Task Manager, Paint, and loads of others. These are bizarrely much easier to use, but also help to confuse you more due to the lack of overall consistency.

In most applications the menu bar is hidden until you hit tab then it magically appears. If Microsoft don't like it then they should have simply excised it from all of the default Vista applications. I imagine lots of applications with custom drawn menus look pretty weird now.

Tabbed property sheets and toolbars look really weird when you let Windows Vista perform the rendering. The colours aren't quite right and this makes it look unprofessional.

Firefox looks great in Windows Vista though - much better than it does under XP, and I was pretty happy with it there.

Windows Vista - User Access Control - UAC

User Access Control (UAC) is the crux of Windows Vista's improved security. Unfortunately it is cumbersome and intrusive, to the point that I already have it disabled.

When something tries to alter the registry expect at least three confirmation dialogs to get this to happen.

Directory permissions are very odd, mainly due to the restructuring of how everything is stored on the main hard drive. In order to provide a level of backward compatibility of directories symlinks are used (which aren't apparently as good as Microsoft were promising), but unfortunately it is completely impossible to follow them as access is always denied. This is a pain when you want to access your program data.

Finding where the data is actually stored, you'll end up using the search functionality.

Also, Microsoft have you hiding system files by default, which has been the case for years, but you always end up having to switch it on to perform basic tasks. Unfortunately with the symlinks and the sheer amount of files it is an attempt to make it unusable. This is trying to make people use the default because the option is so hideous rather than trying to make the option so good you simply must hide the files, which I feel is the wrong way to approach just about anything.

Windows Vista and Visual Studio 2005

This is the most important aspect of my Windows Vista installation. You have to confirm that you want to run the installation - par-for-the-course - but you have to run it as administrator.

Once installed I knew there were issues with Visual Studio 2005 and Windows Vista after the numerous warning dialogs that Windows Vista pops up. So you use this to look at the Microsoft website like it suggests, but all you get is a place-holder. Not really a lot of good for the developer trying to confirm all is well in Vista-Land.

Well, I loaded the C++ project up and built it. Incremental rebuilds seem completely broken for some reason, somehow the pch (pre-compiled header) gets corrupted. Then the next problem is you can't compile individual C++ files.

What I have tried doing is increasing the access by running the devenv.exe as administrator, that didn't seem to help.

So I thought I would try out the Visual Studio 2005 SP1 Beta since it was available for download and after all couldn't make it that much more useless. This was a nightmare to install, make sure that you run it as administrator by using the right-click context menu. Be aware that this took an hour and a half to install, and I won't know until tomorrow whether it was successful or not. I hope this fixes the problems with the C++ elements in VS2005.

Installing software on Windows Vista

I should be grateful for Vista giving so many headaches - it has given me a mountain of blog-fodder, and has also taught me some stuff I did not realise.

I can say from experience installing software is quite a pain as you have to confirm everything. When you start to run an installer, it locks up your session until you confirm or deny. And it actually requires a secondary click on another confirmation dialog...

I realise they are trying to make Windows more secure with these extra confirmations, but it can actually become counter-productive. Once you have seen a similar looking dialog millions of times with more or less the same text you just click automatically without reading it, simply mentally blanking it out. This is even more dangerous, you could then be confirming anything.

Most installers work fine on Vista though, which is a relief even if you have to confirm everything. If you have an installation created wit Inno Setup, it looks fantastic.

Beware though - anything using Windows Installer runs terribly slow. I guess it must be doing more work somehow. Just be aware installing stuff requires lots of coffee breaks(!)

Fingers crossed the problems can be fixed with a point release of some sort.

Installing Vista - Part 2 - UPDATE YOUR BIOS!

Well, I now have Vista installed after swapping computers. Something catastrophic happened with my own computer's motherboard whilst installing Vista. After a day trying to get the computer to play ball a new BIOS was installed and Vista could also work properly on that computer.

So - a word of warning for installing Vista - upgrade your BIOS beforehand. I have no idea why the BIOS is incompatible as the computer is only 18 months old, but at least it now works, and I hope this post stops people heading down the same blind alley.

The boot process is definitely taking much longer than Windows XP. Installing most software is also mostly successful. The ubiquitous TortoiseSVN works seamlessly.

17 November 2006

Installing Vista

So Windows Vista was released on MSDN Subscriber Downloads today. I offered to be the Vista guinea pig and install it to make sure everything works before it hits general release.

Two identical computers one I spent all afternoon trying to get to work which could only amount to 4-bit colour 640x480... I tried swapping graphics cards - no luck. The other identical twin computer, pop the disc in and bosh it is installed and looking all Aero-ey. Even swapping the graphics cards between the two computers seems not to have helped. This is a bizarre turn of events, especially as XP seems to have run and installed no problem. It was not a driver problem either since it seems to have installed and understands the cards, but it seems to be an IRQ conflict of some sort, I haven't seen one of them since the old DOS days :D

Also, you still have to use an external source for your RAID drivers. I was hoping that was not still the case. Hopefully, it will all be solved by a clear head on Monday.

GUI - Enlightened Widget Library (EWL) - Enlightenment

The Enlightenment project has been a cutting edge desktop environment for many years. Although it is not seen as cutting edge any more due mainly to 3D accelerated eye candy, it is still very powerful and interesting, also it is really very efficient.

Currently the entire product is in heavy development but it is relatively stable (see eLive to try it out with a Live CD). The system is designed around a series of libraries some of which are more complete than others. Recently it was also revealed that Yellow Dog Linux was putting together a Linux for PS3 and it was using Enlightenment as the default desktop manager. This also will help provide funding for the project.

Anyway, on to the point of this post... A series of tutorials have just become available for the Enlightened Widget Library (EWL) portion of Enlightenment. This provides the widget toolkit for the environment. These are introductory tutorials and can be seen here:
Part 1
Part 2
Part 3

The main development community can be accessed here. The way that Enlightenment has been put together shows obvious care and thought, after all you don't have to necessarily have the full desktop environment to use just some of the libraries.

16 November 2006

Office 2007 UI Bible

On my Internet travels I walk randomly through following links until I find something interesting. That is what I have done:
The Office 2007 UI Bible

This is a series of many blog posts that look into the reasoning behind the new Office 2007 UI. It covers the history of office GUIs, the new design, and how to extend that design. There are lots of interesting points but it will take a long while to get through!

15 November 2006

GUI Toolkits - F3 - Form Follows Function

F3 is actually a declarative Java scripting language with static typing for good IDE support and compile-time error reporting (unlike JavaScript...), type-inference, declarative syntax, and automatic data-binding with full support for 2d graphics and standard Swing components as well as declarative animation. You can also import java classes, create new Java objects, call their methods, and implement Java interfaces.
The blog of the lead developer is available here. This looks like another interesting Java project, which is developed by Sun, so it will be open-sourced very soon.

There are lots of demos available on the blog, so you can see the work first-hand. It kind of reminds me of Win32GUI Generics. It looks pretty interesting and something new for Java, so it would be something to keep an eye on.

Java - Exciting Time Ahead

It's only a couple of days since the news that Java is going GPL. The kind of initial flurry has died down but the substance is starting to come along.

The OpenJDK project is off and running. There are two parts - the Java Compiler and the Java Hotspot VM.

The GlassFish Project is for the goal of building open-source, production quality, enterprise software. This project is already a year old.

I've downloaded some of the code already to take a look at it. It's quite nicely written and as such is pretty understandable for such a complex project.

GUI Toolkits - XULRunner platform

You can't have escaped this platform, you might not have heard about it, but it provides the basis for Firefox, Thunderbird, Democracy Player, and SongBird (which I mentioned before and it's continuing apace). A good place to start is the Wikipedia article on XULRunner, it provides the links you need to get started.

XULRunner is not simply a user interface but probably could be described as a platform like Microsoft's XAML/.NET or like Java's virtual machine (very loosely) or Boxely from AOL. Essentially it provides a layer of abstraction from the underlying architecture in order to allow the developer to work on the actual coding. XULRunner is the framework to allow standalone applications to be developed using the XUL language used for Firefox extensions.

Currently XULRunner is in beta with version 1.8, but with version 1.9 next year they recommend that for production releases. Along with the 1.9 release the Gecko rendering engine is also getting updated with some additional nice vector rendering.

The framework provides a myriad of features. There is built-in spell-checking, networking, the aforementioned Gecko engine, web services, storage/SQLie interfaces, UI, the ability to embed in another application, and also the Python bindings (full version forthcoming). I think the reason that I find this quite interesting is the two applications I have used most at home and work in the past couple of years have been based on this. I just wonder how far it can all be pushed for heavyweight desktop application development.

You can view a list of applications based on XULRunner here. When the final proper release of 1.9 is out I imagine there will be more people willing to use it as it won't be all belt and braces, there can be solid tutorials and the suchlike.

With so many of these types of projects around at the moment, I am wondering when the "survival of the fittest" will start to kick in. Admittedly, XULRunner has a very strong chance since it is a platform for Thunderbird and Firefox.

14 November 2006

User Interfaces - Vector Icons and Toolbars

I'm sitting here wondering if there is anything out there to use vector based graphics to render some icons or toolbars. I've been Googling for something like that out of curiosity - and I seem to have come up dry.

The only one I have found that seems to do what I am expecting is the Juce Library. In fact in most libraries creating and maintaining toolbars and icons is pretty laborious (especially in MFC), so you tend to write your own wrappers for functionality. Myself, I have written code to automatically generate hot and disabled image lists in MFC so only one bitmap needs to be edited (I have also written this code more than once - problems of proprietary code).

I know there is talk that Vista wants everyone to use vector icons (which is a problem for all those people who currently use bitmaps), but there seems to be very little information out there about it.

I realise most people try to write fully featured GUI toolkits, but there must be smaller implementations of specialised functionality out there? Kind of like common building blocks? I suppose one would be a rendering engine using system theming, another being resource management, another rendering those resources...

13 November 2006

More Java

Here are a couple more articles to do with the open-sourcing of Java with a bit more substance. One from InfoQ and another from eWeek.

But that isn't what this post is about. I've discovered an XP look and feel style for Java called WinLAF as it was felt the native look was not sufficient. Reading about Java 6.0 though suggests that a big leap forward for native Windows look and feel is being made for this version called Mustang, also taking into account Windows Vista.

There are a myriad of enhancements for the new version of Java here including lots of alterations for Swing here. It links to all the related bug/enhancement reports. An outline from The Register is also available. The new rendering engine uses the Windows UxTheme DLL.

There is an article with plenty of screenshots of Java 6.0 aesthetics.

Java - A Gift To Free Software

After a few weeks/months of build up the the press are now reporting on Sun open-sourcing Java under the GPL license. This is free as in freedom. This is great news, especially in the current climate brought about by Microsoft in recent weeks (with the Samba team now pubic in their opposition to the deal). Overall, this is great news and I imagine this could push Java from strength to strength. Pair this up with the Adobe's EMCAScript donation to the Mozilla Foundation, I think this could be a very exciting time for the Java family of products.

This has also got me thinking about Java user interfaces. The last time I looked at them many years ago they were more of a Motif style of user-interface, certainly not the native look'n'feel. I wondered how far they have got now. I am a user of Azureus the fantastic BitTorrent client written in Java, the interface is not quite native, but has been getting closer and closer in each subsequent version. Apparently it is also possible to build Azureus with the GNU Classpath library supplied with the GCC.

There is some documentation about Swing look'n'feel available here about some default theming. There is also a look'n'feel Java website here. There certainly seems to be a lot out there that runs pretty close to being native looking, but it seems to fall short in some places, I think this warrants some more investigation...

11 November 2006

Free Anti-Virus

UPDATED

Damn, I wake up this morning and switch on the computer to discover that AVG are discontinuing the free edition of their anti-virus suite as of January 2007.

START UPDATE
Well, the message as it turns out was a bit misleading. They are discontinuing 7.1 free edition and are advising the users to update to 7.5 which is still free. Click the link in the first paragraph to download - incidentally it uses wxWidgets for its user interface.
END UPDATE

It has been a fairly decent product, especially for the price, and has meant that I don't have to install one of the myriad of Norton Security packages that I own (normally given away free with computer parts). I suppose I could go and install those, but I am not really pleased with the software when I have used it. Mainly due to Firefox AVG Free Edition has only spotted one virus attempting to get on my PC in the past few years - and this is definitely not from being a poor anti-virus.

Anyway here is a list of free alternatives for all of you in the same position:
  • It seems Avast is the most fully featured and professional program you could choose.
  • Avira AntiVir is also a well respected free anti-virus alternative.
  • And now an open-source alternative:
  • Clamwin - A free open-source anti-virus engine. It is a static scanner... but pair it up with...
  • WinPooch is a dynamic monitoring engine that you can use with ClamWin which gives you all the benefits of dynamic monitoring.

Well, that is at least a list to be getting on with. Or you could believe Microsoft's Jim Allchin that you do not need Anti-virus in Windows Vista...

09 November 2006

Code Jenga

Imagine a game of Jenga except every fourth piece is booby-trapped.

Anyone who has worked on a suitably mature commercial codebase knows exactly what I am on about. You are severely restricted in what you can change and you are always having to look for unforeseen consequences.

That is why it is like a game of Jenga, you remove one piece or replace it but you run the risk of it all toppling down. I guess that is why clean slates are probably so appealing to programmers, as you reach a state of coding entropy where it is collapsing under its own weight.

How many times have you tried to rewrite and replace something that was badly engineered and found that there were numerous side-effects. Regression and unit testing are great things, but marketing and sales don't care about that, and it all costs money after all.

So next time you are banging your head up against a brick wall with what you are working on, it is just Code Jenga.

08 November 2006

Multi-Core Programming

An interesting article that passed my eyes in the past couple of days was this one. It is about Valve's approach to multithreaded applications, and it seems that they fought against it for as long as they could. Since I've worked in industry I've worked entirely on mutithreaded applications and this probably is under the coarse grained model, but it looks like the fine grained model is going to get more important in the next few years and it is something we are all going to have to work out.

Visual Studio 2005 and TortoiseSVN Subversion Integration - Update

See the update here.

Hi there everyone,

Here is an update to the TortoiseSVN integration into Visual Studio 2005. This update is a fairly major change since this will only have the changes to external tools, menus and toolbars. This means when you import these settings you get a new menu at the top of the screen (with icons), a new toolbar with proper TortoiseSVN icons, and context menus for solutions and files.

You can download the new settings file here (it is 9k in size compressed). All you need to do is go to your Tools menu and choose "Import and Export Settings" and follow the instructions. Ensure the tick box for which settings to import are all ticked.

Here are the original posts from the Subversion integration (and old files are still available).

DOWNLOAD SETTINGS FILE

Edit: Now there is a yet another update - this is now 7k. This makes a minimum of changes to your IDE as humanly (or inhumanly) possible. There is still a deficiency in the .vssettings that messes up the build toolbar comboboxes, but this seems unfixable in the current format.

Oh, and don't forget to leave some comments as to whether this new stuff is all working for you (along with the new "Add Solution To Repository" functionality.

Helpful Libraries - ModAssert

Anyone who has programmed in MFC and ATL will have encountered the ASSERT macro. Due to it being rather simplistic and essentially a one-size-fits-all.

I was pleased to see someone has developed a very comprehensive assertion library which makes it into a really useful debugging tool. I first encountered the project with this article on CodeProject. It allows compile time disabling/compiling out, and also run time diabling. It also provides levels to give a granularity to your debug output. Also you can use it to output log information which can be invaluable for debugging (with lots of useful information like threads and so on).

The library is fairly large and comprehensive, but since you should compile it out for your final release build it isn't really a problem at all. It certainly should be useful for C++ developers.

The Sourceforge Project is here.

06 November 2006

50 With A Bullet

I didn't even realise until just now, 50 posts down and still no idea what I should be concentrating on. Obviously this blog has a real GUI flavour, but I can't help writing about random computer subjects like media PCs and interesting new things.

I still haven't finished my trek through the new world of Vista. Not only the guidelines, but also getting a more in-depth look at the C API headers and getting some documentation together about it.

There are also some GUI toolkits I haven't got round to looking at like the Adobe Open-Source Libraries and SmartWin++. Also, I still feeel like I need to look at lots of the others in more depth. And most importantly I want to get some source code out there rather than just talking about it all the time ;)

Anyway, here is to the next 50 posts.

GUI Toolkits - Boxely

My discovery of this toolkit was from the article posted about the Firefox Kid. At the end it linked to the blogs of the two Parakey developers Blake Ross and Joe Hewitt. The article was abou Blake Ross but it turns out Joe Hewitt's blog was really the more interesting.

This is how I discovered Boxely. Joe Hewitt's posts about it are here:
His post about the release of Boxely.
Boxely - Part 1.
Boxely - Part 2.
Boxely - Part 3.

Boxely was envisioned as a lighter weight more powerful XUL type UI toolkit. It is an XML and Javascript toolkit for creating desktop applications in the same family as XUL and XAML. It was initially put together for the AIM client, and to allow extensibility. Reading the articles it seems that Boxely's existence is a lucky break. Due to being integrated with more AOL services over time it seems that it is more bloated than it started with.

It seems to be capable of some really nice graphics and also integrated animations. I don't know how much XUL/XULRunner has improved to close the gap on the features that Boxely has. It's almost a shame that the earlier versions were not released without the COM stuff as it all sounded pretty good.

Boxely is available for download now and seems pretty capable. I, however, don't know if it is worth investigating further as XULRunner seems to do a pretty good job with stuff like SongBird. In fact I think the sentiments and vision behind the initial design is more more interesting than perhaps the final product.

05 November 2006

Home Theatre PCs - MythTV

MythTV is a Linux-based media centre program, but it also gives you so much more than that. I have to say that this is better than any other media centre software out there. Why is this?

It has been designed from the outset to provide a client/server architecture. This probably doesn't mean much to many people at the moment, but it is certainly the way forward. What you have is a back-end that provides the media content, then you have front-ends that allow you to access that content.

The simplest install is to have the back-end and front-end on the same computer, providing the same functionality as any other media system. If you plan to have more than one front-end you have have the back-end on another computer, but both will be able to access it. The back-end is also responsible for recording the TV and cataloguing the data, so you can stick a few TV cards in there and make simultaneous viewing and recordings. And for your front-end you can make it as powerful or lightweight and silent as you want as you can limit the moving parts when the brute force (apart from decoding) is provided by the server.

The real power comes from the client/server architecture, as the front-ends can be implemented in anything that you can connect to the MythTV protocol. This is most apparent because it easily has a front-end for web access (meaning you can schedule your recordings remotely), there are also other smaller front-ends to the default and even a small one for Windows which is functional. The back-end server software is pretty much rock solid because it builds on the foundations of Apache and MySQL.

Recently version 0.20 was released with a whole raft of new functionality including OpenGL UI rendering and a more library based architecture. You can see the rather long changelog here.

If you want to try this out you can also do this without installing it thanks to the wonders of KnoppMyth. This is a Knoppix based distribution on a CD/DVD with MythTV set up so you can try it out and if you like it install it.

There is also MythDora a Fedora-based MythTV distribution. This is based on Fedora Core 4, a little out of date.

There is an excellent resource for getting MythTV installed for Fedora here. This is highly recommended and comprehensive.

Also, for the Ubuntu people out there, you can use this resource to get the information you need.

Lets not forget the excellent documentation and the Wiki. You can see some themes here and some screenshots here. Also there are thriving communities including the forums and mailing lists at MythTV itself and KnoppMyth, and there is also MythTV Talk.

And here is a screenshot for the curious:

Home Theatre PCs - MediaPortal

And now for a complete change of pace...

One thing I particularly like doing it fiddling about with home-made HTPCs (Home Theatre PCs). I've built myself a little system for a little over £200 involving an AOpen XC-Cube. This became necessary when we moved house and the main computer was moved away from the TV.

I decided to use Windows for the OS for expediency's sake and as the graphics chipset on the motherboard was not well supported in Linux. I could have gone for Windows XP MCE Edition, but I already knew of an alternative I preferred.

Check out MediaPortal for a fully featured media centre system that is fully open-source. This project actually grew out of the well respected XBox Media Centre (XBMC). It looks and feels great and has full compatibility with things like MCE remotes. They've recently updated to an unstable build of 0.2.1.0 which I have found completely stable for my own uses, but I tend to only watch TV/TV programs on it. Also, more excitingly they have started work on the TV Server project so that the TV cards and content can be hosted on a back-end server and the actual media PC can be as trimmed down as you can make it.

There are also a variety of skins to make it look really good, a lot of which broke with version 0.2.1.0 as there were some substantial changes to the XML format. Here is a list of some working ones:
  • MCE is currently missing (the one that looks very similar to Windows Media Centre Edition) but will be reinstated to the release very soon (it is probably already accessible under solution).
  • MePo skins - These are fantastic featuring the new mascot type character MePo.
  • Simplify - A bit of an understated skin.
  • Replicant
  • SimpleMP
  • Vista Style MCE
  • KIS - Looks incredibly impressive but I have not had a chance to download and play with it yet. There is KIS, KIS Dark, and the KIS SDK for plug-in pages.
MediaPortal has coverage for emulators (I had a lot of fun with this and my arcade joystick), built-in games, weather, music, DVDs, TV, radio, films, and numerous plug-ins. Since it is also simply an application you can install and use it on any supported PC. It may not be the most technologically advanced or have the best architecture, but it does the job more than admirably and more importantly it is as easy to use as running the installer and following the setup wizard.

03 November 2006

Windows Vista - User Interface Solutions



I remember reading online when Apple first released their new remote with the new Intel iMacs/MacBooks/MacMinis that people said it would be no good because it didn't have enough buttons, and after all their Windows Media Centre remotes had 46 buttons, so it must be better. But when people start using these user interfaces (after all that is what they are) I somehow doubt the 46 button monster is the winner.

So you are going to write something for Windows Vista? I suppose you can jump in with both feet and see what you end up with, you might get lucky. Or I suppose planning could be the best way forward. When developing for any platform you need to follow the human computer interface (HCI) guidelines that give you the general rules.

In my previous guidelines post I provided links to various guides that are available. In most cases it varies from company to company as to the UI design guidelines and if you are really unlucky it comes down to you.

The problem with Windows Vista is a lack of consistency when trying to come up with design guidelines for your own project. For such a new platform you have to look at the existing applications in order to decide what is best practice.

With Windows XP you can see the problems already. Look at the differences between Windows Media Player, Office 2003, Visual Studio .NET, and now IE7. They all follow different looks, different usage paradigms, and are simply inconsistent. For IE7 they have done away with default menu usage which is completely different to what is expected for a Windows application. Even the way toolbars and buttons look and feel is not quite the same. I suppose that this can be seen as paving the way for the Vista UI transition, but we are using XP not Vista. It almost suggests there is no transition path satisfactory for both platforms.

One of the eye openers when you first start using Windows Vista is a complete lack of coherency and consistency. I know people would prefer to let their imagination run away unfettered, but guidelines are there to bring the worst applications up to the minimum standard, not drag the best ones down.

The lack of consistency is shown at its best in this blog post by Dave Vronay. In the past we have had the simple yet powerful design paradigms of menus, toolbars, and recently the more extended multifunction type toolbar (like with the search bar). Looking at the various programs available built-in to Vista they all seem to be pulling in different directions with their usage. Sure, not every program will be shoehorned into a limited and strict user interface.

Lets have a look at three of the main applications that people will see in Windows Vista.

Internet Explorer 7
This will be the one most people see. There seems to be odd behaviour where a new toolbar row can be inserted with just one item on it which seems to appear when there is only one tab (apparently a PDF bar I don't remember installing). Whereas the tabs row seems to have loads of options and information crammed onto it. The help is accessed via a chevron on the right hand side. Menus still drop down when you select an item which has a triangle next to it. I am finding the only thing that has really changed is the position of the menus, and they still exist but they do not have text - they use icons, and they have randomly grouped stuff together in an overcrowded tab row.



Windows Media Player 11
This has always been the odd application out for years, looking completely different to standard window apps, with random sporadic dynamic changes to display a proper window frame or something equally as useless. It has no toolbar as such, although it could probably be described as at the bottom of the screen... The menu tabs across the top switch you into different views for different operations and the proper menus are hidden away on the right click if you do not choose the standard window frame. I think it really is a case of one application trying to perform too many tasks.

Office 2007
Now enter the ribbon as a menu and toolbar replacement. This could be really good or really bad, I can't make a judgement to decide what is more productive, it might turn out to be good. But again it is another different way of controlling your application. If these were the way forward, surely the default Microsoft developed applications would also be going down the same route?


In summary, you can (or maybe not) have menu bars and/or toolbars, use tabs to switch functionality, do away with menu bars, mix up toolbars with tab bars, have icons instead of text for menu bars, or allow menu bars to pop up randomly, or use a ribbon which is kind of like a menu bar and a toolbar except more dynamic. Confused? You should be! And that is only three applications!

So the developers making the applications have to make a decision, what is the best course forward for their program taking into consideration the bountiful supply of ideas from Microsoft? I can guarantee not one of them will come up with the exact same answer. I've always followed the K.I.S.S. (Keep It Simple, Stupid) philosophy, and I am not entirely sure how to apply it to this situation.

Over my next series of posts I will be digging my way through the UI guidelines of Vista and trying to navigate and at least get clear in my head the way forward.

02 November 2006

What to do after being ludicrously successful?

Read the article: The Firefox Kid
Blake Ross helped make Firefox one of the biggest open-source success stories ever. Just wait until you see what he's up to now.

One of the founders and perhaps they should be called visionaries of the Firefox project has revealed what he is working on now. It is that integration of network and personal computer into something more useful, sometimes referred to as the web-based OS.

He is one fo the founders of the Mozilla Firefox project (if you think about it, IE completely dominated and there was noone left to fight), a self-taught programmer, a believer in open-source, and he is only 20 years old. Kind of depressing (if you are older than him) but uplifting (something good for the future). I recommend reading the article which kind of reveals where he is coming from and where he wants to go.

Anyway, the idea he has is called Parakey (no website yet), and it is supposed to be integrated and synchronised storage for offline and online work, as well as sharing information over the Internet. It is supposed to take the headaches for getting content from whatever device and storing that content for use. It wants to be as simple as possible for managing media and allow non-technologically minded people to use those sharing services that are otherwise out of their reach. Then the content would be accessible from the same interface whether you are on your home computer or any other around the world.

It seems like a decent idea providing it can come to fruition, but these things don't always live up to the grand dreams. It's an interesting interview anyway.

01 November 2006

Open-Source wxWidgets IDE - wxDevC++

In a previous post I have mentioned the splendid free IDE Code::Blocks, but in the dark old days of a few years ago, before Microsoft gave stuff away for free and development was quite an expensive endevour, there existed DevC++. It was a free IDE written in Delphi that provided good library management and also was an IDE for GCC in Windows.

Over the years other IDEs have sprung up and essentially overtaken Dev-C++ in terms of features and quality. Then someone decided to make a branch, one that was going to have integrated GUI editing. This project eventually became wxDevC++.

A new version has just been released with even more features from wxWidgets integrated into the GUI editor. Most importantly it now has support for Visual C++ compilers (v6, 2003, and 2005) which is interesting. I need to go and check out this IDE in more detail, but it is good to see it is more than alive and kicking. If you are a wxWidgets developer it is one of the most comprehensive integrated IDEs for developing and looks like it will be going from strength to strength judging from the changelog for this version.

And here is a little screenshot with the GUI editor up from their website: