17/06/08

Permalink 11:47:34 pm, by robertc Email , 452 words, 86 views   English (UK)
Categories: Web Develop, Front End Web Development Share on reddit Share on digg Share on del.icio.us Share on ma.gnolia.com Share on StumbleUpon

London Geek Nights: Ajax

Review: London Geek Nights: Ajax at London offices of ThoughtWorks UK. 18:30 to 20:30

First up was a talk by Remy Sharp on jQuery. I got the impression there were a fair few folk there who didn't have much experience with Javascript so it was quite introductory, but it was still useful to see things in a coherent context and, of course, as my jQuery experience is limited there were several things that were new to me. The talk started with some general introduction to the 'grab some nodes and do stuff to them' approach of jQuery, first discussing the CSS selection approach and then some of the filter methods you could chain things together with. One thing to bear in mind, filter works with a set of siblings (ie. horizontally in the DOM tree) whereas find searches child nodes (down the tree). We then moved on to event handling and resolving the this reference in your handler functions - unfortunately I paid too much attention to this part to write much in the way of coherent notes, and although it was claimed the presentation would be made available online I'm unable to find it. This blog post seems to cover the majority of the same ground if you're interested, and the follow up post covers event namespacing which I was struggling to see the point of at the time but which I now see may be useful. Finally we were shown some Ajax - the load method lets you specify CSS selectors to specify a fragment of the document you've requested with the Ajax call and insert that in the document which is a neat shortcut I wasn't aware of.

