Monday, December 29, 2008

The Future of Computing

Imagine this: you're on the public transportation coming home from school, and since you got nothing better to do, you put on some fancy goggles, and using your cell phone's touch screen as the controller, you start playing Crysis 2 with your buddies on a virtual 50" screen. Then, when you get bored of that, you were reminded that the newest Batman sequel came out, so you go online, buy the movie, and watch it right away.
You'd prolly miss your stop and end up getting kicked off by the bus driver after you beg him to take you home, but you get the idea. It is the future of computing, and believe it or not, it is possible in a few short years. It might even be possible before the next crysis game or batman movie comes out.
This device that I am talking about will be ultra-portable, it will run as fast as any desktop, with as much storage as you need, and you can access any software, game, movie, song anytime, anywhere. And guess what? The device could be free with a two year subscription.

How?
Right now, internet connection speeds are getting faster and faster. Both wired and wireless technology is improving at an incredible speed. That along with compression/decompression techniques, such as codecs like divx, there will be a point where the connection between your computer and the internet will be comparable with the connection speed between a monitor and a desktop computer. Then you can connect to your computer from anywhere. Think of being able to bring your monitor (and keyboard and mouse) with you while they are wirelessly connected to your desktop.
You might say... "What? I can do it now!" And you would be right, this technology has been around for a long long time. Right now, you can use remote desktop (which is already included in windows) or VNC (which is free) or one of other various alternatives. One company already have a product to allow you to play Crysis on an eeepc http://www.youtube.com/watch?v=Y4cUl9WFv7g (streammygame.com) with this technology.
However what is lacking in all current systems is a reliable desktop replacement service. You might be able to connect to your computer if you have a server running 24/7, but latency will be a problem once you move out of your home wifi. But if there are multiple servers at strategic locations, latency can be overcome with fast connections to local servers. We got electricity to run to every house, it isn't unthinkable to have a reliable broadband there within the decade (but you have to give them the incentive).
This is different from the current trend of online utilities such as Google docs, where everything has to go through the browser and all the output changed into html. Using remote desktop technology, programmers will have more control over input and output, and users will still be able to choose between versions of the program to be installed on their virtual desktop.

Why?
Everything you need with a full desktop computer, you can do with a cellphone and a dataplan, but now you won't be wasting your hardware when you're not using it, which can make it cheaper. Connect any input/output device you want (monitor, keyboard, mouse, projector, speaker) and you have a cellphone-sized (and priced) computer. Even if you don't plan on taking your computer everywhere, you can save money on the computer you leave at home, and use it to get a better monitor and sound system.
Also, now that "your computer" is a virtual one running on servers, you will be able to access any content that is on the servers instantaneously (movies, songs, software) since they are actually on the same system. You will still need to pay for it, of course, but you can have your entire HD movie collection online, and it wouldn't take up any of your personal disc space the server only needs one copy.
Now what the "stupid user" actually have is only a connection device, servicing or replacement wouldn't be too bad. When there is a hardware problem, it will be solved at the server. When you have a software problem, just ask for techsupport to get a professional to fix your virtual computer online.

DRM, piracy, and online distribution
For this system, it makes much more sense to have all the content with the service provider, and have them distribute it to the user. Instead of everyone having a copy of a 700mb movie, it will save space to have just one copy which everyone that bought it can access. Here's where DRM comes into play.
DRM, or digital rights management, is a hated phrase for anyone who knows what it is. Instead of protecting your digital rights, as the acronym implies, it restricts them. You may only install this game on 3 computers, and no more. You can only listen to these songs if you have an internet connection to verify their authenticity. You have to jump through burning hoops if you wanted to make a parody out of the material you bought, as you are entitled to do. But what if DRM's actually protected everyone's rights, not just the content providers?
Instead of bringing some DVD's to a friends home only to find that no one likes them except you, just sign on to your account and you will be able to choose from an entire collection of your bad taste in movies.
Instead of going through the trouble of ripping a CD, then labelling it, then choosing the songs you like, then putting it on your sd card for your mp3 player and cellphone, you will be able to have complete access to everything you own on every device you have.
Instead of being sued for the theme song of the movie you made for a charity, your movie-making software will automatically credit the songwriter in the credits, and notify you how much you will need to pay for every commericial sale of your flick.
This is what will happen when all the content is on the centralized servers. You can buy access to the content, and they will be synchronized with every device you have through DRM. Your digital rights will be managed well. Piracy will be too much work for the general public to cut into the profits of anyone.

