Ghost in the shell: Solid State Society

I haven’t had the best of weeks, spent the best part of two days in and out of hospital at the start of the week. Thankfully I’m ok but I did find myself feeling a certain amount of anxiety. Spent the rest of the week feeling more tired than usual – fell back on the old pattern of burying myself in work and for the most part that works quite well.

Anyway didn’t really feel up to going out last night so I decided to stay at home and finally get round to watching Ghost in the shell : Solid State Society. The story takes place in 2034, and is set around two years after the events of Stand Alone Complex 2nd Gig.

The year is 2034, and the face of terrorism has changed. No longer restricted to the limits of the physical world, the war on terror has exploded onto the net. In an attempt to confront this new threat, an elite counter-terrorism and anti-crime unit was formed: Public Security Section 9.

Two years have passed since the team’s commander, Major Motoko Kusanagi, resigned from her post. After a rash of mysterious suicides, Section 9 is forced to confront the Puppeteer, a dangerous hacker with unsurpassed skills.

As their investigation of this terrorist threat takes them deeper into the bowels of a potential government conspiracy, Section 9 once again crosses paths with the Major, but is her sudden reappearance more than a coincidence, or is she somehow connected to the Puppeteer?

No one is above suspicion in this action-packed continuation of Ghost in the Shell: Stand Alone Complex saga!

Whilst Solid State Society is, more or less, a third installment of the SAC series it is presented more beautifully than the two GIGS with much more improved CGI imagery and sound. In terms of the story and plot for this movie the plot isn’t as complicated as some people seem to think, it revolves around the Solid State, the name given to a autonomous healthcare monitoring system that monitors Japan’s elderly who are connected together in a virtual world where they are able to continue to live with minimal effort from the state to maintain them. They are considered a burden by the state and the Solid State is seen as a way to allow them to live out there remaining years.

Unfortunately the Solid State has a program built into it called “Kugutsu Mawashi” who is referred to as the “Puppeteer”, Section 9 spends much of the early part of the movie trying to identify who the Puppeteer is and how he/she/it is involved in a string of suicides and kidnappings. Eventually it is revealed that Puppteer is a “child abduction infrastructure” built into the Solid State. I don’t reveal too much more about the plot, but although it sounds fantastical wen you consider the pervasive and totally ubiquitous nature of technology in the Ghost in the Shell universe then you realise that this is not only a complicated and intelligent movie but in it’s own, unique, way it addresses social problems such as how does a society deal with an ever increasing ageing population? Whilst this movie is very different and presents a completely different vision of the future it did for some reason make me think of, the seminal, Logans Run.

I really enjoyed the movie, and thoroughly recommend it to anyone who enjoys or is interested in anime … anyway Alanjust arrived so were off to have some fun …

Vampire Sestina

The first time I read this poem was in my teens, came across it again today as I was sorting through some of the books I left at my parents place. The poem was even the inspiration for a graphic arts project I did at college …

           Vampire Sestina 

I wait here at the boundaries of dream,
all shadow-wrapped. The dark air tastes of night,
so cold and crisp, and I wait for my love.
The moon has bleached the color from her stone.
She'll come, and then we'll stalk this pretty world
alive to darkness and the tang of blood.

It is a lonely game, the quest for blood,
but still, a body's got the right to dream
and I'd not give it up for all the world.
The moon has leeched the darkness from the night.
I stand in shadows, staring at her stone:
Undead, my lover . . . O, undead my love?

I dreamt you while I slept today and love
meant more to me than life -- meant more than blood.
The sunlight sought me, deep beneath my stone,
more dead than any corpse but still a-dream
until I woke as vapor into night
and sunset forced me out into the world.

For many centuries I've walked the world
dispensing something that resembled love --
a stolen kiss, then back into the night
contented by the life and by the blood.
And come the morning I was just a dream,
cold body chilling underneath a stone.

