theThought's thoughts

Kevin A Gray - Creative Strategy Guy

A Microsoft Kinnect for Christmas

Christmas came early to our house.  It arrived, courtesy of Amazon, on the 10th November.  Santa Amazon delivered a Microsoft x-Box plus Kinnect. 

It is a present for my sons (10 and 5).  They will have to wait till Christmas day to even become aware of its presence in our house as they were blissfully at school when it arrived.  I have had this package on order for several weeks, so the excitement has been building silently inside of me.  When it arrived I managed to leave it alone for just 60 minutes before I was forced to rip off the packaging and give it a go.  Along with the basic xBox and Kinnect sensor there was a single game (Kinnect Adventures), in addition I had purchased two other Kinnect games (MotionSports and Your Shape).

My original intention was to setup everything, make sure it worked and that I knew how it all worked.  This type of action has prevented many incidents on Christmas day (lack of batteries, crying kids etc).  At least that is what I was telling myself.  Really I just wanted a play.

Setup, in fact took quite some time.  The hardware was simple and done in less than 10 minutes.  This included routing out a spare HDMI cable as it only comes with SCART adapter and composite cables.  The rest of the time involved inserting CD’s going through menus and setting up facilities such as the internet and xBox live.  I think this may have taken at least another 30 minutes.  Consequently I was very pleased I did this before Christmas.

As Kinnect Adventures was the CD that came with the kit and had to be used to install the kinnect updates to the xbox it was this game that I played first.  Before I could play, however, I had to ensure that I was in the sensor zone.  Suprisingly this was further back than I expected.  I had thought I would play between 4 and 6 feet away from the sensor but infact it was more like 8 feet (some re-arranging of the furniture was required).

Once setup we were off.

Before getting everything I had openly expressed concern that having a system that requires you to hold nothing was likely to be quite disturbing.  I have a WII and it has given our family much enjoyment (and will probably continue to for some years).  I note that there is quite a market in dodgy objects to hold (tennis rackets, guns, steering wheels).  I think these succeed because people like to hold things, so what was it going to be like holding nothing.

Infact it was not as bad as I thought.  Even while I was setting up it was starting to detect my movements.  As I twisted around, bent down, stood up, I could see a shadow of myself appearing on the screen, it even seemed to be aware when I put my hands behind my back.  It is likely that some of the extended setup time was simply caused by me posing in front of the camera in a variety of silly ways.

I have watched all the videos and adverts and there does seem to be a lot of jumping involved in most games.  In fact you start the Kinnect Adventures game with a jump.  My legs and I have quite a history and jumping is not something I am good at.  However, I found the jumping not too bad.  The first game I played was the one with the raft, If you have seen the adverts (and some TV shows) you will know which one I mean. This requires a lot of swaying, side stepping and jumping.  There is no doubt that the game reacted quickly and relatively accurately to my movements.  The game was fun and if I am truthful I did not miss having to hold something.

In the second game I played, I was stood in a glass tank, underwater.  While standing there a variety of fish, whales, sharks and inanimate objects threw themselves at the tank.  This causes holes to appear in the glass and it was my job (using both hands and feet) to block the holes to stop the water coming in.  The game was strangely  three dimensional as I had to step forward and backward to stand on holes below me, an move left right up and down to block holes infront and to the side.  This definitely shows the versatility of the game and demonstrated its advantage over the WII.  There were several cases where I had to block one hole to my left with one hand, one to the right with the other, and two on the floor with my feet (all at the same time).  This would just not have been possible with the WII even with a balance board.  The cord between the Nanchuk and the remote was always limiting in terms of the gap between your hands and the balance board was not something that had a huge amount of sensitivity.

I played for about 90 minutes.  I thoroughly enjoyed it all.  I am sure that some of this was just the uniqueness of the experience which will ware over time, however I feel that my kids are going to have a great Christmas.  There is no doubt that Microsoft have done a good job, it will be interesting to see if the games manufacturers can back it up with some high quality games.   Fable IV using the Kinnect may well be an excellent experience.

@Media Web Directions: Day 2 - Keynote

Day 2 of the Web Directions conference started early, too early for me so I have to admit to having missed it.  @boagworld did his podcast from the conference.  If you want to hear it follow this link: (boagworld @Media/WebDirections)

 

When I arrived all that excitement has evaporated and the business of the day was about to start.  The second day’s keynote was set to complement (in one of those complete opposite ways) as rather than being about JavaScript this presentation was about CSS.  Although I optimistically hoped that I would understand much more of this presentation it has to be admitted that once again the @media team had managed to bag a real expert and so there was still a chance that I would be left floundering in the shallows while others waded into the depths that are only safe for real experts.

Andy Clarke

The title of this presentation was Hardboiled Web Design and Andy explained the title by describing his passion for the 1950’s Detective Genre.  He explained that these books always included a crime that had to be solved but they were really about the detective who is usually:

  • Uncompromising
  • Always looking to do the best
  • Succeeds by do things that society in general cannot do
  • Is aware of the rules but is not limited by them
  • Works outside of public law but creates his own rules

These heroes are meant to give us hope.  We secretly aspire to be like them, to have their freedom and to ignore consensus in order to achieve the ultimate goal.

What has this to do with Web Design?

To answer this question Andy made reference to Smashing Magazine.  He called up a number of quotes he had seen which went along the lines of:

I hope that CSS 3 is ratified soon so that I can start using it

We should not use CSS 3 because it is not supported by all browsers

IE, the most popular browser does not support CSS 3 so there is no point in learning it

In addition the more aggressive adopters who think they are ignoring this blind conservatism promote the concept of graceful degradation and progressive enhancement.  They think that people should build for the basic browser and then reach upwards into better functionality by doing “amazing” things like adding rounded corners and drop shadows.

WAHOO says Andy, this is not hard-boiled.  If you start at the bottom and reach up, you cannot reach up very far.  Why is it like this he asks?  Because its what clients will let us do – is often the reply.  We do what we can get away with.  In 2003 the phrase “Progressive Design” was first coined.  Seven years ago.  In that time technology has changed, software applications have changed and the way we access the Internet has changed beyond all recognition.  The original concept does have some good ideas.

  • Always start with good content
  • Separate the style from that content
  • Add behaviour as a third layer

