I thought with the turn of the new year and whatnot, I’d make a few improvements to my blog.
For some reason when I started writing I thought it’d be a great idea to use rather abstract titles for all of my posts, something short and curiously inviting (hopefully) rather than the straightforward approach of actually describing what the post is about. I wanted to avoid long and boring titles like “Differences between Flash Player 10 and 10.1″ or “How to install.. blah blah”.
So although, as far as titles go, they could probably be more boring – they could definitely be more helpful. Most of them are obscure and aren’t really meaningful. They’re fine for human readers, especially after people have read the post, but they’re not so good for search engines or people searching for what I’ve written about.
I decided then to use Wordpress’ custom fields to add a descriptive ’subtitle’ to each post that should shed some light on what I’m actually writing about and hopefully the titles should start making sense.
I could have started anew and use descriptive titles from here on, but that would be inconsistent and make those old titles even more nonsensical. I could have renamed the lot, but the old URLs would then be meaningless (the name is in the permalink) or if I changed those URLs then previously incoming links would be broken.
Custom fields are essentially metadata for each post and can be pulled in by your theme.
I choose to display my subtitle under the each post title so humans, search engines and crawlers alike can read abstract title and the helpful subtitle description together.
Custom fields are added at the bottom of the ‘Add New Post’ page and can be any amount of value pairs that take a name and value.
These custom fields won’t automatically show in your post, you’ll need to edit your current theme’s PHP files to retrieve them.
The get_post_custom function will return a multidimensional array with all custom fields of a particular post or page, which you can traverse to find your custom value pair:
<?php get_post_custom($post_id); ?>
Otherwise you can use the get_post_custom_values function and send the field name to get an array of all the values with that particular key:
<?php get_post_custom_values($key); ?>
I’m using a field to add a subtitle, so I append the value onto the end of my title which you can see on the left (if you’re reading this on my site).
Semantically this is part of my title. As I stated above, for SEO purposes, I want this to be considered as a part of my title for all intents and purposes by search engines and spiders as well as humans. I only ever want them considered ’separately’ on an aesthetic level and in Wordpress’ forming of the permalink.
So I’ve styled up the subtitle to look complimentary to the ‘actual’ title with CSS, but injected it into the post’s h2 title tag in my mark-up so it stays semantically sound for machine readers and accessibility purposes.
So here’s the combined title mark-up (without style hooks):
<h2 class=”entry-title”> <a href=”..”>Start Making Sense</a>: <span class=”entry-subtitle”>Wordpress, SEO and pimping my blog</span>
</h2>
And the styled and un-styled versions look like this:
It’s subject to a conditional statement that checks whether the custom field has been populated, so I don’t have to rush through adding them to all my posts and those without subtitles yet won’t look broken.
This does mean however that it’s only implemented by the theme, not by the publishing platform. This means it will only be seen by visitors to the blog, it isn’t published to the RSS feed, for example, so syndicated readers won’t see it.
It’s very easy to generate a sitemap and according to Matt’s video a simple list of URLs would suffice, but I looked up the Wordpress Plugin Directory for ready-to-roll solution and found the Google XML Sitemaps which does the job for me.
It’s fully automatic so it doesn’t need my attention once I’ve installed it. It generates an XML file based on my current posts and pages and automatically updates whenever I publish or modify anything new.
It also sends notifications of updates to the main search engines – Google, Bing, Ask.com and Yahoo! – and has a number of advanced options concerning prioritising pages and setting the frequency of how often certain pages should be checked again by crawlers for updates.
The XML file it generates sits at http://blog.marchibbins.com/sitemap.xml (for me) and there’s an option to attach an XSL file for styling, but I choose just to use plain XML.
I got to browsing some of the other popular plugins and temporarily tried out Sociable which adds typical social bookmarking links to the bottom of each post.
I chose not to use it in the end, I thought it was a bit over-the-top for my site.
There’s a lot more in the directory though, like Add to Any, SexyBookmarks and ShareThis – though they’re not hard to write anyway, if I eventually change my mind.
I made a few other minor changes here and there, some CSS changes and design tweaks.
I threw an RSS link into the header and dropped the amount of posts that show on my front page.
I realised my posts can tend to get pretty lengthy and often have embedded videos or Flash content, so showing ten of those (the default) made the page quite heavy.
I started using the ChaosTheory theme when my blog was freely hosted on Wordpress.com and I’ve stuck with it since, making odd modifications to both server-side code and the front-end as and when. To use it on a Wordpress.org blog I found a port hosted by Automattic but it’s never been quite right nor entirely compliant with mark-up or CSS standards, I’ve only really maintained it for consistency.
Recently though I found the Unicorn ‘Universal Conformance Checker’ from the W3C which combines all the common validation checks and also has a MobileOK Checker which looks at the ‘mobile-friendliness’ of a site.
Shamefully my blog scores an awful 0/100, due to links with “_blank” targets, the amount of images embedded, the presence of Flash and Javascript and a ton of other things.
Over time it’ll be my aim to get all that sorted. Hopefully without having to start my own theme completely from scratch.
In July, Google announced their plan to develop a lightweight operating system based on their successful Chrome browser. Intending to be open source, speedy, secure and simple, this would be their attempt to re-think the operating system as Chrome previously ‘re-imagined’ the browser.
It was Google’s aim to get users from start-up and on to the Web in a matter of seconds.
The Chrome OS would be the kind of system targeted at Netbooks, catering for the modern generation of computer user for whom the majority (if not all) of interaction takes place on the Web.
The OS would pretty much just be a browser in fact. All the user’s applications and data would (and would have to) be stored in the cloud; as stateless data and Web-based apps.
With that in mind Google could completely go back to basics and redesign the underlying security architecture of an OS. Because it was their plan to run everything ‘in the browser’, the underlying system would no longer need the capabilities of a normal operating system, for example, the ability to install applications or the need for security precautions to handle them. There is also no file storage, so you wouldn’t even need any real kind of storage space or file system in the traditional sense.
This all results in the user never needing to deal with viruses, malware or updates for applications or their security system. It also means the OS will be up and running in seconds of booting up – and thus, ready almost immediately to get on to the Web.
As part of that announcement Google publicly released the code to the open source community and called for contributors to engage with their developers and start working with the code.
TechCrunch’s coverage has a guide to running the Chromium OS on a virtual machine, essentially software that replicates the behaviour of a standalone physical machine. This means you don’t have to install this OS instead of your native system or worry about any operations performed by Chromium affecting your current platform, it’s running in a secure sandbox.
At the time of this writing, the torrent file and image is considered to be safe, though as Jason Kincaid writes, this could at some point be re-written to be unsafe.
Now although it’s obvious, I’ll point out (as the article does) that this is a very early release of Chromium, so isn’t as near fully featured as that we’ve seen demonstrated. That version too is itself unfinished. This build has also not been put together by Google.
Neither is this intended to run on a virtual machine, so you won’t get anywhere near the performance that you would for real. This is the usually the case for any system running on a VM, but because pretty much the whole deal with Chromium is the speed, what we’ll be seeing should not be considered ‘as is’, it just a method to give you a bit of a sneak preview instead.
Usually, VMWare Player is my preferred choice for virtualisations. However the build comes as a VMDK file and VMWare Player runs from a VMX file. The VMDK file is the appliance, the VMX file is a descriptor (processing instructions that the Player relies on).
VMX files are easily written in a text editor and I found an example which I modified to run as part of my development environment, which follows below.
Simply save this file as VMX format and run it from VMWare Player:
Depending on your settings, you may have to change the ethernet0.connectionType to “nat” and the ide0:0.fileName to your VMDK filename – if you got the torrent version, that will be “chromeos-image-999.999.32309.211410-a1.vmdk“. I also gave it a little more memory.
TechCrunch recommend using VirtualBox, a cross-platform virtualisation. VirtualBox can run straight from the VMDK so don’t worry about a VMX file – just follow the instructions.
Initially, everything is a bit sparse and you may wonder if you’ve done everything properly (have a look at the screenshots below), but this is just a reminder that what we’re playing with here isn’t ready at all – the video demo is a far more polished version than this and we’ll keep that in mind.
When it gets going though, we start to see some of those familiar features.
There’s the application menu, not a drop down menu in our version but a ‘pinned’ tab – the drop down must have been put in later.
I started to play with some of the apps, they’re exactly the same here as they are on any other platform – they work completely as they should – Google’s Calendar, Docs and Reader to name a few.
Saying that though, why wouldn’t they? These ‘apps’ are just the webpages we’re used to, actually you’ll see exactly the same as visiting ‘http://www.google.com/mail‘ and ‘http://www.google.com/reader‘. There is zero difference, just like visiting ‘Amazon.co.uk‘ works plenty fine too.
The fact they’re called ‘apps’ is just semantic thing, just a way of thinking about them as products launched from some kind of desktop-analogy, rather than destinations found at the end of a search engine. I’ll come back to this later.
Then I started to play with the apps that launch in ‘panels’ – the first hint of something that looks native to Chromium.
There’s appropriations of the Calendar again and Google Talk.
But then the illusion was slightly shattered when I notice ‘View: Mobile’ link at the bottom of the calendar and chose to click ‘Desktop’, which just showed just the other Calendar view (the first one, above), all displayed in that little window with scrollbars – because, again, it’s just a Web page we’ve loaded here, but in a custom view.
The chat is pretty much the same as the Google Talk, and includes voice chat.
This was actually a bit disappointing, of course I know that the Chromium OS is pretty much just Chrome and that everything is a Web page really, but I expected these apps to have detected that I’m visiting on the Chromium OS and serve a more tailored interface. I wanted some kind of dedicated experience basec on the app knowing that I’d be seeing everything through one of these panels.
Having said that, the Chromium OS project site has a whole section dedicated to the User Experience, which describes the ‘motivations, assumptions, and directions’ behind the interface design. It shows much of their work in-progress.
On their screenshots of the latest version, these windows seem to be more developed, the chat doesn’t have the default controls and there’s a notification panel that looks like it nicely ties up the application in some kind of native Growl equivalent – see here.
By the looks of it something like that could be achieved as simply as combining RSS and Javascript (maybe it does – it’s all Web pages remember), but putting it in a custom panel, presented in custom ‘chrome’, would give it a lot more strength and me more confidence.
The majority of the links from this application menu, in fact, are just to Web pages, rather than apps in these custom windows.
One of them links to a straightforward enough Chess game, demonstrating Chromium’s support for Flash. It comes with Flash Player 10.0.32.18 installed (currently the latest stable release) and it runs just fine.
On the idea of using only Web applications, looking at Web apps versus desktop apps, I think for a long time people have been wary of becoming completely dependant on them.
When I say ‘Web apps’ here, I don’t mean everything that you could consider to be an app or just any kind of RIA, arguably any ’site’ is or could be ‘an application’. Instead I’m going to refer to the purely stateless apps, where the software, user settings and data are all stored somewhere in the cloud – on a server somewhere as opposed to the user’s local machine. Here I’m referring to the kinds of Web applications that are direct parallels of popular desktop apps, think the likes of the Google Docs suite.
For example, I know of a few people who dabble with Google Documents (Google’s word processor), but won’t use it exclusively over Microsoft Word, they use it for the odd document or quick note but not anything of length or real importance. Likewise with Google Spreadsheets as a possible choice over Microsoft Excel.
I think Spreadsheets is a different game, Excel is really quite powerful and has a lot more advanced features, though I’m no spreadsheet wizard. With Documents however, with the feature set far closer to that of Word or any enterprise desktop word processor, what’s the problem halting full adoption?
Is it a trust issue? Are people wary of Google or concerned about losing their data?
I’m a big fan of Documents, I use it for all my writing, I don’t own Microsoft Word and anyway, I like it. I’m writing this post using Documents because I prefer the environment over Wordpress’ authoring tool, I’m confident that my data is safe and secure.
And then there’s email, I don’t use a desktop client at all for my personal email, I use Google Mail. But compared to the rest of the Google app suite, Google Mail is seen as something quite different.
For some reason, Google Mail is set apart from the rest of the Google Docs applications, not seen on par, even though your data there is equally as secure or insecure, and backed-up or prone to loss there as it is with the apps on Docs. They run alongside each other, they have the same authors, same security, the same look and feel even.
So why is this? Is it just the case that Google Mail has been around for longer, so we’ve just gotten used to it? It has had a longer development life, but those advances are duplicated across to other software.
I wonder how many of the people who choose not to use Documents for trust, security or want of having their documents saved locally, do use Google Mail but haven’t ever exported their mail and backed-up an archive on their computer?
I think two things set Google Mail apart. Firstly, it’s just better than most mail clients – it’s fast, responsive, it shows emails in threads (which was pretty new at the time) and since then we’ve gotten hooked and now can’t possibly drop it for any of those old clunky desktop clients.
Secondly, probably because of that first reason, it seems we’ve kind of ‘forgotten’ that it’s a Web app – that’s just a load of that temperamental HTML and Javascript substance writing data to the browser, but not only is it so powerful that it can trump the desktop software, it’s extremely reliable so we seem to think that it surely can’t just be a Web page like any other page in our browser.
Not only are we forgetting that actually there really is no difference between Google Mail and any other page (other than excellent engineering), but that there is a difference between it and one the desktop alternatives.
What I’m talking about here is that we should consider our way of thinking about these applications. It’s not a new observation that the gap between desktop applications and Web-based applications is closing, Google Mail is probably the best example of that – perhaps the killer app in that respect. It just seems surprising that the Chromium OS has zero file storage, you do not save anything – but it really shouldn’t be.
I talked about suspending disbelief in convincing myself that some of the Web pages I was looking at were actually apps and not just normal HTML pages – but does it really matter?
Take the application menu, note it’s similarities to the application interface on the iPhone which also collates Web links and native ‘applications’ together. Both treat them as one and the same with an icon treatment that doesn’t distinguish between the two.
Ultimately, if we get the desired result – on the basis that trust and security is in place and what we want to get done, gets done – I don’t think it matters if the program is Web-based or ‘desktop’-based, as much as it doesn’t matter if the app is written in HTML, AJAX or Flash instead of C or VBA.
When Adobe first starting talking about AIR, describing it as something like a desktop runtime for Flash, I didn’t think anyone would consider any Flash app to stand on equal footing to traditionally written desktop software (again, from the likes of C or VBA). At that time no-one really took Flash anywhere near as seriously as they do now. But now look at all the Twitter clients we use, the BBC iPlayer.
I digress. What I’m saying is that everything on the Web is constantly evolving.
Google Mail is the application that proved that stateless computing ‘can be done’ and can be accepted as the norm. Chromium then, has the potential to be the software that proves true stateless computing ‘can be done’ and is a confident first step to introducing that as the norm.
Chromium loads some Web apps natively, others it loads as if they were native. With apps like these, if you were the kind of user that didn’t know or didn’t care that they only served online, you wouldn’t be any the wiser because of the way in which Chromium unblinkingly presents them.
I’m reminded of the ‘What is a browser?’ video and how initially I thought of the people as being quite naive, but in retrospect I don’t think it matters what a browser is, it’s what you do with it.
For a lot of people the search engine (Google or otherwise) is synonymous with the Web, or is the Web. Not removing choice, I don’t see a problem with these apps being synonymous with ‘mail’, or ‘chat’ or ‘calendar’ for users who wish to use them.
We’re pretty much always online now and Chromium is targeting the Netbook type system (also to note perhaps, the TechCrunch article says you cannot download and install Chrome on any machine – you will have to buy a new one), Chromium could really work. As I say, if it does it’ll enforce this new paradigm of how we think about these apps.
In the end I couldn’t survive the whole day on Chromium because of the virtual machine’s performance, but I got to wondering whether I could sustain myself on completely stateless computing if I was handed the real Chromium to try out for a period of time.
With the help of Wakoopa, I looked at the most popular apps for various platforms and chose those I use the most, for each I came up with a currently cloud-based alternative – all of which I’ve used at least once when circumstance has called for it.
Here’s a sample of what’s available:
Desktop
Web-based
Internet Browser
N/A
Mail
Google Mail, Google Wave, Hotmail, Yahoo! Mail etc
iTunes/Spotify
Last.fm, Pandora
Instant Messaging
Google Talk, Google Mail
Skype/Voip
As above, GizmoCall, or any webcam supporting site
CodeRun – can edit, run and compile various languages including PHP, ASP.NET and Silverlight
There are far more than I’ve listed here – what I’m saying is, this isn’t a phase this is just development.
So Chromium is looking promising, no doubt more official releases will be on the cards for next year. Until then, if anyone does happen to have a Chromium-ready Netbook they want me to Beta test.. I’m up for the challenge.
Reruns:The best bits from this year's Adobe MAX and FOWA
Two of the big events of the conference season, Adobe MAX and Future of Web Apps, finished up a couple weeks ago and now most of the recorded talks have surfaced online.
Carsonified have only uploaded a small handful of talks over the past few weeks but they’re all worth a watch. So far I’ve only found their London talks on their Vimeo channel, but the Dublin sessions have started to appear on the FOWA site.
The big news out of Adobe MAX 2009 last week was all about mobile and the developments for the Flash platform on devices, the forthcoming release of Flash Player 10.1 and of course the announcement that Flash CS5 will be able to publish Flash files as native iPhone applications!
As you can see in the video, Flash CS5 will make it super-easy for developers to publish their Flash applications as a native iPhone executable, so simply it would seem, as changing a publishing setting at author-time.
This means developers don’t need to make any changes to their applications in order to run them on the iPhone (though presumably the APIs will be limited). It also means that existing applications won’t need to be rebuild from scratch (not even be completely refactored, as before) and can be distributed via the AppStore.
It doesn’t, however, have effect on viewing Flash in the Safari browser. This still cannot be done.
What Adobe have achieved is the ability to compile Flash as an iPhone executable to run as a native application – they haven’t created a Flash Player for the iPhone, or any way for the iPhone to interpret a SWF at run-time. They’ve made their files compatible, rather than the other way round.
There’s already some applications available in the AppStore, these are:
There’s also an FAQ (and Developer FAQ) which goes through what can and can’t be done.
Mark Doherty has written about the announcement and lists some of the limitations that will be imposed, for example some typical features you might expect to work with, but won’t be available:
Microphone access
Camera access
Photo selection from file system
Contact selection from the address book
Cut/copy/paste
Maps
..actually quite a few limitations.
Ted Patrick is one of the Adobe team who developed some of the demo applications. He has posted an article on his blog with the four sample apps and included full source so you can see, as he says, there’s absolutely nothing special going on – it’s just simple AS3 cross-compiled to iPhone ARM Binaries.
Of course, it’s not news that Flash isn’t without sceptics. Not everyone is looking forward to the prospect.
Jeff Lamarche is an iPhone developer who has some very good points on being cautious when developing Flash for the iPhone.
He shares my opinion that you should avoid ‘hammer development’ principles and instead should choose the best tools for a platform. He says:
Flash has always been a compromise that takes considerable overhead to let you create applications that can run on multiple platforms, while feeling native on none and getting native performance on none.
He goes on to make valid points about performance when road-testing some of the applications, also noticing some inefficiencies and possible breaches of Apple’s guidelines.
Presumably when you create applications with the recommended workflow, with XCode, Interface builder and the iPhone SDK, developers are somewhat constrained by them – definitely with regard to the interface, visual components and interactivity. With Flash’s ‘back-door’ sneak of creating apps, these may be breached.
That being said, I haven’t had a chance to play with these applications yet (I don’t actually have an iPhone..) but even then, presumably these are apps for demonstration and are, as proven, purposely uncomplicated.
And as always Flash has its haters.
A comment on Mike Chambers’ post might be a bit knee-jerk and unjustified, but also hints as to some of the feelings that will no doubt surface if the AppStore is inundated with bad Flash apps and games.
Hopefully Apple won’t change their position on accepting Flash.
But not to forget – this was really the second big announcement of MAX.
The first announced that the forthcoming Flash Player 10.1 appears to run on pretty much every other smartphone and high-end mobile device on the market too. Which has a lot to do with new commitments to the Open Screen Project.
At Flash on the Beach, Mark Doherty’s spoke about the improvements to Flash Lite and how advances in Flash technology outside of the ‘main’ Flash Player have beneficial effects overall, to the platform as a whole. One such advancement is that the new multi-touch and gestural events in Flash 10.1 will be completely available for non-mobile applications too.
As I say, advances in one technology can propagate development in another. That said, Adobe have also announced that they are developing a lightweight Flex framework for mobile devices, called Slider.
Slider is a mobile-optimized version of the Flex 4 framework, allowing developers to leverage their existing Flex skills but benefit from optimised performance and a streamlined user experience for devices with less memory and slower processors.
There will also be a new set of user interface components.
Going full circle, a greater presence of Flash and Flex on mobile devices puts more pressure on Apple to adopt the Flash player for their Safari browser.
Hopefully some time soon, seeing this screen will be a thing of the past:
Shajay talked about his research into alternative approaches to architectural design, namely his use of unconventional software and modelling techniques for some of his work at Zaha Hadid.
He spoke about using software traditionally used for developing videos games and designing motion graphics, showing us some of his experiments with Maya.
He explored the effects of using CGI over traditional methods, writing algorithmic and generative visualisations to create new original designs or influence his existing ‘traditional’ ideas.
Shajay showed us a lot of illustrations and motion captures from his research and project work, all of which can be found on his blog.
Dotmancando is Nitipak Samsen, an interaction designer and recent Royal College of Art graduate, who demonstrated his exhibition piece; the CoinFlipper.
His ideas revolved around the psychological aspect of control and his belief that contrary to our outward appearance, we don’t always want decisions left up to fate or randomness, such as that found in the event of a coin-toss.
Dot claims that we most likely always form a preference as to the outcome before flipping a coin and probably really only flip a coin anyway to feel less guilty about a choice, or to affirm that such an outcome is the right decision.
So he created a mechanism to take that decision out of the hands of fate and to perform a predictable coin toss by way of a impartial mechanical device, in turn, forcing ‘the flipper’ to reveal their true intention.
Dot was very entertaining in showcasing his many prototypes and the recordings of the experiments he carried out. We saw various incarnations constructed with wood, solenoid and Meccano and DIY-style gears attached to rulers until he ultimately achieved his final design.
Alexander Grünsteidl is an ex-product designer who founded Digital Wellbeing Labs, a project set up to pilot a new kind of retail environment for digital lifestyle products.
Born out of distaste and ‘recognition of failure’ of the traditional mindset of consumer retail in selling electronic products, Digital Wellbeing Labs attempts to address the need for innovative consumer experiences in converging products with digital services and new media.
Alexander saw that his electronic products no longer sold successfully in ‘traditional’ shops, suggesting that the conventional retail model is a leftover process of the industrial age, a process that works for big brands but not for smaller.
He claims that now in our ’society of information’ a different distribution model is required, that small brands don’t need innovation in their products – what’s needed is innovation in shopping.
His showroom attempted to challenge both the traditional and Internet retail economies, specifically the current trend of ‘the last click’ – and pointed out Dixon’s recent advertising campaign which recognises that.
His showrooms are intended to be places for companies to connect with customers and to demonstrate their products, not places to perform actual transactions, but social spaces to engage.
Jenhui works on the connections of humankind and machine, exploring the relationship and cooperation between humans and machines in the manufacturing process and the apparent dependency and inseparability that the two share.
He created a machine that takes a snapshot of the ‘user’, a person whose hands are immovably strapped the machine, holding marker pens, and moved around a canvas by a set of motors and devices in order to create their portrait in a ‘cooperative’ process.
Jenhui was intrigued by the cooperative roles of humans in manufacturing, working around (and even inside) machines.
He claims that similarly human identity is not independent of the machine-like workings of our society. That consumer buying and what we consider to be individual characteristics of our personalities are determined by mechanics outside of our control, that we are extensions of that machine.
He went on to consider the notion of a portrait, a single representation of a person, a traditionally selected and contrived choice.
His conception subverts that idea, partially removing choice by enslaving the human locked into his machine (which he named Geppetto) and forcing the human to recreate (and experience) the machine’s point of view.
Whilst their influence is limited, the participant can affect the outcome of portrait in choosing to cooperate with the machine (or not) by allowing or constricting their movements.