I said I would not hurt you. Am I stone
to leave you prey to time and to the world?
I offered you a truth beyond your dreams
while all you had to offer was your love.
I told you not to worry and that blood
tastes sweeter on the wing and late at night.

Sometimes my lovers rise to walk the night . . .
Sometimes they lie, cold corpse beneath a stone,
and never know the joys of bed and blood,
of walking through the shadows of the world;
instead they rot to maggots. O my love
they whispered you had risen, in my dream.

I've waited by your stone for half the night
but you won't leave your dream to hunt for blood.
Good night, my love. I offered you the world.

                         by Neil Gaiman

 

The Winds of Fate

One ship drives east and another drives west
With the selfsame winds that blow.
Tis the set of the sails
And not the gales
Which tells us the way to go.

Like the winds of the seas are the ways of fate,
As we voyage along through the life:
Tis the set of a soul
That decides its goal,
And not the calm or the strife.


                        by Ella Wheeler Wilcox

Chekhov’s: The Seagull

It was my birthday last month and my friend Amanda presented me with a gift, two tickets to see Ian McKellen in Chekhov’s The Seagull at The RSC’s Courtyard Theatre in Stratford. The visit to Stratford yesterday brought back some wonderful memories, we spent some time wondering around the center and seeing some of the sights. The last time I watched a play in Stratford was over a decade ago, prior to that I used to travel there frequently to watch various productions. I’m not sure why I stopped going, it wasn’t a conscious choice, but nevertheless it is one that I regret.

The actual production itself was wonderful. Prior to watching the play last night I wasn’t at all familiar with it, and quite deliberately refrained from reading up on it. I didn’t want to watch the play with any expectations, I guess I just wanted to enjoy the production without trying to over analyse it, or pre-judge it beforehand.

The story revolves around the romantic and artistic conflict between four main characters: The fading actress lady Irina Arkadina, her son the experimental playwright Konstantin, the young, famous and extremely successful writer Trigorin who is also Arkadina’s lover and finally Nina the young aspiring actress who is loved by Konstantin but is herself infatuated with Trigorin.

One of the things you immediately notice about the play is that there is a strong inter textual relationship with Shakespeare’s Hamlet. Arakadina and Konstantin quote lines from Hamlet, and Konstantin is obsessed with winning his mother back from Trigorin much as Hamlet tries to win his mother Queen Gertrude back from his uncle Claudius. Also like Hamlet, The Seagull ends with tragedy.

Frances Barber’s performance as Arkadina is mesmerising, and McKellen as Sorin, (Arkadina’s brother) was a joy to watch – his performance was excellent, and provided some much needed humour to offset the tragic melodrama surrounding the various romantic triangles that we learn of and the tensions they create that ultimately lead to the play ending when Konstantin kills himself.

I had a truly wonderful time yesterday … so thanks Amanda!

id Tech 5 and Safari for Windows announced at WWDC07

There were a lot of announcements during Steve Job’s keynot ate WWDC07 yesterday. There were two that stood out for me.

Firstly, Apple’s Safari browser is now available for Windows. You can download a beta here. I’ve installed it and have been using it to browse around some of my favourite sites. It definitely renders quicker than Firefox or IE, it has a very snappy feel to it. It is a beta however, although I haven’t had any problems, Andrew, who sits opposite me says its crashed for him when he tried to change the default homepage to www.google.com.

Secondly, John Carmack from id Software, the man responsible for creating the gaming engines that completely defined the First Person shooter genre, appeared on stage to announce id Tech 5 to the world. It’s the next generation of id Software’s revolutionary gaming engine, John describes it briefly:

“So the last couple of years at id we’ve been working in secrecy on next-gen tech and a game for it … this is the first time we’re showing anything we’ve done on it publicly. What we’ve got here is the entire world with unique textures, 20GB of textures covering this track. They can go in and look at the world and, say, change the color of the mountaintop, or carve their name into the rock. They can change as much as they want on surfaces with no impact on the game.”





