Filter: hardware,software, code, computer science, tech, life, robotics

Making Windows Beautiful and Useful

I have never been a big fan of shiny interfaces, however, after so many years of staring at computer screens, my eyes have become a little wary and sore of hard cornered rectangular windows and such.

The default Windows interface in my opinion is lacking a lot of useability features, and in general could use many visual improvements. Luckily, there are a lot of tools to compensate these missing features.

Let me present you with how I tweak my Windows in under 50MB of RAM - a small price for a beautiful Windows.

The Desktop

I will explain the technical details later, but in short my Windows has a hacked shell which allows 3rd-party native themes, such as this Ubuntu Human theme. These themes are low-memory and run just as smooth as having no theme. Additionally, all my system files have had thier built-in icons replaced by the very infamous Tango theme.

I keep my taskbar on top, which has proven to be a whole lot more useful and user-friendly. To start my most important and frequently used programs, I use a lovely dock bar at the bottom which works just like the one in Mac OSX.

The Window

The Menu

Using a lightweight application, shadows are glued to all my windows and menus. I think this gives an overall freindly feel to the OS. Of course, the shadows can be customized to your personal preferences.

The Taskbar

The Start Button

The taskbar and start button have been slightly modified to provide a more compact view.

Tango Icons

Tango Icons

Hacked Shell

The Tango theme is not a distint set of icons, but rather a guideline on how to style icons and images. The Tango icons provided for Windows are absolutely beautiful. I don't understand how an open source community can create nicer icons than the Microsoft shop. Actually, I do understand.

Virtually every single icon in Windows has been replaced, including common images seen through the OS.

Native Widgets

The Human theme has upgraded all the Windows Common Control to the standard presented by Ubuntu Linux. Not only do they look very nice, but they also render extremely fast and provide a small amount of improvements over the standard Windows controls.

More to follow on how to get your own Beautiful Windows in Part II...

Tags: tech, software

Vista: Reminder of the Good Things

I don't use Vista yet on a day-to-day basis. I will let the early adapters take the pain, and wait it out until SP3 or so arrives :) .

However, I do startup Vista every once in a while to get somewhat familier with it, and also to see for myself how horrible this operating system supposedly is. I keep finding a somewhat issue with mainstream media that claim such horrid things about Vista. For all I know, it's not too bad. Sure, it is a little slow, but even on my AMD 1.2 GHz Laptop with 512 MB Ram (minus 64 for the Graphics Card), Vista runs pretty well (yes, with Aero activated).

What I like most about Vista are all the little improvements to the Windows Shell. There are literally hundreds of these improvements. I your are unsure of what I am talking about, a good example is the new information when copying/moving files.

Copy Dialog Box

Also consider the replace dialog:

File Replace Dialog

Folder Replace Dialog

There are of course many other software features, which I hope we will see ported to the Windows XP Service Pack 3! Some are demonstrated below visually and uncommented, as I don't think much explaining is needed.

Driver Update Notification

Network Profiles

Reliabily and Performance

Stability Book-keeping

Tags: software

How Skype Works, Quick and Dirty

We all know that the proprietary Skype network is an overlay network, utlizing super nodes and login servers to create a very large P2P type protocol.

What you might not know is that supernodes are grouped by slots. A slot contains about 10 supernodes, and 8 slots will buy you a block. Today, there are probably around 2000 blocks, which can be interpreted as 160000 supernodes - yikes.

Thanks to the help of Philippe Biondi and Fabrice Desclaux and thier talk at BlackHat, I have reconstructed a sketch of the global distribution per country (or state where available):

Skype Supernodes

Reverse engineering indicates that supernodes know of all other supernodes in the network, so you can imagine the types of security concerns skype engineers have.

No wonder Skype.exe features its own binary packer, checksummers all over the place (for code integrity test), and of course code obfuscation within the original source.

Tags: software, computer science

Creating a Modern User-Interface

Recently I was given the task of creating a simple application for my User-Interfaces class. The task was quite simple: build an application which can manage clients, orders and items, however I think my project partner and I went the extra step to create an innovative interface. A central part of our concept was to never display a popup dialogue, as well as only use a single window for all management.

The following screenshots I hope will give you a rough idea how common widgets can be modified and tweaked a little in order to achieve a new type of experience for the user - what I like to call the modern interface. The application is written entirely with Java Swing and AWT and runs in the OS's native look and feel.

Sidenote: The fact that this application is Java, is a testament in itself that Java GUI's don't have to be ugly. It's your fault if your Java app looks like shit.

Because the application connects to or runs a database in the background, a splash screen is required to give the user some feedback about the load delay.

Splash Screen

