chrismar.sh

web developer, movie lover and tea drinker

My thoughts on iOS 5

October 18th, 2011

I own an iPhone and an iPad, so when Apple announced iOS 5, I was more than mildly interested. But now that it’s been released, there have been grumbles in some quarters about the performance of some apps, the lengthy upgrade process, and the general underwhelmingness of it all.

I know you’re desperate to know what I think too, so here goes.

I upgraded my phone on Thursday night, and left it there overnight for the download to finish. In the morning , it had finished downloading but, despite leaving it as long as I cold, still had not finished reinstalling all my apps, music and content.

I must add that my Internet connection is not the fastest, and the 700 odd megabyte download will have taken several hours.

Nonetheless, I was able to play with the iOS that day, and when I plugged my phone back n that night it sorted the problems out straightaway. So what’s new, what’s different, and what’s rubbish in iOS 5?

Overall look and feel

One feature of iOS 5 is that it is essentially the same as iOS 4.x. Apparently it will run faster, and as the new iPhone has the same faster chip as the iPad 2 that may well be the case. But other than adding a couple of new icons (video, reminders, newsstand) to my home screen it really doesn’t look any different.

The biggest difference is a new Music app that replaces the iPod app. It does exactly the same thing, although the interface has been smartened up on the iPad.

App speed

Undoubtedly some apps will run faster, but on the whole there’s no discernible difference. The (new and supposedly improved) Facebook app seems to open a lot more slowly than before, but I think that may be to do with the redesign of the app rather than the OS.

Many app developers have brought out iOS 5 compatible versions of their apps, but that may be more to do with new OS features like notifications instead of speed upgrades.

iCloud

One of the most eagerly anticipated upgrades was iCloud, an Apple-certified way to store calendars, contacts and mail in the cloud.

I’m using it for my calendars and contacts, and it’s great. It can sync contacts and calendars across all my devices, and it makes it easy to share my calendar with my wife. Unfortunately, is means I have no excuse for double booking myself!

There are other options out there – Gmail and Google calendars springs to mind, but iCloud is a very simple way to organise yourself.

Reminders

Linked to your calendars, reminders is a fairly useful app – its a place you can store all the things you need to do. There are undoubtedly apps out there that will do similar things, with even more functionality, but the tie-in with your iCloud calendar is a bonus.

Notifications

I’m a big fan of the notifications centre. It gives you granular control over how apps notify you – for each app you can choose to be notified by a pop up (that you need to dismiss), a new, very subtle popover at the top of the screen, that disappears after a couple of seconds, or not at all.

There is also a way to see all your notifications by swiping down from the top of the screen. This is a handy way to see all your texts, emails, Twitter mentions and Facebook messages in the same place. Much better than getting 20 popups each day.

The notification screen also appears on your lock screen, so it’s easier than ever to keep up to date. The lock screen also has a new camera feature: double click the home button and, in addition to the iPod controls, a camera icon appears next to the “swipe to unlock” message. Pressing this immediately opens the camera, and you can now use the volume up button to take a picture.

iMessage

Another great feature for me is iMessage. Another step towards iPhone users being able to communicate without the need for a call plan (after the excellent FaceTime), iMessage means that when you send a text to another iPhone user, it doesn’t use any of your text allowance, but sends using your data plan. There are a fair number of my friends and family who have iPhones, and texts to them all will now be free!

This has the added benefit of working over wireless as well as over the phone network, so even when I’m at home, where reception is patchy, I can send and receive texts from a huge group of people really easily. It’s a great feature, and I predict that soon iDevices will be able to call each other for free too, when the carriers have been beaten down.

Conclusion

Overall, it’s not a groundbreaking upgrade, but I don’t think that’s likely now. The OS is already pretty advanced, so any changes to it now will just be functional. Siri, which is available on the iPhone 4S, allows voice control of your phone to an unprecedented degree, but in the same way that the last big iOS upgrade allowed things like copy and paste, this upgrade simply enhances many of the features that were already available.