It is, however, quite wrong to treat design in this way.  It is wrong to start with the basic common capabilities and then sprinkle the extras like, hundreds and thousands, on top so rewarding those that choose the right browser.  What we should be doing is designing for the best experience possible understanding how that might degrade for those with “lesser” tools.

Design should not be about market share, it should not be based on statistics.  When customers say but IE interfaces over 80% of our market tell them that the future is those people who access the Internet on mobile devices, who have no understanding that there are multiple browsers let alone the fact that the way those browsers work is different.

The Future is Now

When you look at today’s browsers you can see that many of the new technologies are already supported.  With the imminent introduction of IE 9, Microsoft too will be covered.  Discussions on design should not be about browser support.  It is no longer practical to say that a website needs to look the same on every browser.  Browsers are too different, not only in terms of size and shape but also in terms of the gestures used and the context in which they are used.  Andy made reference to two websites that try to demonstrate this in simple terms:

http://dowebsitesneedtolookthesameineverybrowser.com

http://dowebsitesneedtobeexperiencedineverybrowser.com

As for those people who are waiting for the CSS 3 specification to be finished.  They need to wake up to reality.  Firstly the specification has been broken down into modules so that each module can run its own path to completion.  More importantly, however, is the fact that it is not WC3’s job to lead the edge to innovate.  Instead it is their job to encourage and identify consistencies across browser providers, then drive consensus across the market and set standards.  These organisations also consist mostly of big corporate whose contributions pay for W3C to exist and who come to the table with their own business objectives.  As stated by the co-chair of the CSS committee “it is a battlefield where competitors battle for competitive advantage”.

In summary, don’t wait for the future because its already here.  Get learning start using, not just in pet projects but in customer commissioned ones.  Show the browser builders and the standards committees that there is a real need for this functionality, drive innovation from the bottom.

This impassioned plea took about half of the presentation.  It was followed by a raft of detailed examples of how this can be done today.

There are three reasons why I am not included that content in this description.

  • It was presented too quickly for me to write it down.
  • I asked Andy for a set of his slides and he told me he is not allow to publicise them due to publication issues
  • He is about to release a book and you should all buy that instead

I am not going to say that I agreed with everything that Andy said.  In fact there were a number of specialists in the building who obviously did not.  During lunch a small group of us met to discuss the practical implementation of his concept (to help him put realisim into his book).  The feedback during that meeting was that clients hold onto control of the design and have expectations that it should be consistent.  Andy felt this was because customers were being asked to sign off on finished design images and so the designers were setting the expectation that they can deliver.  The solution did not seem to be ask the customer to sign off on every version of the site but then there was no real solution.

This issue that one thing can be seen in many different ways if shocking for many to handle its like telling someone that everyone sees red differently and therefore what I see when I see red may be very different from what everyone else sees.  Its not something people want to grasp or deal with and this will be a challenge in website design for many years to come.  Those people who can build a relationship with clients that overcomes this issue and the ones that are going to be shown to be the best because they will have the freedom to express themselves and their customers to the best of their ability.

 

Filed under  //   WebDirections; @Media; CSS3; #WDX;  

@Media WebDirections Conference : Day 1 - Sessions 3 and 4

The morning of Day 1 finished with a second presentation on JavaScript, however this one focused on the use of JavaScript on the server.  Having not learnt from my experience in the morning I thought I would attend to learn more about this concept that I had heard of but never practiced.

Tom Hughes-Croucher

This presentation had a promising start.  He was bright, breezy, humorous and excitable always a good combination in my opinion. Alas the presentation, for me, went steadily downhill.  It became more and more complex,  Tom lost his witt as he became more embroiled in the technicalities and I became steadily more and more detached from the proceedings.  I am not saying it was a bad presentation because it was not it was just not a presentation for me (I had had a shower that morning and I had not yet achieved a level of geekiness that allowed my subconscious receptors to translate what was being said).

Here is the gist of the presentation:

The big advantage Server Side JavaScript (SSJS) has over Perl, Ruby etc is that people are already familiar with the syntax and are used to writing in it.  A quick straw poll of the attendees demonstrated this when everyone said they had written JavaScript routines but only a few had experience of PHP, Perl or Ruby (no one asked about .net).  Effectively JavaScript IS the language of the web.

In addition libraries are increasingly being made available that simplify complex tasks such as jQuery, Mootools and YUI.

But SSJS has been around for quite some time so why is now the right time to push it as a viable solution.

Professionalism.  JavaScript coders are no longer seen as 2nd class citizens they are a respected part of the development community

Runtimes.  There are a number of these available, they have been placed inside browsers for a start.  They include V8, SpiderMonkey and Rhino.

Speed Placing these runtimes in browsers has resulted in a drive for fast execution. V8 (part of Chrome) is very fast.  This is because leading browser manufacturers, like Google, are trying to make speed of execution a unique selling point.

Runtimes are not Browsers, there is no Document Object Model (DOM), there is no accessibility to specialised APIs.  It is only the pure JavaScript implementation.

  • Rhino is equivalent to JavaScript v1.7
  • SpiderMonkey is equivalent to JavaScript 1.8
  • V8 is equivalent to ECMAScript 3

Brendan Eich talked about Harmony which is currently in development this will be equivalent to ECMAScript 5.

This latter statement put into context much of the presentation given by Brendan in the fact that those new facilities being placed inside Harmony but not yet available in browsers (via their JavaScript runtimes) would be available on the server as part of a SSJS implementation based on Harmony.

Here is where Tom became quite animated.  The speed and capability improvements discussed by Brendan and shown in the new runtimes means that Server Side JavaScript has real potential to deliver power and performance without the issues encountered by client side JavaScript.  When combined with libraries such as Note.js it becomes a great way to deliver browser agnostic web pages with powerful capabilities.

Unfortunately Tom’s increased animation was demonstrated by an increasing willingness to go into code level detail most of which went over my head.  It was clear that you need a linux server (no Microsoft Servers here today) and that you need a deeply technical mind to handle all the potential.  I have neither of those at my disposal so it was an interesting presentation that will result in little to no difference in the way I work.

Jonathan Stark

