The Life and Times of Brock

I talk about my life as a geek. You love it.

Honours Thesis

For most people that know me, you should know that by now I'm applying for Honours next year, with the intent of researching some good old fashioned UI / User Interface (or the more poetic but abstract term, UX / User Experience). I have been incredibly interested in the practical side of HCI (Human-Computer Interaction) for some time now, and was excited to see if I was able to flex my creative muscles when I did that as a unit (in ICT325). Unfortunately, that was not so much the case, in that the unit was largely the theoretical side of the study of how users use computers, and it did teach me some very important lessons; user testing and feedback is paramount to the success of a product's interface, and that I am not the user of the software I'm creating (this is the basis of user-centered design, which I'll touch on later). 

Even though I was certainly far from being the best student in the unit, my lecturer, Graham, ended up seeing something in me when I was constantly probing him for answers and new concepts, and then I would end up, post-lecture, in a stream of consciousness of my ideas for particular interfaces pertaining to that software and how to improve this software, he must have saw something inside me; a burning desire and passion to move into research and development of my own software. And he became quite vocal about my future at Murdoch as an Honours student.

I guess if it wasn't for Graham mentioning it, or the series of talks we had before and after lectures, I would probably be sitting at my house right now freaking out that I didn't know what to do for the next year.

So, thanks Graham.

Anyway, onto my topic. I have been fascinated with the concept of touch as an interface (if you read the first few posts and didn't pick that up, I'd suggest reading them again, or, at least the titles), and have been seriously considering doing something with it. Talking with Fairuz (another lecturer at Murdoch that just recently moved from Mississippi), I played around with his iPad and rambled on (again, another stream of consciousness) about keyboards and general text input with touch-screens, while showing him Swype. He seemed impressed by the idea, but I countered that it was limited by the qwerty keyboard, and that I wanted to see theoretically if I could improve the layout of the keyboard (much like Dvorak did in the 1930's, even though that never caught on). While the concept of having platform-optimized text input methods (that is, different versions of the keyboard depending on what device you're using) sounds cool in theory because you're using (arguably) the most efficient and fast way of typing, the fact is that humans don't adapt very well to such changes which require their muscle memory, which touch-typing very much does. Nobody wants to re-learn a new keyboard every time they pick up a new device just to save 5 seconds every 10 or so words, when it takes them several days to train themselves - the initial loss of productivity generally overshadows the later benefits gained, which would be one of the reasons I've not learned Dvorak's keyboard yet (well, that and that I can't seem to find a keyboard that really enjoys being swapped around easily).

So we have continued talking, and discussing different opportunities afforded to not only touch input but other paradigms, such as body and hand gesture, and even eye-based interfaces.

This wouldn't be a true HCI-based blog without an image of Minority Report somewhere in it.

Just for a brief note, I actually believe the input methods of the near future is a hybrid between touch, body- and hand-gesture, speech, and yes, even keyboard + mouse and (to a lesser extent) stylus. They will all be used in different aspects when it makes sense, much like how keyboard shortcuts are used in conjunction with mouse gestures and movements (compared alt-tab versus clicking on the desired window, both have pros and cons). The far future will, I believe, primarily utilize thoughts, intentions, emotions, eye movements, and maybe the rest when particular things won't necessarily work (such as brainstorming or trying to write free-hand using a mouse), but that won't be for some time.

Now, reverting back. Essentially I need to write a thesis statement about what I want to tackle. I have considered this:
  • Software Interfaces between mobile phones, slate PC's, touch-based desktop PC's, and desk PC's (Microsoft's Surface) are entirely different, and should be treated as such. People use them differently, and these differences need to be taken into account, and utilized when developing software interfaces for each platform.
That should sufficiently give me enough content to write between 10,000 - 50,000 words on, right?
Posted

My Thoughts on the Future of Computing

We are in an interesting time of transition right at this moment. Computers surround us in nearly every part of our daily lives. It is quite literally impossible to live in a city without interacting with at least a single computer connected to the Internet. It's come so amazingly quickly that most people no longer recognize a computer when they see one. Going to an ATM, you're using a networked computer that communicates with your bank's computers. In one word, computers are now ubiquitous.

The major computers people currently use are standalone desktops, with mouses, keyboards, monitors, and usually a tower or case to support the actual computer. Some are going all-in-one, and others are designed to be portable (notebooks, laptops). These computers are designed for productivity or entertainment.