It’s the integration of services that makes it good. You can now tweet from within apps, you can sync your calendars seamlessly, you can message iPhone users for free. All of these things were possible before, using third-party apps, but their inclusion in the iOS core is a good, if not groundbreaking, addition to Apple’s fastest-growing OS.

A tribute to Steve Jobs

October 7th, 2011

The day after Apple’s first Keynote speech without him for a long time, Steve Jobs passed away at the age of 55. He had been ill with cancer for some time, and had recently been cutting down the number of visitors he was receiving, and had passed day to day control of Apple to Tim Cook, ostensibly in command since the beginning of the year.

Tributes have been pouring in across the world, with even Google adding a tribute to their homepage, a high accolade from one of Apple’s biggest rivals.

It is his drive and vision that propelled Apple from the doldrums of the mid 90s through to its position today as one of the most valuable companies in the world. Apparently he could be very hard to work with, his demand for perfection causing more than a few clashes, but the products and legacy that he leaves behind is testament to his passion for Apple and his belief that in its core values.

The original iPod stunned the world, and has been getting better and better. It would have been easy to sit back on the success, but each generation of iPod has been startlingly new. He withdraw the iPod mini, even though it was selling well, relaunched the iPod shuffle, and saw the potential in the iPod touch.

He drew criticism n some quarters for the way in which he essentially told people what they wanted, but he was usually right – the unlicensed lapped up the changes to the iPod, drooled over each iteration of the iPhone, and gasped when the iPad was released.

It is his vision, and the people he surrounded himself with – the designers, the product developers, the marketing people – that caused app,e to grow and grow and grow, and the world salutes him for that.

Apple will be a different place without him, and it will be interesting to see what direction the company goes in without him at the helm.

I turn 33 in a month’s time *cough* *cough*

September 17th, 2011

My birthday is on the 17th October, and, more of a reminder to me than a nudge to all you devoted blog readers out there, I’ve decided to write down the things I would like.

The Good, the Bad and the Multiplex

The Good, The Bad and The Multiplex

My favourite film critic, Mark Kermode, in a rant about everything that’s wrong with cinema today.

I, Partridge

I, Partridge

The autobiography we’ve all been waiting for.

Twelve South iPhone case

Twelve South BookBook Leather Case

Combines an iPhone case a wallet, and a great-looking accessory. Nice.

Canon PowerShot SX210

Canon PowerShot SX210

We sort of need a new digital camera, and this looks pretty good.

Ping G15 5 wood

Ping G15 5 Wood

I borrowed a set of clubs a week ago, and played some great shots with the 5 wood. It’s the next addition to my bag.

And for those of you with extra deep pockets…

Legria M41

Canon Legria M41 camcorder

Our old mini-DV camcorder just broke, and with a new baby in the house it would be nice to have a new one. The M41 takes HD ready footage, combined with excellent low-light pictures and lots of extra features.

Wasting time, wasting words

September 16th, 2011

One of the drawbacks of living in the countryside is the length of time it takes to get to work in the morning. I drive the 10 minutes to the station, then sit on the train to Leeds for 40 minutes, then walk for 10 minutes to the office.

I love working at Epiphany, it’s a great place to work with a forward-thinking approach to web development within it’s core SEO offering. But the journey can be a drag, and I often feel I waste two hours a day travelling.

Yet those two hours of travelling do serve a purpose. For starters, I’m reading a lot of books, listening to podcasts and I’ve also been known to do the crossword whilst travelling.

Far from being a waste of time, I’m starting to find productive things I can do on the train as well. Technology has made it easy for me to tweet (@chris5marsh if you’re interested), check Facebook, read and answer my emails, and generally keep up to date with what’s going on in the world.

As I write this first draft, I’m sitting in Leeds train station with a few minutes to kill before my train arrives. I’ll finish this off now, save it and when I get home do a little editing and spellchecking before publishing it.

Smartphones and tablets offer commuters the chance to use their commute to do something useful. On the other hand, there’s always Angry Birds…

The Curse of Portmanteau Words

September 6th, 2011