Because of the applications requirements, I must admit that the interface we developed isn't off-the-bat clear for all users. Thus, I have added this friendly Quick Guide which starts with the application upon first use.

Quick Guide

Quick Guide

The application has three main panels which I implemented. Each panel can expand and contract to give the user more working space or more overview. The panels have a panel manager which intelligently monitors the space on screen and makes sure the view is always optimized (such as closing the longest unused panel if there is no more space when displaying a new panel...).

The applicaiton uses a logical matrix structure to present its data. Left to right represents more information and details as you move to the right. Top to bottom represents the relationships between clients, orders and items. The following screen should give you a rough idea how this works:

Logical Matrix

Logical Matrix

Hovering over the related Orders button (shown below) makes the orders panel softly flash, kindly alerting the user of his action before pressing the button. In my opinion it is these little things that make a user interface become more friendly.

Logical Matrix

Logical Matrix

Logical Matrix

Logical Matrix

I extended all the input fields to make them a little 'smarter'. If a field is left blank, a text is shown in a lighter color displaying what the expted input is. So instead of alerting the user with a dialogue box after the user has entered his information, why not suggest this before hand? Of course when entering or focusing the input field the helper text disappears.

Input Suggestion

Of course the input fields can also have a regular expression layed ontop of them, so that the user is alerted as he types if the input is not in the correct format (as shown below by changing the font color to red).

Incorrect Input

Incorrect Input

Because creation and search often uses redundant information, we decided these can be combined. This can be a little problematic or confusing, so we fade out any irrelevant controls when mousing over the specific buttons. As you can see below, when hovering over the Create button, the ID and Item input fields are faded out, letting the user know that these are irrelevant for this operation.

Showing Relevance

If the user didn't pay attention to the regex alert, or entered a valid formatted input which is invalid (such as unexisting ID etc...), we still don't popup and alert or any message of some sort. I implemented a setFlashing() method for the input fields which softly flashes the controls. This way we can alert the user of incorrect input by flashing those controls.

Invalid Input

Another great way to get rid of any popup alerts or messages, is to prevent the user from causing this in the first place. For example, as shown below, a user should not be able to increase or decrease a Sales Line Item if he hasn't selected one - so just disable this functionality. This seems very obvious, but is definately not the trend in software today.

Disabling Functionality

Disabling Functionality

Disabling Functionality

Tags: software, computer science

Crysis Sandbox Editor

I rarely every get to play games, mostly because I just don't have time, but also because PC gaming has become so expensive (I don't want to pay USD 80.- for a game I will only every get to play at most one or two hours). However, that doesn't mean that I am not interested and very fascinated by what game developers are producing.

The new Crysis Sandbox Editor is a great example of how gaming is being upped and brought to new levels. Everything within a level can be edited in realtime, and at any point a designer can step into a gameplay mode. There is a great video on Stage6 demonstrating how the new editor works (DivX AVI link below). I will let the images speak for itself.

Daylight Engine

Daylight Engine

Rich Terrain

10km View Distance





All the images shown are snapshots taken within the editor. I bet you didn't notice :).

Tags: software, tech

GRUB Boot Image

A feature so nice but so rarely used!

Laptop Booting

Laptop Booting

In order to do this you will need to create a XPM formatted image and GZip it. Then you just add the path to your GRUB conf file. Jupee!

Tags: software

So Long Thunderbird

I have written about Thunderbird before, but today I must say so long Thunderbird, Rest in Peace.

No thanks to the Mozilla Foundation for dumping the project so that they can feed their donkey with golden nuggets.

Tags: software

Eclipse Metadata

Everyone who has ever used Eclipse knows what I mean when I say slow, hungry and in a bad mood, because that’s what Eclipse is.

Just take a look how Eclipse manages it's billion plugins by creating a sub directory for each, even if it is completely empty. And to make things worse, if you have a plugin called com.sun.eclipse.dotdotdot it would make a 4-deep directory structure. This is really annoying and totally clutters the file system.

But not to overshadow the many great features available, and the nice idea of an IDE it is. Good thing I only have to use Eclipse in school for smaller projects, because anything more would make me cry. All this reminds me why Eclipse is mostly used in educational networks :).

Tags: software

Windows Drivers

Sorry, I forgot where I read about this, but I wrote down some facts because they interested me.

Here is what I wrote down:

Windows drivers: 96 = 70'000 devices (!), however 4000 devices = 80% of all problems. 500 complaints = Microsoft creates drivers (except for those no longer in business).

Tags: software


Ever needed a exe which can easily scan files for viruses? If so, check out the Clamwin sourceforge project.

I use the included clamscan.exe to scan all incomming mail on my mail server. It is very easy to setup.

Tags: software

« Previous Page 2 of 3 Next »