After a short break we had a somewhat ad hoc presentation from a developer at (I think - sorry, didn't make any notes) the Guardian who showed us the unit testing framework they were using for their Javascript. It was interesting to see the approach, a strict adherence to the MVC pattern within their framework coupled with extensive mocking, but the code he showed us was a bit jarring after the elegance of jQuery. He said he wanted to make his Java developers comfortable with the code, so there were whole sentences for function names left, right and center.

Overall a fairly interesting night, even if I had to sit on the floor because I was late (nothing unusual there then). A bit disappointing the slides don't seem to have been made available, and we were a talk short because one of the scheduled speakers had to pull out before the event, but I'll probably go to some more Geek Nights, so 3 out of 5.

Technorati tags for this review:    
Technorati tags for this post:

10/06/08

Permalink 07:41:02 pm, by robertc Email , 326 words, 299 views   English (UK)
Categories: Web Develop, Server Side Web Development Share on reddit Share on digg Share on del.icio.us Share on ma.gnolia.com Share on StumbleUpon

Fixing WackoWiki for PHP 5

For a long time now, I've had a WackoWiki implementation on my (not so technical) personal site. It was upgraded from a WikkaWiki which was installed back in March 2003, which makes it about four months older than this blog :)

Anyway, the point is it's a legacy app, which has never been a problem for a little used website until I discovered (last night) that the hosting company was doing an upgrade on all the servers which would remove PHP 4 to leave only PHP 5. A quick check indicated Wacko R4.2 was supposed to be PHP 5 compatible, so I didn't worry too much about it and went to bed. Of course, when I checked this morning, it was broken, just a blank page...

I downloaded the error log and found a few entries like this:

[error] [client www.xxx.yyy.zzz] PHP Catchable fatal error: Object of class Wacko could not be converted to string in wakka/wakka.php on line 254

A quick Google revealed a number of other WackoWiki installs with a similar problem, but also this more useful result which explained the change in PHP 5.2 which was causing the problem:

Changed __toString() to be called wherever applicable. The magic method __toString() will now be called in a string context, that is, anywhere an object is used as a string. The fallback of returning a string that contains the object identifier was dropped in PHP 5.2.0. It became problematic because an object identifier cannot be considered unique. This change will mean that your application is flawed if you have relied on the object identifier as a return value. An attempt to use that value as a string will now result in a catchable fatal error.

Line 254 of wakka.php is:

$cache->Log("Before Run wacko=".$wacko);

I'm not sure what it's supposed to be doing, but it didn't seem too critical, so I just removed the object reference:

$cache->Log("Before Run wacko=");

Seems to work for me!

Technorati tags for this post:

08/06/08

Permalink 12:30:36 am, by robertc Email , 232 words, 162 views   English (UK)
Categories: Linux, Debian / Ubuntu Share on reddit Share on digg Share on del.icio.us Share on ma.gnolia.com Share on StumbleUpon

Amarok Issues with Ogg on Kubuntu

I just spent an hour fannying around with Amarok because it suddenly refused to play Ogg Vorbis encoded files. The correct solution turned out to be in this thread on the Ubuntu forums. The problem I was getting in Amarok was a message like this every time I tried to add an .ogg file to the playlist:

Some media could not be loaded (not playable)

Several of the solutions I came across recommended removing my Amarok profile, which then meant a good ten minutes waiting for it to re-scan my collection before I could see if the solution worked. Which it didn't.

A few more helpful solutions pointed the finger at Xine, the sound engine which Amarok uses, though most of the solutions were based around installing missing codec packages I already had (I was playing these same files in Amarok with no problems last week). However, when I tried playing the files in Xine directly I got another error message about there being 'no demuxer plugin available'. Again I spent some time trawling through solutions which blamed Grip for using incompatible versions of the Ogg Vorbis codec, or generating incompatible ID3 tags, but these were unhelpful.

The solution, when I found it in the forum thread above (which links to this Fedora related blog post), was very simple - exit Xine/Amarok, remove the catalog.cache and restart:

rm .xine/catalog.cache

Technorati tags for this post:

03/06/08

Permalink 10:28:10 pm, by robertc Email , 67 words, 259 views   English (UK)
Categories: Semantic Web News Share on reddit Share on digg Share on del.icio.us Share on ma.gnolia.com Share on StumbleUpon

Use the new microformats API in your Firefox 3.0 Extensions

I've had another article published on developerWorks, a short one this time, which looks at utilizing the new Microformats API in the upcoming Firefox 3.0 from within an extension. With it being a purposely short article I had to gloss over some of the background steps, so if you have any questions ask in the related forum topic and I'll try and point you in the right direction.

Technorati tags for this post:

01/06/08

Permalink 12:29:23 am, by robertc Email , 976 words, 166 views   English (UK)
Categories: Front End Web Development Share on reddit Share on digg Share on del.icio.us Share on ma.gnolia.com Share on StumbleUpon

In The Brain of Peter Elst: The evolution of the Flash Platform & ActionScript 3.0

Review: The evolution of the Flash Platform & ActionScript 3.0 at Skills Matter, Sekforde Street, London 18:30 to 20:00

This was my final London Web Week event, my curiosity for Flash had been piqued somewhat by my attendance at the onAIR London event even though I don't usually follow developments in this area, so I hoped this would be a good talk for getting me more up to speed.

I was late for the start of the talk, but I don't think I missed too much. When I got there Peter was talking about the use of Flash in digital art installations, I assume as part of a segment on 'good' uses of Flash. He then moved on to some of the new features in ActionScript 3, some of the highlights of which are: a new, more consistent, API based on ECMAScript 4; E4X; a new Event model; and support for binary sockets (which allows connections to arbitrary network services). Peter then discussed the many tools available for authoring and delivering Flash content with AS3, one of the refreshing things about the list was the number things on it which had recently been released as open source.

Next, common Flash myths were addressed. The first was the SEO issues - while it's true that search engines will struggle to crawl an all Flash site, they can, thanks to the Flash Search Engine SDK, extract the static text and links from Flash movies. Adobe are currently working with Google and others on ways for search engines to extract dynamic text and understand context. A related myth is that it's impossible to do deep linking on a Flash based site, but with the SWFAddress library it's possible to provide URLs for particular elements of your movie as well as support the back and forwards buttons in the library. Flash has traditionally required non-validating markup on its underlying HTML page, but with SWFObject that is also a thing of the past. Finally Peter expressed his frustration at people continually comparing AIR and Silverlight, AIR is a cross platform runtime environment whereas Silverlight is a browser plugin (actually, more like Flash) - they are different things and there's no point comparing them.

Having covered the current state of 'stuff based on the Flash runtime', Peter moved on to look at the future directions for the platform. One of the big changes is Adobe's drive towards open source, some of the key projects which have been open sourced are:

  • Tamarin - the virtual machine which underlies ActionScript is now to be the engine for Javascript in Mozilla 2
  • Tamarin Tracing - a version of the virtual machine which uses trace trees to optimize JIT compilation (pdf) and should be suitable for 'constrained environments' such as low end mobile phones and other embedded devices
  • Flex SDK - previously an enterprise application server selling for big bucks, now free to download and plug in to Eclipse
  • BlazeDS and the AMF file format - similarly, an enterprise solution for feeding live data to Flash front ends now freely available
  • The Open Screen Project - possibly the most exciting of all, Adobe have removed licensing restrictions on the SWF and FLV specifications, making it legal for anyone to develop a Flash player for any platform (64bit Flash here we come?), and removing licensing fees on Flash and AIR to encourage adoption in the embedded space

Peter then went on to talk about the next version of Flash (both the authoring environment and the player) which he illustrated with several slightly hard to hear videos shot from his phone at major Adobe events. Some of the neat stuff in the Flash authoring environment was live video on the 'stage' (ie. the bit in Flash where you assemble the content), auto-tweening through drag and drop and path manipulation (no more messing about with keyframes) and inverse kinematics (draw a picture of an arm, then make it move). The player itself will support PixelBender - a language for writing image filters which will then work in Photoshop, After Effects and Flash, in real time on running movies. I thought this might be a cool way to improve accessibility in Flash - add high and low contrast versions of Flash movies at runtime. The other cool new thing we saw was Pacifica, a SIP based VOIP client in Flash (and, in future versions, AIR). It struck me, as we saw presentations on these and other technologies, that Adobe is addressing the arrival of Ajax and DHTML interfaces moving into their traditional 'rich application' space for Flash by heading out in directions that are unlikely in the foreseeable future be doable in HTML and Javascript. This is definitely a good thing, it will push the development of the web onwards, but it means that all those people who unconditionally hate Flash on websites are going to have to be putting up with it for much longer as there's just going to be some things that can only be done in Flash.

The last demo we saw was a guy at Adobe who'd written a C/C++ to ActionScript cross compiler, which allowed him to compile popular C libraries, such as libxslt, to ActionScript and make use of them in Flash movies - adding features which are just not available in native Flash. The culmination of his talk was a demo of Quake running in Flash after being ported to ActionScript from C. Most of the videos we saw are on Peter's blog if you want to check them out.

Overall this was a pretty good talk, I got what I wanted out of it. It was quite difficult to hear what was being said on the videos as they were just using his laptop speakers, but I grapsed enough of what was going on from the video bits. I give it 4 out of 5.

Technorati tags for this review:    
Technorati tags for this post:

29/05/08

WSG London Findability Meetup

Review: Web Standards Group London Meetup at Westminster University, New Cavendish Street campus, London 19:00 to 21:00

Concepts of Findability (Cyril Doussin) - This was a whirlwind tour of the subject of findability, mostly based on Peter Morville's Ambient Findability, since you can probably just go and read the book I'm just going to mention a couple of things Cyril talked about that caught my ear, first - what's the difference between data, information and knowledge?
Data

An unevaluated set of symbols

Information

An evaluated, validated or parsed set of symbols

Knowledge

A set of symbols which have been understood

You can easily see this definition in the context of the Semantic Web project - moving the web from data/information into the realms of knowledge. Cyril then discussed several general strategies for making things findable: The "In Your Face" Discovery Principal (basically, traditional advertising); Hand Guided Navigation (web directories and drill-down hierarchical menu systems); Describe and Browse (search engines); Recommendations (forums, mailing lists, Digg and other interactive systems). Several websites combine two or more of these to improve findability, for example Yahoo now suggest categories for drill-down with your search results. Cyril then discussed how to measure the relevance of search results, by considering the precision (lack of false positives) and the recall (exhaustiveness) against the requirements for the type of search (for some searches recall is more important than precision and vice versa) before finishing off with a brief chat about content organisation.

Building Websites with Findability in mind (Stuart Colville) - This talk was mostly regular SEO type stuff, five basic requirements were covered:

  • Understand your potential audience - this almost goes without saying, but you everything in the design and structure of your website should be driven from who your visitors are and what they're after.
  • Have compelling content - with the wealth of content already available on the web, you've got to find a way to make your content stand out. Either be completely original, which is difficult, or aim at a niche market where there isn't so much competition. This could also come from presenting existing content in a new way to better serve the needs of your target audience. Also, try and keep your content focussed - pictures of your cat might be very cute, but unless they're relevant to the main topics of your website consider hosting them elsewhere.
  • Use quality markup - this was the meaty bit of the talk and ranged across a number of sections:
    • Follow web standards in your markup, while it won't turn poor content into compelling content, it will improve the ratio of content to code on your page
    • Pay attention to your meta tags, while keywords are ignored the description is often displayed in search engine results so should have something relevant to the current page
    • Titles and headings are important,. Titles always appear in search results and will also be the default link text for any of your content in social bookmarking services (ie. they're link juice keywords - check this out for an idea of how bad many people are at this - I got "1 - 10 of about 36,900,000"). Remember your h1 heading is the most important visible text on the page, for most pages on your site this will not be your company name and/or logo
    • Text content should use the semantically correct element, strong and em can be used to give particular phrases higher weight but use them sparingly, duplicate content is not the issue it used to be especially if it's 'natural' (eg. a blog where the same post will normally appear on several pages)
    • Images which are purely design elements should be CSS backgrounds, images which have some data should use CSS image replacement and inline images should always be given correct metadata (where 'correct' sometimes implies 'none')
    • Microformats can improve findability, particularly after Yahoo!s recent announcement
    • Javascript should always be unobtrusive and you should practice progressive enhancement
  • Always keep accessibility in mind - remember a search engine has a similar view of the web to someone using a screen reader, improving your accessibility will usually also improve your findability
  • Present no barriers to search engines
    • Website performance affects indexation - search engine spiders only spend a finite time crawling your site, so the quicker you deliver pages the more will get indexed
    • URLs are an important opportunity to add keywords, and remember "A cool URI is one which does not change." Learn to use mod_rewrite and remember to give correct HTTP responses - 301 for content which has moved, 404 for content which you need de-indexed
    • Be careful that you don't block off important parts of your site with the robots.txt file

Finding yourself with Fire Eagle (Steve Marshall) - Fire Eagle is a service which helps you manage your location. It sits between your location provider (GPS device, mobile phone etc.) and your location dependent services and presents a uniform interface to those services while also letting you control your privacy. The key point is that it breaks the tight coupling that usually exists between 'location getting device' and 'location using software' which should therefore facilitate an explosion in location driven websites when it goes online (Google are experimenting with a similar thing in Gears, so it's an idea who's time has come). One very nice feature was it's use of OAUTH to set privacy levels - you can determine for each service the amount of geographical detail it will get and the API returns to the service a hierarchical object which goes down to the level of accuracy you specify (eg. country -> city -> locality -> postcode -> geo). This talk and it's associated demos/examples was very interesting, but you probably need to see it in action to really grasp how cool it could be.

Overall I enjoyed this event, though I was already familiar with a lot of material in Stuart's talk it's always good to have a refresher/reminder, and I learned some new things in both the others so 4 out of 5

Technorati tags for this review:    
Technorati tags for this post:

28/05/08

Permalink 11:30:34 am, by robertc Email , 544 words, 271 views   English (UK)
Categories: Front End Web Development, Semantic Web and Microformats Share on reddit Share on digg Share on del.icio.us Share on ma.gnolia.com Share on StumbleUpon

Microformats vEvent

It's London Web Week, which means there are lots of events on. I plan to go to three of them myself, the first of which was last night's Microformats vEvent.

Review: Microformats vEvent at The Yorkshire Grey, Holborn, London 19:00 to 21:30

The venue was a function room in a pub which wasn't ideal - there weren't enough seats for everybody and, since I was a bit late arriving, I had to stand through both presentations which made it a bit awkward to make notes.

Putting microformats on the Semantic Web with GRDDL (Tom Morris) - Tom started off by talking about "Descriptive Markup", an alternate term for semantic markup to avoid "semantic" being every third word that would come out of his mouth. He then moved on to GRDDL and it's potential for creating a decentralised data web out of any HTML pattern you use on your website. An HTML pattern doesn't have to be a Microformat, it can be any HTML as long as it's used consistently on your site and you can provide an XSL transform to turn that pattern into useful semantic data. You can then write your own GRDDL profile to allow the data to be automatically extracted. He also discussed that the output from a GRDDL transform needn't be RDF, it could be anything you want such as RSS or JSON, which would allow you to very easily create an API for your website with nothing more than a few transforms. In the questions at the end he compared GRDDL to CSS and Javascript, except where CSS was for presentation and Javascript is for behaviour GRDDL would be for data. For an example of the potential he suggested we checkout triplr.org. Tom finished off with some "Design Patterns for the Web of Data":

  • Give everything a URI - your website, your house, your car, your pets etc.
  • Things (ie. URIs) linked together with meaning
  • Small vocabularies loosely joined - don't try and describe the whole world, stay focussed on your target domain
  • Do the right thing - practice wisdom
  • "Pragmatic" usually means you're doing it wrong
  • Don't mandate, don't limit - the less you restrict, the more room there is for freedom of expression

One Big Happy Family: Practical Collaboration on Meaningful Markup (Dan Brickley) - Dan's talk was a bit more political than technical and addressed the antagonistic attitudes which are sometimes displayed by Semantic Web folk towards Microformats folk and vice versa. Through a discussion of some of the history behind the current Semantic Web specifications at the W3C, a history which is largely obscured by the specs in their current state, he demonstrated that the two communities have far more commonalities than differences. Both communities are converging on the same goal but are taking very different routes to get there, and a bit more respect on both sides could allow each to learn from the other. That was a high level summary, the way Dan said it took longer but was also funnier with a liberal sprinkling of anecdotes :)

The talks themselves were very good, but I didn't enjoy the environment much - apart from the standing, the TV screen was a bit hard to read so 3.5 out of 5 overall.

Technorati tags for this review:    
Technorati tags for this post:

27/05/08

Permalink 05:10:16 pm, by robertc Email , 647 words, 710 views   English (UK)
Categories: Web Develop, Front End Web Development Share on reddit Share on digg Share on del.icio.us Share on ma.gnolia.com Share on StumbleUpon

Building a compressed prototype + scriptaculous with YUI Compressor

A while back I started using protoaculous.js, a combined and compressed version of the Prototype.js and Scriptaculous in a single file. Unfortunately, as time went by and both Prototype and Scriptaculous got updated, it didn't seem like anyone was updating protoaculous in sync, so a few months ago I decided to build my own.

Of course, a day or so after I did that, John-David Dalton released a more up to date and far more complete set of files in his 'protopack', but I know some folks were already using my version because I got a request the other day to update it to use 1.6.0.2 of prototype.js. I figured this was a a good opportunity to try and be a bit more organised about building it, plus I like being in the situation where I don't have to rely on anyone else for my updates, hence this mini-tutorial blog post.

Before starting we'll need the YUI Compressor (get the yuicompressor-x.y.z.jar file out of the build sub-directory), which itself needs a version of the Java runtime installed. The below assumes you're running on Windows, have Java setup, and have the YUI Compressor .jar file in your working directory. You'll also need a set of scriptaculous and prototype source files (the prototype.js file is in the 'lib' sub-folder, everything else is in 'src').

OK, so assuming we've got all the relevant stuff from the previous paragraph downloaded into your working directory, building the combined and compressed protoaculous.js is two fairly easy steps. First off, scriptaculous loads it's dependent scripts dynamically by inserting <script> elements into the document head, since we're not going to have the separate scripts in the combined file we need to stop it doing that. I create a file v_scriptaculous.js where I've removed lines 46 to 54:

    var js = /scriptaculous\.js(\?.*)?$/;
    $$('head script[src]').findAll(function(s) {
      return s.src.match(js);
    }).each(function(s) {
      var path = s.src.replace(js, ''),
      includes = s.src.match(/\?.*load=([a-z,]*)/);
      (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider,sound').split(',').each(
       function(include) { Scriptaculous.require(path+include+'.js') });
    });

And also lines 26-29:

  require: function(libraryName) {
    // inserting via DOM fails in Safari 2.0, so brute force approach
    document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');
  },

If you end up working with a newer version the procedure should be similar, though the line numbers may be different, just look for any functions which try to dynamically insert script tags. With the above two sections removed I end up with a v_scriptaculous.js file 46 lines long, which, disregarding comments, looks like this:

var Scriptaculous = {
  Version: '1.8.1',
  REQUIRED_PROTOTYPE: '1.6.0.2',
  load: function() {
    function convertVersionString(versionString) {
      var v = versionString.replace(/_.*|\./g, '');
      v = parseInt(v + '0'.times(4-v.length));
      return versionString.indexOf('_') > -1 ? v-1 : v;
    }
 
    if((typeof Prototype=='undefined') ||
       (typeof Element == 'undefined') ||
       (typeof Element.Methods=='undefined') ||
       (convertVersionString(Prototype.Version) <
        convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE)))
       throw("script.aculo.us requires the Prototype JavaScript framework >= " +
        Scriptaculous.REQUIRED_PROTOTYPE);
  }
};
 
Scriptaculous.load();

Now we need to combine all the files together and feed them into the YUI Compressor. To do this I've created a batch file build.bat:

@echo off
copy prototype.js + v_scriptaculous.js + builder.js + effects.js + dragdrop.js + controls.js + slider.js + sound.js c.js /a /b
java -jar yuicompressor-2.3.5.jar -o protoaculous.1.8.1.min.js c.js
del c.js

This creates a temporary file, c.js, which is a combination of all the javascript files, uses the YUI Compressor to build the output file, then deletes the temporary file. I found I had to use the /b (binary) switch on the copy command otherwise I got junk at the end of the file which caused errors in the compressor. After running the batch file we should end up with protoaculous.1.8.1.min.js sitting in our working directory.

Technorati tags for this post:

21/05/08

Permalink 12:00:01 am, by robertc Email , 51 words, 224 views   English (UK)
Categories: Semantic Web News Share on reddit Share on digg Share on del.icio.us Share on ma.gnolia.com Share on StumbleUpon

Implement Semantic Web standards in your Web site

I've had another article published on developerWorks, this time a tutorial so you'll have to register to view it. It moves on from my previous article with some actual code examples of a lot of the stuff I talked about before. Check it out and let me know what you think!

Technorati tags for this post:

26/04/08

Permalink 06:28:15 pm, by robertc Email , 133 words, 286 views   English (UK)
Categories: Linux, SuSE Share on reddit Share on digg Share on del.icio.us Share on ma.gnolia.com Share on StumbleUpon

Mugshot 1.1.45 on SuSE 10.3

Previously I produced an RPM for Mugshot 1.1.40 for SuSE 10.1. I could never get a more recent version to build on SuSE 10.1, but since I recently upgraded to 10.3 I decided to have another go.

It seems the most recent Linux version is 1.1.45, whereas the Windows version is up to 1.1.93. I'm not sure if the Linux version is just not getting developed anymore, but I decided to stick to 1.1.45 for now as I'm not a C developer and I wouldn't be able to patch the newer version if it didn't work on Linux. If anyone knows what's going on, please post a comment.

So, I've built a new RPM (and here's the updated spec file). I think I've fixed the MIME type stuff now, but you might still have to right click and 'save as'.