But!
So now, this technology will allow for a great cheap consumer product and might even eliminate piracy, but it comes with two huge caveats. In order for this to work well, you almost require a monopoly. If you switch providers, you instantly lose access to all of your digital possessions, so you're locked to a single provider (like ipod with itunes). In order to access your computer without lag, the provider will need to have servers in many local areas. It would be a great waste of money to have too many providers put up that many servers. This is good for the company with the monopoly, and it may also be good for the public because there will be enough profit from all the content being sold on the platform for the service to be free. However the risk of mismanagement is great.
Second, privacy will be another problem. Suppose this system was introduced in China or Australia, what will prevent the government from issuing a subpoena for all of your emails and documents? Even a single malicious hacker would be able to cause significant damage to your privacy.

Conclusion
Way back before computers weren't personal, universities used to have only a few computers that many researchers had to share together because they were so expensive. Now computers might come full circle, and return to big rooms with only a single wire connecting it to the world. Except now we can finally play Crysis on it.

Wednesday, July 30, 2008

The Search Engine That Could

The cool thing about the technology behind search engines like Google is that it is the source to find ANYTHING. Whether you want recipes, telephone numbers, latest news, or pictures of your favorite rock star, you can type it into a search engine and find the stuff you want. The technology is pretty complex, because you're not just looking for a phrase in a large text, sometimes you need to understand the semantics of the language to pick up on the key phrases or determine the relevancy of the sites you index. It's very hard to get it right. But when you do, you got a money maker on your hands.

Even though we use search engines for pretty much anything online, I think that search engines are not doing anywhere near enough what they could be. Here's what I mean. Search engines are natural and essential when you have a database, and you can market a search algorithm for almost anything.

If you have a database of people's information, you need a search engine to find people. If you have a database of clothes, you need a search engine to find the clothes you want. Amazon, iTunes, Netflix are all high profile web companies that would dissolve into chaos if their search algorithm went bad. And I would suggest that all such algorithms are connected in some way.

Suppose someone wrote on their blog analyzing the moral complexities in the relatively unknown comic Dodobirdman and it gets a lot of page links in the next few hours, getting on the front page of Digg the next day, naturally, when you are browsing for books and you type in birdman, it'll suggest Dodobirdman and automatically spit out the newest volume of the comic, as well as Dodobirdman backpacks, and of course the popular Dodoman key chains. While when the reverse happens, and a book gets rave reviews and becomes a bestseller, webpages that refer to the things related to the book online should get more attention.

So the first idea is that a search engine company should be a search engine company. Sure, website search engines are very different than Amazon's recommendation system or the Digg algorithm, but they are all related. Why should a company spend money to go make the hardware with enough computing power to analyze all of its data, including the staff required to maintain it, or write a svm multiple tree and constantly update it with the latest in machine language research, when they have the option of outsourcing it to a reliable company?

There are many ways of providing such a search engine service and it might be pretty tricky to find the right way. The content and all the "signals" (as google puts it) may be confidential information from the client, and the search algorithm would be the business secret of the service, but the algorithm needs the data to work and when you're optimizing something like that, you're bound to access a little bit of both. One way is to make servers with a collection of different search engine tools built-in, that you can put your data on, as well as getting it processed the way you want to. Even if the hardware isn't top-notch, if your software is unique, companies would buy them like hot cakes.