Jonathan’s presentation was the complete opposite.  I saw elements in this presentation that made me bubble with excitement and tremble with unequivable potential.  Jonathan is a specialist in Mobile Application development he has previously focused on iPhone development but it increasingly moving cross platform.  He is currently writing a book on Android and is hoping to look at other platforms like BlackBerry in the near future.  He started his presentation with three clear statistics

  • 4.6 Billion cellphones are identified as currently active today
  • 15% of these are smartphones
  • 56% of public wi-fi connections were made by smartphones

This, Jonathan says, means that the smartphone is here and it is a dominant methodology for viewing the Internet.  These smartphones are able to be extended through custom applications that fall into the following categories:

  • Native – Written for the specific device using languages like Java and Objective C
  • Web – Browser based applications
  • Command Line – often SMS based connectivity

Each of these types has its own challenges.  Native development is very fragmented with no one technology/language capable of developing a solution for all devices.  Web apps may be more consistent across devices but they are run in sandboxes and can not use many of the rich capabilities of the device such as camera, accelerator, compass.  Lastly command line apps suffer from discoverability issues.  How do you let people know about your service.

Although the above is the standard statement made for mobile development it does not give the entire picture.

Web development is done through standard web technologies such as HTML, CSS, JavaScript.  Apps using this technology are the cheapest to build, the technologies used are the most standardized and the solutions are the easiest and most cost effective to distribute.  If Web Apps could use the advanced technologies on the device, if they could provide a smoother user experience more in line with Native Applications they would probably be the best way to write an application.

jQuery

An extension of the jQuery initiative has been constructed by David Laneda.  It is called jQuery Touch.  Its purpose is to provide a more app orientated experience for a web based application.  It can be added to any webpage and then used to introduce smartphone like interfaces that would usually take a long time to build and test.  This includes the types of menu systems, buttons and transitions you would expect to see on a smartphone like the iPhone.  Add to this the HTML 5 capability to cache web assets on the device so that they can be used offline and you have a web application that looks like a native one it just lacks a few features

PhoneGap

The developers at PhoneGap do not really want this technology to exist.  They have built it because of the fragmentation of native app development.  Their aim is to give developers a path to cross device development.  PhoneGap gives a developer the ability to convert a web app into a native app.  It works for:

  • iPhone
  • Android
  • Symbian
  • BlackBerry

During this conversion the developer is given access to device capabilities such as the phone and vibration through relatively easy mechanisms to implement.  PhoneGap is only available on a Mac platform as the submission procedure for Apple is unchanged.  It is written so that the developer ends up creating an Objective C solution that can then be submitted.  It contains templates for each device delivery mechanism so that conversion/compiling process has to be done separately for each device type but this is still greatly reduced compared to the alternative process.

At the end of the presentation the inevitable question was asked regarding section 3.3.1 of the Apple terms and conditions.  Jonathan stated that Apple have indicated that, at present, PhoneGap is not affected by this changes made to this section.  There is no guarantee, however, that it will remain that way.

The presentation was good, there were clear examples of how to do the work, Jonathan built them on the fly showing the simplicity of the basic process.  The results looked good and apart from the seemingly difficult installation process for PhoneGap, nothing seemed particularly arduous – especially compared to learning Objective C and Java.

The Missing Session

There was a fifth session to the day called Hot Topics.  I believe it was supposed to be an open forum.  As much as I would have liked to have attended this I was unable to.

Filed under  //   #WDX   @Media   Android   Blackberry   JavaScript   ObjectiveC   PhoneGap   SSJS   Symbian   WebDirections   conference   iPhone   jQuery  

@Media WebDirections Conference: Day 1 - Sessions 1 and 2

Following the main keynote the attendees found themselves with four sessions.  Within each session attendees were able to select from two presentations.  One presentation had a distinctively development slant while the other had a more designer slant.  Attendees were free to choose which presentation they wanted to attend.  I ended up seeing a mixture of designer and development presentations.

So what did I see?

  • Christian Crumlish – Designing for Play
  • John Resig – Testing Mobile Web Apps
  • Tom Hughes-Croucher – Introduction to server-side JavaScript
  • Jonathan Stark – Building mobile apps

And what did I not see?

  • Doug Schepers – SVG today and tomorrow
  • Rachel Andrew – Core CSS3
  • Simon Willison – Building Crowdsourcing applications
  • Mark Boulton – Designing Grid Systems

Christian Crumlish

Christian’s talk surrounded how play is important to human beings and how play concepts can be incorporated into design and development.  That the social patterns defined by play are important because they have been defined by our end users.  He indicated that there are basically four types of play:

  • Play Acting
  • Game Play
  • Musical Play
  • Mechanical Play

Play acting is often about giving signs of life, people like play acting because they can engage with others.  They find out who else is out there.  They can take an identity, that does not necessarily match their own, use a mask to hide their true self.  They can introduce an element of make believe where not everything is true.  This is the process of re-imagining and allows them to break many of their personal inhibitions.  Software can reflect this through the use of profiles, avatars, usernames.  They can use buddy lists to show who is available.

Game Play

Games often start with an invitations – “Do you want to play?”, they require explanation the first time – how do I move forward.  What makes games work? Mostly rules and Goals/Achievements.  Some goals are about competition.  Who gets there first wins.  When you get there can you stay there.  Other goals (although more rarely) are about co-operationg.  Epidemic, for example, is a game where either all the players win (the epidemic is eradicated) or they all loose (everyone dies).  Software can emulate this through clear welcome screens that introduce the first time user gently.  They can clearly state community norms and guidelines and they can give incentive through achievements, collecting and reward.

Musical Play

Learning a musical instrument is an important type of play.  If nothing else it helps us remember that the older people are the harder they find things.  Learning a musical instrument can be hard but it can give great satisfaction but in many cases adults find that the balance is wrong: too much hard work not enough reward.

There are two types of musical instrument.

  • Those that are easy to learn but give little reward
  • Those that are hard to learn but can give great reward

The middle ground is an instrument that someone can start easily but can fine tune their experience to define the level of skill they need and the level of satisfaction they gain.  Christian felt that a ukulele is a great example of this type of instrument and that Twitter is a great example of software that is easy to start, gives little reward but that allows personal adjustment to obtain the type of reward an individual is looking for.