Technorati tags for this post:

22/04/08

Permalink 10:46:43 pm, by robertc Email , 933 words, 130 views   English (UK)
Categories: Front End Web Development Share on reddit Share on digg Share on del.icio.us Share on ma.gnolia.com Share on StumbleUpon

Adobe onAIR London 2008 (Afternoon)

Review: onAIR London 2008 - Afternoon Sessions at onAIR London 2008, The Brewery in London, 52 Chiswell Street, London 12:15 to 17:00

Deploying and Updating AIR Applications (Serge Jespers) - Serge covered the nuts and bolts of deploying AIR applications. He demonstrated the user experience of installing signed vs unsigned applications, and the $299 dollars a year for a code signing certificate is probably worth it if you're going to develop AIR apps regularly. Next he talked about deployment, which involved a discussion of 'Install Badges' - basically flash movies embedded in a web page. The basic one will just run the installer, but there's a more advanced one available, in beta form, on Adobe Labs which adds functionality to check and see if your app is already installed, and tries an update instead of an install if so.

Adobe AIR API Overview (Daniel Dura) - Daniel took us on a potted tour of the AIR API, highlighting some of the 'cool bits'. He started off in the Window API and discussed transparency - so you can create irregularly shaped windows with custom controls - and he demonstrated that it was 'real' transparency by interacting with the desktop through the gap. He then talked about the SQLite API, which lets you achieve Google Gears type things within your app before concluding with some discussion of the integration between AIR and the native OS drag and drop mechanisms.

