Ideas are only good if they can be applied. You could have all sorts of fancy ideas about the way you think things should be, but if you can't do something practical towards these ends then it's worthless because practicality is part of wisdom.


Ideas for computer technology rely on what systems already exist. I am not sure that people think about what the systems actually are. In school I took Computer Studies. This subject required memorizing lots of answers to standard questions, and one question was along the lines of "what is the purpose of a register". The answer was, "to store data that is currently being operated on by the processor". This is missing the forest for the trees. A better answer would have been that there is a hierarchy of computer storage, each of a different speed, for data that is likely to processed with lesser and greater degrees of immediacy: registers for the most immediate, memory for the less immediate, and hard disks and removable media for long term storage. It could be otherwise. This is just the system that happens to been developed.

Failing to see the broader context of a system can lead to functionality being put in the system which would better be put elsewhere. Why does Firefox have tabs? Isn't window management the job of the window manager, and each tab is more or less another window? Why does every program running in a terminal have to have used readline? Shouldn't line editing be part of the terminal? Aren't HTML and widget toolkits for use in WIMP environments (like GTK) basically doing the same task - user interface design? (HTML used to be for the presentation of information, but nowadays webpages are interactive, just like programs.) Maybe instead of websites, we could have a remote process running on the webserver, which is the client for the webrowser acting as an X server. Not everyone uses X, but you have to have some kind of standard, and if you look at what X is really for (drawing rectangles within other rectangles, and maybe doing so over a network) it doesn't seem so different to what the WWW has come to be used for (accessing information and computer services on other computers through a visual display on your own computer).

