A common practice in solving slow-down in computing seems to simply throw in more hardware. We all know hardware prices are dropping all the time, so this seems like a reasonable solution. However, I feel there is a fundamental flaw with this philosophy and ingrained mentality.
Developers have access to more computing power and as such they code their applications to be handled in these environments. With each new feature the application becomes slower and slower, but this problem has already has a solution – upgrade your hardware. This is an endless cycle.
Many of the user-interfaces people come across today are on the web, this means the user has to download all the related material before interacting with the design, so this same idea must be applied to the web. Websites are becoming more complex, even replacing many desktop applications and so the user must first download more and more information before beginning their experience. Although file-sizes required to view a website have increased dramatically over recent years, more and more people are upgrading their Internet connections, with broadband becoming the norm in many countries. This should negate any problem.
However, web developers are falling in to the same trap which many application developers have before. As layouts become more complex, more images are required and so the developer creates more images. This seems like a reasonable assertion. Well, it doesn’t mean it’s the best solution.
Due to the limitations of the web, there have been many inventive solutions to problems. One of my favourite techniques is CSS Sprites. This involves grouping multiple images in one single file and improves speed in a couple of ways. Firstly, overall the file-size will be smaller than all the individual images, because general information and colour settings will only have to be saved once instead of per image. Secondly, the number of HTTP requests are reduced, and because most servers/browsers only allow two concurrent connections the website will be more responsive and load a lot quicker.
Innovation strives on limitation. A great example of this was in the iconic game Super Mario Brothers where the bushes were just recolored clouds! This made me think about how to reuse common interface elements, but tricking the user to believe something which isn’t actually happening.
The solution is something I've named "Masked Sprites", and if you are familiar with CSS Sprites you should be able to grasp what is actually happenng here. Basically; an image with a transparent “knocked-out” center is placed over a background colour. Changing the colour changes the appearance of the element.