31 January 2007

When we will grind to a halt?

With my problems with Vista I have to wonder when the world will grind to a halt. I realise it is a very pessimistic view and I know it won't happen, because it will probably just cause more hardware churn (the buying of new hardware). Those that know what they are doing with computers though will still plough their own furrow with well designed solutions.

The problem I am getting to though is Visual Studio 2005. Initially we were really impressed with it, you can look inside of arrays and it allowed settings to be exported and automated. Unfortunately months down the line I think it must suffer from digital entropy. The .vssettings files seem to rarely work now even though there is nothing to suggest why the settings will not take. The bscmake.exe continually fails, sometimes with an out of memory exception. The incremental linking can sometimes take over 20 minutes for a simple one file change. The STL is simply too slow if you rely on the speed of the STL operation. The Intellisense update can cause the UI to freeze up and it rarely builds the symbols correctly meaning you can be left with no tooltips. VS2005 uses masses more memory and gradually slows down.

The thing was when we installed it, there was definitely a lot of bonuses, but after having to use it for a few months it becomes incredibly difficult to defend it. I think the IDE is now geared towards CLI/.NET development so it probably works seamlessly for that, but for C++ only it seems to be lacking and going backwards in some instances by forcing some "secure" programming on you.

Unfortunately it is still the best IDE for developing on Windows and there is very little to touch it. Maybe in the future something like Code::Blocks or Eclipse could catch it, but it will probably always be ahead.

30 January 2007

GUI Toolkits - CEGUI

CEGUI or Crazy Eddie's GUI System is not a typical GUI toolkit. It is designed primarily for gamers to embed a GUI interface into graphics windows (normally in order to use this they would be fullscreen or you would use the platform toolkit).

The GUI toolkit itself has backends for DirectX 8.1 & 9, OpenGL, OGRE and Irrlicht. This allows you to then overlay GUI elements into your program window. The advantage of being self-rendering is that it is then cross platform. Currently it supports Linux and Windows and Mac OSX support is on its way. The nature of the renderer backend means it would be trivial to use it in something like OpenSceneGraph.

With the theming ability of the engine it is possible to use this toolkit as your start screen menus for games or even more.

The toolkit itself is written in object-oriented C++ and looks really quite clean from the examples. For its niche it really doesn't have masses of competition, but it does not preclude it from being and impressive solution.

29 January 2007

Vista Is A Coming

Vista is released to consumers tomorrow...

I've been using Vista for two months now and it has been nothing but a pain. It has actually slowed my rate of work by virtue of being slow, unresponsive, and needlessly verbose.

Today I ran a Cygwin script which created some text files. Now I can't get the permissions on the directories will not allow me to remove them, it sends me through numerous UAC dialogs asking for permission and then it throws up an error message with a cryptic hex value. Even editing file and directory permissions fails to alleviate the problem.

It's not just a new problem encountered day to day, it is a problem that slows you down. Installing and executing software is massively slower, I guess due to some security changes. It is all the small things that add up to a big annoyance as there is not one thing that is excessively bad (although UAC is close to that).

The best problem I have on Windows Vista is that I can't reboot because it breaks my C++ compilation in Visual Studio 2005. Sounds mad, but it is completely true, the precompiled header or something causes an internal compiler error when trying an incremental build even just changing a single .CPP file. Unfortunately I can find no relevant documentation on this problem.

28 January 2007

Comparison of environments

This article is an interesting look at how the development environments differ by platform. It covers Windows, Mac OSX, and BeOS, from a practical point of view for using it to develop a cross platform game framework.

27 January 2007

PC Design

There is a great little blog post here about the lack of design leaders in the PC world. It is not just the physical desgn but the UI design that needs to be considered...

26 January 2007

GUI Design - and how to make computers easier to use

Today I have had the pleasure of working on a 23 inch Apple Cinema display. It runs at a lovely 1920x1200 resolution - that is a lot of desktop real estate. The reason I wanted a larger monitor more than a new computer was that I was struggling to use the smaller monitor for all my work.

The sacrilege I am bestowing upon this beautiful piece of hardware is that I have to work on Windows (and more specifically the beast that is Vista). What this showed me is Windows is rubbish for working on large monitors in any meaningful way.