Then again, it's no good complaining about these things without having some idea how to sort them out. I have looked at various window managers with tabbing facilities and none of them are really very good. It may be that the way that it's done right now is the best and we shouldn't be trying to generalize to all programs known and unknown that may use tabs. All I'm saying is that the possibility should at least be considered. Why has it never occurred to me that X and the WWW are the same thing? (Although I admit the network side of X doesn't get used that much, at least not in my own experience.)

The moral is this. Try to get a wide view of how different projects fit together in the software ecosystem (and non-software?). Think about what they do, and what you would like to do. Study projects, try to use them for your own ends. Wade through crappy documentation and self-promotional website. Maybe you will create something new and useful. I'll have to try it myself.


I want to talk for a bit about the aesthetic appeal of old computers. I am turned off by Wikipedia. Every page I look at advertises itself as from "The Free Encyclopedia". I hate this constant self-advertisement. It is the same with many pieces of open source software. I hate the ideologizing and pontificating you get with projects like Gnome and KDE about how they are opening up Linux to the masses.

Emotional associations are annoying in a special way. If pallet of crockery falls off the back of a truck with an almighty crash it's annoying. If a program is a buggy and poorly documented crock of shit it's annoying. But what's positively annoying is if the program has a website written in 16 point Comic Sans, a fancy crystal style logo, multiple friendly sections, a FAQ and a forum. It's a good rule of thumb that if someone has a massive picture of their face on their blog their opinions will not be work jack. They will always be name-dropping the false gods of their community. It'll be like those half-hour Radio 4 documentaries I used to look forward to listening to where they would spend 1/4 of the time telling you what they would be talking about, 1/4 of the time with people's anecdotes, 1/4 of the time playing some tune that only has a marginal relevance to the documentary, and 1/4 of the time telling you what they have been talking about. They are going through the documentary invoking the name of what the documentary is about without actually saying anything substantial. It's like a boy I knew in primary school who couldn't read so well. He got a book of fairy tales, found "Aladdin", and looked through it for words beginning with "A", saying over and over again, with his tragic anticipative smile, "Aladdin! Aladdin! Aladdin! Aladdin!" He loved Aladdin so much he didn't need a story. I'm afraid I've strayed from the point a bit.

It is a curious thing that a thing can be good, but when it starts referring to itself, it ceases to be good. This is a subtle point. There are people's blogs I enjoy reading, but I am not interested at all when they post about their web traffic. Facebook isn't great, but can be useful. However, when Facebook announces that 'I can now publish content directly to my wall!' it misses that I care about neither 'publishing content' nor 'my wall', except as means to an end. Consider the following song:

Not bad! Now what about the following:

(Yeah, quit your job and spend your money on beer and rock concerts!)

I have a vision of some guy marooned on a space station, surrounded by pieces of old technology that he is hacking on.

I have a vision of a young boy cycling along a muddy track, carrying a floppy disc in his coat pocket to take some code to his friend.

It's all about the story and the human experience. The mystery of things not working. The mystery of the infinite potential of technology. The ingenuity of the craftsman. His interest in learning about the ideas that have gone before. He feels a bond with previous creators. The immanence of elegance; the miasma of progress. The struggles and the successes.


We want usable systems. When using a system, we have a mental model of the system, which we imagine changing with different inputs we might give it. To be usable, it must be easy to create this mental model. A computer system is a hierarchy of different systems. At the bottom you have "nanocode". This uses the system of physics, which we didn't create, it came with the universe. Nanocode uses this system to create a new system. A system of abstract data storage locations that may be altered with nanocode instructions, each having a definite, predictable effect. As I understand it, machine code is compiled into nanocode by the processor. Machine code constitutes a system much like that of nanocode. An assembler is very usable - when viewed as tool for generating machine code. It is easy to know what it is doing. C is usable, as a system for manipulating the "C virtual machine".

The URL's used by Facebook used to be usable. You could look at the URL and know what each bit meant. Now when you click on a link the URL is longer than the length of the address bar and is full of repetition.

Of course all unusable systems become usable when you learn them properly. I don't want to have to go through all that effort though.

The source code to Wikipedia pages is usable. The HTML file which is rendered into a webpage is often unusable.

Usability is related to compactness and originality of information. If someone just has a few ideas but writes a long and boring book, then reader can still be interested, as long as they adopt a different perspective from the author. They just need to isolate the founts of wisdom. For some books, the only thing which will be interesting is how well they are typeset and what typeface has been used. If they are written in a rare and ancient language, the book may be interesting on philological grounds. In that case it is the spirit of the language which has gone into the book which is of interest. It is the same with any intellectual field. You will have a huge amount of conversations and textbooks about a subject, but at the core will be a few basic ideas that are being repeated again and again. Discussions on internet forums are very light on information, because you have the same ideas being repeated. What may be new is very specific and individual information. This is what we want, knowledge which is general, yet relevant. If someone wrote a book on how to write children's stories, you'd expect them to write a children's story. Someone could make a computer program to help in the creation of RPG's. However, I'm not aware of any really famous or popular computer games which have been made with such construction sets. On the other hand, there are games which weren't made with these programs (Super Mario Brothers, etc.), which don't have the source code available, and yet there are many people clamouring to reverse engineer these games and create their own variants.

Such aesthetic principles are clouded by lies. Some things you know don't matter: the noise people are making when you are trying to sleep. You know they aren't going to break into your room and kill you in your bed, so it should be possible to ignore them. But the waking is involuntary. The turbulence passes over from their spirit to yours. Likewise, you can't ignore the BS, even though you wish you could.


We define a hack as an efficient and unexpected usage of a lower system to produce some result.

Examples of hacks:

  • Making a XOR gate using only four NAND gates
  • Writing a computer program in a small amount of space
    • E.g. chess in <1K on the ZX81 (link to follow, or just Google it)
  • Proving a result in mathematics without using a lot of theory


Ideas for the future of computing technology:

  • The keyboard needs to be more intuitive. As it is it is a mixture of keys for different purposes. You have keys for typing text, but also keys for controling software systems that are not within the context of text processing. I think to keep things simple these "control keys", like the Function keys and the Ctrl and Alt keys, should be a different colour. Of course the Windows key and Context key should be scrapped, as should "SysRq", "Scroll Lock" and all the other useless keys.
  • I've seen a few times people who've never used a computer before and trying to type something into a text box when it's not even focused. We can't expect people to grasp the concept of widget focus. GUI's should be designed so that key strokes can't just disappear into thin air.
  • Get rid of menu bars. The options in menu bars are disorganized and often bear no relation to their position. (e.g. File->Exit isn't operating on a file. It's operating on a process. What do the functions of Edit->Paste and Edit->Preferences have in common in Firefox that they should both be in the Edit menu?
  • I predict the death of the World Wide Web. RSS feeds and Wikipedia show us some of the way. Web pages you visit are annoying and complicated, because HTML+Java+JavaScript+Flash is far too flexible. Web pages are slow, crash your computer, waste bandwidth, and waste screen space with banners and side-bars. The great thing about RSS feeds is that it is a system that people find useful and therefore there becomes pressure for content creators to use them. If a more restrictive format (such as Wikipedia code) was used to encode information the internet could be much more pleasant. Web pages could be typeset, instead of merely being displayed. If such a system became popular, because of the much more pleasant browsing experience it gave, people might slowly migrate over to it and the WWW would fade away.


Improvement in computing usage tend to stay. Once people are aware that something is possible, they will do what they can to keep that feature. For example - colour highlighting in instant messaging programs, or tabs in web browsers. The next version of Microsoft Windows will have to include all the visual effects that the current one does, and people who have used it will expect to see similar effects in competing OS's. People get used to being able to download music for free off the Internet, and stopping that happening is very difficult.


  • Horseshoe (~ 200 AD)
  • Printing press (~ 1450 AD)
  • Rail, Steam, Air and Atom
  • Radio
  • Transistor
  • Etc.

Sometimes I feel like technological progress has stalled. Surely we can do better than Twitter!? That seems to have been the biggest invention of the last five years.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NoDerivs 3.0 License