I can probably write more about the subject, but unless you're microsoft, yahoo, or google, you probably won't be interested, so let's move on to IDEA 2!!!

One of the problems with search engines is the trade-off between search engine effectiveness and privacy. You can find out all of the interests of a particular user, and recommend them everything they are interested in with high accuracy, but you would need training data that people don't really want big-name companies to be keeping in their database. If search engines now can already provide relevant results, imagine what they could do with your private data.

So idea 2 would be to create a client-side search engine the keeps track of things you buy, the searches you do, the kinds of website that you like that does not in any way reveal your information to anyone else. It will be your personalized search engine. When you encounter any kind of large collection, say search result from google or recommendations from buy.com, the local search engine would take those results and reorder the priorities depending on past behavior of the user. Of course, to protect the privacy of its user, it will have to non-discriminately download the information about the things it wants to look for, increasing the bandwidth in a world where bandwidth matters less and less to companies.

If people find what they want, they'll buy more things. So the development of this software (like a browser plug-in, or browser feature) can be a collaborative effort from major web companies that will give the sponsors an advantage of understanding the inner workings of the local search engine for optimization, while still giving the means for startups to take advantage of the local search with little investment.

If this program REALLY behaves itself, maybe it will also be able to expand to giving adword-like little popups when you aren't online at all. It could respond to the text that it sees you typing into your computer, or programs that you have running. If this idea evolves to this stage though, there are many other things you can do with the personal e-butler. It might become so good that you won't ever miss out on any of the Dodobirdman memorabilia, ever again! WOOT!

Monday, July 7, 2008

side view mirrors

Here's a quickee that's kinda related to the previous post.

In a car, you have a back-view mirror, and a rear-view mirror, and even with the 3 mirrors and windows on everyside, cars still have blindspots. Blindspots are dangerous.

If you have driven on mountain roads before, you should have seen some safety mirrors that show you what is around the corner. They are there so you can notice if there are any cars coming, but not necessarily to identify which kind of car it is. Those mirrors are not flat. They are convex so that you can see the widest range on the other side of the bend. So why are side-view mirrors flat?

When you look in your sideview, you may want to tell what is passing by behind you, so it should be flat for most of its surface area. But if the edges of these mirrors are rounded, even though you can't really see too clearly what is there, you can notice if there is something in your blind spot. That can make a difference between being 10 seconds late to your destination and flattening a scooter.... that has a whole family on it.

Tuesday, July 1, 2008

Bird's eye view glasses

Skiing goggles are pretty cool. Since they have to block out the UV rays, the goggles have a lot of reflexive paint, so they come in all different kinds of colors. Yet even if the goggles were yellow, your eyes can adjust to the color, and after a few minutes, everything will look normal again. When you take them off, since your eyes had to compensate for the color, everything looks blue.

Despite how cool it is, people wearing glasses for the first time definitely should not go skiing, in fact, they are a bit dangerous even when they walk. That is because glasses not only refocus what they see, the skew their vision. If you're wearing glasses right now, just take a look at the rim of your glasses, and you will see that the refocused vision doesn't match up with your original vision. Yet your eyes can still adjust to them.

Back in the days when quake 2 was popular, some people would change their field of view to a much higher angle than normal. Even though targets become smaller, you get to see more of what is going on. With training, this becomes an advantage when you can frag opponents before they see you, and not vice-versa.

So, chances are likely that our visual system will be able to adjust if we make a helmet that feeds a 360 vision into our eyes. It can be done with cameras and monitors on your helmet. Birds typically have 300~340 field of vision, but they have little overlap in their vision, which reduces clarity and sense of 3D. So, ideally, there would still be a high overlapping region, but the other regions would be at a reduced scale, to increase peripheral vision. It might look weird if a guy walks around with a ball on his head. But for vehicles, such a helmet would increase reaction time.