Christian finished his talk with a commentary on the missing piece.  He stated that it is currently easy from people to gather from the internet and equially easy (and becoming easier) to contribute to it.  There is, however, little capability to curate, to assimilate all the items that have been collected into a pattern or order that makes sense to the user.  Furthermore the current explosion of small interfaces onto the internet gives more immediacy and that there could be a pattern of people making quick trips to the internet to submit or retrieve and that designers may need to look at micro-transactions which means small studs of information which can be completed on a mobile device with the ability to go back later on a larger device to blend together or to expand upon.

John Resig

John started his talk on mobile testing with the quote “Cross-Browser web development is still hard but doing it for mobile phones is just plain crazy”.  John is part of the jQuery core development team.  Their current challenge is to make jQuery support all popular platforms.  This they thought was going to be relatively easy but has turned out to be difficult to even scope.  The following questions, for example, come to mind:

  • What are the popular platforms?
  • Which can support script?
  • What Devices and simulators are available?

To answer these questions you need good data.  There are a number of sources available (as I indicated in an earlier blog:)

  • StatCounter
  • Gartner
  • AdMob

StatCounter have an on-going project to track market share via usage with charts showing both local and world-wide coverage.  Gartner currently track mobile device sales.  AdMob is now challenged as a viable source of information as it has been acquired by Google and consequently banned on Apple devices.

It is noticeable that developers have a tendency to develop for their own devices which predominantly means iPhone followed by Android but this is not a reflection of world-wide market share.  Today the most popular platform is Symbian with 44% are the market, followed by RIM with 20%.  Then Apple and Android currently have 10% each with a smattering of others trailing behind (including Windows Mobile at 7%).  This snapshot does not indicate the current rapid growth of Android devices which will soon move beyond iPhone and make moves on RIM.

Knowing what platforms people use is useful and it clearly shows that the latest developments are not reaching the vast majority of users.  What is more important, however, and is a complete unknown is what versions of these platforms they are using.  Apple currently indicate that their tight control on their phones, operating systems and the way they engage with customers means that the majority of users are on either of the two latest platforms, although the newest iOS will change that.  Android is already more fragmented with a variety of phones being owned that use different versions of the platform.  Furthermore Google have no control (and no real care for control) of these devices so they cannot force or even encourage upgrading.  In fact some of these devices simply cannot upgrade even if the user wanted to.

In addition to the issue of platforms and versions of platforms jQuery has to think about browsers.  It is known which browsers are shipped with which phones but there are also independant, cross platform browsers that users may be able to install themselves.  Notably Opera (mini and mobile) which can be run on iPhone, Nokia, Blackberry.

The jQuery team have decided that to control scope they have had to put a stick in the ground.  That stick states that they will not support any browser/platform combination that preceeds 2007.

What does this mean to the average web designer/developer

  • Firstly draw your own line in the sand
  • Obtain simulators for the platforms you are willing to support
  • Use technologies like TestSwarm to automate testing where possible
  • Build a grading matrix that clearly shows the level of support you are willing to give.  

This grid should indicate the quality of experience each browser/platform combination should experience.  The following code could be used:

  • A – top of the line
  • B – Nice to support top of the line if resources available
  • C – Degraded experience (No Javascript, No CSS)
  • F – Fail (No experience at all)

This can be presented to the customer to give them a clear understanding of what they can expect

Testing

The first question here is should testing be physical or simulated?  They is no doubt that simulators are an important part of the testing process but they are far from accurate.  There is nothing worse that building for a simulator experience only to find that installation on a real device does not give the same experience.  Furthermore simulators are unable to provide a clear measure of the true user experience especially when sensor gestures are used (like shake, compass, vibration or orientation).

If a testing kit is required for physical testing it should be something similar to the following:

  • Apple 3GS, iPad
  • Nokia n97, n96
  • Palm Pre 1.4
  • HTC Magic
  • HTC HD2
  • BlackBerry 8900, 9630
  • Droid Incredible

The cost of this is probably $5,000 which is a significant budget but necessary to achieve an adequate testing capability.

Overall this presentation was well structured and informative.  It demonstrated that the efforts I have gone to over the last few weeks to build a virtual testing environment have not been wrong or wasted and that there was not really an easier way of doing it.  John’s perspective is skewed due to the fact that he is only looking at it from a jQuery perspective.  Consequently other web-browsing devices outside of the smartphone sphere are of little interest to him (such as Kindle, i-mode, PSP, Wii, televisions).  But then again these technologies are generally very basic and investing time on trying to make a good user experience is probably not an effective use of time.

 

Filed under  //   #WDX   @Media   Design   StatCounter   WebDirections   mobile   testing  

@Media WebDirections Conference : Keynote - Day 1

Yesterday I attended day one of the @Media/WebDirections Conference at Queen Elizabeth Hall, South Bank, London.  This is my second conference in a number of weeks following the Future of Web Design (FOWD) conference in May.  I was intruiged to see how different this conference was especially as at least two speakers at FOWD were also speaking here (Remy Sharp and Aral Balkan).

The differences were quite significant.

Firstly this event was much smaller, although located in a large facility (the Queen Elizabeth probably sits about 2000 people) I think there was less that a quarter of that number.  It was the same type of gender mix, predominantly male with a smattering of females (although that smattering was even lighter here) and a similar role mix although by the looks of them there were more developers and less designers.

Secondly, as you will see from this post and the next one, the content was more technical.  I should have realised this after the workshops but just how much more technical was a big surprise.

Lastly, and unfortunately, it was a little less organised, especially around those luxuries that you come to expect at these conferences such as wi-fi connection and power sockets.  As a result I was unable to get any quality Internet access which meant that I was unable to tweet (My blackberry was on low power too and its too slow for typing tweets in a conference).

Despite this last point I enjoyed the day and learnt a lot - which in the end is what it is all about

The event started with a short introduction that explained the merging of @media conference and the webdirections conference and was followed by a keynote by Brendan Eich.

So I have to admit that I am not familiar with the big names in the scripting industry especially those that orbit the W3C.  At FOWD I saw the workshop and presentation of Molly and she gave off an air of almost angelic reverence to these people (including herself by inference).  The same reverence seemed to be in the air for Brendan.  For those other people who read my blog who are equally unfamiliar Brendan is one of the co-founders of JavaScript.  He worked for Netscape and now works for Mozilla.  He is deeply technical, I think a portion of his oxygen intake (lets say 40%) has been replaced by code.  He promised something fast and furious and that is what we got.