Extreme AIR development: From concept to TechCrunch in 5 Days (Jeremy Baines) - On to the first lightning talk, Jeremy talked about the rapid development of his AIR app, Alert Thingy, unfortunately the demo went a bit pear shaped.

Developing Secure AIR Applications (Oliver Goldman) - This was one of the more important talks of the day. All the cool apps and transparent windows are fun and shiny, but you want to be fun and shiny while not simultaneously turning your user's machine into a node in a giant spam botnet. The AIR runtime has two security domains - the one where your application code runs, the Application Security Domain, has certain 'dynamic' features, such as eval, innerHTML and <script> elements, disabled to help you avoid shooting yourself in the foot with any imported content (which runs with the loader's privileges). Loaded content, in frames or iframes or loaded by loader.load in a Flash movie, runs in a sandbox by default, the Remote Security Domain. This means it does have eval and friends enabled, but it doesn't have access to all the cool AIR desktop integration stuff. In order to give your loaded content access to those features you have to use the sandbox bridge functions to explicitly make methods available. The final point the Oliver made is that an update function should be part of your security strategy - if security holes are found in your AIR application you've got to have a reliable method for pushing the fixes out to your users, therefore 'check for updates' and associated logic should be included in your first release.

Using JavaScript Frameworks in AIR Applications (Andre Charland) - We were on to the 'short talks' now. Andre discussed how you could easily adapt most popular AJAX/Javascript libraries for us in AIR apps and discussed some of the things they were good for (keyboard shortcuts, activity indicators, window operations when chromeless, mouse hints and tooltips).