Anyone could be trained to use the helmet, probably within a week. You might have to spend some time on hands-eye coordination, like playing catch a few other people, adjusting to the change in vision.

Then you won't have an excuse when you crash into a tree when you're skiiing.

Monday, June 30, 2008

The creation of a new catch phrase!

Aighty, for this one, we'll need everybody's participation. Today, you will witness the start of a new catch phrase! Move over Shakespeare, we are going to change the spoken English language! So here it is:

"When I was my age, ..."

Usage:

1. The current state of affairs: When I was my age, I was the coolest kid on the block.

2. A statement of the norm: When I was my age, people didn't steal other people's girlfriends.

3. A sarcastic response to a well known fact. When I was my age, a nickel only cost a nickel. (meaning: thank you, captain obvious)

As of right now - July 1, 2008, there are Google 17 entries for "when I was my age":

Let's see how long it will take for this phrase to catch on. 5 years? 10 years? The countdown will officially stop when it gets picked up by a writer for a movie or tv show. I want to hear people saying this EVERYWHERE!

So people! Get to it! Be a part of the history of the English language and say it to everyone you know!

Sunday, June 29, 2008

online videos

I love online videos, they're so cool. Except when I'm at home where the internet's ridiculously slow. Then they just become sooo not cool. They make you wait and wait and wait until you accidentally close firefox as you try to click the maximize button to enjoy the video, and when you finally find the page in the history, the video needs to be loaded again...

But... I dunno, even with fast internet, the online videos doesn't really stream well. I get bursts of download stuff, and then nothing for the next five minutes. So with the internet being so unreliable, is it okay if there's a "preload" button for each flash video? When I find a video I like, I open it in a new tab, start it up, then pause it, and then go on checking out other stuff until it's done loading. Do other people do that too? Well, I'm lazy. 4 actions are too much. why can't there be a html link with a GET entry to tell the flash to start loading the video? Then I'll be able to just ctrl- click on that link, and keep checking out the other cool videos, and go back to that when it's done loading.

I've been using veoh.com's veoh tv. It's pretty cool, it lets you preload the videos you wanna see, and you can put it in a playlist and watch all those videos together. GREAT IDEA! Well, now that you made internet videos into tv, why don't we go ALL the way? yes. Make the internet into a tv channel. uh huh. REVENGE OF THE COUCH POTATOES!

Here's how it'll work. First, go to the top blog aggregator.. whatever it is. Use RSS to figure out a schedule for the posts. Go download the text, and pipe it into your favorite text-to-speech software. Display the corresponding media according to how it was arranged in the post. There we go! blog-to-tv converter. Now, if someone has even more time on their hands, make the text-to-speech software also produce a video of someone saying it. Depending on the mood -- which you can find out by matching some keywords to the blog or the post. You can have your own news broadcast just by typing up an article, and uploading some pictures. On the client-side, we can make couch potatoes just like that. But if the content creator wants more control, there could be a css-like entry, except it will be for how to display the page in video.

Okay. But the magic of internet is that you can choose what you want to see. The HT in HTML is about how a web page connects to another. So, to make an tv service outta the internet, you can't do what tv does now with numbers as channels. Web content needs a different method of navigation. Opera had a feature that showed all the links in a webpage, but just listing them off would give too many links for it to be usable. Find all the important ones, or categorize the links according to their role in the webpage. Navigational links in the webpage should always be accessible. If a link shows up where the automated reader is reading, that should be easily accessible too. Search should be incorporated as well. It should allow you to easily search the key phrases in the text.

The internet is better than TV in every way possible. Media companies just need to figure out how to make it into a good consumer product. So GET OFF your lazy butts and make me a product, so we can go back to the good ol' days of sitting on the couch and being lazy butts!

Tuesday, June 24, 2008

Can you hear me now? No? Good!