The problems? Simply most software designed for Windows is designed to work in full screen mode (and much of the development tools encourage this). In most instances this is complete rubbish when you are working on a large monitor. Even the two monitor configuration encourages you to still work with each screen using full screen apps.

The main problem is that the window handling and the taskbar itself just isn't up to the job of context switching. This is partially because MDI interfaces (either traditional or tabbed) are controlled by the application not the OS. The actual windows are also not broken down into functional elements. Even editing in Word encourages you to use fullscreen.

From the demo I had of Mac OSX it deals with multiple windows much better, also all the time I used Linux (KDE and Gnome) it felt like it was geared for large screen use. It is partially the reason that GIMP works much better on Linux than it does in Windows and people using Windows have immese problems with the UI.

If large screen computers somehow become the norm I think that Windows will need to come up with a more intelligent way for the user to use the space. At the moment the resolutions we have are great, but having a more sharply rendered image is of less benefit than using the extra space more efficiently.

25 January 2007

CAM stuff

My day job is spent writing CAM software. There is a great little hacking site called Hackaday. Those two sentences may look completely unrelated but it has some great articles about making your own tools (CNC machines) to do machining.

Here is a list of CAM related articles:
How to build your own CNC mill
Make a badass CNC mill
Fab@Home
Snowboard CNC machine

Fab@home looks really interesting as it is open-source and it is planned to manufacture itself.

24 January 2007

KDE Happenings and Version 4

Recently there has been a wealth of information about KDE4 which is going to be the new version based on Qt4 with loads of new technologies. I thought I'd put all of the recent good links into one handy place.

KDE in Suse Linux 10.2 is reviewed here. It has some really impressive screenshots of version 3.5 which doesn't even have the splendid new features. It features the new start menu type thing called Kickoff, check out the link to see it animated.

Bizarrely what kicked off this wealth of information about the progress of KDE4 was someone making a blog post saying there was no progress and no future progress in desktop Linux. It was completely misguided, but it started an avalanche waking up a dozing beast, one of the KDE developers made this post.

A list of features targeted at KDE4 can be viewed here.

There is an article about the SVG rendering in applications here.

You can view an article about the KOffice 2.0 technologies here.

There is now a proper installer for running KDE on Windows seamlessly. This is detailed in this article. Also there is now KDE for Mac (so it integrates properly into OSX and not like those X11 applications). There is some coverage of this here. Both of these are possible thanks to Qt being GPL on both platforms now at version 4.

Finally there is an article about the new job progress user interface. It looks like it could be quite useful.

Overall, exciting times are ahead for KDE and the Linux desktop.

More on STLPort and Microsoft STL performance

Just a short post to add some clarity to my previous post on the subject of using STLPort with Visual Studio 2005 instead of the Microsoft STL implementation.

The code used in my observations is a C++ MFC based application. The STL used are mainly containers with virtually zero iostreams code (or at least so little it will not change the results). The container usage are from very large long-lived containers through to many short lived small containers and everything inbetween. Massive amounts of containers are created throughout the program lifetime. Luckily most containers are created in thread local storage and gets freed when the thread has done its work. The thread allocators use the allocator provided in STLPort.

The difference in performance is marked for what is essentially lots of insertions into STL containers and lots of reads from them. When we are talking about a 20% performance gain by using STLPort it is quite scary, but also means switching to Microsoft STL would be unacceptable to users because the slowdown would be so noticeable.

23 January 2007

OpenGL In Python

pyOpenGL provides access to OpenGL in Python.

PyOpenGL includes support for OpenGL v1.1, GLU, GLUT v3.7, GLE 3, WGL 4, and Togl (Tk OpenGL widget) 1.6. It also includes support for dozens of extensions (where supported in the underlying implementation).

Related (and unrelated) 3D libraries are also listed here. It includes Python bindings in OpenSceneGraph, Irrlicht, OGRE, and more.

GUI Toolkits - For Python

Python is a great interpreted language for either scripting or proper applications, and I've mentioned it a few times in the past, it really is that good.

I came across a great site about GUI kits for Python. It gives you suggestions based on your requirements by filling out a mini form.

PyGUI - It is planned to be a cross platform GUI library implemented specially for Python. Currently it has Mac OSX Cocoa and X11 using GTK implementations.

Tkinter - the default GUI installed with Python. It provides a thin layer to Tcl/Tk.