His talk was effectively about the future development of JavaScript.  I think that people like me think JavaScript just is and don’t think too much about its evolution.  But evolving it is.  There are a raft of new developments on the table for the next round of standardisation approvals some of which are being adopted by browsers right now and are likely to be ratified by 2013 through a project called Harmony.  This includes:

  • Const
    The ability to define constants in addition to variables that can be scoped within functions or globally
  • Destructuring
    The ability to see arrays in any order to swap the elements and rotate them to see [a,b] = [b,a]
  • Functions in Blocks
    The ability to create inline functions with the same name within a block of code without conflict
  • Let
    A better type of var that handles scope better and is less likely to leak to higher level functions
  • Default Values
    Where parameters in functions can have defaults that are adopted if no value is applied to that parameter when the function is called.
  • Arguments as Parameters
    Where a parameter of a function does not have to be a single value but could be an array of values

As you can see from the above items and descriptions.  This is a technical subject and Brendan was quite obviously in his element.  He talked rapidly (as he promised) and slides flashed before our very eyes.  His content was assured and direct.  At this point in the proceedings I felt that I was keeping up especially as many of the above conventions can be seen in more mature languages such as C.

However this is the point at which things started to change.  Having discussed those elements where most if not all members of the working group are in agreement he started to move to those more bleeding edge ideas where not everyone has agreed the way forward.

I am not going to attempt to list or describe all the topics he covered.  For two reasons:

  • There were a lot of them
  • I am not sure I understood them enough to write with confidence and not mislead

There were some elements worth noting:

Proxies
These seemed to be constructs that would allow developers to extend current functionality.  For example the Math object a fundamental construct within JavaScript can be enhanced by Proxies with developers either extending or overwriting the native functionality.  This may be useful where different providers have diversified with their implementation and developers want to be consistent (across browsers for example)

ByteArrays
A better way to manipulate complex objects, at least better than string arrays which is effectively the only option currently available

Improved Random Number Generator
Brendan did not say much about this except a clear message that the current implementation is not very good and probably should be avoided especially if it is going to be used in the construction of unique identifiers like those used in e-Mail request URLs.

Brendan finished his presentations with some predictions.

WebKit the major standard, currently, in browser construction, will fracture with Google and Apple taking the implementation in two different directions.

Harmony will be implemented in FireFox and IE first with Apple and Google to follow at a later date.  This is mostly because Apple and Google’s browser development teams are quite small compared to those of Mozilla (Firefox) and Microsoft’s (which has recently been reformed to make IE9).

Native App stores (Apple and Android) will cause a resurgence of native code initiatives (like Objective C, Flash etc) but in the long run open source initiatives like JavaScript and ECMAScript will win out.

Filed under  //   #WDX   @Media   JavaScript   WebDirections   conference  

Today @Rem taught me that "Browsers have Wings"

Today was day one of WebDirections in London (tomorrow is a rest day, the conference starts properly on Thursday).

Browserwings

It was workshops day today and I attended “Browsers have Wings” a workshop by Remy Sharp (@Rem).  The topic of conversation was HTML 5 APIs.

Remy started with some context indicating that HTML5 is rapidly becoming a brand name accumulating many elements that are not actually HTML 5.  For example often associated with HTML5 are technologies like GeoLocation, WebWorkers, WebSockets and WebStorage.  These API’s however are not part of the HTML5 specification they are simply being developed alongside and used in association with HTML5.  I believe this is rather like the OS/2 PS/2 confusion way back when where people would associate OS/2 with the PS/2 even though they were completely different.

So what is included in HTML5?

  • Canvas
  • Video
  • WebForms
  • Offline applications

With the exception of WebForms these were the topics for the day, although we did do work on the other associated API’s as well.

This was not a workshop for the Novice, almost everyone in the room was an experience developer with HTML/JavaScript/jQuery experience.  They were from a range of organisations including Sunday Times and the World Health Organisation as well as numerous small companies.  There was no time wasted on basics such as the simple DOCTYPE declaration or how well formed (or not) the markup should be.  Instead it was straight into the first topic.

Video

In this section we learnt how to embed video natively and how to degrade this for browsers that do not support HTML5.  We learnt how to replace the native controls with custom controls, which events are available and how we can control the volume, play position etc.  We were running locally so there was no real discussion regarding buffering but we did learn how to know when the video was loaded and ready to play.

Canvas

Having settled in to the topic and done our first exercise (the whole session was hands on – with people typing like mad) we moved on to the Canvas element.  First up was understanding the difference between SVG and the Canvas and when to use which.  For example:

  • SVG is excellent for vector graphics where as canvas is very pixel based.  
  • SVG has an object tree and so there are layers, canvas is flat no layers at all

Once we had got this under our belts we learnt how to draw basic shapes (rectangles, circles) this is very similar to the process used in Flash so was easy to get used to, however, the lack of layers made it sound like it was really restrictive.

Next we learnt that we could move beyond basic flat shapes to gradients and from gradients to patterns and from patterns to images and/or video.  This concluded with an exercise where we created a link to an image and drew that image into the canvas.  Why do this you might ask?  Well we were then able to manipulate the image drawn to the canvas (for example make it greyscale).  This was done by manipulating the individual pixels of the image.  In my case, trying to be adventurous I combined the canvas and image with a slider to allow the user to change the transparency of the image.

GeoLocation, Storage and Offline

After lunch (a brief affair of very English sandwiches) we moved on to a trio of topics.  Starting with GeoLocation we learnt how to capture the current location of the user, demonstrating how the user has to give permission for this to happen.  We learnt how to understand if something went wrong (for example the user said no) and how to know whether something went wrong even when it seemed to go alright (understanding the accuracy of the location data).  The exercise related to this seemed to revolve around trying to prove that Brighton is not the centre of the universe.

In the Storage section we learnt about how useless cookies are and how useful local and session storage are.  We learnt how to store data and retrieve it and how to inspect the current data using our browser.  During the day we working primarily in Chrome with Remy giving clear indications (when he remembered) of the support in other browsers.  Lastly we looked at how to make an webpage work offline, this is principally around the building of a manifest file that indicates what should be cached to the browser, what should not and what to do if a file was is not available when offline.

