Omnipresent computers – Part 1

The future of technology is something that occupies me, partly because its what will eventually be my everyday pursuit and partly because the current computers are just unsatisfactory. We should be living in the future, but we seem to be ever stuck in the slowly advancing present (a statement which makes no sense, I’ll grant). Anyway, here is the first installment in my n-part series.

Google Glasses

The Google Glass-es prototype/first model

Google recently announced its “Glass” project: a device and system which provides augmented reality using a pair of fairly futuristic looking glasses. Aside from the usual arguments around letting a computer giant (or in fact any company) have access to a high resolution camera pointing at everything you see, your eye, and displaying content to you almost continually (an issue I’ll be sure to write about in a future OC), I can see several problems:

Handy solve-all computer systems have been around for ages now: from the Google Mail auto calendar integration to the all popular Siri and they are great, and probably really useful (I’ve never really used them in a day to day way, I’ll admit) but have a few big problems in themselves, the main and hardest to solve being limited response: like the late Dr Lanning in iRobot (film) says: “My responses are limited, you must ask the right questions”. All of these systems suffer the same problem, they use templates to know how to go about something: Each use case is programmed in explicitly, so even if a little automatic re-phrasing of the question or request is made automatically, if you asked it to send an email of all the texts you had sent [insert person] to [another person], it would be stumped, unless the makers of the system had had some pretty far out and comprehensive ideas. And funnily enough this type of system makes the whole scenario so much simpler: if one has a set of templates, keywords and re-phrasing techniques which all link explicitly to a method of communication or research, one can just think up a load of use cases and implement them, without much performance needed (after all these things are meant to be used, so there is no point making them take months to get directions to your local corner shop).

A template might go like this:

“[Possible  please] [Send a message, Text] to [Contact name or number] [saying, asking etc] [A string]“

or

“[How would I get, directions] to [the nearest] [Place, category of place, address]“

And of course such systems would know how to deal with those sorts of requests, and this is all fine for most of the times we do things, until we actually want something done. You shouldn’t have to know the limitations of a system while using it and this has been the bane of such systems forever (along with some other issues involving voice-to-text capability and “always on technology” – a topic I’ll go into in another OC).

Seemingly the only way of sorting this out is to have an intelligent computer system (AI driven) which can wheedle its way into file systems, networks, programs and APIs to give it pretty unlimited control over what you might want to access, hardly a comforting proposition, but one which will give the best end results.

So maybe thats the way it will go, computers actually doing a good job in terms of everything-control, rather than being able to tell you where to bury bodies, but not being able to tell you where the nearest Michelin-stared restaurants are.

Branching out

So recently I feel the blog has been host to a little too many cooking posts for a techy-meta type blog, so I’ve branched the blogs to be one for food and cooking (searingwater.wordpress.com) and this one for musings.

If you liked the cooking bits, I’d strongly advise subscribing to Searing Water, or if you liked the musings, stay here…or even go with both!

Thank you for reading as ever.

The order of magnitude future

Around 1970, the law known as Moore’s Law was formulated: the simple statement that processing power would double, and price halve (or such kind of guidelines) every 12 to 18 months. A phenomenal prediction at the time, but one that has held amazingly well so far. We see a new range of amazing processors come out every year, but recently, the push has been for parallelism rather than sheer speed of silicon: for density over yield and integrity. This does mean that markers such as transistors per chip go up, but has the problem that actual user experience does not necessarily go that way (after all operating systems and programs cannot be custom fitted to a particular architecture of parallelism while keeping general enough for consumers). The problem is: we have hit a wall: Silicon just isn’t fast enough. It pretty much tops out at around 8.3GHz (or so the over-clockers seem to have proved). Now while this might be pretty fast, it means that to get more power, one has to have more die area. To add to this we are hitting the limits of just how small you can make a single transistor: about 5nm. So what the world really needs is a completely new technology base: something that can go orders faster, orders smaller, orders lower power… And we are starting to see such technologies emerging in labs around the world, some are even beginning to make real progress, so much so we may see them in a decade or so…