wxPython - I have mentioned this a few times already. It is the Python bindings for wxWidgets making it cross-platform and with a great depth of features. You can also use a Python written IDE and RAD GUI designer BoaConstructor.

There are many more listed on the page covering the GUI designers as well as the toolkits.

22 January 2007

NeoOffice 2.1

In the previous post I mentioned NeoOffice - the Mac-based version of OpenOffice.

In the first quarter 2007 there are plans to release version 2.1. This is going to integrate the changes from OpenOffice 2.0->2.1, which includes new scripting and lots of improvements. Not only that it will also have support for Office 2007 documents, and execution of VBA scripts in Excel documents.

Overall it looks like NeoOffice is pressing ahead with substantial improvements and features. It's good to see that Mac OSX has an accomplished office suite outside of Office for Mac.

Mac OSX

I'm depressed as today, I had an extended demo of a MacBook Pro. One of the guys at work has just bought one, and now I want one...

It is astonishing simply how good OSX is. During the demo I saw how much it works like the way I want to use a computer. When people who have used it say how good it is they are not exaggerating and don't have an axe to grind, they just have a computer that makes their life easier.

The thing I noticed most about it is that MDI is alive and well. It's not like the Windows MDI where the application encapsulates the sub projects, the operating system in OSX does the heavy lifting. With this it also makes it much more structured and intuitive. I can imagine working with loads of Photoshop documents and text documents at once and it all being being intuitive. It is possible to see all the documents open at once with a zooming out style view, and it is also possible to see all the documents for a particular application. It may not look as 3D

Programs start very quickly and stay memory resident for fast access if necessary. It is always clear what is going on and the user interface does is always responsive.

All of this and I haven't mentioned how good it looks. It has lots of great touches in the UI but none of them take over or clutter the display. Screenshots dn't do it justice - you simply have to see it in the flesh.

One great bit of software for OSX is NeoOffice which is OpenOffice in Mac clothing. It integrates really well into the way OSX works. All developers involved deserve kudos for making OpenOffice into NeoOffice which I think is actually an improvement.

One bit I wanted to see was X-Code for OSX development since I had heard so much about it. Unfortunately it is not installed by default.

Now I have to go off and save lots of money.

21 January 2007

For the creative types - Ubuntu Studio announced

An interesting development from Ubuntu is that this April they are plaaning to release something called Ubuntu Studio.

It is a multimedia creation derivative of Ubuntu. It "is aimed at the linux audio, video and graphic enthusiast as well as professional". Sounds interesting, lowering the bar for peopel creating content in Linux, but also raising the capabilities at the same time, hopefully giving much needed exposure to some of the related projects.

The new derivative has a wiki where information and planning has started. I like the graphical design and new logo, but that is just shallow. Packages planned to be in the distribution can be seen here.

Windows Vista - Superprefetch

Vista has a new Superprefetch feature which is supposed to help launch applications faster because it is supposed to predict the future.

Essentially it will give a perceived boost in performance to the user by predicting which applications may be run next and prepares for it.

I don't know really whether this is such a great idea - surely it would be better to help developers make applications that load faster rather than trying to paper the cracks? And surely this will effect processor performance further?

The application I work on loads in less than a second and is usable and can load substantial files of half a gig of compressed data and be ready to work with in under a minute. Also, because of the multithreading the program is still usable whilst the loading process is going on.

Visual Studio 2005 Service Pack 1

Microsoft released the first service pack for Visual Studio .NET 2005 a short while back. You can download it here. It is available for all flavours including Express through to the Team editions. Upon running it I am not finding it any faster or more stable though, at least it hasn't broken MFC like the beta version of SP1 did.

Also this does not cover Vista compatibility, which is a right pain. They have released the Vista fixes for SP1 as a beta at the moment. It does improve a few problems like cancelling compilations actually working without needing to kill the cl.exe process from Task Manager, so it would be worthwhile if you are working on C++ in Vista.

19 January 2007

Crystal Space 1.0 Released

Back in the olden days when I was at university I remember one of the projects I had a play with was Crystal Space. I think I discovered it through the old 3D Engines List.

Finally after ten years version 1.0 of the Crystal Space library has been released. It's great to this see this finally happen as it has been so close for so long (in fat it was pretty usable not long into its development). One of my favourite technologies it has is Portal Rendering, this was added because the original version of Prey (before it got canned and eventually released recently). At the time it was going to be revolutionary, but I think that style of rendering can produce some cool and crazy effects.