Don't you just hate it when you go to church or class or meeting, and then your cell phone goes off, and then everyone looks at you weird, and then they start giving warnings to tell people to turn off their cell phones? YA awkward.... So here's one for whoever's trying to beat Apple's iphone.

Cell phone! you KNOW where I am. I personally don't mind at all (and I doubt many people care) if you snoop on my life a bit and find out where I go, listen in on the surrounding, GIVEN that you don't tell everyone and their moms, especially not the cell phone company CEO's mom. So help me by following these simple rules:

1. Check my schedule --
I scheduled an meeting with Mr. Mai P. Lowe in the afternoon at one. It's important. Go to silent automatically.

2. Check my location --
If I'm in a school building, in a classroom, and sitting in the front row seat, I want to make sure I don't miss a call from my buddy asking if I left for class yet. YA. Go to silent.

3. Check the surrounding --
The ambient noise is really quiet, only one voice is speaking with great emotional distress. Que the theme song for Naruto! WOOT! no. Go to silent.

4. Respond to signals --
Make a cross platform device that will signal cell phones to go silent, and make sure cell phones obey it! If the CEO's of cell phone companies won't cooperate, call bomb them while they're all at a meeting discussing why they don't need the device.

Use machine learning techniques and learn where the user wants the cell phone on silent -- like when he fumbles to get out his cell phone as soon as possible to turn it off. Of course, when you're trying to be smart, always show the user what you've learned so the user can change the setting manually in case you were wrong.

Here's another thing... I want my cell phone on vibrate because even though it has to be quiet, I would like to know if someone needs to find me for something important. So, first off, if I'm carrying the phone and didn't realize that it's been going off for a long time, it's okay, make a little beep.

Second, can we have a cell phone service for emergencies or really important calls? Like charge an extra cent per minute or something, but make sure that the ringer is on loud enough on the other end. When the automatic response comes up for the voicemail, add one more option for important calls. Of course, calls from Mr. Boss will always be important, especially when my alarm clock didn't go off in the morning. Make the ringing louder and louder until I respond. It'll save more than a few lives, it'll like save bad murder mystery novels that need non-responsive phones as a plot device.
(NOTE: if you like this idea, PLEASE REMEMBER to allow users to disable important calls from their obnoxious friends.)

Will you look at that! Right now my schedule says: sleep, my location: bed, so interweb, please go silent!

Monday, June 23, 2008

Goal Achievement Programming Language -prologue

Okok, this is going to be one that you'll get to see to more than vague ideas. Here's one that I'll be trying to really carry out. So if you have any suggestions, please lemme know, I'll try to put it into the project!

Programming. Did that scare you off? Well, it should. LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam); How about now? Well, pretty much every program in windows needs that line. It will take you forever to figure out what each of those really mean, which you will need to do to for ANY kind of simple windows program. And, when you finally do know how to use each argument, CONGRATS! that was only the first line. you have 9,999 to go to make your tic-tac-toe game. WOOT!

Now you see why the biggest software company in the world have trouble making a new operating system? Yes, you can write "Hello World" in your favorite language. No, you won't be able to write a commercial program anytime soon.

There is a great book on programming, called "the Mythical Man-Month," and in it was an article about the hope of developing a silver bullet that will kill the werewolf that is programming. Programming projects look all innocent and friendly at first, but whenever the moon shines, they turn into creatures that will rip you from limb to limb.