I dont think the images truly do it justice, but its an immense technical achievement especially when you consider that most people are still raving about the id Tech 4, the engine that powers games like Doom 3 and Quake 4, and the about to be released Enemy Territory: QuakeWars. I’m really looking forward to hearing more about this new technology and the new “secret” title they have been building based on it.

The screen shots above are from Engadget who have been providing minute-by-minute coverage of the keynotes at WWDC07, which you can follow here.

Talis Summer Party

Had a wonderful evening last night at the Talis Summer Ball. The theme was a seventies, carribbean disco and there were some amazing costumes. I wish I had taken my camera with me, fortunatly plenty of others did and I’ll try to link through to some of their pictures when they are available.

It was a really wonderful evening!

GimpShop … It’s Gimp for Photoshop Users

For anyone, like me, who is used to using Adobe Photoshop making the transition to The Gimp, which is it’s closest Open Source equivelant,  has always been really difficult largely because we are so used to the Photoshop terminology for features and functions and it’s keyboard shortcuts. We get so used to doing things in a certain way in Photoshop that the second we try to use The Gimp we simply want to give up!  I know I have on many occasions!

Then along comes Scott Moschella, who has taken the Open Source GIMP and made some tweaks to it! In short he’s hacked The Gimp to make it more accessible to Photoshop users:

If you’ve never used Photoshop before, you may not appreciate my GIMPshop hack. What I’ve done is renamed and reorganized GIMP’s tools, options, windows, and menus to closely resemble Adobe Photoshop’s menu structure and naming conventions. Many of the menu options and even whole menus were recreated to faithfully reproduce a Photoshop-like experience. After running my GIMPshop hack, you’ll find that Photoshop and the GIMP are strikingly similar.

Scott has done an amazing job, it’s not a 100% 1 to 1 mapping but it’s close enough for me, and means I can actually be productive in The Gimp!  To get a feel for how close it is compare these screenshots:

The Adobe Photoshop Edit Menu:

..and now its GimpShop equivalent:

You can download GimpShop for free from Scott’s Site here. I strongly recommend this to anyone out there looking for an Open Source, or lets face it a Free, equivalent to PhotoShop!

Microsoft adds copyrighted books to its Live Search

Microsoft has added copyrighted books to its online library, stating it has permission to offer the works t searchers on the internet .  They have made deals with with authors and publishers to include their works in the Live Search, and in doing so Microsoft have managed to sidestep the controversy that Google initially triggered when they began their book digitising project to offer the worlds written works online.

User’s have to log into Live Search in order to read the content online, it appears that user’s can only read a certain number of pages and the software keeps track of how many pages visitors have read online for free. Most of the searches I have performed allow me to read 10% of the pages in any Copyrighted book that I’m browsing. I actually find this far more useful than simply being able to browse the table of contents or view selected extracts as one can in Google’s Book Search. This enables me to make a more informed decision as to whether I want to go and buy the book, and also, if im just searching for the answer to a question or need to read up on a chapter on some specific subject, I can read those bits for free online which probably will mean I wont need to go out and buy the book.

Amongst the publishers who have agreed to allow this type of access to their materials are Simon and Schuster, Mcgraw-Hill, Rodale and Cambridge University Press. Microsoft obviously provide direct links to where the books you are reading online can be purchased from. It’s an interesting move by Microsoft when you consider that Google’s wholesale scanning of copyrighted works in library collections will give it a larger database of books, but by working with publishers and obtaining their permission, Microsoft is seemingly able to offer a better experience to users.

JavaScript can provide a richer user experience without compromising Accessibility.