The mobile world, also, is thriving. Mobile phones, portable media players, and slate computers (tablets or pads) are often heralded as the future of computing. These are smaller, lighter, and usually follow a person around wherever they go.

The third major computer designed for consumers' time is the game console on a television.

Currently, there's a concept of a fourth type of computer entering the market, known as the slate or tablet PC. Essentially, a touch-screen based computer, light enough to carry (nearly) anywhere, and is always connected to the Internet.

Note: I'm not considering the other computers, such as servers, or single-use computers like ATMs, or computer-based ornaments that don't require a person's time (like the computer on a fridge or microwave etc). These I will probably talk about at a later date.

When the iPad first came out, there was a large flurry of people believing the imminent death of the laptop market. Tablet computers are here to stay! They will revolutionize the world! There will be absolutely no need for anyone to use a PC anymore!

Now, while I agree that believe that slate PC's will have their place in the future, I certainly don't think it's here to outright replace the PC. Instead, I think it's here to complement it. Along with their mobile phone and Internet-connected television (currently, the game console). The one thing in common these all have? Internet connection.

By the way, this is what the Internet really looks like when you glance through an ethernet cord.

Sure, sure, there's no doubt that the Internet has revolutionized computing, and I'm stepping on absolutely no new ground by discussing those concepts above. But just hear me out.

Currently, I have four computers, and I'm a poor university student. I have my desktop PC (Frankenstein, self-built), my laptop (MSi Wind), my phone (HTC Desire), and my music player (iPod Touch - albeit largely taken over by my phone). Currently, I'm running four completely separate operating systems (Windows 7, Windows XP, Android 2.2 - Froyo, and iOS), with very little interaction between them. Currently, I have my music on my PC, and can stream that to my phone using AudioGalaxy, provided that the computer is actually on, but can only stream music to my laptop if they're on the same network (and even then there's trouble). The idea: place everything on the cloud and every device can stream.

In theory, that can work. But the major problem, bandwith and storage costs will eventually get in the way.

cloud-computing
Here is a simplified, abstracted way of seeing cloud computing.

I think that, instead of going entirely Cloud Computing, we are going to transition into a hybrid between both Mesh and Cloud Computing.

mesh topology
Here is mesh computing, except imagine that they are modern computers, and replace some of those with a laptop, mobile device (phone), slate PC, your TV (game console), your microwave, fridge, toaster, and so on. The main advantage of this is that it's robust, efficient, and scalable. However, the main problem is that it's difficult and complicated to set up, especially when it's all wireless (which, as far as I can see trends go, it will be).

Note: Grid Computing works too.

Currently, programming is designed for a pre-determined amount of processors. Inside every computer, there is a CPU, or Central Processing Unit, which calculates the logic behind the computer. The movement in the last decade or so is to - instead of just making it faster - add in multiple cores. Two, three, four plus cores are in a single CPU. Code can be specified to run on multiple cores in parallel, making processing (generally) faster and more efficient. The problem with this is that most code is written with a lowest common denominator mindset, or only has the capacity to run on the amount of cores that the programmer specifies (most programs only utilize single-core, with some games using both the CPU and GPU simultaneously, but it's rare outside of research departments to go much beyond this).

Instead, the Operating System of the Future (now called OSoF) will be coded to run on n amount of cores. There will be an intelligent agent who will quickly be able to designate multi-processing (parallel processing) on the fly. It will be able to communicate with computers nearby (or rather, those with the lowest ping), and be able to borrow unused resources (such as a few cores here and there, some left-over RAM, or even some GPU cycles if we're talking graphical or physics-based calculations). Most of this will happen without either user even knowing it's happening. The concept of sharing will be encouraged, but not essential (similar to Seeding in the torrent world--you can choose to not seed, but you're not as good of a member as those who do).

Hopefully, there will be an open standard for sharing of resources between computers, and thus, the type of OS won't even matter (similar to how both TCP/IP and a browser is currently found in all modern operating systems). The only thing that will need to be done, therefore, is to shape the User Interface based on the hardware constraints (input/output types, location, user etc). Essentially, you'll have near limitless back-end hardware.

This is the path I believe Windows Azure is headed. And this is certainly in Ray Ozzie's goals in the near future.

I personally can't wait. I just feel sorry for the people that have to create the security for such a system. Would be enormously complex.
Posted