WebWorkers and WebSockets

We were now getting to the end of the day, however the examples were getting more and more complex and the time spent on each getting less and less.  We were coming to the end of the rollercoaster ride and we were definitely going downhill. 

WebWorkers are a way of introducing threads into the browser.  The Browser rendering service is single threaded so routines that consume the thread for a long period can cause instability warnings to appear.  Web Workers get round this by building new threads and allowing javascript to run inside those threads.  The WebWorkers are sandboxed so they cannot manipulate the DOM or file I/O but they can do heavy weight algorithms without tying up the interface.

WebSockets are a way of creating transactions with a server.  Better than AJAX or Comet.  They are very thin threads of push notifications that do not include headers (only the data being passed).  This allows them to be much faster and to allow realtime conversations with server based web services.

Looking to finish on a high Remy boldly suggested that we work collaboratively on an exercise to end the session.  This would combine a number of the technologies we had been looking at including:

  • Canvas
  • WebSockets

The idea was that users would be able to draw an image in a canvas, take a snapshot of that picture place it on the left side of their screen and then either create a new image for refine the existing one.  The snapshots captured would be pushed to a web service so that other people could see them.  The right side of the browser was used to show the images that other people had created.  Clicking on those images would make them appear in your own drawing canvas so that you could enhance them and take a snapshot for others to play with.

Image001
Its true that we had an issue with the volume of data being sent to the web service which meant that the application could not be finished but I get the feeling that as soon as I get home I am likely to find that someone solved the problem with a bit of chunking.

In Summary

Many people criticise conferences and workshops because they are perceived to give little value.  I have to say that this event was a perfect example of how wrong these people can be.  Remy was Sharp (sorry I could not resist) he obviously knows his stuff, can create code on the fly in an instant and certainly massively increase my basic knowledge of the API’s.  I have to be honest and say my mind was spinning a little towards the end but I am sure that my upcoming flight to KL will give me the perfect opportunity to review what we did and understand it fully.  Thanks Remy, Thanks WebDirections.  I look forward to the main conference, which starts on Thursday.

An Update (Next Morning)