When Rob and I originally put Cenote together one of the constraints we had to work within was that the application must work without relying on JavaScript. This is primarily because relying heavily on JavaScript can introduce some accessibility issues, these issues include:

  • Making Navigation difficult: Site’s that rely on JavaScript can make it very difficult to navigate around a site using a keyboard or other assistive technologies, and impossible if JavaScript is disabled in the browser.
  • Hides Content: Sites that rely heavily on JavaScript can present content and functionality to the user that is not accessible to assistive technologies, such as Text Readers.
  • Removes User Control: User’s have no control over automated content changes. For user’s have no accessibility needs this isn’t a problem, but for users who rely on assisstive technology there is no way of knowing that content has changed. This can prove to be very confusing/disorienting since this can also involve altering normal browser functionality and triggering events that the user is not aware of.

This doesn’t necessarily mean that pages that contain JavaScript cannot be fully accessible, such pages can be accessible if the functionality is device independent ( in other words it does not require only a mouse or only a keyboard to work ) and the content is always available to assistive technologies.

So based on this knowledge Rob and I made the conscious decision that what we would do was develop Cenote first without using any JavaScript at all. This would ensure that the content rendered on the pages was always available to assistive technologies. We agreed that we could then use JavaScript to enhance the user experience by using JavaScript to manipulate the DOM of the page in the browser.

To see this in action visit this page in Cenote, if you scroll to the bottom of the page you’ll notice a list of libraries that you navigate through using a paging control (pictured). You’ll also notice that the book jacket in the top left hand corner of the page that has a nice reflection effect. Both these effects are made possible through JavaScript, and provide a slightly richer user experience. To see what I mean try turning off JavaScript in your browser1, and hit refresh. The page now displays the book jacket without the reflection and the complete list of libraries without the paging control.

So how is all this achieved? Well lets take a closer look at how the paging control. The snippet of html below shows a simplified2 version of markup that actually represents the items in the list3, take particulare note of the empty div after the unordered list this is the placeholder we inject the paging control into:

  1.  
  2. <ul id="Libraries">
  3.   <li><a class="item-library" href="#">Aberdeenshire Libraries</a></li>
  4.   <li><a class="item-library" href="#">Barnsley MD Library</a></li>
  5.   <li><a class="item-library" href="#">Blackburn</a></li>
  6. </ul>
  7. <div id="pagingcontrol"></div>
  8.  

Now when you view the page without JavaScript enabled the browser renders this markup exactly as it is. Accessibility or Assitive technology only use the HTML markup on the page. In the case of Text Readers this HTML is parsed and the software reads the content on the page back to the user. Now when JavaScript is enabled the markup on the page does not change, it stays exactly the same. We use JavaScript to manipulate the browsers DOM which is the model the browser generates internally to represent the page. Now in the example above the Unordered List is identified using the id “Libraries” which makes it easy to find in the DOM as this snippet of code illustrates:

  1. span class=”st0″>’Libraries’‘LI’

Here we use its identifier to find the unordered list we want to augment with our paging control. Each list element in the unordered list is what we refer to as a holding, we simply extract the contents of each of those nodes and temporarily store them in an array called libraries. In the case of the page I pointed you to earlier this array would contain 50 items.

Once we have found and copied the original complete list of libraries we can now proceed with updating the DOM to display to the user only the first 10 libraries, and render a paging navigation control. The function below updates the DOM by removing the original contents of the Libraries node, and replaces it with 10 items indexed from the specified startPosition.

  1. span class=”st0″>"Libraries"‘<UL>’‘<LI>’ + libraries[x] + ‘</LI>’‘<LI> </LI>’‘</UL>’;
  2.         renderNavigationControls();
  3.     }
  4. }
  5.  

The final line in the function above calls a method to render the navigation controls which I’ve copied below. You’ll notice that we find the placeholder identified by “pagingcontrol”, and render the preview, next and individual page links ( renderPageNumbers() ) into it.

  1. span class=”st0″>’pagingcontrol’‘<a href=\”javascript:printPreviousPage();\” alt=\”Previous Page\” title=\”Previous Page\”>< previous</a>’‘< previous’‘  ‘ + renderPageNumbers() + ‘  ‘‘<a href=\”javascript:printNextPage();\” alt=\”Next Page\” title=\”Next Page\”>next ></a>’‘next >’;
  2.         }
  3.     }
  4. }
  5.  