GUI Toolkits - wxWidgets - The Future?

wxWidgets has been going now for getting on to 15 years. Some of the people developing it and some people using or evaluating it have said that it is old fashioned in design. This is part of the legacy from being based on a similar design to MFC.

Currently wxWidgets makes heavy use of macros in C++, and it also makes a tiny use of STL (after all when development started the STL was not even formalised). I don't think the code is particularly unintuitive or difficult to use, but so much of the API has been set in stone. One particular area of discussion is the event handling because of the advent of signals and slots.

There is a page on the wiki for wxWidgets: The Next Generation. It is not really actively edited. I don't know whether it will ever get out of the planning stages, I think this is probably due to the fact that the current version is simply good enough to use. There are other priorities that want/need to be developed, and redesigning the API is not really hugely useful.

Other GUI toolkits use some of the more powerful C++ features, but most only use small areas of it. I think the main advantage of developing a clean API is that it is possible to make many different language bindings. In fact I think that is what should be aimed at for most modern libraries being developed, because if you can do it in a suitably abstract fashion you'll end up with something easily maintainable and as close to future-proof as possible.

18 January 2007

Game Programming - Management Games

One of my guilty pleasures is Football Manager (and previously Championship Manager), it is definitely my favourite type of game - open-ended, considered, and graphics are not the most important part - it is gameplay.

On the SI Games website there is a forum with a programmers corner. There is a great little post on the forum by Marc Vaughan (lead developer type guy) about designing a management game. It covers in quite a lot of depth, although it is not completely finished.

Linux on PS3 with a bootable CD

There is a free Linux distribution based on Debian for use on the PS3. This distribution "Debian Live for PS3" is available on a bootable CD.

It's great to see Linux working on consoles legally. It is good to have Linux working on more platforms, but also the console makers acknowledging the hackers and trying to harness their energy. Admittedly it is limited by not allowing complete hardware access but at least it is a step forward from the previous generation of consoles.

Vista Gaming - Not so friendly for Indie developers

This article describes the problems ahead for indie developers on the Vista platform.

The new Game Explorer feature seems to be the new point of call for games on the system. Unfortunately the price to get certificated for it can be substantial when someone is coding in their spare time. Obviously they can still install them as normal applications but it limits whatever people they are trying to sell to. Unfortunately, intentionally or not the new way of doing things tilts Windows further away from allowing access to the platform.

Development - STLPort versus Microsoft STL performance

The product I work on uses STL in quite an aggressive way and also it permeates all of the source code, so any change to the performance of it can have very severe knock-on effects.

We upgraded to Visual Studio .NET 2005 from Visual Studio .NET 2003 with STLPort 4.6. We decided to make the switch to Microsoft STL which in coding terms was very simple. This slowed the entire system down massively, especially in debug mode. I covered in a previous post how to gain back some of the performance. This speeds up the STL by a massive amount as the safe iterator and iterator checking have large overheads.

In comparison to STLport the performance in debug is so much slower that it is completely unusable for anything beyond the most simple operations.

In release mode the performance is not quite as bad. For one of our large tests it takes approximately 30000 seconds with our old build system. With the Microsoft STL with all the possible performance improvements possible the tests took over 36000 seconds to run. The performance degradation was unacceptable. It was not only the time but memory as well, with the large data sets we use this causes massive amounts of paging to hard drive. The Microsoft STL uses about 50% more memory than STLport.

Unfortunately STLport is not as easy to debug as the Microsoft implementation is coupled with the debugger. But the performance degradation is simply too much to ignore.

The current version of STLport is 5.1 and works with loads of compilers and platforms.

11 January 2007

Vista Craplets

Nope, this isn't a post moaning about Vista...

A senior Microsoft Corp executive is worried items he terms as "craplets" could damage the perception of Microsoft Vista. These things he is referring to are the "added value" programs that OEMs add to their specific version of the operating system above and beyond what Microsoft supply. These are the programs like DVD writers and other icons cluttering your new computer's desktop that are unnecessary and usually completely rubbish and destructive.

You can read the article here.

It's good to see someone might improve the situation as I spent some of yesterday on a new computer just do uninstalls of tens of programs on a brand new Dell. These programs were not needed and basically served as adverts. Also you have to remove the links to various ISPs and the suchlike that you would never switch to.