A similar problem is that of space travel: its been pretty common for a few decades now but in no way is it cheap or easy, it takes thousands of tons of fuel to propel tons of satellite into orbit costing millions. To say take men off Mars or other feats, we dont need a little more energy and some clever design, we need loads more energy and loads less weight, we need systems which run off pretty much no power. We need an order of magnitude.

Labs at the moment, like for semiconductor design, are also discovering new materials (weirdly based off carbon again) which give strength, weight and properties way higher than what aluminium and carbon fiber currently delivered. But this brings with it a whole new set of accessibility problems: Who could drill something as strong as diamond with a hand drill? Who could grow crystals of insanely complicated solution in their garage? What start up could afford very high cost manufacturing just to keep up with big companies? At the moment the technology industries are split, but in hardware enthusiasts can mostly match big companies in terms of materials, maybe not in reproducability, but in ease of prototyping certainly.

So what will the future of engineering hold? Probably a few very able companies with patented super materials, licensed to medium-sized manurfactures…Looks pretty bleak, especially thinking how many massive developments have come from little companies.

Energy use too needs to be massively reduced if we are to continue living. The current trend is to insulate a bit more, make some renewable power stations and charge more for fuel and these approaches gets one some way towards the targets set. But it doesnt go anywhere near the the problem that the amount of energy and material the average person in a developed country uses is way, way more than is ever sustainable. In energy we need an order leap to the user using less, not reducing the impact of each unit, but reducing the units. Our way of living is totally unsustainable and we need to reduce impacts by tens or even hundreds of times.

I leave you with this thought: “If humanity survives the next 300 years, we will survive the next 1500″

The brew is bubbling

Here are some cuts from the project… only 2 so far but it took 3 hours of experimenting and cutting… 40 mins a piece…

Leveling out

The terms High level and low level control refer the abstraction and application specific nature of the control. A good explanation of high and low-level is: Suppose one has a really obedient person, who you had to direct around a short maze. A low level approach might be: Put your right foot in front of your left (and instructions to keep balanced) then the other and then turn… with all the details included. Now, that’s pretty tricky from far off, especially if one has to shout it at people (slow). The next approach would be: Walk forward 10 steps, turn left…etc. Or even higher, walk to the next turning and turn left. Or the highest level of them all: Navigate the maze.

Say now it was something that flew. The lowest level just wouldn’t work, the next, the units would have to be converted, the next, might work but probably wouldn’t be that idea, however the highest: the thing might simply just fly over it, however it would “navigate” the maze. Simple!

Of course it gives you much less fine control over speed or route or remembering or anything, and requires a lot of work on the part of the addressed thing.

Software constructs like operating systems and drivers are designed to give the developer, and in the end the user, a higher level approach. It makes all file systems look the same to the program: Whether external memory cards or the built in hard disk, makes a printer look like a printer not a specific model. That is the genius of modern computing.

Of course the operating system approach is a software leveling up, and there are potentially other ways of doing such things, such as segmented hardware.

By segmented hardware I mean having external hardware which takes the specifics of the interface or driving away from the main controller. Although this takes away potentially even more control possibility from the user program, it also means that already stressed processors have fewer overheads. Here’s an example:

Say one is building an autopilot (which flies a plane) and you want it to have quite sophisticated behaviour built in: able to do stunts, cool dynamic calculations or some such. But to control the physical hardware, one needs to send servo control signals, which are made up of 1 pulse of a variable length at about 200Hz. Now say for every pulse one has to set up a interrupt routine (a part of code which is called periodically, on a pin change or on another system event), which would be called at 8(channels) times 200 a second => 1600Hz. Say you clock your main processor at 160MHz, a pretty fast micro-processor. Then you would end up having an interrupt every 100 instructions: Which, especially when combined with operating system overheads, really cut up ones flow.

If one had a pretty dumb micro (or even logic system/FPGA) one could offload all of that time dependant stuff onto it, leaving cleaner code and easier writing to the hardware. Also, if one wanted to change all of the servos for ones which take a different input, all it would require is a change of the auxiliary system, not the main source code, much like a change of drivers in a software model.