To reiterate, because this technique manipulates the DOM, the original markup isnt changed at all. Project Cenote was recently open sourced you can download the entire source base, which includes the javascript file, pagingcontrol.js, from which I took the extracts above, and get a feeling for how it works and experiment with it.

Now the above example might not seem all that impressive, its just a little paging control, right? Well, its a simple example that illustrates the technique which can be very powerful. Consider the following images which show a Calendar that view that was created by one of my colleagues, Andrew, which uses an unordered list to represent a series of events, and that’s what you see when JavaScript is disabled:


However with JavaScript enabled the DOM of the page is rewritten and combined with some CSS it looks like this:

Now thats more impressive, right? I hope this serves to illustrate how you can use JavaScript to provide richer user experiences without compromising accessibility. It’s an area I’ve been thinking about a lot recently and there are wider issues around how to develop better JavaScript libraries that understand how to expose dynamic content that needs to be accessible and whether this needs to be considered a best practise that more developers need to adopt. These issues beginning to have wider implications as my friend Alan put it earlier this week:

it will address issues of how traditianal HCi changes in the face of web2.0: when people are doing mash-ups (so there are more ‘artisan’ interface constructors), or end users configuring their own spaces (as in MySpace), or how you build ‘good practice’ into javascript libraries like prototoype or yahoo! YUI

.. when he contacted Justin and me earlier this week and invited us along with others from Talis to attend this years 2007 – British HCi Conference taking place at Lancaster University. Recognising how we to develop best practises for the development of truly accessible Javascript libraries is one of the issues I’ll be raising to the panel when I attend the conference.

  1. In Firefox you can achieve this by going to Tools -> Options -> Content and uncheck the box labelled JavaScript. However if you don’t already use it I recommend installing the Web Developer extensions for Firefox [back]
  2. I’ve removed the url and the title attribute and the icon image from each link to simplify the example [back]
  3. I’m using Dean’s Syntax Highlighter but specifying html means that the Snap Shots tries to execute against it, so I’ve specified XML instead [back]

Google Gears – Building Offline Web Applications

Google has released Google Gears, a new technology that is designed to overcome the single major drawback all web based applications suffer from: they don’t work without an internet connection! Google Gears is an Open Source framework, which is essentially a browser extension that is powered by JavaScript API’s that enable data storage, application caching and multi threading technologies for offline browsing and application use.

I don’t find it at all surprising that Google have invested heavily in trying to find a solution to the problem of we can use online web based applications offline. Although they launched Google Apps last year the take up has been quite slow, I read a few months back that the Commonwealth Bank has suspended a trial of Google Apps which it was thinking of rolling out to its 50,000-strong workforce, and many analysts insist that one of the major reasons for this is that there is no offline availability of these applications. Or as Carl Sjogreen, Google Senior Product Manager, sums the problem up when says:

As more and more people are depending on web applications to manage their lives and get information about what’s going on, it becomes and increasing problem when you can’t access those applications when you’re offline.

Enter Google Gears! this new technology certainly strengthens Google’s  position in going after Microsoft’s lucrative Office franchise, which makes commercial sense, More importantly though the technology actually makes the web and browsers a more attractive platform for building applications that can be used anywhere, anytim regardless of whether you have a connection to the internet or not.

Or as Eric Schmidt, CEO of Google, put it:

With Google Gears, we’re tackling the key limitation of the browser in order to make it a stronger platform for deploying all types of applications and enabling a better user experience

There decision to Open Source Gears is also quite an important one. By making the technology Open Source from a relatively early stage Google are inviting others to help improve the technology and build a community around it, and move towards developing with others an industry standard for these hybrid programmes that work both online and offline.

This is quite an exciting development.