Wow! I have been busy, although it may not seem so, seeing as how I haven't updated this in forever, but really, I assure you, have been quite busy working away. So I love retro things, whether it is an arcade, comic, or even computers. I've spent countless hours working on low level Linux kernel development, hacking android, working on the x86 port of it and tuio drivers / different multi touch implementations on Linux, and worst of all, I've spent most of my time trying to write new or rework existing window managers and UI toolkits for multi touch.
Obviously we have some great multi touch frameworks out there. The big problem though, is that none of it is native. I could go on and on forever about everything there is out there but they all have one commonality, and one ultimate downfall: they are all based and running on top of a keyboard and mouse system.
By the way I just want to throw in there that I absolutely love where android and the tablet scene is headed, unfortunately, that and almost all tablet technologies are based around single pointer emulation, i.e. your finger is the mouse click.
Now some of you may be saying, this guy has a really disorganized thought process and this article is all over the place, others will have noticed I’ve hit three main points so far. Let’s recap:
1. I love old things.
2. Everything is native keyboard / mouse (or mouse emulation) based
3. I love where tablet computing is headed
It is now time to tie those three things together.
What if the keyboard never existed? What if the mouse never happened? I got to thinking, if we had to start all over, how would we do it now? How would the operating system and how we interact with computers have developed? Not only that, what if they developed around the notion of directly interacting with the information and screen from day one? So that is what I have been doing. Some of you are going to be all like, way cool, and others like, that’s way dumb. I personally think it is great. So what am I doing exactly? Well, I’ve built a nice little 16 bit computer with LCD and touchscreen overlay, but I’m going to take it one step back further. I’m going to build an 8 bit native multi touch computer using the good ol’ z80. I’m actually not sure how well this will work, and if it will even have enough processing power to be able to drive the screen and do the gesture work in a time responsive fashion, but that is part of the fun and challenge of the 8 bit world, and even if it doesn’t succeed, at the very least it is going to force me to optimize and trim down much of the code.
On to the next part, I’m done with UI tool kits, specifically the realm of widgets, buttons etc. Done. That is the bane of modern computing and the biggest thing holding back multi touch application development as far as I am concerned. If you think about it, even the concept of the widget, the button, text box etc., is based around the concept of a single mouse click and the keyboard. So how much sense does it make that we are trying to do that with multi touch frameworks, that is make standard widget toolkits. It doesn’t make sense at all; they are two different realms of operations. Think of it like this. The current desktop is like dry land and the mode of transportation is a car with wheels, and the car is the widgets. The other realm is the tablet / multi touch scene and that is like water, and the mode of transportation ought to be a boat, but we are pulling in land technology, we are trying to use a car, trying to use widget based UI to navigate! This is obviously a no go. We need a boat.
Think about it like this as well: There is an infinite amount of information out there, and an infinite amount of ways to display it, and just as many ways to interact with it. So why are we going to limit ourselves to working with the data and displaying it with a single set of simple widget tools? What needs to happen instead is two parts; one part has already taken shape somewhat in the tablet scene. Apps. Apps? Yes, Apps, apps in the sense no two apps look or interact the same. That many apps are based around that specific data / function set, so in many ways, apps have already achieved widget independence for the most part, but not on the desktop, I’m talking desktop power, commercial grade application, power user apps. Not novelty checkers and Sudoku / tide table apps. The second part being that create an easy way for a person to PAINT, or render whatever kind of UI, basically custom widget for that application in that context, whatever works for the BEST interaction with the data. Think early WPF, but don’t think of all the problems with it. If programmers can easily and quickly render whatever they want and interact with what they renders, how they want, then you don’t need a widget framework / toolkit, and aren’t bound by its ridiculous constraints.
Anyways, I’d like to think some of you can see what I’m trying to get at and where this post is headed. This is just one of many posts in a series I will be doing on this over the couple weeks. Don’t expect to see me posting much code or hardware specs because, one it isn’t done, and two 99% of people would find it useless and or confusing and it would be defeating the purpose of this multi-part series, which is for me to explain my idea and thought process behind this course of development.
As always, I love feedback and constructive criticism etc. and most kinds of reader input.