Language changes. It evolves. New words are created, old words drop out of use, and technological innovations give new meanings to existing words. It’s unavoidable and, in some cases, encouraging that language isn’t static: it means our language is vibrant and this reflects the dynamism and creativity within its speakers.

However, there has been a flourishing of portmanteau words recently, that I really struggle to accept. I’m sure their usage won’t be decided by this blog post, but I thought I’d make my position clear!

A portmanteau word is one which has been made from two other words squished together. Often, this is a useful way of abbreviating an ungainly construction, or a way of defining a new concept by joining together two different meanings, but here are my five least favourite.

Bromance

A homosocial relationship between two men. A horrible word, which suggests a horrendous romantic comedy where two guys like each other, argue about a girl, then realise that actually their friendship is the most important thing in the world. Best avoided.

Jeggings

Are they leggings, or are they jeans? It might be my grumpiness increasing with my age, but I find both the item of clothing and the word itself slightly revolting.

Webinar

An online seminar. A grotesque word that serves no purpose. It saves seven characters, but has been known to cause nausea. It doesn’t help that it seems that most of the webinars out there are run by people who would be hard pushed to teach anything to anyone.

Chillax

Completely meaningless. Chill and relax mean essentially the same thing, so what good does combining them do? If the meaning is trying to make me calm down, it’s doing the exact opposite.

Guesstimate

My least favourite of all. Guess means to approximate with no real knowledge, estimate means to give an approximation based on some real-world knowledge. Putting them together means something along the lines of “To approximate based on facts but with no basis in fact”. Utter garbage.

What do you think? Are there portmanteau words hidden within this blog post that I’ve conveniently ignored? Am I being ridiculous? Let me know below or on twitter at @chris5marsh

Another IE bug: this time, it’s opacity

August 2nd, 2011

We’re all aware of Internet Explorer 6′s lack of support for transparent PNGs, and the hacks and workarounds we use to get around the issue.

But there’s an annoying and, frankly, head-scratchingly stupid bug in IE7 that happens when you use the proprietary filter attribute in CSS.

To give opacity to an element, you can use the opacity attribute, and then a couple of fixes for IE. So your CSS looks like the following:

#element {
	opacity:.5;
	-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
	filter:alpha(opacity=50);
}

However, using this code, IE7 doesn’t apply the opacity effect. Even though all the research I did suggested it would work, I had to squirrel around to find the solution: simply add a width or height attribute to the element, and the opacity effect will work.

Another one to add to the ever expanding list of IE bugs!

The Fallout from the NotW Scandal

July 24th, 2011

The freedom of the press versus the private rights of members of the public is a pretty hot topic at the best of times, but the current scandal that’s caused the News of the World to close down is on another level altogether.

Journalism has for a long time been an investigative medium: it’s important for those in public life to be held to account especially those in a position of responsibility or government.

But when the press oversteps its boundaries in such a radical and obvious way, there really is no comeback. I’m sure that some newspapers use all sorts of underhand ways to get their stories, and for a sensationalist tabloid like NotW, which is primarily concerned with celebrity rather than those in public office, the reading public are happy for those who have thrust themselves into the limelight to be exposed.

Most writers, the author of this blog included, are not professional writers. The accessibility of the Internet to provide a platform for opinion and comment have made blogging a common pastime.

Yet there are still standards in blogs. Some blogs, for instance MacRumors, have become authoritative in their own right. Stephen Fry also is an influential social media user and blogger. The point is that if we have all become writers, it’s important to apply the same standards to blogs and websites as we do to newspapers and print media.

Let’s heartily join in in condemning the unbelievable depths that certain journalists at NotW stooped to, but at the same time let’s apply a similar level of integrity to our own writing: no sloppy research; no blatant falsehoods; and let’s not try to dress up opinion pieces as fact.

Animating sprites using CSS

July 19th, 2011

One of the enhancements CSS3 has added to a web developer’s box is CSS animations. Webkit was first on board, with Firefox (with their new rapid release schedule) close behind.