I was almost right.  The following morning @Rem posted the "finished" application on his site (http://rem.im/collab-drawing.html) a number of people have been having fun on it.  Feel free to have a go.  Send the link to a friend so that you can adapt each others pictures.

Filed under  //   @Remy   Canvas   Geolocation   HTML 5   SVG   Videos   WebDirections   conference  

Future of Web Design (Day 2) - Aarron Walters And Sarah Parameter

Welcome to the afternoon, lunch has been consumed (at Starbucks) and we are raring to go for the third of four sessions for the day.  In this session two very different presentations around the key concept of design (not development).

Aarron Walters – Learning to Love Humans

This presentation is by one of the founders of mailchimp (http://www.mailchimp.com) not a service I have thought of subscribing to but one that is recognised in the industry for its innovative design.  The presentation was called amusingly “Learn to Love Humans”.  It aimed to show that emotion should be a strong factor in the development of a website design.  It started with the premise that the changing nature of the internet (specifically the increasing use of social media) means that people are starting to expose themselves as human beings rather that remote non-entities and that web design should reflect that.

Image002

This was followed by an glimpse of Maslow’s Pyramid of needs which Aarron indicated could be translated into an equivalent pyramid of interface design needs.  Aarron stated that interface design needs to be functional, reliable, usable, pleasurable.  Today’s designs tend to be able to fulfil the first three of these to varying degrees but few (if any) could be described as pleasurable.  For example 37Signals designs implementations for BaseCamp are often heralded for their ease of use and functional approach to project management but they cannot be described as pleasurable.  On the other hand WuFoo (a forms creation tool) brings a colour delight to forms creation so increasing the pleasure of what is basically a database interface.

In effect Interface Design needs to incorporate the concept of personality, personality is an important part of every individual.  More importantly it is a platform for emotion and emoting is one of the first things we do when we are born.  We quickly learn that broadcasting emotion can result in the satisfaction of needs.  Interface Designs need to bathe users in emotion.

Tapbots is a company that have succeeded in this concept.  Their iphone applications are a brilliant example of bringing pleasure to non-pleasureable activities. 

Image003

Weightbot, for example, brings just the right blend of function and pleasure to the tracking of weight (an activity that usually indicates a not too positive frame of mind).  Designed on the concept of Wall-E, they combine clean, functional design with the basic features of a face to make their application more attractive, more pleasurable to Humans.

Aarron indicated that there were a number of approaches to the adding of pleasure including:

Treats – Providing mild amounts of humour within the site

Discovery – Using easter eggs to deliver additional pleasure when something good or bad happens

The main aim of this type of design can be used to overcome humans natural inclination to doubt, it can also have the additional benefit of bringing forgiveness when something goes wrong.

Overall this presentation was just what this conference needed.  An emotion response to design issues, not steeped in the technicalities of how to deliver such experiences but a real view into how designers should be thinking when building the websites of the future.

Sarah Parmenter – 10 Tips for iPhone Interface Design

Sarah is a designer focused on the field of iPod/iPhone/iPad design.  She provided 10 key thoughts crucial to successful design of an Apple App (how to get it past Apple’s approval process and into the hands of users).  Sarah brought her not inconsiderable knowledge of app design and the oddities of Apple to an audience who are probably unfamiliar with many of these issues.  Her ten thoughts focus on:

  • Making a clear Development choice between App and Web App
  • Clearly defining the purpose of the application from fun tool to serious entertainment
  • Provide Inspiring design documents – do not just send designs by e-Mail
  • Be Prepared for UX interjection – expect clients to have their own ideas
  • Understand the orientation, dimension an hierarchy elements of iphone design
  • Unravel Hi-Fidelity UI – know when to bring this into the discussion
  • Take time to design a beautiful icon – it is the flagship of the product
  • Understand the App approval process

This presentation was clearly targeting freelance designers (as opposed to developers or those of us who work for corporate). It talked about the right ways to approach pricing and hints on how to engage customers effective.  It was concise clear and great content for this type of event.

These two presentations were by far the best of the day the presenters knew their audience, pitched their content at the right level, had a clear message and brought it forth in a commanding way.  Its great to be able to attend events with this level of quality.  Long may it continue.

 

Filed under  //   Aarron Walters   Design   FUTURE OF WEB DESIGN   Sara Paramenter   conference   fowd   iPad   iPhone  

Future of Web Design (Day 2) - Remy Sharp and Robin Christopherson

So, after a not so short break we are back in the main hall listening to the presentations at the Future of Web Design conference.  First up in this session is Remy Sharp a proponent and expert in jQuery.  This was followed by a cameo appearance by Robin Christopherson who talked about accessibility.

Remy Sharp – jQuery for Designers

This presentation was targeted at those just starting to think about jQuery.  Remy’s first instruction: Learn Javascript.  Remy’s second instruction: Build a basic site first, don’t user jQuery.  Build the final site: Don’t use jQuery.  Then build little bits of jQuery to get you from start to finish.  He then indicated that jQuery content should not be in the header it should be at the bottom of the web page.  Let the page render first and then add the JQuery.  This will ensure that users get a rendering even if the jQuery hangs or fails.

This was followed by a rapid traversal of the basic concepts of jQuery starting with the $(document.ready = function()) concept.  He then moved on to a small palette of selectors showing off the versatility of the hash selector.  He indicated that selectors fail silently and that the only real way to check whether they work is to use .length to see how many items they return.  He talked about Filter and Find as ways of narrowing the context of a selector (filter) or creating a different selection based on an initial selector (find).

Now that DOM items have been selected Remy was able to demonstrate some of jQuery’s flashier capabilities including fadeIn/Out and animations.  These are not so interesting to me.  One item that did captivate me was the demonstration of the animate.stop() functionality to stop all animations rather than allowing them to queue up on each other.  This prevents flicker when a user moves rapidly over and off a DOM element that is trying to animate based on mouse actions.

More interesting was the examples around JSON and how to pull information from other website (eg Twitter).  Equally important was the missive to reduce the number of times the DOM is updated. 

All in all the presentation was clear, rapid and certainly dealt with the salient basic concepts of jQuery.  There were enough titbits in there to make me glad I chose to listen to this one despite my current good level of jQuery skill.

Robin Chrstopherson – Accessibilty

Robin tackles an issue that is always hard to get across in terms of its importance.  Robin, being partially sighted, gave a refreshing perspective on the importance of accessibility.  He mentioned projects such as ProjectCanvas which is aiming to deliver an OS to make set-top boxes accessible and the new accessibility capabilities on YouTube that include automatic captioning of videos and the ability to sync provided caption scripts with actual content.

While the presentation was only short I believe there were a number of people in the room who took what he said to heart and hopefully will think about this issue in their future designs and implementations.

 

Future of Web Design (Day 2) - Brendan Dawes and Peter Lubbers

What a great list of presenters, what a fantastic platter of subjects.  The only problem is the fact that I can not be in two places at once. This is day one of the conference proper (yesterday was workshops).  I hope to be able to find the time to post about each of the presentations I watch to give you an idea of what is happening here.  I am taking photos but I have no way to get them onto my PC just now so I will add them later.

Keynote - Brendan Dawes

Having seen him at Microsoft Mix 2008 and followed him on Twitter http://www.twitter.com/BrendanDawes I knew what to expect and I was not disappointed.  Brendan’s usual haphazard approach to presenting worked a treat he even built his own haphazard presentation tool resulting in a vision of squiggly lines, great one liners and brilliant insight (particularly the insides of his wife’s handbag).

A great way to start the event proper, get the vibe going in this great location.

So, what did Brendan have to say?

Firstly he stressed the importance of learning (or as he put it stealing) from others and finding inspiration in the work of others.  He showed how his lack of interest in Maths was expunged by a fascination in spirals and how sites like http://www.dcs.gla.ac.uk/~jhw/spirals/index.html helped him not only see their beauty but also provided the code that formed the foundation of his skill.

Brendan stated that designers should not be constrained by convention but that they should explore the new possibilities This was aptly demonstrated through a bridge with a corner.  Rather than have the bridge go straight from A to B it has a corner in it.  The hope is that as you round the corner you may meet someone or something, the fact that the corner also holds the bridge up shows that invention need not mean sacrificing utility.

The Audience was reminded that the designs you love are not necessarily the designs you keep.  “You have to learn to kill the things you love”.  Getting too attached to a great design can cause problems as you might find yourself spending too long making something really beautiful really effective.  Know when to kill a concept and then digest what you learnt into the next thing you build – like a phoenix to the flames.

Brendan’s presentation was interspersed with glimpses of his creativity.  Doodlebuzz (www.doodlebuzz.com) made an appearance with enhancements as did some of his more innovative approaches to interfaces for viewing images.  He even managed to build his own presentation tool that reflected both his quirky nature and the audiences randomness (in terms of Tweets).

Peter Lubbers 

On the flip side where Brendan was his usual eccentric self Peter Lubbers was grounded in fact and code.  Peter gave an insight into the practical aspects of some of the more advanced elements of HTML 5.  He started with geolocation  indicating how to:

  • test for the capability
  • use it for a one off check for location
  • create a stream of location checks
  • utilise Google Maps to calculate distance between the current location and another
  • close a location stream 

This was followed by a demonstration of the Canvas, a 2D drawing pallette that allows for the creation of visualisations within the browser without a plugin.  He demonstrated how to:

  • create a canvas
  • capture the instance in order to manipulate it
  • draw to it
  • apply transformations
  • reference the colour of any pixel and manipulate it

Gasping for breath and typing as fast as I possibly could I found myself being shown the next in the quartet of new features (websockets).  This is HTML 5’s answer to HTTP/Ajax.  Peter started by explaining why there has to be an alternative (effectively http requests have too much overhead and are not scalable).  Peter indicated that WebSockets are bi-directional so allowing rapid chatter between client and server.  The setting up of a websocket was shown and how to send/receive messages.  Lastly he used Wireshark (available here) to show the websocket traffic clearly demonstrating that 1,000s of bytes of chatter can be reduced to just one or two so making web applications more responsive and servers more scalable.

The final instalment was WebWorkers a way for HTML 5 to create pseudo threads that can alleviate issues of hung web pages.  The primary purpose of these workers should be to perform arithmetic or communication based processes.  They do not have access to the DOM as they are run in a separate process but workers can send/receive messages to the webpage providing information that the webpage can then use.  In his demonstration he showed how a JavaScript class running in a webworker can calculate random locations to send to the webpage so that the web page can build new shapes in a canvas at those locations.

All in all this presentation was fast a furious, this was the type of content I was looking for yesterday in the workshops and it clearly showed what HTML 5 will be able to do when its is more widely adopted.

 

Future of Web Design (Day 1) - HTML 5/CSS 3 workshop

This week (17th to 19th May).  I am attending the Future of Web Design conference in London. Today was Day 1 (workshops) and consequently I attended a HTML 5/CSS 3 introductory workshop run by Molly Holzschlag a web standards advocate for Opera (www.Molly.com).

Having said that is became clear as the morning progressed that as far as HTML 5 is concerned commercial implementation of the standard is not something that should be considered right now.  Very few of these browsers have implemented some of the new capabilities and consequently there is little advantage in implementing the features let alone a lot of effort in terms of handling those browsers that do not give any support.

The morning of the workshop focused on HTML 5, the afternoon on CSS3.

HTML 5

The session started with a little scene setting.  Effectively a “Why should we be interested, what is HTML 5?” introduction.    The key justification being that today all the major browser manufacturers (Google, Microsoft, Opera, Firefox, Mozilla) have agreed to adopt HTML 5 and are currently working on their implementations.  This is the first time in the history of the Internet that all of them have made a concerted effort to agree on one standard (although their implementations of that standard are less likely to be consistent).

There seem to be five design principles behind the implementation of HTML 5:

  • Backward compatibility
  • Interoperability
  • Clearly Defineable UserAgent Behaviour
  • Improved Error Handling
  • Evolve Don’t Recreate

Each of these is a challenging objective, for example backward compatability has always been a key driver for many software developments however every iteration makes this more and more difficult.  At some point the Internet is going to have to forget the past or be bogged down by it.  In terms of HTML 5 backward compatability is about equally supporting those who write in HTML 4 and those who write in xHTML 1.0 formats.  The new DOCTYPE declaration was discussed especially in terms of its simplicity.  HTML 5 has no equivalent DTD definition (due, at least partly, to the fact that the concept of DTD’s is dead) consequently the declaration is much simplified.  HTML 5.0 does not have to be a precisely formed as xHTML it was generally thought by the audience that this was not a good idea as it would lead to sloppiness (someone not closing <p> tags can get away with it).   This is no different to coding where someone can use Goto if they want (just don’t expect to get a programming job if someone notices).

The next section focused, briefly on the new elements being introduced in HTML 5 including:

  • Section
  • Article
  • Aside
  • Header
  • Footer

The key objective here seems to be the removal of DIV tags that are simply sectioning out key parts of the document structure.  It was not made clear whether any of these would have any real advantage over the current use of DIV tags except clearer markup and more obvious CSS 3 synchronisation (as CSS 3 supports these element types as well).

There was also a brief mention of the other elements being looked at such as Mark, Meter, Progress, Time, Command, Datagrid and Details but as these are not yet fully defined no details were really provided.

The next section focused on the improvements to Forms.  Many of the concepts of Web 2.0 will be supported.  The autofocus and required attributes for example significantly reduce the amount of JavaScript that has to be written to deliver client side verification.  New Input types such as Range (for sliders) and search provide new ways of capturing data from the user.

The link tag has also been enhanced with new types such as icon, prefetch, archives, external and license.  The session closed around a discussion on the three most talked about new elements, those that provide embedded media without the need for a plugin.  Canvas provides a drawing palette which can be based on a combination of SVG and javascript to create a fully interactive visual experience.  Video and Audio provide broadcast components reducing the need for Flash (maybe).  The  key argument with the latter two is codec’s.  Which ones will be royalty free and therefore available in browsers?

There was also a brief mention of ARIA (accessibility for Rich Interactive Applications).  This extended only to a definition of the term and the fact it is an offshoot of WIA (Web Accessibility Initiative).

CSS 3

It would be a mistake to think that the whole of the afternoon session was dedicated to the new features of CSS 3.  In fact nearly 90 minutes was a discussion around the basic concepts of CSS including a definition of the term cascading, several discussions regarding specificity (including how to say it in German) and other general rules regarding the use of CSS.  Probably the most stressed point made during this 90 minutes is to not use the !Important facility.  It was identified that this is a hack and a poor one at that that designers should avoid using.

Once discussion did get around to CSS 3 most of the new features were very briefly discussed such as:

  • The new Selectors
  • Border changes including the use of images and rounded corners
  • Multiple columns
  • Real Font Support
  • Colour control through Hue Saturation and Luminence (HSL)
  • Animations
  • Transparency
  •  Shadows

Each point was glossed over with simple examples of most of them.

Probably the most poignant aspect of the afternoon was the constant switching between Safari, Chrome and Opera as Molly attempted to demonstrate the effects.  This really brought home the fact that no one browser has fully implemented CSS 3 as it currently stands and that the implementations are not consistent.

The session ended with a discussion regarding some of the newer concepts of CSS 3 (those that have not been implemented properly by anyone yet) these included concepts such as FlexBox (a flexible way of creating boxes of content within boxes) and some ways of creating grid structures without using tables.

Some of these latter examples showed how truly complex CSS 3 might yet become.  In its attempt to increase the presentation and dynamics of the internet it is becoming more like a programming language, unfortunately it is unwilling to be verbose so some of the codes are getting shorter and shorter (many are just two letters long).

In Summary

I have to say I was a little disappointed with today.  As a workshop I had hoped that we would go indepth regarding the attribute and reasons for using HTML 5 elements with some good examples of how they might be used.

I had hoped to be told more about how we could implement them today even though most browsers can fully support the features, how graceful degradation  and progressive enhancement could be applied to bring these new features to today’s customers.

This, sadly, was not the case.  Too much time was spent explaining principles I had hoped those in the room already new.  Yes we all learnt something but I think we could have all learnt more.  As a HTML 5/CSS 3 primer it was okay but I could have and have already got 90% of that just “Googling” on the internet.  Lets hope that the next two days brings more realism and less theory.

Filed under  //   CSS 3   FUTURE OF WEB DESIGN   HTML 5   conference   fowd   london