Although on a higher performance system, the overheads and problems caused by drivers and interrupts start to diminish, on lower performance systems it really does matter and especially as it will messy the code used. Problems such as this are amplified on systems with no operating systems. Sometimes, although the added complexity of an interface, the neatness and verifiable nature of separate blocks of hardware can pay off, especially as it will not fail if the main system locks up. Prehaps something worth considering…

Jernau

I’ve mentioned The Player of Games previously but this time I bring a slightly different post: a call for input.

A year or so ago (the last time I read the book in fact) I started designing the concept of a new board game, inspired by the concept of more complex board games taken from the book. A sort of chess with luck, hidden pieces, guesswork… something I would like to play.

Jernau (named after the protagonist of the novel) is a game played on a 15 or 20 to a side grid (probably on the computer, due to the number of pieces needed) between 2 (possibly more) players. I am releasing my preliminary work on the rules and mode of play behind the games that, although are no where near comprehensive, give a general idea.

I’ve made a Google Code project for it, at: http://code.google.com/p/jernau-game/

The rules will be transferred into the Wiki on that page in time, as well as the source code and a compiled version.

If you want to be able to edit it, just email “jernau” (dot) “game” (at) “gmail” (dot) “com” (that should throw the spam bots…) And I’ll add your email to the list of admins.

What needs doing is:

  1.  Coming up with the algorithms judging the conflicts
  2. Software implementation
  3. Closing the semantics of movement

I have already started a kind of program in which one can test the concepts (more of a test bench at the moment) in processing, although it lacks a lot of framework, any networking or a proper digital representation of the board.

The scheme of representation is a topic of a bit of interest to me, how to store, send and even play the game. The hierarchy of the system is one that I feel requires some thought, especially in thought of keeping the software light on RAM. There are multiple approaches:

  1. Have a set of counters, each with a properties stored locally, and also a coordinate of where it is.
  2. Have a set of squares, with member counters.
  3. Have a set of squares with member groups which has member counters and some other properties.
  4. Have a board with a member set of squares… a la 3.

I like the idea of 4, as it then could have tools for transferring state changes of all of the parts, as well as allowing multiple boards to be stored in one program simply.

Applying rules would require knowledge of the interaction, requiring another transfer medium etc… The usual programming choice.

I haven’t much experience in this sort of organisation of infrastructure (the networking side also needs writing!) so any help would be great!

Micro-payments

“Traditional media” is (in brief) physical information. We pay for it, not just because we are actually getting matter, but also for the information, however the information has, apparently, started to reduce the amount we actually consume which has been made or printed.

I’m writing this on a computer, probably for a few people to read it on a screen, maybe even on an e-reader or if desired, on paper, I have no idea, but I am not responsible for distributing any of it. In “traditional media”, I would either be paid for this, or I would have no chance of publishing it, as it would have to be printed, but as it is, I do not have to pay anyone, nor do you, my reader to consume my writings.

And I’m quite happy with this system, as I have no desire to force people for money for anything, unlike some (recently The Times newspaper has broken new ground by starting to charge for use of its website) and this has obviously put a lot of people off. We have all got used to paying nothing for information and it seems an affront to have to actually pay for anything. Usually the information we glean from a site is so small that actually we wouldn’t want to pay for it (who knows what kind of thing your search is actually linking to!) but sometimes it yields actual gems of insight.

Possibly what is needed for the future of good quality media and information is a system of paying very small amounts of money (cents/pence) to sites one reads with minimal time delay to the user (possibly built into the browser) while not forcing any particular provider or amount on people.

Elektor (which I have previously criticised for pricing and other bits and pieces) has a pretty neat way of dealing with this: one can buy Elektor credits, for about 70p for 10, which buys you an article, in a lovely pdf, from a previous issue of the magazine. This gives one a cost effective alternative to buying the magazine regularly, without undermining the companies business model.

Of course these are only usable on Elektor, which is a bit of a drawback if one wants to read a well written documents on politics or anything else but I like the mechanics of it…

Open source hardware, software and content all costs something to make, so why not reward the creators with a tiny bit of your hard-earned cash, it might encourage them, or fund some interesting new development…