I don't think this will fix the situation though and perhaps just make the problems more uniform, or they are the same problems with a stamp of approval from Microsoft. If possible you should always try to get hold of a Windows disc that is Microsoft vanilla and use that for reinstalls. But beware - you must get the right one for your registration key as there are two types of disc - the OEM and the commercial - and the keys are not interchangeable. I found this out when finishing a reinstall it would not accept a key as it was an OEM key and it wanted a shop bought one.

Windows MCE - The Codec Issue

When I installed Windows MCE Edition I updated everything to what Windows Update offered. This included Windows Media Player 11. When I tried to run media centre it played nothing, not even TV. Luckily I blamed WMP11 before anything else.

I went in search of codecs.

I found one particular codec pack that did the job and allows me to play DVDs and everything in my video and music folders, even spotting dolby digital. This codec pack is The Cole2K Codec Pack. A simple installer takes all the thought out of doing it which makes it even better.

Other ones I found which I didn't use are:
K-Lite Codec Packs
Advanced Vista Codec Pack

So if you are having problems with video or music playback in Windows try one of these packages and it should ease all your worries.

Windows XP Media Centre Edition

I've now finally got around to installing Windows MCE on my media centre after fooling around with Media Portal as my media centre software.

My media centre is based on a cheap AOpen XC-Cube with a cheapo Sempron 2600+. Amazingly it works pretty well the only problem being the transition animations are not too smooth occasionally when running at the highest possible resolution (1280x1024x32bpp).

I've been quite impressed with the software. It is much smoother to set up then the open-source ones I have used in the past, but I don't particularly want to use something because it is the path of least resistance.

In general the smooth set up and the smooth operation has been better than I expected. It now works much better with the MCE infra-red keyboard and control, the stand-by operation is much smoother and wake-up ability much better. Maybe the drivers installed for MCE since it does not necessarily use the same drivers as XP Home/Pro make it more stable?

Still after installing it you have to download one round of updates, then 78 updates, then another 13 (at least). That takes ages - yawn.

I'm actually quite impressed by the associated operating system - it is XP with a lick of paint and extra features. I have no idea why Microsoft didn't use it as an opportunity to release a new version of the OS at the consumer level since MCE is only really for manufacturers. All manufacturers seem to be using MCE ahead of XP Home anyway now.

Overall it has been a very good experience and my wife is finding it easy to use, that is always a good yardstick.

09 January 2007

Apple iPhone

The new Apple iPhone website has gone live. This website details the new Apple device designed to be your phone, your music player, your camera, your life...

The tech specs are:
  • Screen size - 3.5 inches
  • Screen resolution - 320 by 480 at 160 ppi
  • Input method - Multi-touch
  • Operating system - OS X
  • Storage - 4GB or 8GB
  • GSM - Quad-band (MHz: 850, 900, 1800, 1900)
  • Wireless data - Wi-Fi (802.11b/g) + EDGE + Bluetooth 2.0
  • Camera - 2.0 megapixels
  • Battery
    • Up to 5 hours Talk / Video / Browsing
    • Up to 16 hours Audio playback
The reason this device is not your average phone is it runs OS X. There had been recent rumblings that Apple were going to have an embedded version of OS X and this is it. It looks fantastic, I just hope it runs as well as it looks. Being OS X you get Safari as your web browser, you can use desktop widgets, and it all looks great. Hopefully this also means that developers can really go to town, with the benefit of Apple's APIs and also being able to do cross-platform development. Hell, this version of OS X even still supports multitasking.

The interface has a keyboard and "multi-touch" the touchscreen user interface that is supposed to be really quite impressive.

Enough drooling for today I think.

Back To Blogging

After a nice vacation I think it is time to get back to blogging. I managed to completely miss I posted my 100th entry last year as well.

For this year though, looking ahead...

More on my journey through the land on Windows Vista. Much more on GUI toolkits. An updated Subversion toolbar for Visual Studio 2005. More open-source software that catches my fancy. One of the things I'd like to look at more closely is KDE4 because there has been a flurry of recent information. Hopefully, providing my wife will let me, I'll be getting a new Mac, so hopefully I can wax lyrical about some splendid Apple products.

There is probably loads more I can't think of thanks to having a break from computers, but I will be aiming to keep up the post a day average.