It’s a good technique for subtle movements on pages, or animated hovers, and the great part of it is that you can add the code to your CSS without breaking older browsers – they simply show a static image.

N.B. Throughout my code examples, I have removed the -webkit and -moz vendor prefixes – you’ll need to add them to the beginning of all the animation and keyframes declarations.

To add CSS animations to your image, simply use the following code:

#animation-button {
	width:64px;
	height:64px;
	background:#c00;
	animation-duration:400ms;
	animation-iteration-count:infinite;
	animation-timing-function:linear;
	animation-name:animate02;
}
@keyframes animate02 {
 0%			{ background:#c00; }
 50%		{ background:#0c0; }
 100%		{ background:#c00; }
}

This will give you the following effect (you’ll have to look at it in the latest version of something like Chrome, Safari or Firefox):

However, when you combine this with sprites you can create some pretty cool effects. Usually CSS animations animates smoothly between properties, giving you the colour fading effect above. But the new versions of Webkit and Gecko (which power Chrome/Safari and Firefox respectively) have a new animation-timing-function value: step-start. This will jump between the individual keyframes you declare, essentially making keyframes frames.

So in an attempt to make an up-to-date version of an animated gif, take your sprite image, add it as a background image to an element, and then add the animation-timing-function to the CSS.

8 frame sprite of a lemming walking

#sprite {
	width:64px;
	height:64px;
	background:url(img/lemmings-walker-sprites.png) 0 0;
	animation-duration:400ms;
	animation-iteration-count:infinite;
	animation-timing-function:step-start;
	animation-name:animate01;
}
@-webkit-keyframes animate01 {
 0%			{ background-position:  0px 0; }
 12.5%		{ background-position:448px 0; }
 25%		{ background-position:384px 0; }
 37.5%		{ background-position:320px 0; }
 50%		{ background-position:256px 0; }
 62.5%		{ background-position:192px 0; }
 75%		{ background-position:128px 0; }
 87.5%		{ background-position: 64px 0; }
 100%		{ background-position:  0px 0; }
}

Voila! A CSS animated lemming. Using an additional animation to move it across the screen, you could have lemmings walking across your screen in no time!

What are your thoughts about using CSS for animations? Does it blur the boundary between style and behaviour? Should it really be left to Javascript? Let me know below!


Flattr this

Firefox 5 released 3 months after Firefox 4 – WTFF?

July 11th, 2011

Firefox 4 was a pretty big release for Mozilla – the user interface changed to put the tabs on top (very Chrome-like), Firefox Sync, WebGL, GPU acceleration, and lots more HTML5 and CSS3. So far, so good.

Firefox, for a long time my favourite browser, has been losing ground (in my mind at least) to Chrome, which launches in seconds rather than minutes, is easy to search and synchronises across the three computers I regularly use. Maybe it was the bloatedness of all the extensions, maybe familiarity had bred contempt, I don’t know, but Chrome was my new favourite browser.

Firefox 4 didn’t exactly change that, but it has made me more open to using Firefox. However, after the excitement leading up to a new version of Firefox, Mozilla announced that Firefox 5 would be coming out in June 2011, barely 3 months after the release of FF4.

Now browser version numbers can be tricky. Microsoft took 5 years to go from Internet Explorer 6 to 7. Now that’s a release cycle that could have been shorter. However, since then there have been new versions every couple of years, a decent length of time for the next version to be a proper update with new features.

Safari goes at a similar pace: announced in 2003, we’re now on version 5. Chrome leaves them all in the dust though – since its launch in September 2008, we’ve had 12 new versions, with 13 and 14 in the pipeline.

Google are working on a three-month release cycle, and this is the model Firefox have switched to. That’s all very well, but it means there will no longer be distinctive versions for web developers to support or drop support for. Google has an automatic update process, and you can be pretty sure that Firefox users are savvy enough to upgrade, but the worry is you may get users who are using a six month old version of the browser that doesn’t render your webpage right. And no developer can afford the time to test on 8 or 10 different versions of the same browser (we have enough of that with IE).

So what’s the answer? Well, we have to deal with it. FF and Chrome will release every three months, with new features and new capabilities. And as a web designer, I need to make sure that the sites I develop are simply well-coded. Robust code will use the available enhancements and fall back to simpler but still great-looking and functioning webpages.

Does the release of multiple versions of browsers worry you? What safeguards do you have in place to test browser compatibility?

HTML5 – the future of web design?

June 4th, 2011

What is HTML5?

HTML is the language used for building websites.
What we see is not solely because of HTML – it’s the CSS that gives it shape.
An HTML page is a machine-readable page, the underlying structure.
Getting that structure right is important for SEO, because Google doesn’t ‘see’ the page as we do, only the code.
HTML5 enhances the existing language of HTML, giving it more flexibility and more power.

What isn’t HTML5?

It’s not a whole new language.
It’s not a futuristic new way of writing webpages.
It’s not CSS3 (but they go hand in hand and I will talk about it)
Unfortunately, it’s not universally supported yet.

When will it be ready?

Never. But already. W3C is moving away from releasing an entire specification in one go, and is updating the specification as browser makers start using the functionality. It’s built to be backwards compatible with old browsers, with some fallback occasionally necessary.

HTML5 and CSS3 are continually evolving specifications, so we can use as much or as little as we like now. In fact, HTML5 doesn’t even exist! The specification is now called HTML, to reflect the continuous updating of the spec.

Browsers (even IE!) are starting to understand that it is driven by their users’ innovation as well as by them. Having a standard across all the new technology makes sense for browser makers as it ensures their browser won’t be sidelined.

Even so, there are differences between browsers. Not just which HTML5 elements they support, but how they support them. We’ll have a look at these later.

What’s in it so far?

HTML5 reflects the way the web is changing – you can’t be sure that all users will be sitting in front of a desktop or laptop computer – they could be on their phone, a tablet, a TV, or an as-yet-uninvented device.

HTML5 is all about structure, so we’ll leave the look and design of the page to CSS and the designers. But I need to stress how important code structure is: it makes pages clearer, easier to style, better to read, quicker to load and more search engine friendly.

This is the hard part to explain to clients: you can have a page that looks exactly the same, but the underlying structure can be good or bad. So what structural elements does HTML5 have?

New semantic elements

What do we mean by semantic elements? An element is the building block of HTML, the tags that you’ll see on an HTML page, such as a <div>, an <h1>, an <a>, and so on.

Most of the tags have a meaning associated with them – the <html> tag goes around the whole document and tells the browser where the HTML document starts and stops, a <p> paragraph tag tells the browser that it’s a block of text, and so on. These elements are: html, head (but we’ll gloss over these for the time being), body, h1-h6, p, div, ul, ol and dl.

Web designers have been using the <div> tag as an empty block–level container to hold all sorts of different content – headers, footers, sidebars, blog posts, and so on. They’d then use an id or class attribute to hook up stylesheets to that div in order to position and style it.

However, the structure of a document was difficult to tell when the same element was used to denote lots of different parts. HTML5 introduces a new range of block level elements: article, aside, dialog, figure, footer, header, hgroup, menu, nav and section.

Inline level elements are ones that fit into the run of the page, such as an <em> tag to emphasise text, or the <a> tag to use as an anchor. In HTML these are: span, a, cite, strong, em, abbr, img, amongst others.

Again, HTML5 gives us a few new tags to define parts of the document: address, mark, small, time, details, meter. These fit within the body of the text to define different elements.

So for instance, whereas before you might have marked up a document like fig. 1, now you can mark it up like fig. 2. You can style the elements exactly the same, so the site will still look the same, but Google and other text readers will know what parts of your document are important, which is the navigation, and so on.

This has another benefit – different devices can latch on to different parts of the document to, for instance, build a table of contents or create a print version of a page.

So new semantic elements give us greater control on how our page is structured. There are also some useability additions that have some real benefits, especially in the mobile world.

Forms are ubiquitous on the web, and over the years web designers have been ingenious in making life easier, creating colour pickers, range sliders and AJAX autocompleters. HTML5 has added a range of inputs which make form filling even easier.

Currently we have text inputs, password inputs, file selectors, radio buttons, checkboxes and submit/reset buttons. The new input types, widely supported by Opera and, to a certain extent, Safari, are: date (lots of them!), email, color, number, range, search, tel and url, and some new elements in output, datalist and keygen.

You can see, in Opera, that the new input types react differently, calling a date picker and color picker, and having a user-friendly slider and number selector. Datalist gives you a list of potential choices (like a dropdown list) but also allows you to type your own choice (no more slecting ‘Other’ and then typing in your own option!).

Keygen is not widely enough supported to be worthwhile but help keep your form data secure by keeping a secure key on the server and in your browser and cross checking in subsequent form submissions. Output is a holder for the result of a form.

Why are these useful? Firstly, it makes form validation easier. Many browsers will have automatic checking of form fields, so an email address, a URL or a phone number can never have garbage data entered. Dates don’t get confused (mm/dd/yy or dd/mm/yy) and you don’t have to mess about with Javascript to create a colour picker or calendar.

What happens if a browser doesn’t support it? In all these things, there are fallbacks. Browsers that don’t recognise the tag, it uses a default, so we get the following (fig. 6 – 11). Even in IE6!

The other benefit is in user entry. In devices without built-in keyboards, the space available for the keyboard is at a premium. If you know that the input has to be a number, only showing a numeric keypad is an advantage. The iPhone (using Safari) has different keyboards for URLs (with a .com button) and email addresses (with an @ sign) (fig. 3, 4 and 5)

Lastly, there are the multimedia tags: audio, video and canvas. Canvas is a tag that started life to allow Apple users to create widgets. It essentially allows you to draw on the browser using Javascript. It’s good for games and online graphic effects, and is used in the text replacement technique Cufon, and there are a lot of people making some pretty cool things using canvas.

The audio and video tags are a huge step: having native audio and video playback makes it quicker to load and gives the user more control over the playback control. Flash, which is used in most places, is a good compression and playback tool but relies on an (often unstable) plugin. YouTube now uses HTML5 video in supported browsers.

Here’s where one of the browser differences kicks in: different browsers can read different codecs. A codec is a way of compressing video – so the difference between a .wav and an .mp3 for audio, or the difference between an .mpg and an .avi for video.

VIDEO CODEC SUPPORT IN UPCOMING BROWSERS
CODECS/CONTAINER IE FF SA GC O IP AN
Theora+Vorbis+Ogg 3.5+ 5.0+ 10.5+
H.264+AAC+MP4 9.0+ 3.0+ 3.0+ 2.0+
WebM 9.0+* 4.0+ 6.0+ 10.6+ 2.3‡

In addition, H.264 has some rather gnarly licensing issues. So there’s no common encoding that all browsers can use – in fact, the current thinking is rather complicated: offer all different encodings with a Flash fallback. At the moment most browsers will have a Flash plugin, so why waste time re-encoding your video?

Essentially, it’s about progressive enhancement. Having the video tag means that if Flash does drop out of favour in future browsers (as it has on Safari for the iPhone and iPad) your users can still view the video. Also, as the video tag is an HTML tag, you can manipulate it the same way you could with any other tag, and control it using Javascript.

Lastly, there are some attributes that you can give to these new tags that will help out: placeholder, that puts default text in an input; contenteditable, which gives you more control over whether a user can edit; lots more rel attributes saying where a link goes and how it relates to the current page; datetime, allowing you to specify a machine readable time (great for things like articles or offers); and the brilliant data-*, which allows you to attach any relevant data within a tag without exposing it to the user, almost like a storage system for tags.

They’re the new elements, which give us even greater control over the structure of our website, help search engines crawl our content better and allow us to separate out structure and design even more.

Web APIs

The other part of a web page structure is the technology it uses. All server-side technologies (such as ASP or PHP) serve up an HTML page, but most of the processing is done on the server. The client’s browser is given a dynamically generated but static page.

Javascript is used to dynamically change this static page – you can use it to do simple calculations, validate forms and highlight errors, and so on. And with AJAX, Javascript can even pop back to the server, make a request, and return to the page, without the page having to be resubmitted.

Browsers are becoming more and more powerful, taking advantage of faster processors in personal computers. HTML5 introduces a range of APIs (Application Programming Interfaces) that allow you to use the browser (and the device itself) to do a lot of processing.

Some of these can be fairly widely used, others will be brilliant but are a little too exclusive at the moment. Bear in mind that the iPhone and Android phones use a Webkit browser, which has good support for this stuff, so is something to bear in mind for future mobile developments.

  • Web sockets

    An open connection with the server to allow data back and forth

  • Server sent events

    Like push notifications, where the server can send info to browser

  • Web storage

    Taken over from WebSQL, to be able to store data on the clients browser. Works better than cookies or sessions, as they are specific to the window or group of windows.

  • Draggables

    Something that has to be done with Javascript at the moment, allows users to move things around on the page

  • History

    Problems with the back and forward buttons (for example with the Dashboard) are solved! You can intercept back button clicks or send a click to the back button

  • Web workers

    Usually web pages are sent as a whole page, but web workers can take several processes and run them all concurrently.

  • Clipboard

    Copying and pasting has always been a little tricky – some workarounds include using Flash, but that has its own issues

  • File API

    This allows you to manage files better, by dragging and dropping files from your desktop to a browser window, allowing better file transfer and easier file manipulation.

The following have very definite advantage in the mobile sphere:

  • Cache manifest

    The cache manifest allows you to specify which files you should cache to use in an offline situation, essentially allowing you to use a website even when you lose connectivity.

  • Contacts

    Use your computer or devices address book to get phone numbers, email addresses, physical addresses and so on.

  • Geolocation

    Find out where you are!

  • Web Messaging

    This allows different browser windows to communicate with one another – currently to do this you would have to store sessions, which is very clunky.

  • Web Notifications (dropped)

    Usually websites use popup windows or modal overlays to give the user feedback. But imagine if you can hook into a universal browser notification system, to display messages – you can leave your email open in a background window and still be notified when new messages come through.

  • Media capture

    Allow websites to capture, edit and manipulate media such as images, audio or video and save back to your computer. Use webcams and microphones to capture video and audio.

There are tools to do this on your computer already, but the important thing is that you can all of this in the browser. Websites will soon be able to do most of the things that you need separate programs for (in a similar way to Google Docs and Gmail taking the place of Word and Outlook).

In fact, the Google OS uses these ‘cloud’ services exclusively, so you keep almost everything on a website.

So that’s HTML5 covered, now on to the related issue of CSS3.

How does CSS work?

Cascading Stylesheets are the next stage up from the document structure: they lend form and layout to the document, and style the semantic structural blocks you’ve put in place with HTML.

So, for instance, you can say that you want all paragraphs to have a margin above and below them, that you want headers to be a certain font, colour and size, and so on.

CSS2 is now almost universally supported in browsers, and there is a new approach to CSS3. Similar to HTML5, browser makers are leading the way, with suggestions and comments from users helping them work out new features, which the W3C then turns into the specification. This is why you’ll often see “vendor prefixes” in CSS files: to allow users to use up to date CSS but without making other browsers fall over, prefixing a new and snazzy CSS term with –webkit, -moz, -o, -ms and so on mean it will be ignored by any other browser.

In reality, this means you often have to redeclare terms, until the standard is fixed upon. To get an element with the id of ‘sidebar’ to have a 4 pixel rounded corner I would have to write:

#sidebar {
-webkit-border-radius:4px;
-moz-border-radius:4px;
border-radius:4px;
}

(The last one is there so that when it becomes a standard the style will be picked up).

So CSS3 is developing modularly, with parts of the spec being brought in as and when the browser makers agree on syntax and spec. So what modules are available?

CSS Modules

Lots of CSS3 properties are in this transition stage, so using them is a case of progressive enhancement.

It’s a good buzz word to use with clients, but what does it mean? Well, unless you’re a designer, you might think that rounded corners look lovely, but aren’t an integral part of the design of a site. So you add the CSS above and give a little extra treat for the growing number of people using advanced browsers.

With something like rounded corners, it’s possible to do using images, and extra divs, and a few other tricks, but they cloud the HTML code with unsemantic elements, aren’t scalable, require extra fixes themselves (what if it’s on a patterned bg?) and have the overhead of downloading more image files from the internet.

The best way round this, and the way of avoiding a common problem in the step between design and dev, is to design in the browser. If the client sees a JPG of a design, he’ll want the website to look exactly the same. No matter how well you explain that different browsers, screen sizes, colour balances etc. can affect websites, they’ll go back to the static design.

Developing in the browser allows you to show the design to the client in the browser they will always use. If it’s IE6, you’ll get feedback early on that things don’t look right, and you can fix them early. If he’s using Chrome, he’ll see all the jazzy effects. If he comes to see us and we view it here, and it looks different, then you can explain the “different browser, different monitor, different user” model.

So now on to the fun bit: what toys are available for us to use?

There are 45 modules (!) available, only 2 of which are at the Proposed Recommendation stage (ie the spec is ‘set’).

Some of the cool ones are:

  • Selectors/User Interface
  • Grid
  • Multicolumn
  • Text
  • Media Queries
  • Borders
  • Transformations (2D and 3D)
  • Math(s)

Why use unsupported elements and styles?

So if there’s so much patchy support for both HTML5 and CSS3, why use it? Years back, when the web was new and exciting, people were so excited to have information online it didn’t make a huge difference how that data was displayed.

Now, the web is everywhere, and people are using it not just at their desktop, but on laptops, tablets, phones, TVs, consoles, and lots more. In the same way that a computer in a car used to be a big thing, and all new cars now have several, the internet is informing our lifestyle.

So presenting the same data in multiple ways becomes more and more important. HTML is a logical progression, giving users more power to take control of the internet rather than serving it up as a prepackaged page. No two user experiences are the same, so we need to make sure we cover as many of those as possible.

Obviously we shouldn’t ignore those who are on less-advanced browsers, if we know it’s still a core part of our user base. But if you’re making a web app, then you can, and should, use the correct tools for the job, and technology that was current in 2001 (when IE6 came out) is now very dated.

The same is true of styling. Adding the extra flourishes and details is something that will reinforce the decrepitude of older browsers, and encourage browser makers to do more to update their browsers.

Chrome is already on version 10 of their browser, after 2 and a half years. It took Microsoft 5 years to upgrade from 6 to 7. The web moves quickly, and soon these will be everyday items in a web developers toolbox.

Browsers can use these tools now, and we lose out if we spend too much time looking back. They lend themselves to faster loading times, easily indexable and understandable pages, and user interaction.

Why is it important to Epiphany?

Epiphany doesn’t offer SEO, PPC or Web Dev in isolation. It’s an interactive thing – each feeds into the others. We understand that site optimisation is more than just driving traffic to the site, and that your website itself feeds into that crucial Google ranking or position on the Results Page. Plus, traffic being driven to a site means little if it doesn’t convert, and the usability of pages affects this.

We keep up to date with what search engines do to rank your page, and site optimisation is one of those. Pages that use native browser technology take less time to load, which makes the site better: better for users, better for server loads and better for Google.

It is important for any company working in the computer and internet industry to keep up with new technology, not just to be able to use the right buzzwords with clients, but to be able to explain our reasons for using it and, importantly, to deliver real measurable results.

Lots of the things we’ve talked about today don’t impact our web dev much currently, but may well be the cornerstone of future development projects. I know the R&D team, and the web dev team, are interested in doing more with web sites, with web apps and with mobile development, and this stuff can help us with that.

So the next time clients come to us and say “Is it built in HTML5?”, hopefully you can give a slightly better informed answer than you could an hour ago!