BBC News & Sport on Air (BBC) - Three guys from the BBC gave a quick overview of their corporation's history of desktop applets for easy access to website updates and contents, and how the early clients had evolved into the current/new AIR prototype application, which looked quite neat.

Google Analytics on AIR (Nicolas Lierman) - Nicolas has reverse engineered Google Analytics (though now in full co-operation with Google) to produce an AIR desktop analytics application. Quite interesting as an intellectual exercise, I didn't see any clear advantages over the web interface though, and it seems you have to have it on blue gradient background instead of a nice clean white.

Why an Ajax Guy is Excited About AIR (Dion Almaer) - Dion talked about the future of the web and how AIR and Google Gears are complementary technologies. Contrary to popular belief, Google Gears is not "all about offline" - it is a collection of small improvements to the browser API and a testing/proving ground for some HTML 5 APIs. Basically a way of making parts of tomorrow's world wide web available for web developers to use today.

AIR Conditioning (Lee Brimelow) - the day ended on a light hearted note as Lee gave a lot of amusing examples of applications you shouldn't create in AIR just because you can. My favourites were the world's smallest video player and the little app which moved the window out from under the mouse so you couldn't close it. Not much in the way of technical content, but an enjoyable way to end nonetheless.

I didn't enjoy the afternoon so much, and at the time I felt like it was a bit lightweight compared to the morning, and also that the presenters were starting to repeat stuff from earlier in the day. However, looking back in review I think my perception was mostly due to the later afternoon where the flow was lost a bit with all the shorter presentations - it maybe would have been better to spread the shorter talks out among the longer ones rather than clumping them all together like that (ie. one long and one short talk per session between coffee breaks). Still plenty of good stuff, and more free food at the end :) so 4.5 out of 5.

Technorati tags for this review:    
Technorati tags for this post:

:: Next Page >>

Hot Topics

Popular

boogdesign blog

Web design, web development, standards compliance, Linux and random things I found on the internet.

| Next >

Search

Syndicate this blog XML

  • RSS 0.92 Posts RSS 0.92 Comments
  • RSS 1.0 Posts RSS 1.0 Comments
  • RSS 2.0 Posts RSS 2.0 Comments
  • Atom Posts Atom Comments
What is RSS?

License info

Creative Commons License
This work is licensed under a Creative Commons Attribution-Share Alike 2.5 License.

powered by
b2evolution

get hCard