Yet, why does it have to be so complicated? What is programming? "Programming is planning how to solve a problem. No matter what method is used -- pencil and paper, slide rule, adding machine, or computer -problem solving requires programming. Of course, how one programs depends on the device one uses in problem solving." (http://bytes.com) Okay, who knows how to explain how to cook something? What you explained is a plan to solve a problem. You know how to program. Who knows a winning strategy for tic-tac-toe? A strategy is a plan. You know how to program. Who has written a schedule for an assignment? That's a plan. You know how to program. Get the idea? You know how to program, no matter who you are.

So why is it so hard to program? Well, let's look back to the example.

... WndProc(...) is a function call. LRESULT is a "long" integer that saves information about how it ran. CALLBACK is to make this function callable by the windows kernel which you'll need to know about whatever happens in the OS.... etc, etc.

and what did you want to do?

Make a 3x3 board, click on the board, making either an "x" or an "o," and display "x wins" when there's a line of 3 x's.

So what is programming? Translation. To "program" your little sister to bake a cake, you have to first know what she can understand, and explain the recipe to her in her language -- "open up this case-y waysee, pour it into the bowl-y wolee, add water and mix-y wicksee". What makes it hard? There are too many details to understand for computers.

In our first example, "LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)." You need to know the structure of windows programs. You need to know how to set certain properties. You need to know LRESULT has typically been used for windows procedure return values, but can be #define'd as something else and give you weird error messages when you compile. The problem, the big problem is that how we think about windows isn't how the computer thinks of windows. So when you want to resize a window, you're clueless about what to tell the computer.

Now, some of it is necessary. You need to know that Windows calls each program and sends messages (like mouse-clicks) that you need to respond to. Others aren't. You shouldn't have to know memory management, stacks, scheduling algorithms. They are important, yes. Necessary, no. You should be able to tweak each aspect to work exactly the way you want it to, but you shouldn't HAVE to program the details everytime.

A programming language should allow you to describe the algorithm (how to do it), and a good one should allow you to not worry about anything else. When you're playing chess, you should focus on what pieces to move, and not how you're going to signal your arms and hands to move your pieces.

The solution? Program the algorithm, and not the process. That's it. There's your silver bullet.

Shuffle the cards, then deal out the cards.
-- This is an algorithm.

#include "Cards.h"
int main(void){
Cards myDeck;
shuffle(myDeck);
deal(myDeck);
return 0;
}
-- This is a process. It looks like an algorithm, but this is a totally different animal. It creates an object myDeck, then calls two functions on the object. To the compiler, the names mean nothing. Even though you want to create a set of new "Cards" named "myDeck," shuffle it, then deal it, the computer may understand it as create a nuclear bomb, set it, then detonate it in insert-favorite-city-here. It all depends on what you told the computer "Cards" are, and how to "shuffle," and how to "deal." You see? This is programming a process, it includes EVERY minute detail about how this program will run. Don't be fooled by the compiler, linker, or the included files/libraries. The entire process of register assignment, stack creation, memory allocation is included in this code. They are just hidden for readability.

Let's look at the algorithm again, because I kinda cheated. We didn't specify what "shuffle" and "deal" was. If they are function calls, we've just created another process. What you meant by "shuffle the cards" doesn't mean you do EXACTLY what you did last time you played poker, including scratching your itchy arms (calling some specific function), but "make the cards random", which is what shuffle means. Just as long as you got the cards random, it doesn't matter if you riffled the cards, pulled out a bunch and put it on the top, or played 52 card pickup, just as long as it is done. The algorithm actually means:

Get the cards randomized, then get the cards dealt.

This is goal achievement programming. Specify the sequence of goals to accomplish, and not the functions to call. Tell the computer the algorithm, and let it figure out the rest. Not too hard right?

There's a reason why "Artificial Intelligence" is a programming problem. Intelligence, regardless of its form, at its core, is programming. Anyone intelligent enough to speak could learn how to program IF you can make the computer understand you by only telling it the algorithm. "Open a new window, draw a 3x3 grid, make each box clickable." Your little sister can understand it, so why can't a computer?

Sunday, June 22, 2008

RPG's rock, are cool to throw at boys

RPG's have been around for a while. It's a really funny thing. You could hear "I've just used up my mana replenishing HP for my team, " and it would be so common, you wouldn't even know which game they were playing. However, 20 years ago, "mana" was the bread-like thing in the ark, and HP was a novelist that had a cool last name (Lovecraft for you lame-o's). Now almost every game have some kind of hp and some kinda mana and some kinda hp replenishing thing.