(See that donate button on the right hand margin? Hit it and donate, go on, And I promise, I’ll write another article for every donation I get, no matter how little an amount…)

Casual Computing

How would you like to be using your computer? Anything you wanted, have a think (or even comment (might be interesting if you did it before reading the post…)).

I’m sure I’m not the only person seeing the slow and long awaited rise of the concept I would call causal computing, the move away from the omnipresent mouse, track pad and keyboard which has been our main interface with computers for decades. Touch screens coming to more and more devices is not the main change I’m talking about: The whole attitude of computing is changing. Browsing has long been a bit of a “time wasting” activity but is more and more coming a leisure activity, commonly done while not-watching-but-kind-of a film or somesuch, to the point where new devices have come out pretty much just to fuffil this one function.

Tablets, in my view, are changing computing more than the last 10 years of innovation has. No longer are you worried about using a menu to get to a program to search the web, you pick up a slate of electronics while sitting on the sofa and just start browsing, “facebooking” or chatting. They have started to blur the boundaries of digital information and everyday offline life in really large way, even more than the invention of the real smart phone (seeded by Apple I will concede) did.

They make interfaces easy, they use real life sensor data, cameras and blistering performance to deliver a much more intuitive and less intrusive way of experiencing technology. Intuitive interfaces have long been the aim of all interface designers, and this has come on leaps and bounds (although still has a long way to go) with the introduction of such technologies.

Voice control has traditionally failed, perhaps Siri will help this trend, however it needs to be on tap all the time, the same with movement control. Whats the point in having voice control when you have to touch the thing to actually get to that mode? This must include the whole system working wherever you are, not just by your device.

So what of the future? Perhaps the trend of tablets from phones will continue, leading to the long sort after desk computers, rather than desktop. An interconnected area where everything is accessible from your coffee table, including playing huge games with your friends, or writing a research paper. The future is impossible to accurately predict, but what I am sure of, is that computing is on a consumer friendly course, whether through voice control, movement control or just the plain touchscreen, something is going to change pretty dramatically in the human-computer interfaces, and has already started.

As a side note, this blog has recently got its first thousand views! So thank you and keep reading :)

Something brewing

A Render of the thing

A Render of the thing

Steady progress shall insue… Guesses as to what it is? And what I’m using to design it?

Chess and The player of Games

The Player of Games by Iain M. Banks, one of my favorite books which I am currently re-reading, describes the “culture”, a civilisation which is so rich and automated that the civilians (and some of the intelligent robots) have very little to do. In such a culture game playing has evolved as a serious persue, as one of the few intellectual activities left to them. The games are mostly quite complex in rules, usually based on boards (or e-boards) with other game elements thrown in (cards, discs, etc). The protagonist is an epic game player, almost un-matched for his all round un-beatable intelligence at the games. Later in the book he goes off to a newer, imperial state to play at one of their, extremely complex games and it all makes a rather good read.

Anyway, this got me thinking; what kind of complex games do we have? Some would argue that bridge and chess were the most complex widespread games that were played. Chess is both completely predictable and almost impossibly complex, such that humans and computers alike and strategy is hard to plan except at a very high level at play. We seem to have no high level games where luck does actually make a part of the game while making skill key to success. The best games usually require a brilliant mixture of luck and skill, easy to play but impossible to master. A sort of chess, but with luck.

One problem with such games is that they are incredibly hard balance: some piece becomes ridiculously good or it all depends on one little trick which becomes widely known or the games last years or no time at all and so one needs to tune the interactions, abilities and frequency of occurrence to perfection, a task which surely doesn’t often perfectly fit in with the 1/6 blocks dice offer or the interactions are too complex for that to be the solution. Of course now computers are so prevalent (phones, laptops, tablets or even a fancy watch), these kind of calculations are trivial, even with the need for actual random numbers. And the piece limit problems which often occur are also gone away with with e-boards, which can render near infinite pieces. So why not make a new age of games: played on computers, with fairly complex but public interaction dynamics with the same intellectuality as chess is given? Prehaps soon we all might be players of games.

Follow

Get every new post delivered to your Inbox.

Join 351 other followers