The idea I've got today isn't to eliminate the tradition and make a game without hp or experience or levels, which are great for a progressive interactive game, but just to change the environment a bit. Make RPG's for sports, or racing, or cooking. No, no, not like the way they do it now, an action game with some skills, and some stats for cars and players. Like a real RPG, with random encounters, items, HP's, and missions.

Look how cool it would work out. You "walk around" with your car on the world map, and randomly encounter 3 patrol cars. The first round, you were surprised and the three patrol cars bump you for 15 damage total. It's your turn, and you cast "turn into alley," the spell misses one patrol car, but causes the remainding two to crash into obstacles dealing 30 damage each and removing them from the chase. The last enemy casts "NOS," bumps into you from behind, and forces you to use your own NOS, minus 20 mana and 20 health for you. You use the item oil, and cause the enemy to slide on the slick pavement and crash into a parked car. Victory! You gain 70 gp and 100 exp and find "motor oil". You see, it'll work.

Okay, whatever... right? It's just the same ol' stuff, except some unimportant stuff are changed around. But with this, you can do a lotta cool things with an already accepted system. Developers wouldn't have to waste money on trying out different systems and testing it out to make sure it's fun then changing the whole thing when it isn't. They get to focus on the story and the graphics. You know how some people like to see cool car chases, but aren't nimble enough with their gaming thumbs to be good at racing games? Well, the random battles can be like a racing simulation, but controlled by an AI. Games are supposed to make people feel like they are a part of the action. Programmers can make that part of the action really cool, without making it too hard for players to enjoy it.

Also, with a new environment, the RPG genre would have more ways to innovate. Say you have a basketball rpg game, where positioning matters a lot. If you can make a rpg outta that, future sword-and-magic rpg games would be able to incorporate some positioning ideas in different ways than before.

If the Japanese can make season-long drama's about random stuff like cooking and hair-cutting and architecture, why are rpg's always in the same fantasy world? Here is a system that has withstood the trial of time, but kept away from its true potential. So equip your compiler, cast level 3 haste on your party, and make us a cool game!

Tuesday, June 17, 2008

desktop-like Desktops

I know it's hard to believe for young'ens, but most of you out there probably remember a time before all the computer terms. Remember the "information superhighway"? Or the first time you used "bookmarks". Now, what about "desktops"? like way back in windows 3.1... when you start windows by typing "win" do you remember first hearing about those?

Wasn't that an interesting way of introducing a new user interface? See this picture thing? It's just like your desktop, you can put stuff on it and it's where you can do your work. Except back in 3.1, computers weren't very impressive. The "desktop" was just a wallpaper image with files and shortcuts.

Fast forward fifteen years, to Windows Vista, Apple Leopard, Ubuntu H. The "desktop" works exactly the same way it did before -- namely, nothing. "Go to Desktop" actually means "clear off all these pesky windows." Oh, there are little things here and there, like the pretty windows effects, cool alt-tab animations, and apple has them cool things for show-offs to show off, but it's pretty much the same ol' useless desktop that you'll need to clear off every few months.

When I'm in the office, whether I'm busy filing papers or pretending to file papers with a stapler and some post-it notes, my desktop is always packed with stuff I need. Student records, telephone book, pens, blank sheets of paper, a sycophant made out of 7 staples on a sticky note, it's all there, right where I need them.

On Windows, when you are trying to be productive, you'll probably have word, email, online thesaurus, some classical music, and minesweeper all opened at the same time. You don't really want your aim on (at least not with sound), and probably want excel and pdf to be preloaded so checking some xls files won't take up 2 minutes each, and you ABSOLUTELY do not want windows update to restart your computer for any reason(unless you're really desperate for an excuse).

It would also be nice to have friendly timer that reminds you of lunch breaks and when you get off work and when your boss is in a meeting. You'll also want to access all the latest documents without searching through each subfolder in "my documents."

Yet, this is only if you're at work. If you bring your computer back home, you don't want to look at all the files that you almost finished at work or any of your TODO lists. It just needs to open up the walkthough for mass effect and start the game.

So, to design a desktop-like Desktop, the experience has to be about productivity -- what does a user need to do their work? How does an operating system help the user to get stuff done? We have the machinery, just gotta put it together. Why did people care about tabbed browsing? It's the SAME EXACT thing as having multiple windows opened, except that you can actually read the words on the toolbar when you open more than five webpages. Organize the desktop programmers!

First off, programs. Each program needs to have different session information. Look at unix. Boot up, and it'll automatically load the programs you had when you shut it off. That's great, but let's have more of that. Give users the ability to save the session and come back to it later. I'm opening up wikipedia, dictionary.com, google, work gmail on firefox, and I'm gonna have a sleepy music playlist on winamp for work. At home, I want to have ebay, personal gmail, amazon.com opened on firefox, and some cool music playlist on winamp. If your program have sessions, let the user save them.

Second, workspace. Don't have just one, have many. Look at how cool compiz fusion is. Linux/unix have had them around for ages. But it's not just a cool, geeky feature, it helps the user organize the programs that are running. Which also means each workspace should have its own session information. Place the time widget on the workspace for work, and don't put it on the workspace for play, and remember it the next time I get on those workspaces. Make it easy for the user to change between different workspaces. In fact, forget about "creating a new workspace" and "closing this workspace". Do it automatically. When the user leaves the workspace for a set period of time or need the resources for something else, set that workspace to standby. Save sessions, autosave documents, copy the memory to the disc and free the memory.

Third, files. Each workspace should remember the files that have changed when it's opened. If the os doesn't want to do it, save enough information someplace and let other programs suggest the files you'll be interested in. Have I ever told anyone how much I hate organizing my desktop? URG! common, stuff I put on there from 8:00~4:00 are for work, and stuff after are for play. If I only accessed the file once ever (like an installation file), it probably doesn't need to waste space on my cluttered desktop. It's common sense, people! Now, of course files needs to be saved somewhere so that you can find it from your file directory. But is it really necessary to have the desktop to only contain files in the c:\documents and settings\username\desktop ? Having a video in the background, and do a little google magic to find out what programs I wanna run and what files I want to use, okay?

Speaking of which, here's a little tangrant on files -- WHY ARE THERE SO MANY FILES!!!!???? Out of the 5 gazillion files I have on my hd, I created 50, regularly use 70, want to keep 90, and what are all the other 5 gazillion minus 210 files doing there? They're just waiting for me to mistakenly delete them and destroy my computer. Yahyah, I know what you're thinking, you need those files to run windows, and it's the data file for such and such program, and you need the dll's to be separate files so other programs can use it, blah blah. WHO cares!!?? The user only wants to know what it is and what to do with it. Windows has the right idea when it hides system files, but what about other program's "system files"? Use metadata and organize the filesystem, which programs uses which files, which ones are supposedly user accessible, and which aren't. Unless they are 1337 programmers, users probably won't be changing any binary files, so don't let the user or other programs change binary files with any program without a sudo. It's user permission for programs. File x belongs to program y, other programs may read x, but only program y can change the file. Linux/unix uses home directories to separate user stuff from system stuff. But what if I want to see which files WoW has accessed, or I suspect a program is infected? Permissions / easily accessed log files will go a long way.

We use computers everyday but with the way we have to bend over backwards to get the simplest stuff to work the way we want it, it's like computers are using us. Here are just a few of my ideas to make the desktop better. So... Anyone up to the task?

Post-it art

Post-it-to-the-staple people!!

A good day at the office


A bad day at the office

HAR HAR HAR


Why I am forced to make more ...