Cargowire Ramblings http://cargowire.net Ramblings From Craig Sun, 18 Apr 2010 15:30:00 GMT http://cargowire.net en Microsoft UK Tech Days 2010 http://cargowire.net/blog/uktechdays2010 http://cargowire.net/blog/uktechdays2010 Craig Sun, 18 Apr 2010 15:30:00 GMT <p>Continuing the theme of keeping myself busy with geek events! I also recently attended the Microsoft UK Tech Days Visual Studio and .NET 4 talks.</p><p>To be fair a lot of the content was similar to what I had already heard at ddd8. So we're talking Optional Parameters, Named Arguments, Generic Variance and Dynamic Typing for .NET 4 plus multi-monitor support, changes to code highlighting and javascript intellisense and a WPF interface for Visual Studio... I particularly liked the 'code only' profile for VS that disables some unnecessary services and hides all windows/toolbars except for the editor and solution explorer.</p><p>In addition to this the parallelisation features of .net were discussed (AsParallel(), PLINQ) - something that's always intriguing and worth trying out. And there were niceities too for asp.net. Caching being pushed into a provider model, controllable client IDs and a far more slimline web.config are all a part of this.</p><p>Overall ALM features were a focus. Unfortunately much of this is only VS Ultimate and/or TFS related. However they give food for throught on process, particularly when linked to the talk on 'agile' development. Pair programming, code review, automated builds and tests are all things that can add to your development process and should be thought about whether or not you are using the MS tools.</p><p></p> Continuing the theme of keeping myself busy with geek events! I also recently attended the Microsoft UK Tech Days Visual Studio and .NET 4 talks.

To be fair a lot of the content was similar to what I had already heard at ddd8. So we're talking Optional Parameters, Named Arguments, Generic Variance and Dynamic Typing for .NET 4 plus multi-monitor support, changes to code highlighting and javascript intellisense and a WPF interface for Visual Studio... I particularly liked the 'code only' profile for VS that disables some unnecessary services and hides all windows/toolbars except for the editor and solution explorer.

In addition to this the parallelisation features of .net were discussed (AsParallel(), PLINQ) - something that's always intriguing and worth trying out. And there were niceities too for asp.net. Caching being pushed into a provider model, controllable client IDs and a far more slimline web.config are all a part of this.

Overall ALM features were a focus. Unfortunately much of this is only VS Ultimate and/or TFS related. However they give food for throught on process, particularly when linked to the talk on 'agile' development. Pair programming, code review, automated builds and tests are all things that can add to your development process and should be thought about whether or not you are using the MS tools.

]]> Barcamp Bournemouth 2 http://cargowire.net/blog/barcampbomo2 http://cargowire.net/blog/barcampbomo2 Craig Tue, 13 Apr 2010 23:40:00 GMT <p>Having been to a few of the 'big' conferences and just returned from SXSW it was quite refreshing to attend a more small scale, local affair. With other barcamp's often being either far away or both far away and starting too soon after work BarCamp Bournemouth made it easy, running over a weekend and being so close!</p><p>I must of course say congratulations to the organisers for putting in the effort to provide a free social/conference for up to 100 attendees. No small feat, including organising the venue plus sponsorship for two free meals.</p><p>In terms of comparison I would suggest that the small scale nature of the event made it much more of a 'geek social' than a free conference. Which made it a heck of a lot more fun but perhaps less about learning.</p><p>I made it to a number of talks including a run through of scala (with some very similar features to .net), a designers do better rant from Rich Quick, partook in a .NET MVC discussion, a number of discussions surrounding the Digital Economy Bill, and an intro to British Sign Language (from Lalita D'Cruze). And yes, I can now sign my name :-)</p><p>Off the back of this I looked into what other smallscale events are run in my area:</p><p>So will show up to those in due course. I also learnt to play Polarity and Werewolf!</p> Having been to a few of the 'big' conferences and just returned from SXSW it was quite refreshing to attend a more small scale, local affair. With other barcamp's often being either far away or both far away and starting too soon after work BarCamp Bournemouth made it easy, running over a weekend and being so close!

I must of course say congratulations to the organisers for putting in the effort to provide a free social/conference for up to 100 attendees. No small feat, including organising the venue plus sponsorship for two free meals.

In terms of comparison I would suggest that the small scale nature of the event made it much more of a 'geek social' than a free conference. Which made it a heck of a lot more fun but perhaps less about learning.

I made it to a number of talks including a run through of scala (with some very similar features to .net), a designers do better rant from Rich Quick, partook in a .NET MVC discussion, a number of discussions surrounding the Digital Economy Bill, and an intro to British Sign Language (from Lalita D'Cruze). And yes, I can now sign my name :-)

Off the back of this I looked into what other smallscale events are run in my area:

So will show up to those in due course. I also learnt to play Polarity and Werewolf!

]]>
SXSW - In Reflection http://cargowire.net/blog/sxsw10overall http://cargowire.net/blog/sxsw10overall Craig Sun, 21 Mar 2010 20:40:00 GMT <p> Having seen (or at least made notes on) 17 talks at last year's 'South By', coupled with the fact that this year pretty much the entire Headscape team were heading out to Austin I felt sure that my 'talk total' would be much lower. However I somehow managed to make it out to 21 different talks, panels and/or podcast recordings! </p><p>Unfortunately I didn't find the time to write up these notes during the conference. But I will do so over the coming days (and backdate them within this blog).</p><p>For me, this year had quite a different feel to it. Knowing 11 rather than just 3 people from the outset leant itself to more of a family holiday feel than a networking event...</p><p>In terms of the talks there seemed to be a theme of design and persuasion with less technical technique oriented items on the schedule. However as I've said before technique 'takeaways' are few and far between at large scale conferences. In fact it is perhaps more beneficial to dip into some sessions that won't necessarily have a direct impact on your role. Instead they will enrich it with insight into some other aspect of web design/development work. This is useful particularly within small agencies where roles are often blurred. For me this included talks on psychology, design and interfaces.</p><p>Looking back at last year I spent a lot of time checking out Flash and iPhone based talks which this year seem to have been replaced by Javascript/HTML5, or geo/location based talks. To me this matches the movemement in the industry away from flash (due to devices like the iPhone driving it out) and away from 'device features' to 'applications that can be based on device features' e.g. "OK, your device has access to GPS, what can I now actually make with that". </p><p>It's interesting to note that last year I was listening to Microsoft Rep's discussing IE8's intended CSS capabilities and during this years SXSW IE9 was being announced/discussed at Microsoft MIX. With talk of SVG, CSS3 and GPU powered graphics. They really seem to be ramping up their versions now in competition with Mozilla, Apple, Google and Opera (after their 5 year IE6/7 gap), with some promising stuff coming out of redmond.</p><p>Overall SXSW was definitely worth reattending. I've returned once again enthused about the industry and getting stuck into some interesting projects, although it would be interesting to take some time to attend more workshop based events in the UK in the future.</p> Having seen (or at least made notes on) 17 talks at last year's 'South By', coupled with the fact that this year pretty much the entire Headscape team were heading out to Austin I felt sure that my 'talk total' would be much lower. However I somehow managed to make it out to 21 different talks, panels and/or podcast recordings!

Unfortunately I didn't find the time to write up these notes during the conference. But I will do so over the coming days (and backdate them within this blog).

For me, this year had quite a different feel to it. Knowing 11 rather than just 3 people from the outset leant itself to more of a family holiday feel than a networking event...

The Talks

In terms of the talks there seemed to be a theme of design and persuasion with less technical technique oriented items on the schedule. However as I've said before technique 'takeaways' are few and far between at large scale conferences. In fact it is perhaps more beneficial to dip into some sessions that won't necessarily have a direct impact on your role. Instead they will enrich it with insight into some other aspect of web design/development work. This is useful particularly within small agencies where roles are often blurred. For me this included talks on psychology, design and interfaces.

Looking back at last year I spent a lot of time checking out Flash and iPhone based talks which this year seem to have been replaced by Javascript/HTML5, or geo/location based talks. To me this matches the movemement in the industry away from flash (due to devices like the iPhone driving it out) and away from 'device features' to 'applications that can be based on device features' e.g. "OK, your device has access to GPS, what can I now actually make with that".

IE

It's interesting to note that last year I was listening to Microsoft Rep's discussing IE8's intended CSS capabilities and during this years SXSW IE9 was being announced/discussed at Microsoft MIX. With talk of SVG, CSS3 and GPU powered graphics. They really seem to be ramping up their versions now in competition with Mozilla, Apple, Google and Opera (after their 5 year IE6/7 gap), with some promising stuff coming out of redmond.

Overall SXSW was definitely worth reattending. I've returned once again enthused about the industry and getting stuck into some interesting projects, although it would be interesting to take some time to attend more workshop based events in the UK in the future.

]]>
Boagworld 200th http://cargowire.net/blog/boagworld200 http://cargowire.net/blog/boagworld200 Craig Sat, 13 Feb 2010 11:15:00 GMT <p>It was my pleasure to take part in the 200th Boagworld (bw200) yesterday. A marathon session that started with Bob, Paul and I waiting outside the locked barn keyless and cold until Dave, Stanton and Ryan came to the rescue... </p><p>In my mind the day was like a free one day, online conference with a brilliant lineup all sharing their time for free. There wasn't too rigid a schedule with guests in and out all the time either via skype or in person. However there was a general plan of 30minute sessions (expertly co-ordinated and organised by Ryan Taylor). </p><p>Each session was recorded and as far as I'm aware will be released by Marcus and Paul over the coming weeks.</p><p>Highlights for me included a relaxed, and seemingly extremely well read (if his bookshelf was anything to go by) Andy Clarke getting into a heated debate with Paul regarding browser support / progressive enhancement and some excellent food for thought from Drew Mclellan and Rachel Andrew in regard to e-commerce projects.</p><p>The only real lowlight was some rather unnecessary behaviour in the backchannel. Other than that it's a shame each guest was only on for 30minutues as there was some excellent content that could have taken up entire shows in their own right.</p><p>Thanks to the rotating host system I got to co-host a chat with Drew and Rachel on The Joel Test and to speak with Christian Heilmann about Yahoo's YQL.</p><p>The Joel test is an interesting one that allows teams to take a step back and guage how effectively they are operating. Covering questions on Source Control, bug tracking, scheduling and working conditions. </p><p>One of the tests that we didn't have time for was 'Do new candidates write code during their interview?' which for me is something that I've been wrestling with at Headscape (where we do ask for code to be created as part of the application process). Shortly I will be posting an article covering my thoughts on the matter (as encouraged by Emily).</p><p>Unfortunately I think there was a misunderstanding regarding the length of Christians session (being only half an hour instead of an hour) however I think it was one of the best sessions for takeaway action. The YQL demos that Christian had prepared showed us just how easily web apps and mashups can be created by standing on the shoulders of Yahoo. Allowing us to get down to the real functionally of our apps rather than worrying about the wiring of individual pieces across differing API boundaries. I urge you to take a look at the YQL Demos that Christian prepared.</p><p>All in all, a great day. Thanks to everyone involved (especially Cath for providing food for us all!</p><p>P.S. I'm still not sure Paul noticed the hijack of his about page throughout the day... did you?</p> It was my pleasure to take part in the 200th Boagworld (bw200) yesterday. A marathon session that started with Bob, Paul and I waiting outside the locked barn keyless and cold until Dave, Stanton and Ryan came to the rescue...

In my mind the day was like a free one day, online conference with a brilliant lineup all sharing their time for free. There wasn't too rigid a schedule with guests in and out all the time either via skype or in person. However there was a general plan of 30minute sessions (expertly co-ordinated and organised by Ryan Taylor).

Each session was recorded and as far as I'm aware will be released by Marcus and Paul over the coming weeks.

The Boagworld 200 Technical Setup

Highlights for me included a relaxed, and seemingly extremely well read (if his bookshelf was anything to go by) Andy Clarke getting into a heated debate with Paul regarding browser support / progressive enhancement and some excellent food for thought from Drew Mclellan and Rachel Andrew in regard to e-commerce projects.

The only real lowlight was some rather unnecessary behaviour in the backchannel. Other than that it's a shame each guest was only on for 30minutues as there was some excellent content that could have taken up entire shows in their own right.

Thanks to the rotating host system I got to co-host a chat with Drew and Rachel on The Joel Test and to speak with Christian Heilmann about Yahoo's YQL.

The Joel test is an interesting one that allows teams to take a step back and guage how effectively they are operating. Covering questions on Source Control, bug tracking, scheduling and working conditions.

One of the tests that we didn't have time for was 'Do new candidates write code during their interview?' which for me is something that I've been wrestling with at Headscape (where we do ask for code to be created as part of the application process). Shortly I will be posting an article covering my thoughts on the matter (as encouraged by Emily).

Unfortunately I think there was a misunderstanding regarding the length of Christians session (being only half an hour instead of an hour) however I think it was one of the best sessions for takeaway action. The YQL demos that Christian had prepared showed us just how easily web apps and mashups can be created by standing on the shoulders of Yahoo. Allowing us to get down to the real functionally of our apps rather than worrying about the wiring of individual pieces across differing API boundaries. I urge you to take a look at the YQL Demos that Christian prepared.

All in all, a great day. Thanks to everyone involved (especially Cath for providing food for us all!

Some related bits and bobs


P.S. I'm still not sure Paul noticed the hijack of his about page throughout the day... did you?

]]>
Developer Day 8 http://cargowire.net/blog/ddd8 http://cargowire.net/blog/ddd8 Craig Tue, 02 Feb 2010 23:05:00 GMT <p> Another Developer Day over, another enthusiasm shot for the day job. Here's the usual breakdown: </p><p>Overall some excellent content with useful take aways.</p> Another Developer Day over, another enthusiasm shot for the day job. Here's the usual breakdown:

DeveloperDeveloperDeveloper: Speaker / Thoughts
Mark Needham (ThoughtWorks)

Not really what I had expected based on the title alone...

After introducing functional programming as a language with first class functions (can be created during execution, passed/returned etc), immutability, lazy evaluation, recursion and pattern matching Mark proceeded to demo 'Transformational' instead of imperative thinking using the linq implementations of a variety of 'functional' principles: Map = Select, Filter = Where, Reduce ≅ Sum.

Usage of such extensions on IEnuemerable allow code to be more declarative - with the statement of the desired result being specified as opposed to the exact process to undertake.

Although Mark did make some good points in reference to realising linq can easily lead to duplication (reminding me of jquery selectors being used multiple times because they look small, irrespective of the actual work they are doing), the content generally had a low difficulty level feeling (which could have been enhanced perhaps by focusing more on the design patterns content that was briefly touched on), with a chunk of the questions at the end critiquing the examples rather than drilling down into the subject.

Mixing functional and object oriented approaches to programming in C#
Andrea Magnorsky (Round Crisis)

Probably my favourite talk of the day Andrea gave an excellent fast paced intro to Unit Testing using Xunit and Moq. With the example of testing an OrderService we saw how to use consistent, verbose naming of tests for clarity/ease of use and were reminded that a unit really does mean a small unit. For example multiple tests of the save method of OrderService were used to illustrate a first simple 'does not throw' test, through using a stub of an invalid object to check the 'if not valid return false' nature of save to using a mock of an email sender to check that a 'send email' call is sent.

By using mocks and stubs the testing of the order service is contained only to the logic within the service and not to any of it's dependencies - any repository related aspects should be tested separately.

The phase 'be super paranoid about your tests' enforced the idea that test code is no smaller matter than production code, and if anything should be treated even more thoroughly.

A general rule given was that behaviour tests end in a Verify on Mock whereas state tests end in an Assert and that tests follow an Arrange, Action, Assert (or verify) flow. The final golden rules were: tests should not involve conditionals, should not depend on other tests and should not assess multiple expectations.

Although pointed to during the talk it would be interesting to hear more about unit testing in the context of Test Driven Development.

Lessons learned on Unit Testing
Jon Skeet (Google)

Having previously seen Jon Skeet recreate linq to objects in 60mins this was undoubtedly going to be a good session.

Jon covered the main 'newness' coming in C#4.0

Optional parameters
As in VB C# can now provide optional parameters with default values (referencing libraries will need a rebuild if the optional parameters are changed as they are copied in - similar to consts)
Named arguments
Arguments can now be named allowing the order to not matter - playing nicely with multiple optional parameters
Generic variance (interfaces and delegates only - reference not value types)

Co-Variance: Specific to general - used when returning out (IList<Circle> assigned to IEnumerable<IShape>)

Contra-Variance: General to specific - used when sending in (IComparer<IShape> used as IComparer<Circle>)

Dynamic typing (implemented as a library on top of CLR)
Variables can be statically typed as 'dynamic' and then have properties added using dot syntax
Better COM interop
The combination of named optional parameters and dynamic objects makes COM a lot less painful.
Jon has also made his code available on his C# in Depth site

C# 4
Lunch Time The Grok talks this year seemed a far bigger deal (with a large room and a lot of attendees). Some good tidbits included a demo of using T4 templates to generate code/sql/xaml in visual studio from Rob Blackmore and a run through of CodeRush Xpress by Rory Becker.
Grok Talks
Simon Sabin (SQL Server Consultant)

As with most developers I have been concerned by the use of ORM's such as Linq2Sql and EF in terms of the 'auto generated' sql that they produce. Simon allayed some of those concerns by running a number of test queries, using instrumentation such as 'SET STATISTICS TIME ON' to compare the differing sql between manually and EF created, with mostly good results. There were a few specific examples of weakness in EF1 however the speed of application construction must be balanced against the speed of direct ADO.NET queries (which vastly outperformed the ORM queries - with no overhead for mapping etc).

A couple of important things to remember are that when you construct a sql statement you are asking SQL Server for the result not telling it exactly what to run and it will often reorgnise queries before execution. Additionally the old argument between stored procedures and text queries was touched upon with the only benefits really being the amount of text over the network and the security issues of allowing direct modification of tables. Performance is not an issue as compiled plans of text queries are cached in SQL.

The underlying theme was to check your queries using tools such as SQL Server Profiler in order to hone your query performance (whether it be through direct SQL, EF, Linq2Sql, nHibernate..).

Entity Framework - How to stop your DBA from having a heart attack
Barry Dorrans (Soon to be Microsoft)

As Barry is soon to be moving to Microsoft in the states his talk was somewhat hijacked by the DDD team with various videos leading to a rather jovial atmosphere for the final talk of the day.

The content itself was very factual rather than contextualised to the day to day in the sense that the presentation did not really go in to real world examples, prefering instead to describe the variety of encryption/hashing options available to developers.

  • Hashing: One way reducing (∴ collisions are possible) algorithm used for passwords/checksums (MD5 and SHA1 to be avoided)
    • Always salt a hash (include a random piece of data in the plain text before hashing) to avoid dictionary attacks
  • Symmetric Encyption - uses a single key for encrypt/decrypt (Rijndael is most used algorithm)
  • Asymmetric Encryption - uses public/private key but is computationally expensive so often used only initially to transfer/protect a symmetric key
A developers guide to encryption

Overall some excellent content with useful take aways.

]]>
The Project52 Challenge http://cargowire.net/blog/project52-2010 http://cargowire.net/blog/project52-2010 Craig Mon, 04 Jan 2010 22:05:00 GMT <p> During the end of December last year I, along with many others, somehow got caught up by the #p52 hashtag and, in true 'resolutions that I probably won't be able to keep' stylé, I took on the challenge. The idea is as follows: </p><p>I'm kicking that off with a new article about useful .net dev resources and how to keep up to date. I've also finally made some good use of my free basecamp account by making a list of potential articles so I should be on my way for at least a few months. It's finding the time that could be tricky.</p><p>The idea has already 'persuaded' me to get some more functionality up on to cargowire. The categorisation of my posts is now exposed through url routes (e.g. http://cargowire.net/articles/tagged/general) and I will be tagging all my Project52 posts appropriately at: /articles/tagged/project52.</p><p>Additionally I've begun to add 'table of contents' links to the upper right of articles. Thus allowing skipping down the article. Commenting functionality is coming soon... I promise. </p><p>I'm also going to try and run a commenting #p52 alongside the article writing, as Yaili proposed.</p><p>Looking forward to a fun and productive 2010!</p> During the end of December last year I, along with many others, somehow got caught up by the #p52 hashtag and, in true 'resolutions that I probably won't be able to keep' stylé, I took on the challenge. The idea is as follows:

The goal is to write at least 1 new article per week for 1 year.

http://project52.info

I'm kicking that off with a new article about useful .net dev resources and how to keep up to date. I've also finally made some good use of my free basecamp account by making a list of potential articles so I should be on my way for at least a few months. It's finding the time that could be tricky.

The idea has already 'persuaded' me to get some more functionality up on to cargowire. The categorisation of my posts is now exposed through url routes (e.g. http://cargowire.net/articles/tagged/general) and I will be tagging all my Project52 posts appropriately at: /articles/tagged/project52.

Additionally I've begun to add 'table of contents' links to the upper right of articles. Thus allowing skipping down the article. Commenting functionality is coming soon... I promise.

I'm also going to try and run a commenting #p52 alongside the article writing, as Yaili proposed.

Looking forward to a fun and productive 2010!

]]>
Cargowire MVC Series begins... http://cargowire.net/blog/cargowiremvcseries http://cargowire.net/blog/cargowiremvcseries Craig Sun, 06 Dec 2009 23:30:00 GMT <p> A new post has just gone up over in the articles section. Now that I've migrated the cargowire codebase to .NET MVC I intend to release a few articles in relation to the process. The first is with regard to routing, particularly extensionless routes that match my pre-existing urls but use the new Routing capabilities of .NET MVC. </p> A new post has just gone up over in the articles section. Now that I've migrated the cargowire codebase to .NET MVC I intend to release a few articles in relation to the process. The first is with regard to routing, particularly extensionless routes that match my pre-existing urls but use the new Routing capabilities of .NET MVC.

]]>
Overengineering and a lack of testing, the pitfalls of personal projects http://cargowire.net/blog/jumpingthegun http://cargowire.net/blog/jumpingthegun Craig Mon, 30 Nov 2009 23:00:00 GMT <p> Ok, so yesterday I jumped the gun somewhat with the rather over ambitious: asp.net MVC version of http://cargowire.net up now - pretty much the same (hopefully) fleshed out notes and added link to thebarn pagehttp://twitter.com/cargowire/status/6182546830</p><p> Inevitably this was followed by: @cargowire heads up for you this is what I see in Safari 4 for http://cargowire.net OK in FF3.5 http://yfrog.com/4imo3phttp://twitter.com/porkandpaws/status/6183712464</p><p>Clearly I'd made three (or at least three of my) classic 'personal project for self only' mistakes:</p><p> I had set out to merely replace the backend of my previous .NET WebForms project (that used XSL/XML for view separation) with an implementation of asp.net/MVC. A fairly trival task, that along the way I expanded by virtue of being my own client and wanting to try out random things. </p><p> Being effectively an engine swap (I was even using the same XSL as well as javascript/css) I neglected to worry too much about browser rendering. After all, it was the same CSS that I'd tested before... surely all would be well. </p><p> My original cargowire implementation had the ability to serve different content types baked in. You could call most pages in the following ways (you still can now, try it): </p><p> I wanted to keep this functionality with the new asp.NET MVC version, however somewhere along the way I decided it would be a good idea to not only expose these different formats through varying file extensions but also respond to the HTTP Accept header that get sent with the request. This behaviour, similar to the respond_to method from Ruby On Rails, would allow multiple versions of the content to be requested easily. </p><p> The implementation was simple and based on my brief reading of the Http Accept header description. </p><p> By attempting to find any possible view it allowed me to later add any format I like (json for example) just by adding the relevant view and all the plumbing would wire up. </p><p> All seemed well in Firefox, and after forgetting about this code and finishing the rest of the backend off, browser testing was irrelevant.. right?... I'd not changed any css, html or JS... I pushed live. </p><p> During testing I'd been working with firefox, which, if you request an extensionless url, appears to send the following accept header (according to the live headers plugin): </p><p>So in my algorithm you'd get:</p><p>In this scenario the code looks for a template for html, finds one and returns (ignoring the rest of the list).</p><p> When I saw the output from porkandpaws tweet it was immediately clear that he was seeing the XML output instead of html. A quick run in debug mode gave the following accept header from Safari 4: </p><p> It would appear that if no extension is specified Safari will prioritise XML over XHTML. With application/xml requested before application/xhtml+xml and with both being assigned the default quality level 1 my algorithm assumed the client wanted the XML view and returned it! </p><p> The quick fix was to prioritise types containing 'html' before falling back to request order. This may not be a perfect solution, but lets be pragmatic, I'd only implemented this on a whim - no-one is actually using this site other than for the html or rss view. </p><p> To round up then, although overengineering and random play code is almost inevitable for the curious developer when working for themselves with no timescale, it doesn't excuse full testing and you can never rule out what any change, no matter how 'isolated', might effect. </p> On this weeks show 'Content Negotiation' and browser testing

Ok, so yesterday I jumped the gun somewhat with the rather over ambitious:

asp.net MVC version of http://cargowire.net up now - pretty much the same (hopefully) fleshed out notes and added link to thebarn page

http://twitter.com/cargowire/status/6182546830

Inevitably this was followed by:

@cargowire heads up for you this is what I see in Safari 4 for http://cargowire.net OK in FF3.5 http://yfrog.com/4imo3p

Screenshot of Safari showing plain texthttp://twitter.com/porkandpaws/status/6183712464

Clearly I'd made three (or at least three of my) classic 'personal project for self only' mistakes:

  1. Overengineering
  2. Lack of testing
  3. Eagerness to get it live

I had set out to merely replace the backend of my previous .NET WebForms project (that used XSL/XML for view separation) with an implementation of asp.net/MVC. A fairly trival task, that along the way I expanded by virtue of being my own client and wanting to try out random things.

Being effectively an engine swap (I was even using the same XSL as well as javascript/css) I neglected to worry too much about browser rendering. After all, it was the same CSS that I'd tested before... surely all would be well.

The problem: Content Negotiation

My original cargowire implementation had the ability to serve different content types baked in. You could call most pages in the following ways (you still can now, try it):

  • http://cargowire.net/articles (rendered html)
  • http://cargowire.net/articles.html
  • http://cargowire.net/articles.xml
  • http://cargowire.net/articles.rss

I wanted to keep this functionality with the new asp.NET MVC version, however somewhere along the way I decided it would be a good idea to not only expose these different formats through varying file extensions but also respond to the HTTP Accept header that get sent with the request. This behaviour, similar to the respond_to method from Ruby On Rails, would allow multiple versions of the content to be requested easily.

The implementation was simple and based on my brief reading of the Http Accept header description.

// Pseudocode of the algorithm format = request.extension if exists(format) and haveViewFor(format) return content as format else read in list of values from Accept header sort the list of accept headers by quality first and original request order second return content as the first format in the list that matches an available view if no appropriate view found return content as html

By attempting to find any possible view it allowed me to later add any format I like (json for example) just by adding the relevant view and all the plumbing would wire up.

All seemed well in Firefox, and after forgetting about this code and finishing the rest of the backend off, browser testing was irrelevant.. right?... I'd not changed any css, html or JS... I pushed live.

Why did Safari looks so funny?

During testing I'd been working with firefox, which, if you request an extensionless url, appears to send the following accept header (according to the live headers plugin):

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

So in my algorithm you'd get:

  1. text/html (default q = 1) - sorted before xhtml because requested first
  2. application/xhtml+xml (default q = 1)
  3. application/xml;q=0.9
  4. */*;q=0.8

In this scenario the code looks for a template for html, finds one and returns (ignoring the rest of the list).

When I saw the output from porkandpaws tweet it was immediately clear that he was seeing the XML output instead of html. A quick run in debug mode gave the following accept header from Safari 4:

Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

It would appear that if no extension is specified Safari will prioritise XML over XHTML. With application/xml requested before application/xhtml+xml and with both being assigned the default quality level 1 my algorithm assumed the client wanted the XML view and returned it!

The quick fix was to prioritise types containing 'html' before falling back to request order. This may not be a perfect solution, but lets be pragmatic, I'd only implemented this on a whim - no-one is actually using this site other than for the html or rss view.

Conclusion

To round up then, although overengineering and random play code is almost inevitable for the curious developer when working for themselves with no timescale, it doesn't excuse full testing and you can never rule out what any change, no matter how 'isolated', might effect.

]]>
New article posted! (Ubuntu gets inside Vista) http://cargowire.net/blog/ubuntuinvistaarticle http://cargowire.net/blog/ubuntuinvistaarticle Craig Sun, 09 Aug 2009 16:15:00 GMT <p> Just posted a new article covering how to get a previously installed dual boot of Ubuntu and Vista to work seamlessly inside VirtualBox running on Vista (check it out over in the articles section). It's something I did a while back and have been meaning to finish the article on. It has definately increased my usage of Ubuntu. </p> Just posted a new article covering how to get a previously installed dual boot of Ubuntu and Vista to work seamlessly inside VirtualBox running on Vista (check it out over in the articles section). It's something I did a while back and have been meaning to finish the article on. It has definately increased my usage of Ubuntu.

]]>
I love the dev community for this reason: http://cargowire.net/blog/whyilovethedevcommunity http://cargowire.net/blog/whyilovethedevcommunity Craig Mon, 20 Jul 2009 22:00:00 GMT <p>One of the reasons I've always enjoyed being part of the web is the fantastic people it attracts. Rarely have I met someone in the industry that I couldn't get on with on some level... and today that view was reinforced.</p><p>Anyways on with the story... as with many others, when I first left University I signed up to a bunch of recruitment sites, as well as applying to companies direct (in classic 'keep as many options open as possible stylé'). When doing so, I signed up to the unwritten law that I would thereafter receive more spam than actual e-mail - I was once even berated by some crazy recruiter for telling him I had a job (after he'd ran through a minute long rant about a job opportunity without stopping for breath).</p><p>Therefore I'm quite used to deleting a lot of e-mails from my inbox on a daily basis. So much so that I didn't stop to think about it until I saw that a couple of e-mails had the same subject line with 'RE:'...</p><p>It started with:</p><p>Addressed to a company address and copied to well over 500 possible applicants. This was then succinctly followed by the first reply...</p><p>and this...</p><p>and finally...</p><p>Now it might just be me in a late Monday night computer stupor but that definately cheered up my day! I must then add (personal ad stylé) 'GSOH' as an extra point for Paul's recent post.</p><p>Cheers to the guys who I've quoted here!</p> One of the reasons I've always enjoyed being part of the web is the fantastic people it attracts. Rarely have I met someone in the industry that I couldn't get on with on some level... and today that view was reinforced.

Anyways on with the story... as with many others, when I first left University I signed up to a bunch of recruitment sites, as well as applying to companies direct (in classic 'keep as many options open as possible stylé'). When doing so, I signed up to the unwritten law that I would thereafter receive more spam than actual e-mail - I was once even berated by some crazy recruiter for telling him I had a job (after he'd ran through a minute long rant about a job opportunity without stopping for breath).

Therefore I'm quite used to deleting a lot of e-mails from my inbox on a daily basis. So much so that I didn't stop to think about it until I saw that a couple of e-mails had the same subject line with 'RE:'...

It started with:

Good evening,

I specialise in placing IT Contractors across the UK and Europe and I have the following vacancy that you may be interested...

Addressed to a company address and copied to well over 500 possible applicants. This was then succinctly followed by the first reply...

"This e-mail is confidential and is intended solely for the use of the individual or entity to whom it is addressed"

so that's all fucking 640 of us then?

Marked as spam for sharing people's email addresses and possibly breaking some sort of data protection law, though how you got these email addresses is questionable to begin with as I have never given mine to you.

and this...

This amuses me.

Recruitment FAIL.

I’m sure if you’d like help developing a mail distribution system though Mr [.....], there’s 640 of us that could potentially help you.

and finally...

Dude - that was magnificent! I've never heard of [.....], [.....] and I've certainly never given anyone permission to give my email to them either.

Now it might just be me in a late Monday night computer stupor but that definately cheered up my day! I must then add (personal ad stylé) 'GSOH' as an extra point for Paul's recent post.

Cheers to the guys who I've quoted here!

]]>
10 Things I learnt from Glasto '09 http://cargowire.net/blog/tenthingsilearntatglasto09 http://cargowire.net/blog/tenthingsilearntatglasto09 Craig Thu, 02 Jul 2009 21:00:00 GMT <p>Back from glasto.. after getting tired/wet/sunburnt all at once I've made a list of ten... exciting huh...</p><p>Pick of the weekend? dan le sac Vs Scroobius Pip. So glad I finally got to see them.</p> Back from glasto.. after getting tired/wet/sunburnt all at once I've made a list of ten... exciting huh...


  1. I can stop myself mid-sneeze with only an odd squeeky noise emanating out instead
  2. I don't enjoy beard rubbing as a salutation
  3. I should definitely stick to seeing bands I want to see, rather than bands I think I 'should' see
  4. If I leave anything around the campsite I should expect it to be taken from me - but probably not too far from me
  5. Extended time away from computers is definitely a good thing
  6. If you eat too much junk food from the same vendor he will begin to learn your 'usual'
  7. If a guy standing next to you dancing manically asks for a sip of your drink - it may not be to help a paracetamol go down
  8. Feeling bad for someone can make you sit through something you really probably shouldn't
  9. Leaving a gap in the middle of your tents, but not putting a gazebo in it will ultimately lead to someone else putting their tents in it
  10. Wearing wellies in the sun, although stylish, is actually painful

Pick of the weekend? dan le sac Vs Scroobius Pip. So glad I finally got to see them.

]]>
MVC is finally installed on my home PC! http://cargowire.net/blog/mvcfinallyinstalled http://cargowire.net/blog/mvcfinallyinstalled Craig Thu, 04 Jun 2009 22:13:00 GMT <p> For those intrigued by my twitter activity tonight (OK, it was just Dave and I've already told him anyway), but still, I ambiguously cried out: </p><p>As a .NET developer who likes to complain about webforms I was pretty keen to get to grips with the MVC framework when it was available. So, so I could play about with it at leisure I began a two step process:</p><p> Thus began a process of occasionally coming back to it, searching for a solution, failing to find it then giving up again for a bit. </p><p> The majority of sources refer to uninstalling VS addins, ensuring you have 3.5 SP1, ensuring you uninstall any betas etc. I tried these things and failed... Eventually it was this post by Phil Haack that was the spur that led me to the solution. As you'll see I even got to the point of commenting on the poor mans blog. </p><p>Several posts, including a response to another request I'd made on the asp.net forums, were even suggesting I reinstall everything, including windows, and start from scratch. Now I really didn't want to do that, and to be honest, thought that should never be necessary to get something to install (imagine having to do that for every installation you undertake on your system). </p><p>Having attempted some of the ngen related activities proposed by Phil Haack without success I dug a little deeper into the log I was getting:</p><p>Now without really having any prior experience with these kind of problems I was perhaps naively believing that the MVC install would have catered for dependencies and that if I was getting this error clearly there was some kind of conflict or problem (the whole uninstall-reinstall stuff scenario). This was reinforced by my attempts to run ngen ExecuteQueuedItems and ngen Update (and even an ngen delete at one point) all failing. However tonight I seemingly lucked upon the answer.</p><p> Having already previously identified I had the System.Data.Entity library sitting in the GAC (C:\Windows\Assembly) and the dll itself in C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.Entity.dll I was still looking for some other kind of problem. However I tried, virtually on the off chance, to directly ngen the dll myself rather than rely on the MVC installer to do everything for me. </p><p>Immediately after doing this I started an MVC install - it worked.</p><p>And so retrospectively I was annoyed as the action I took in relation to the error I was seeing seems pretty obvious!</p><p>Anyway it's all over, I'm off to reinstall my addins. The nice thing about it though was I ended up getting a response from an asp.net team member on forums.asp.net, which reminded me how much I like the openness of Microsofts team i.e. bloggers, forum posters etc.</p><p>To save the jump heres some interesting info from Jacques:</p> For those intrigued by my twitter activity tonight (OK, it was just Dave and I've already told him anyway), but still, I ambiguously cried out:

OMFG really was it that simple? I hate everything right now

http://twitter.com/cargowire/status/2034102008

As a .NET developer who likes to complain about webforms I was pretty keen to get to grips with the MVC framework when it was available. So, so I could play about with it at leisure I began a two step process:

  • Step 1: Install on work laptop - Done in seconds
  • Step 2: Install on home PC - Massive Fail

Thus began a process of occasionally coming back to it, searching for a solution, failing to find it then giving up again for a bit.

The majority of sources refer to uninstalling VS addins, ensuring you have 3.5 SP1, ensuring you uninstall any betas etc. I tried these things and failed... Eventually it was this post by Phil Haack that was the spur that led me to the solution. As you'll see I even got to the point of commenting on the poor mans blog.

Several posts, including a response to another request I'd made on the asp.net forums, were even suggesting I reinstall everything, including windows, and start from scratch. Now I really didn't want to do that, and to be honest, thought that should never be necessary to get something to install (imagine having to do that for every installation you undertake on your system).

Having attempted some of the ngen related activities proposed by Phil Haack without success I dug a little deeper into the log I was getting:

ExecNetFx: Error compiling System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089: Could not find or load a type. (Exception from HRESULT: 0x80131522)

Now without really having any prior experience with these kind of problems I was perhaps naively believing that the MVC install would have catered for dependencies and that if I was getting this error clearly there was some kind of conflict or problem (the whole uninstall-reinstall stuff scenario). This was reinforced by my attempts to run ngen ExecuteQueuedItems and ngen Update (and even an ngen delete at one point) all failing. However tonight I seemingly lucked upon the answer.

Having already previously identified I had the System.Data.Entity library sitting in the GAC (C:\Windows\Assembly) and the dll itself in C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.Entity.dll I was still looking for some other kind of problem. However I tried, virtually on the off chance, to directly ngen the dll myself rather than rely on the MVC installer to do everything for me.

C:\Windows\Framework\v2.0.50727\ngen install "C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.Entity.dll"

Immediately after doing this I started an MVC install - it worked.

And so retrospectively I was annoyed as the action I took in relation to the error I was seeing seems pretty obvious!

Anyway it's all over, I'm off to reinstall my addins. The nice thing about it though was I ended up getting a response from an asp.net team member on forums.asp.net, which reminded me how much I like the openness of Microsofts team i.e. bloggers, forum posters etc.

To save the jump heres some interesting info from Jacques:

In the Beta we only added support to the installer to GAC the assemblies, but starting with the RCs we began to create native images as well.

When the MVC installer runs it automatically performs an ngen update and compiles any assembly that might be deemed to be out of date. Any failure during the ngen process is reported back and the installation will initiate a rollback.

Jacques Eloff

Further Reading for the Interested Reader

  • Global Assembly Cache - Shared store for libraries
  • Ngen.exe - Generates native processor specific machine code to avoid JITing the original assembly

]]>
New article posted! (don't hate me for my .net) http://cargowire.net/blog/thoughtsondotnetarticle http://cargowire.net/blog/thoughtsondotnetarticle Craig Sun, 03 May 2009 13:30:00 GMT <p>Yesterday I Posted a new article covering some of my thoughts on .NET (check it out over in the articles section). It's in response to the many conversations I seem to have with people who are on the verge of being shocked and appalled that I use .NET. So I decided to get some of that discussion down on paper. It's not an intro to .NET or a comparison between .NET and the rest although aspects of both can be found in my rambling, and I certainly don't think everyone views .NET in that way.</p> Yesterday I Posted a new article covering some of my thoughts on .NET (check it out over in the articles section). It's in response to the many conversations I seem to have with people who are on the verge of being shocked and appalled that I use .NET. So I decided to get some of that discussion down on paper. It's not an intro to .NET or a comparison between .NET and the rest although aspects of both can be found in my rambling, and I certainly don't think everyone views .NET in that way.

]]>
You really should know and use these... seriously... http://cargowire.net/blog/dotnetdev101 http://cargowire.net/blog/dotnetdev101 Craig Tue, 28 Apr 2009 21:00:00 GMT <p>Simple things apparently annoy me a great deal...</p><p>.NET Developers should be aware of, and use, .NET constructs that have been around for ages:</p><p>Obviously it's up to you in the context of each situation you encounter, but to never use these at all is surely madness.</p> Simple things apparently annoy me a great deal...

.NET Developers should be aware of, and use, .NET constructs that have been around for ages:

Obviously it's up to you in the context of each situation you encounter, but to never use these at all is surely madness.

]]>
Web Developer Day '09 [notes to be completed] http://cargowire.net/blog/webdd09 http://cargowire.net/blog/webdd09 Craig Sat, 18 Apr 2009 20:00:00 GMT <p> The second ever Web DD is over and I'm finally home after a nice early start and lengthy drive. However once again it proved to be a worthwhile event with interesting as well as exciting presentations. Old school talk breakdown coming up (These are preliminary, i'll add to it when I get a chance): </p><p>Hope to meet some new people there next time!</p> The second ever Web DD is over and I'm finally home after a nice early start and lengthy drive. However once again it proved to be a worthwhile event with interesting as well as exciting presentations. Old school talk breakdown coming up (These are preliminary, i'll add to it when I get a chance):

Web Developer Day '09: Speaker / Thoughts
Dan Maharry Lightweight Test Framework Some recapping over It would be very easy to remember the period between the release of ASP.NET 3.5 and 4.0 as the time when ASP.NET MVC was made. But it's worth remembering that ASP.NET 3.5 service pack 1 and several out of band releases for ASP.NET and IIS came out as well. This presentation will cover as many of the other additions to web development as can be fit into an hour.
ASP.NET 3.5 - Miss Something?
Alex Mackey Parallelisation Oslo We will take a look at some of the great new features available in Visual Studio 2010 and .net 4. I am currently writing "Beginning .NET 4.0 with supporting technologies" for Apress and will share my discoveries and thoughts so far. The contents of this session will be partly dependent on what Microsoft release in the coming months but will probably include the more finished areas such as Azure, Language enhancements and Parallel programming.
What's good in .NET 4 and Visual Studio 2010
Barry Dorrans
  1. Cross Site Scripting
  2. Injection Flaws
  3. Malicious File Execution
  4. Insecure Direct Object Reference
  5. Cross Site Request Forgery
  6. Information Leakage
  7. Broken Authentication / Session Management
  8. Insecure Cryptographic Storage
  9. Insecure Communications
  10. Failure to restrict URL access
P0wn3d! (Or how to redirect your friend's website to katyperry.com)
Phil Pursglove
  • OutPut cache declarations
  • HttpRuntime.Cache
  • Compressing ViewState / storing viewstate in the session
  • Using ScriptManager to compress js files into single downloads
This one goes up to 11, or how to write scalable ASP.NET
Sebastian Lambla MVC Rocks
ASP.net MVC best practices
Mike Ormond Mmmm control over Client Ids, Cache using a Provider Model, some good stuff here In this session we take a wander through the landscape of ASP.NET, pausing briefly to admire what has been, before gazing longingly over the horizon and into the future of ASP.NET 4.0. As well as enhancements to Visual Studio and the design and development experience, we can expect to enjoy improvements in the core platform targeted at scale and performance, significantly more control over WebForms apps, simplification and extensions of data controls and significant new innovations in ASP.NET AJAX. I might even squeeze in a mention of ASP.NET MVC and Dynamic Data as well
ASP.NET 4.0

Hope to meet some new people there next time!

]]>
The Old Switcharoo http://cargowire.net/blog/styleswitcharoo http://cargowire.net/blog/styleswitcharoo Craig Sun, 12 Apr 2009 21:00:00 GMT <p>Having had only non-designer girls appreciate my design for cargowire I managed to cajole co-Headscapist Ed Merritt into creating an alternative.</p><p>Ed provided me with a flat image source to work from (so I can be blamed for the ragged CSS implementation which will no doubt be fixed up over time) and I decided, instead of throwing away my design, to implement a style chooser (based on the classic 'alternate stylesheet' ALA article). </p><p>This is all relatively simple stuff. The main issue I had was that I was running sIFR which would already have run before a user switches styles. This essentially throws away my ability to switch styles without a page refresh (whereby my JS can check for the style in use before running sIFR).</p><p>Additionally Eds design contained some slightly different content to my own, and this meant some markup changes, which I was kind of against. However I would rather add markup and modify my css for the original design to hide it, than add in content using jQuery for an alternate design. If anything semantically speaking the changes added to the content anyway but it did highlight how coupled designs and content can be regardless of an abstracted presentation layer.</p><p>A Javascript switcher is available at the base of the page if you wish to check out the results.</p><p>I'm off to investigate a nice way to turn sIFR off dynamically...</p> Having had only non-designer girls appreciate my design for cargowire I managed to cajole co-Headscapist Ed Merritt into creating an alternative.

Ed provided me with a flat image source to work from (so I can be blamed for the ragged CSS implementation which will no doubt be fixed up over time) and I decided, instead of throwing away my design, to implement a style chooser (based on the classic 'alternate stylesheet' ALA article).

This is all relatively simple stuff. The main issue I had was that I was running sIFR which would already have run before a user switches styles. This essentially throws away my ability to switch styles without a page refresh (whereby my JS can check for the style in use before running sIFR).

Additionally Eds design contained some slightly different content to my own, and this meant some markup changes, which I was kind of against. However I would rather add markup and modify my css for the original design to hide it, than add in content using jQuery for an alternate design. If anything semantically speaking the changes added to the content anyway but it did highlight how coupled designs and content can be regardless of an abstracted presentation layer.

A Javascript switcher is available at the base of the page if you wish to check out the results.

I'm off to investigate a nice way to turn sIFR off dynamically...

]]>
SXSW - Fifth Day round up http://cargowire.net/blog/sxsw09dayfive http://cargowire.net/blog/sxsw09dayfive Craig Tue, 17 Mar 2009 23:00:00 GMT <p>Finally finished my last post on SXSW! took a while (and I kinda tailed off on the later days), but I'm glad I followed through with making notes and writing them up to help solidify thoughts in my mind, if nothing else... Day Five...</p><p>Again, it was as if the quality of talks to attend had decreased as the days went on. However we stuck it out for the final day and visited a few talks that weren't necessarily directly related to us but could provide insight or inspiration.</p><p>This was a very media/journalism focused talk. Essentially discussing the issues surrounding the vast amount of content out there and how providers are now competing for users time across such a wide space. There was reference to how journalists often link to each other across competitor lines as well as how competitors can work together to make their own lives easier. For example by standardising technical aspects (such as embedding ads in videos on web services), allowing easier entry to client markets.</p><p>As if I didn't feel geeky enough being at an interactive conference, I decided to attend a talk about Comic Books...</p><p>It's interesting, as they face, very explicitly, the problems of people emulating print on the web. The idea of comic books on the web can be viewed as almost exactly this. It's not surprising then that a lot of the solutions include RIA based page flicking or simple single page images with click to next. However there were some interesting takes on other ways online graphic novels could be done.</p><p>My first and only taste of a 'core conversation' whereby the speakers provide an initial introduction and then open up the floor for debate and act as moderators.</p><p>There are obvious questions that need to be addressed. Should providers (such as flickr) give over account details to spouses of the recently deceased? or just delete accounts as many do now. In my view you should take care of backing up and archiving your own information. Companies don't last forever and if it is important enough for you to want to pass down through generations you should do so yourself. Especially as there may even be issues in proving ownership of online accounts (they aren't tied to bank accounts or government IDs when being created) and there are ongoing storage/maintenance cost to providers. Which, even though it is getting cheaper, can't go on into infinity.</p><p>I didn't make notes as this was an interactive discussion but it was definitely worth attending to allow exploration of ideas and thoughts within a group in a very open way (unlike the panels and talks).</p><p>A long night out ended in breakfast at the IHOP... a seemingly traditional affair 'hosted' by Dustin Diaz before a long walk back to the hotel.</p><p>Overall SxSW was a brilliant experience. The talks and panels were plentiful and thought provoking but further than that being surrounded by likeminded people and getting to meet such a variety within the trade was invaluable.</p> Finally finished my last post on SXSW! took a while (and I kinda tailed off on the later days), but I'm glad I followed through with making notes and writing them up to help solidify thoughts in my mind, if nothing else... Day Five...

Again, it was as if the quality of talks to attend had decreased as the days went on. However we stuck it out for the final day and visited a few talks that weren't necessarily directly related to us but could provide insight or inspiration.

  1. Collabotition: Can Companies Work With Their Competitors?
  2. Online Comic Books: The Future of Graphic Novels?
  3. Who Will Check My Email After I Die?

Collaboration with Competitors

This was a very media/journalism focused talk. Essentially discussing the issues surrounding the vast amount of content out there and how providers are now competing for users time across such a wide space. There was reference to how journalists often link to each other across competitor lines as well as how competitors can work together to make their own lives easier. For example by standardising technical aspects (such as embedding ads in videos on web services), allowing easier entry to client markets.

Online Comic Books: The Future of Graphic Novels?

As if I didn't feel geeky enough being at an interactive conference, I decided to attend a talk about Comic Books...

It's interesting, as they face, very explicitly, the problems of people emulating print on the web. The idea of comic books on the web can be viewed as almost exactly this. It's not surprising then that a lot of the solutions include RIA based page flicking or simple single page images with click to next. However there were some interesting takes on other ways online graphic novels could be done.

Who Will Check My Email After I Die?

My first and only taste of a 'core conversation' whereby the speakers provide an initial introduction and then open up the floor for debate and act as moderators.

There are obvious questions that need to be addressed. Should providers (such as flickr) give over account details to spouses of the recently deceased? or just delete accounts as many do now. In my view you should take care of backing up and archiving your own information. Companies don't last forever and if it is important enough for you to want to pass down through generations you should do so yourself. Especially as there may even be issues in proving ownership of online accounts (they aren't tied to bank accounts or government IDs when being created) and there are ongoing storage/maintenance cost to providers. Which, even though it is getting cheaper, can't go on into infinity.

I didn't make notes as this was an interactive discussion but it was definitely worth attending to allow exploration of ideas and thoughts within a group in a very open way (unlike the panels and talks).

Media Temple party and IHOP pancakes

A long night out ended in breakfast at the IHOP... a seemingly traditional affair 'hosted' by Dustin Diaz before a long walk back to the hotel.

Overall?

Overall SxSW was a brilliant experience. The talks and panels were plentiful and thought provoking but further than that being surrounded by likeminded people and getting to meet such a variety within the trade was invaluable.

]]>
SXSW - Fourth Day round up http://cargowire.net/blog/sxsw09dayfour http://cargowire.net/blog/sxsw09dayfour Craig Mon, 16 Mar 2009 23:00:00 GMT <p> Unfortunately after waking up early, quickly showering, grabbing breakfast and thinking about a taxi we realised there weren't any good opening talks today. So instead we hung back at the hotel for a bit and went in later. </p><p>Joomla vs Wordpress vs Drupal. Each were given the same project - to create a site for use by Community Leadership projects. The task included a lot of functionality that is often found on sites. Such as wiki pages, events, news and granular permissions. It was to be run on shared hosting and creating using free tools within 100 hours.</p><p>There was little real insight really provided by the panel itself. However the subsites created are listed below:</p><p>Although not directly creating wireframes on a daily basis we sat down in this panel hoping to learn a thing or two.</p><p>Wireframes are primarily communication tools however the panel reminded us that they should always be targeted to, and therefore created in consideration to the audience i.e. designers for ideas and critique, how a solution will affect daily activity for business people, an overall approach for upper management and the nitty gritty 'how to implement' for developers.</p><p>Wireframes come in a variety of flavours over time, from low to high fidelity and from idea generation to concept selection. Different types can also be classified as displaying Reference Zones (at an abstract level, the areas and major blocks), low fidelity (sketches etc), high fidelity (as much detail as the final output).</p><p>Storyboards can be used to communicate intended flows and states. Each storyboard should also contain information about how the flow being described is both entered and exited.</p><p>A standalone wireframe should be able to be fully understood without any additional documentation. This is especially true when you consider that in large organisations documents are often passed around, and not necessarily in sequence or all together.</p><p>A specification wireframe should be very detailed with sections for Triggers, Content, Actions etc to enable full implementation.</p><p>The best thing about this talk were the examples (as always - it's massively beneficial to see the way other people work.</p><p>After a general hello and round up there was a focus on education within the industry with reference to Interact.</p><p>This was followed up by a speaker from the Adobe Task force (formerly just dealing with dreamweaver, now with the whole suite) who spoke of steps having been taken to deprecate the use of non-standards items in Dreamweaver.</p><p>IE8's compatibility mode was also discussed, before we nipped out to make it to the Great British Booze up prep.</p><p>Boagworld (Headscape), Clear Left and Naklab got together and hosted the Great British Booze Up. Now in its third year. The Rolling BBC and Top Gear added to the British Vibe and I look forward to the idea of it being there again next year. </p> Unfortunately after waking up early, quickly showering, grabbing breakfast and thinking about a taxi we realised there weren't any good opening talks today. So instead we hung back at the hotel for a bit and went in later.

  1. Ultimate showdown of content management destiny
  2. Wireframes for the Wicked
  3. 2009 WaSP Annual Meeting
  4. Great Boo's Up

Ultimate showdown of content management destiny

Joomla vs Wordpress vs Drupal. Each were given the same project - to create a site for use by Community Leadership projects. The task included a lot of functionality that is often found on sites. Such as wiki pages, events, news and granular permissions. It was to be run on shared hosting and creating using free tools within 100 hours.

There was little real insight really provided by the panel itself. However the subsites created are listed below:

CMS Showdown Links


Wireframes for the wicked

Although not directly creating wireframes on a daily basis we sat down in this panel hoping to learn a thing or two.

Wireframes are primarily communication tools however the panel reminded us that they should always be targeted to, and therefore created in consideration to the audience i.e. designers for ideas and critique, how a solution will affect daily activity for business people, an overall approach for upper management and the nitty gritty 'how to implement' for developers.

Wireframes come in a variety of flavours over time, from low to high fidelity and from idea generation to concept selection. Different types can also be classified as displaying Reference Zones (at an abstract level, the areas and major blocks), low fidelity (sketches etc), high fidelity (as much detail as the final output).

Storyboards can be used to communicate intended flows and states. Each storyboard should also contain information about how the flow being described is both entered and exited.

A standalone wireframe should be able to be fully understood without any additional documentation. This is especially true when you consider that in large organisations documents are often passed around, and not necessarily in sequence or all together.

A specification wireframe should be very detailed with sections for Triggers, Content, Actions etc to enable full implementation.

The best thing about this talk were the examples (as always - it's massively beneficial to see the way other people work.

WaSP Meeting

After a general hello and round up there was a focus on education within the industry with reference to Interact.

This was followed up by a speaker from the Adobe Task force (formerly just dealing with dreamweaver, now with the whole suite) who spoke of steps having been taken to deprecate the use of non-standards items in Dreamweaver.

IE8's compatibility mode was also discussed, before we nipped out to make it to the Great British Booze up prep.

Great British Booze Up

Boagworld (Headscape), Clear Left and Naklab got together and hosted the Great British Booze Up. Now in its third year. The Rolling BBC and Top Gear added to the British Vibe and I look forward to the idea of it being there again next year.

]]>
SXSW - Third Day round up http://cargowire.net/blog/sxsw09daythree http://cargowire.net/blog/sxsw09daythree Craig Sun, 15 Mar 2009 23:00:00 GMT <p>Breakfast was taken, taxi driver wasn't a conspiracy theorist... seemingly we've got this whole SXSW thing down now.</p><p>With opening reference to WCAG2.0 and Section 508, it is clear that accessibility and consideration of assistive technologies is important. This is why I was so impressed to see a Flash accessibility panel on the schedule. Not only is it important for the users, it is important for developers to know that it is possible to make Flash accessible (and how you can do it).</p><p>Accessibility for Flash and RIA's needs to consider:</p><p>The Fact that Flash has supported a level of accessibility since version 6 in 2002 was reiterated in addition to how Flex has also done so since version 1.5. For example when demoing a zoom magnifier tool we were shown how flash could react and instead of auto playing a video wait for a user action (so they don't miss the beginning - when it is off screen).</p><p> The panel also discussed how Adobe have released scripts for Jaws to add support for things like Roles that are more specific to flash than standard HTML (such as TreeView). </p><p>Using the Accessibility panel in the Flash authoring environment alt text can be added as well as the tabindex. This can be used to address text equivalents and meaningful sequence issues.</p><p>A demo of a card matching game showed all these techniques together. The user could tab through the cards and hit enter to choose. Each card identified itself through the alt text (which changed depending on if it was face up or down). Audio feedback for 'correct' or 'incorrect' actions were used, with the sound being pre-played to the user at the beginning of the movie so they were aware of what to expect. Accessibility.UpdateProperties() is utilised after any change to alt text to ensure that the UI responds with the new values while Accessibility.isActive() can be used to identify if the current user is using an assistive technology.</p><p>A slightly less realistic demo followed, with a whack-a-mole implementation using tabindex and audio 'mole' 'no mole'. I guess this is where the realisation comes that you are not attempting to provide a directly equivalent experience, more that you are exposing the same level of functionality to a user.</p><p>Inappropriate naming of items (adding 'button' to a name when it is already read out, making names too long etc) and background music interfering with audio alternatives were listed as mistakes often made in developing accessible Flash. Use of the wmode attribute is also known to cause accessibility difficulties and SWFObject was described as the most appropriate method of embedding flash content.</p><p>Unfortunately the accessibility implementation appears to be limited to Flash and Flex on windows. Adobe Air came up in Q&A, with accessibility coming soon for that (but again full support only coming to windows to start).</p><p>It was a shame that this panel was more business and law focused than I originally hoped it might be. In fact so much so, that not only did I barely make any notes, I almost fell asleep. Only to be woken by a heckler from the crowd taking issue with the statement that ownership issues "didn't matter" because as soon as something is online.. it's there and theres nothing but retrospective compensatory action that you can take.</p><p>Luckily for me the CSS3 panel didn't disappoint. With representatives from Microsoft, Mozilla and Opera (with the noted exception of an invited but uninterested Apple) we were bound to see some interesting stuff (Just a shame that Molly's over Americanness grated on me).</p><p>In terms of CSS 3 we were talking about nth Child selectors (with speed an issue but still faster than inserting classes using javascript), partial opacity, border images (currently in FF3.5 beta), multi column support, text shadow, box shadow, border radius, font size adjust, @font-face and @media based rules. Many of which have appeared in some form in many of the release versions of current browsers (but under different prefixed rule names).</p><p>The @media based rules were of particular interest. For example:</p><p>This allows excellent control over display for various user agents (such as handhelds that do not explicitly identify themselves as media handheld).</p><p>Combining a number of these CSS3 abilities together Opera had managed to draw their logo using only spans and CSS. On rollover it even animated across the screen.</p><p>According to the Microsoft representative IE8 will be the most complete implementation of CSS 2.1 at time of release. IE 8 will reference a blacklist of 'requiring IE7 Compatibility' sites. These sites will be displayed using the compatibility mode. Compatibility mode can also be manually toggled using the button in the toolbar. After a set number of toggles a site will be flagged into the IE process to addition to the blacklist. When a site is added to the black list it will be notified by Microsoft with instructions on how to run the site under IE8 standards mode to fix. The site can later be submitted back for approval to be removed from the list. </p><p>I came away from this talk pretty positive that a simple App really isn't too difficult to create... Time to buy an intel based Mac and test that theory I guess!</p><p>Bypassing some rather inane descriptions of what a delegate is and why json is better than just using your own string (cheers random questioner guy for this unnecessaryness) this talk made clear that iPhone dev is quite different from web dev. The hardware is 10 to 100 times slower in terms of processor/memory/capability than most web servers and memory management (garbage collection) is on you. The differences also extend to latency cues; similar to AJAX you have to ensure you indicate progress and wait times yourself.</p><p>Cocoa, XCode and Interface Builder open up a variety of components for easy UI creation (things like scrollable lists etc come for free). So for simple applications it's a matter of wiring up web service API calls to UI display components.</p><p>Mmmm Icon Cactus followed by meet on swords at Fogo de Chao in the evening was not only good in terms of food but also for meeting Richard Rutter and Paul Annett of Clear Left.</p> Breakfast was taken, taxi driver wasn't a conspiracy theorist... seemingly we've got this whole SXSW thing down now.

  1. Accessible Flash and Flex Applications
  2. OpenID, OAuth, Data Portability and the Enterprise
  3. CSS3: What's Now, What's New and What's Not?
  4. iPhone Development for Experienced Web Developers
  5. Meat on a stick

Accessible Flash/Flex

With opening reference to WCAG2.0 and Section 508, it is clear that accessibility and consideration of assistive technologies is important. This is why I was so impressed to see a Flash accessibility panel on the schedule. Not only is it important for the users, it is important for developers to know that it is possible to make Flash accessible (and how you can do it).

Accessibility for Flash and RIA's needs to consider:

  • Non text based equivalent
  • Alternatives for time based media
  • Items placed in a meaningful sequence
  • Reasonable Contrast
  • Handling resizable text
  • Exposing Name (ensure the Name of the object makes sense to a user), Role (the type of UI control), Value (information from objects in the form of a string - not all have one) and State's (a localized string that describes the state) to the browser

The Fact that Flash has supported a level of accessibility since version 6 in 2002 was reiterated in addition to how Flex has also done so since version 1.5. For example when demoing a zoom magnifier tool we were shown how flash could react and instead of auto playing a video wait for a user action (so they don't miss the beginning - when it is off screen).

The panel also discussed how Adobe have released scripts for Jaws to add support for things like Roles that are more specific to flash than standard HTML (such as TreeView).

Techniques

  • TabIndex
  • Alt Text
  • Audio Feedback
  • Accessible Welcome Text

Using the Accessibility panel in the Flash authoring environment alt text can be added as well as the tabindex. This can be used to address text equivalents and meaningful sequence issues.

A demo of a card matching game showed all these techniques together. The user could tab through the cards and hit enter to choose. Each card identified itself through the alt text (which changed depending on if it was face up or down). Audio feedback for 'correct' or 'incorrect' actions were used, with the sound being pre-played to the user at the beginning of the movie so they were aware of what to expect. Accessibility.UpdateProperties() is utilised after any change to alt text to ensure that the UI responds with the new values while Accessibility.isActive() can be used to identify if the current user is using an assistive technology.

A slightly less realistic demo followed, with a whack-a-mole implementation using tabindex and audio 'mole' 'no mole'. I guess this is where the realisation comes that you are not attempting to provide a directly equivalent experience, more that you are exposing the same level of functionality to a user.

Common Mistakes

Inappropriate naming of items (adding 'button' to a name when it is already read out, making names too long etc) and background music interfering with audio alternatives were listed as mistakes often made in developing accessible Flash. Use of the wmode attribute is also known to cause accessibility difficulties and SWFObject was described as the most appropriate method of embedding flash content.

Unfortunately the accessibility implementation appears to be limited to Flash and Flex on windows. Adobe Air came up in Q&A, with accessibility coming soon for that (but again full support only coming to windows to start).

Further Links


OpenId, OAuth, Data Portability... Enterprise

It was a shame that this panel was more business and law focused than I originally hoped it might be. In fact so much so, that not only did I barely make any notes, I almost fell asleep. Only to be woken by a heckler from the crowd taking issue with the statement that ownership issues "didn't matter" because as soon as something is online.. it's there and theres nothing but retrospective compensatory action that you can take.

CSS3

Luckily for me the CSS3 panel didn't disappoint. With representatives from Microsoft, Mozilla and Opera (with the noted exception of an invited but uninterested Apple) we were bound to see some interesting stuff (Just a shame that Molly's over Americanness grated on me).

In terms of CSS 3 we were talking about nth Child selectors (with speed an issue but still faster than inserting classes using javascript), partial opacity, border images (currently in FF3.5 beta), multi column support, text shadow, box shadow, border radius, font size adjust, @font-face and @media based rules. Many of which have appeared in some form in many of the release versions of current browsers (but under different prefixed rule names).

The @media based rules were of particular interest. For example:

<style type="text/css"> /* no wider than 800px */ @media all and (max-width: 800px){ ...rules } </style>

This allows excellent control over display for various user agents (such as handhelds that do not explicitly identify themselves as media handheld).

Combining a number of these CSS3 abilities together Opera had managed to draw their logo using only spans and CSS. On rollover it even animated across the screen.

IE 8

According to the Microsoft representative IE8 will be the most complete implementation of CSS 2.1 at time of release. IE 8 will reference a blacklist of 'requiring IE7 Compatibility' sites. These sites will be displayed using the compatibility mode. Compatibility mode can also be manually toggled using the button in the toolbar. After a set number of toggles a site will be flagged into the IE process to addition to the blacklist. When a site is added to the black list it will be notified by Microsoft with instructions on how to run the site under IE8 standards mode to fix. The site can later be submitted back for approval to be removed from the list.

iPhone Dev

I came away from this talk pretty positive that a simple App really isn't too difficult to create... Time to buy an intel based Mac and test that theory I guess!

Bypassing some rather inane descriptions of what a delegate is and why json is better than just using your own string (cheers random questioner guy for this unnecessaryness) this talk made clear that iPhone dev is quite different from web dev. The hardware is 10 to 100 times slower in terms of processor/memory/capability than most web servers and memory management (garbage collection) is on you. The differences also extend to latency cues; similar to AJAX you have to ensure you indicate progress and wait times yourself.

Cocoa, XCode and Interface Builder open up a variety of components for easy UI creation (things like scrollable lists etc come for free). So for simple applications it's a matter of wiring up web service API calls to UI display components.

Meat Sword Popsicles

Mmmm Icon Cactus followed by meet on swords at Fogo de Chao in the evening was not only good in terms of food but also for meeting Richard Rutter and Paul Annett of Clear Left.

]]>
SXSW - Second Day round up http://cargowire.net/blog/sxsw09daytwo http://cargowire.net/blog/sxsw09daytwo Craig Sun, 15 Mar 2009 01:00:00 GMT <p> After hurriedly writing my round up of Day One we missed breakfast and grabbed a cab to rush in to our first talk of the day. </p><p> Without realising it (perhaps I should have read the description more) I walked into another REST discussion (after seeing a similar talk at DevDevDev last year). However it was an interesting talk marred only by a slightly incessantly nit-picking Q&A. At least this time there was less constant direct referencing to Roy Fieldings dissertation. </p><p> Gregg started by discussing other API possibilities such as SOAP before turning his attention to REST. Essentially what we're talking about here is making full and correct use of the HTTP verbs i.e: </p><p>So that we can address the REST requirements of:</p><p> A counter to something I'd often seen/considered using, was put forward. In that, uris such as user/create/ should not exist as the verb is being used as part of the resource locator. </p><p> This strict use of the four HTTP methods however does sometimes lead to the need to break down and analyse your RPCs i.e. play_game could be considered as a new verb (play) but could also be seen as 'create', and therefore post, as you are creating an instance of a game. </p><p> The latter half of the talk consisted of naming and shaming big name apis (YouTube gets REST, Flickr Doesn't, Myspace does, Amazon simple DB doesn't, eBay doesn't, Rails 2.0 does, Google does etc.) followed by an interesting screencast of Ruby on Rails 2.0 making the appropriate REST Verb Calls (although through the browser only get and post are used - with method type parameters) </p><p> The key thing to take away from this talk however was the discussion of the future (and essentially - 'why REST'). The Open Stack made up part of this discussion, with the idea that Open Social, and more generally REST, could allow a standardisation of interaction between consumers and services whereby code is written once; To take advantage of the Open Social standard interfaces allowing the consumer to use the same code across all open social compatible services. </p><p> I always love to hear about Microformats and some of the stuff discussed in this talk was really exciting... if a little scary. I took note that Tantek regularly made clear that the information being displayed/parsed/used by Microformats consumers was public information. However, even so, it felt a little scary to realise how easy it is to pull together someones entire online identity by scraping/parsing Microformats enabled sites. </p><p> An impressive demo of HuffDuffer by Jeremy Keith started us off. I urge you to try it out. After sign-up Jeremy makes use of the Google Social Graph API, and therefore any rel="me" XFN Microformats on your provided homepage, to build up a list of 'elsewhere' sites. In addition he even pulls in a relevant avatar from a provided hcard. </p><p>After updating my 'Me' link on my homepage to include the rel="me" (I already had rel="me" links on my about page but nothing on my homepage to refer to it) I was able to see my own results. It included a link to my flickr and twitter as well as my twitter avatar being used. </p><p>Slightly scary stuff, but both a wake up call to users about exactly how much you are putting online and a contrast to the Open Social discussions that had taken place in the REST talk. Where Open Social relies on services using standard APIs to allow cross service 'write once' code the Google Social Graph works totally from the client side output that is found across the web. </p><p> It wouldn't be a Microformats talk if the excellent Operator plugin wasn't mentionned but some people may be unaware of the plugin available for IE. It's called Oomph, but in my view the most useful aspect of this is that the jquery behind it is also available directly. This allows a site to use microformats and add value themselves (by including the javascript to output the Microformats widget). Providing a good way of showing a return on the time investment. Rather than having to say things like 'users may have a plugin' or 'other services may utilise it'. </p><p>Example required javascript below:</p><p> As if that wasn't enough Glenn Jones had to trump it all with an intriguing set of demos. Of particular interest is the Identify plugin that pulls out and neatly displays virtually all Social Graph information in a lightbox. If any of this excites you be sure to also check out the Social Graph Explorer</p><p>In short people who aren't using Microformats should be. There is no excuse, particularly with new projects. Often the areas that require Microformat classes will require classes for styling anyway. Instead of making up your own, use the Microformats ones and add value. There have been some accessibility issues and these were discussed, for example with dates using the abbr element. Possible fixes include separating the date and time elements or storing the 'title' info in a span that is styled away. It is good to see such issues are being addressed.</p><p> To kill some time and get away from rigidly sitting listening we paid a visit to the trade show whereby we were immediately dissed for being .net developers by a Ruby based CMS producer before being subsequently let down by a WPF demo (by an AMD guy) complaining about the heat of his PC in a cabinet. Enough said... </p><p>Unfortunately I didn't keep any notes on this (or I did, and they've got awol). However in general what we were discussing was:</p><p>To recap over the legal issues; essentially if you provide a font for embedding on a website you are possibly opening it up for free download to any user of the site. This is why many font producers have difficulty with the idea of @font-face embedded fonts.</p><p>There are things you can do as a website owner (such as .htaccess protecting direct download of the font etc) however a determined user will be able to retrieve it. The question is, if you take reasonable action, have you done enough in the eyes of font usage licenses (some of which currently flat out prohibit online usage)?</p><p>Internet Explorer has taken one view of this problem and supports EOT's (kind of 'DRM'd fonts with only particular characters included). However this is not a perfectly secure solution and is not cross browser.</p><p>It was interesting to note that although the panel spoke about the abilities you would have with embedded fonts they also noted that there is a lot that can be done with typography online even now, with attention to detail and fine tuned usage of the standard 'web fonts' that we know so well.</p><p>Additionally, apparently Jeremy Keith caused a stir in the browser wars panel by asking "Does the panel believe that it's the job a browser to uphold existing or outdated business models or should it remain true to the vision of the twenty year old web and just render the damn content it's given?"</p><p>An excellent panel with actual disagreement and debate rather than feeling like a staged group presentation. The questions covered IE6 support, use of JS and CSS frameworks, wireframing, and business anecdotes</p><p> It can be downloaded here</p> After hurriedly writing my round up of Day One we missed breakfast and grabbed a cab to rush in to our first talk of the day.

  1. How not to fail at web services
  2. Microformats: Quiet Revolution
  3. Trade Show
  4. Web Typography: Quit Bitchin' and Get Your Glyph On
  5. Boagworld Live Show Spectacular!

How not to fail at Web Services

Without realising it (perhaps I should have read the description more) I walked into another REST discussion (after seeing a similar talk at DevDevDev last year). However it was an interesting talk marred only by a slightly incessantly nit-picking Q&A. At least this time there was less constant direct referencing to Roy Fieldings dissertation.

Gregg started by discussing other API possibilities such as SOAP before turning his attention to REST. Essentially what we're talking about here is making full and correct use of the HTTP verbs i.e:

  • Get = Show
  • Post = Create
  • Put = Update
  • Delete = Delete

So that we can address the REST requirements of:

  • Resources (nouns)
  • Uniquely Addressable Resources
  • Standard methods of interaction
  • Stateless

A counter to something I'd often seen/considered using, was put forward. In that, uris such as user/create/ should not exist as the verb is being used as part of the resource locator.

This strict use of the four HTTP methods however does sometimes lead to the need to break down and analyse your RPCs i.e. play_game could be considered as a new verb (play) but could also be seen as 'create', and therefore post, as you are creating an instance of a game.

The latter half of the talk consisted of naming and shaming big name apis (YouTube gets REST, Flickr Doesn't, Myspace does, Amazon simple DB doesn't, eBay doesn't, Rails 2.0 does, Google does etc.) followed by an interesting screencast of Ruby on Rails 2.0 making the appropriate REST Verb Calls (although through the browser only get and post are used - with method type parameters)

The key thing to take away from this talk however was the discussion of the future (and essentially - 'why REST'). The Open Stack made up part of this discussion, with the idea that Open Social, and more generally REST, could allow a standardisation of interaction between consumers and services whereby code is written once; To take advantage of the Open Social standard interfaces allowing the consumer to use the same code across all open social compatible services.

Microformats: Quiet Revolution

I always love to hear about Microformats and some of the stuff discussed in this talk was really exciting... if a little scary. I took note that Tantek regularly made clear that the information being displayed/parsed/used by Microformats consumers was public information. However, even so, it felt a little scary to realise how easy it is to pull together someones entire online identity by scraping/parsing Microformats enabled sites.

An impressive demo of HuffDuffer by Jeremy Keith started us off. I urge you to try it out. After sign-up Jeremy makes use of the Google Social Graph API, and therefore any rel="me" XFN Microformats on your provided homepage, to build up a list of 'elsewhere' sites. In addition he even pulls in a relevant avatar from a provided hcard.

After updating my 'Me' link on my homepage to include the rel="me" (I already had rel="me" links on my about page but nothing on my homepage to refer to it) I was able to see my own results. It included a link to my flickr and twitter as well as my twitter avatar being used.

Slightly scary stuff, but both a wake up call to users about exactly how much you are putting online and a contrast to the Open Social discussions that had taken place in the REST talk. Where Open Social relies on services using standard APIs to allow cross service 'write once' code the Google Social Graph works totally from the client side output that is found across the web.

It wouldn't be a Microformats talk if the excellent Operator plugin wasn't mentionned but some people may be unaware of the plugin available for IE. It's called Oomph, but in my view the most useful aspect of this is that the jquery behind it is also available directly. This allows a site to use microformats and add value themselves (by including the javascript to output the Microformats widget). Providing a good way of showing a return on the time investment. Rather than having to say things like 'users may have a plugin' or 'other services may utilise it'.

Example required javascript below:

<script type="text/javascript" src="https://visitmix.com/labs/oomph/1.0/Client/jquery-1.2.6.min.js"></script> <script type="text/javascript" src="https://visitmix.com/labs/oomph/1.0/Client/oomph.min.js"></script>

As if that wasn't enough Glenn Jones had to trump it all with an intriguing set of demos. Of particular interest is the Identify plugin that pulls out and neatly displays virtually all Social Graph information in a lightbox. If any of this excites you be sure to also check out the Social Graph Explorer

In short people who aren't using Microformats should be. There is no excuse, particularly with new projects. Often the areas that require Microformat classes will require classes for styling anyway. Instead of making up your own, use the Microformats ones and add value. There have been some accessibility issues and these were discussed, for example with dates using the abbr element. Possible fixes include separating the date and time elements or storing the 'title' info in a span that is styled away. It is good to see such issues are being addressed.

Further Links


Trade Show

To kill some time and get away from rigidly sitting listening we paid a visit to the trade show whereby we were immediately dissed for being .net developers by a Ruby based CMS producer before being subsequently let down by a WPF demo (by an AMD guy) complaining about the heat of his PC in a cabinet. Enough said...

Web Typography

Unfortunately I didn't keep any notes on this (or I did, and they've got awol). However in general what we were discussing was:

  • @font-face
  • Legal issues surrounding font ownership/licensing/usage
  • Microsoft's EOT, everyone else's OTF font embedding support

To recap over the legal issues; essentially if you provide a font for embedding on a website you are possibly opening it up for free download to any user of the site. This is why many font producers have difficulty with the idea of @font-face embedded fonts.

There are things you can do as a website owner (such as .htaccess protecting direct download of the font etc) however a determined user will be able to retrieve it. The question is, if you take reasonable action, have you done enough in the eyes of font usage licenses (some of which currently flat out prohibit online usage)?

Internet Explorer has taken one view of this problem and supports EOT's (kind of 'DRM'd fonts with only particular characters included). However this is not a perfectly secure solution and is not cross browser.

It was interesting to note that although the panel spoke about the abilities you would have with embedded fonts they also noted that there is a lot that can be done with typography online even now, with attention to detail and fine tuned usage of the standard 'web fonts' that we know so well.

Additionally, apparently Jeremy Keith caused a stir in the browser wars panel by asking "Does the panel believe that it's the job a browser to uphold existing or outdated business models or should it remain true to the vision of the twenty year old web and just render the damn content it's given?"

Boagworld: Live Spectacular!

An excellent panel with actual disagreement and debate rather than feeling like a staged group presentation. The questions covered IE6 support, use of JS and CSS frameworks, wireframing, and business anecdotes

It can be downloaded here

]]>
SXSW - Travel and First Day round up http://cargowire.net/blog/sxsw09dayone http://cargowire.net/blog/sxsw09dayone Craig Sat, 14 Mar 2009 09:00:00 GMT <p> After Car, Coach, Plane, Plane, Car we finally arrived in Austin (2 Hours ahead of Marcus and Paul - clearly we're connecting flight geniuses). A quick jaunt to the convention center to collect passes before the melee that was collecting them on Friday, followed by an excellent (if not slightly cliche texan?) chilli cheese burger meal with Paul and a multitude of people I've never met before (including Aral Balkan who did an excellent talk on Friday afternoon) pretty much rounded up the first day. </p><p>My day one visit list covered:</p><p> Along with pretty much the entire audience I sat and played with my iPhone throughout the first panel, although rather than twittering like the cool kids (Question 1: "What's the hash tag for this panel?") I was making notes... which was lucky as without them there probably wasn't too much memorable stuff to take away from this talk. </p><p> The discussion spanned a few key areas of UGC, mainly Monetization and Getting (+maintaining) good quality user content. On the monetization side there was discussion of ad revenue as the main model seen but also pointers to how companies like LinkedIn monetize by targeting different audiences (such as recruitment agencies etc) on top of their free user base. </p><p> Ways of getting good content were things such as setting an overall tone of positivity within your application (and even maybe yourself as the person behind the application - the example given being craigs list). And although it was noted by one of the panel that the killer app for the internet may well be 'bitching' there were pointers to the variety of ways to maintain good content. For example simple user flagging of inappropriate content, reputation based user permission schemes, user ratings, and even the different ways that social apps work i.e. twitter and facebook can be controlled by the user to be inclusive only of their own inner circle where their content is trusted anyway without the need for over powering control/censure of content. </p><p> The Questions explored these ideas further with a rather surreal back and forth about the name 'User Generated Content' being followed by ideas on how to gain that critical mass needed to make your UGC based application really take off. Ideas thrown around included rewards (that are not always financial), giving the user a way to self promote/express and even things like charging for use that leads only to more personal, rather than community content. </p><p> Having recently started using StackOverflow a lot of this rung true to their reputation and badge schemes in terms of generating a positive atmosphere and rewarding users for good quality content. </p><p> It was a quick dash to the opposite end of the conference centre to catch Aral's talk but in my opinion it was definitely worth it. Although brief (about 20minutes) it was insightful and funny and left me wanting to pick up his book as I moved on to the next Panel (back at the other end of the centre handily!). I would recommend Aral's talk to the many people who balk at use of Flash. Particularly in regard to his discussion of the amount of Open Source resources that are available and the idea that Usability is not inherently down to the platform but due to the particular implementation. </p><p> As with the rest of Headscape I showed some Clear Left love and went down to see Paul's talk. Overall, and in agreement with Marcus, this was a good example of what talks at SXSW should be like. It was entertaining and thought provoking with Paul relating the web side of his life to his interest in magic very smoothly. The key message I took from the talk reminded my of Maslow's hierarchy of needs. Whereby a certain level of satisfaction is required to avoid dissatisfaction, but that once something causes satisfaction adding more of it (in Paul's example toilet paper) doesn't increase enjoyment. Something else is needed, and Paul related this well to hidden easter egg's you get on sites - such as Silverbacks parallax 3D effect vines. </p><p> These clever tricks and hidden bonuses create a feeling of inclusion and perhaps even smugness that you are 'in the know' somehow. It's the kind of things that make you send on a page link to a friend to point out what you've found. The difficulty, as highlighted and accepted during Q&A, is selling this kind of addition/viral marketing idea to clients. Which, with a majority of more 'serious' projects may be a very difficult task, especially as any possible metrics for ROI are difficult to create/measure. </p><p> An evening that included Texan burgers and Pool can't be bad. A good number of people showed up to Paul's open invite for dinner at the Iron Cactus with a few then continuing over to Buffalo Billiards. Overall an excellent first day. </p> After Car, Coach, Plane, Plane, Car we finally arrived in Austin (2 Hours ahead of Marcus and Paul - clearly we're connecting flight geniuses). A quick jaunt to the convention center to collect passes before the melee that was collecting them on Friday, followed by an excellent (if not slightly cliche texan?) chilli cheese burger meal with Paul and a multitude of people I've never met before (including Aral Balkan who did an excellent talk on Friday afternoon) pretty much rounded up the first day.

Day One

My day one visit list covered:

  1. User Generated Content: State of the Union
  2. The Essential Guide to Open Source Flash Development
  3. Oooh That's Clever
  4. Drinks with random people
  5. Passing out on the bed with laptop and phone in hand (cheers for documenting this dave!)

UGC

Along with pretty much the entire audience I sat and played with my iPhone throughout the first panel, although rather than twittering like the cool kids (Question 1: "What's the hash tag for this panel?") I was making notes... which was lucky as without them there probably wasn't too much memorable stuff to take away from this talk.

The discussion spanned a few key areas of UGC, mainly Monetization and Getting (+maintaining) good quality user content. On the monetization side there was discussion of ad revenue as the main model seen but also pointers to how companies like LinkedIn monetize by targeting different audiences (such as recruitment agencies etc) on top of their free user base.

Ways of getting good content were things such as setting an overall tone of positivity within your application (and even maybe yourself as the person behind the application - the example given being craigs list). And although it was noted by one of the panel that the killer app for the internet may well be 'bitching' there were pointers to the variety of ways to maintain good content. For example simple user flagging of inappropriate content, reputation based user permission schemes, user ratings, and even the different ways that social apps work i.e. twitter and facebook can be controlled by the user to be inclusive only of their own inner circle where their content is trusted anyway without the need for over powering control/censure of content.

The Questions explored these ideas further with a rather surreal back and forth about the name 'User Generated Content' being followed by ideas on how to gain that critical mass needed to make your UGC based application really take off. Ideas thrown around included rewards (that are not always financial), giving the user a way to self promote/express and even things like charging for use that leads only to more personal, rather than community content.

Having recently started using StackOverflow a lot of this rung true to their reputation and badge schemes in terms of generating a positive atmosphere and rewarding users for good quality content.

Open Source Flash

It was a quick dash to the opposite end of the conference centre to catch Aral's talk but in my opinion it was definitely worth it. Although brief (about 20minutes) it was insightful and funny and left me wanting to pick up his book as I moved on to the next Panel (back at the other end of the centre handily!). I would recommend Aral's talk to the many people who balk at use of Flash. Particularly in regard to his discussion of the amount of Open Source resources that are available and the idea that Usability is not inherently down to the platform but due to the particular implementation.

Oooh That's Clever

As with the rest of Headscape I showed some Clear Left love and went down to see Paul's talk. Overall, and in agreement with Marcus, this was a good example of what talks at SXSW should be like. It was entertaining and thought provoking with Paul relating the web side of his life to his interest in magic very smoothly. The key message I took from the talk reminded my of Maslow's hierarchy of needs. Whereby a certain level of satisfaction is required to avoid dissatisfaction, but that once something causes satisfaction adding more of it (in Paul's example toilet paper) doesn't increase enjoyment. Something else is needed, and Paul related this well to hidden easter egg's you get on sites - such as Silverbacks parallax 3D effect vines.

These clever tricks and hidden bonuses create a feeling of inclusion and perhaps even smugness that you are 'in the know' somehow. It's the kind of things that make you send on a page link to a friend to point out what you've found. The difficulty, as highlighted and accepted during Q&A, is selling this kind of addition/viral marketing idea to clients. Which, with a majority of more 'serious' projects may be a very difficult task, especially as any possible metrics for ROI are difficult to create/measure.

Evening time

An evening that included Texan burgers and Pool can't be bad. A good number of people showed up to Paul's open invite for dinner at the Iron Cactus with a few then continuing over to Buffalo Billiards. Overall an excellent first day.

]]>
Sitewatcher AIR App http://cargowire.net/blog/sitewatcher http://cargowire.net/blog/sitewatcher Craig Fri, 13 Feb 2009 20:30:00 GMT <p> Blog post now up over at Boagworld discussing our first foray in to the world of Adobe AIR. Would be great to hear any feedback, both on the app and the article itself. So please do let me know your thoughts. </p><p> We're aware of a few little tweaks that could be made and minor bugs that could be fixed but I encourage anyone using it to take a look into their 'Program Files\Sitewatcher' folder to check out how it was made. Hopefully doing so will add to the article and possibly enable you to add your own customisations, I'd love to hear about them. </p><p></p><p>Dave has already blogged about the app and we tried to pitch the boagworld post at AIR first timers, to give you a feel as to how easy it is to use and what you can achieve. Hopefully the post has whetted your appetite. </p><p>Check out the above links for some good beginners references for AIR.</p> Blog post now up over at Boagworld discussing our first foray in to the world of Adobe AIR. Would be great to hear any feedback, both on the app and the article itself. So please do let me know your thoughts.

We're aware of a few little tweaks that could be made and minor bugs that could be fixed but I encourage anyone using it to take a look into their 'Program Files\Sitewatcher' folder to check out how it was made. Hopefully doing so will add to the article and possibly enable you to add your own customisations, I'd love to hear about them.

Screenshot of Sitewatcher Application

Dave has already blogged about the app and we tried to pitch the boagworld post at AIR first timers, to give you a feel as to how easy it is to use and what you can achieve. Hopefully the post has whetted your appetite.

Some Useful Links

Check out the above links for some good beginners references for AIR.

]]>
Headscapers http://cargowire.net/blog/thebarn http://cargowire.net/blog/thebarn Craig Thu, 12 Feb 2009 22:30:00 GMT <p> You may or may not know that I recently created an aggregated feed for people from #theBarn. This can be seen over at cargowire.net/theBarn. If you are of the persuasion you can also consume this in a variety of formats. These include HTML, XML and RSS (as does most of this site in fact). I may add more in the future... but let's be honest it's probably only me viewing it as HTML at the moment anyway. Let alone anything or anyone else. </p> You may or may not know that I recently created an aggregated feed for people from #theBarn. This can be seen over at cargowire.net/theBarn. If you are of the persuasion you can also consume this in a variety of formats. These include HTML, XML and RSS (as does most of this site in fact). I may add more in the future... but let's be honest it's probably only me viewing it as HTML at the moment anyway. Let alone anything or anyone else.

]]>
Seasonal Branding? http://cargowire.net/blog/seasonalbranding http://cargowire.net/blog/seasonalbranding Craig Sat, 13 Dec 2008 08:30:00 GMT <p>Ok, I admit it this is a repost of something I commented on about 2 years ago on my old blog, but still...</p><p> Whenever a holiday event occurs (Halloween, Easter, Christmas) sites will modify their design to reflect the season. This can be anything from snow effects to cartoon characters appearing on top of the usual design. We’ve all seen it.. pumpkins and bats on halloween, snow, trees and santas at christmas and egg hoarding rabbits at Easter. </p><p> I'd be interested in seeing stats or empirical findings into whether that temporary re-branding has an effect on visitors i.e. whether it has an off-putting effect in the vein of "popups are annoying and so is this downpour of snow over my content". Or indeed the alternative that people feel more connected to the site that seems to be in some way 'human' by celebrating/recognising an external event. </p><p> I guess there's a relation to 'real life' situations (if that's even a valid label, as so much of our lives are now online) whereby shops will put up decorations, change storefront windows etc. It not only acts as a way of bonding with possible clients but gives the indication that something's changed or been updated, even if it hasn't. </p><p> However I wonder how much the opposite is true? In that it reflects upon your professionalism, or even that people think you must have free time on your hands or worse, are not spending time on their work! </p><p>Maybe it is best reserved for a particular subset of websites. I'd probably categorise it as follows: </p><p> The main difference in my view being the level of desire to anthropomorphise a company/organisation with the semi-parallel desire for a perception of professionalism. </p><p> I'd be interested to know other peoples thoughts on this. </p> Ok, I admit it this is a repost of something I commented on about 2 years ago on my old blog, but still...

Whenever a holiday event occurs (Halloween, Easter, Christmas) sites will modify their design to reflect the season. This can be anything from snow effects to cartoon characters appearing on top of the usual design. We’ve all seen it.. pumpkins and bats on halloween, snow, trees and santas at christmas and egg hoarding rabbits at Easter.

I'd be interested in seeing stats or empirical findings into whether that temporary re-branding has an effect on visitors i.e. whether it has an off-putting effect in the vein of "popups are annoying and so is this downpour of snow over my content". Or indeed the alternative that people feel more connected to the site that seems to be in some way 'human' by celebrating/recognising an external event.

I guess there's a relation to 'real life' situations (if that's even a valid label, as so much of our lives are now online) whereby shops will put up decorations, change storefront windows etc. It not only acts as a way of bonding with possible clients but gives the indication that something's changed or been updated, even if it hasn't.

However I wonder how much the opposite is true? In that it reflects upon your professionalism, or even that people think you must have free time on your hands or worse, are not spending time on their work!

Maybe it is best reserved for a particular subset of websites. I'd probably categorise it as follows:

Ok to perform Seasonal Branding?
Personal Sites
Freelancer Sites
Traditional 'shop' sites... i.e. amazon, tesco etc
Not so ok to perform Seasonal Branding?
Strictly regulated industries... i.e. legal, accounting, 'serious' places
Government sites
Corporate sites

The main difference in my view being the level of desire to anthropomorphise a company/organisation with the semi-parallel desire for a perception of professionalism.

I'd be interested to know other peoples thoughts on this.

]]>
Developer Day 7 http://cargowire.net/blog/ddd7 http://cargowire.net/blog/ddd7 Craig Sun, 23 Nov 2008 13:30:00 GMT <p> Back from Developer Day! and once again inspired to code. It's a great day for getting you excited about technology and web development even if you don't necessarily bring away specific techniques that you want to try out. So here's a breakdown of the talks I went to: </p> Back from Developer Day! and once again inspired to code. It's a great day for getting you excited about technology and web development even if you don't necessarily bring away specific techniques that you want to try out. So here's a breakdown of the talks I went to:

DeveloperDeveloperDeveloper: Speaker / Thoughts
Alan Dean (Charteris)

Essentially a detailed discussion of what is and is not valid REST. The talk was labelled as discussing why REST might be important to you. However that aspect did not seem to come through over the more pedagoguish yes and no's of REST. The yes' detailed via the following 6 points:

  1. Style = nil
  2. Style += Client/Server
  3. Style += Stateless
  4. Style += Caching
  5. Style += Uniform Interface
  6. Style += Layered System
  7. Style += Code on Demand

The no's detailed as anything that does not subscribe to those six.

Separating REST Facts from Fallacies
Mike Hadlow (Freelancer)

A talk with a lot of code, which is both a benefit and a small downside. It's always more helpful to see the use of a technique in a real world example but at the same time it can be difficult to get to grips with the code as it is being displayed on screen between slides. Akin to sight reading music you need to get hold of the code yourself and have a play.

Given that, this was an engaging talk particularly in regard to the use of Generic Repositories using extension methods.

Using an Inversion of Control Container in a real world application
Dave Sussman & Phil Winstanley (ASP.NET Insiders)

Unfortunately this talk opened with the disclaimer that some things that were intended for the talk had to be removed as Microsoft had decided not to release certain information yet. However the information on VS2010 was enough to keep my interest. In brief:

  • VB and C# are to be equal so anything you can do in VB you should be able to do in C# and vice versa (including loss of the VB line continuation character in 90% of cases!).
  • Built in parallel processing support so you can run loops and linq statements across processors very simply
  • Cleaner HTML output! let's hope it's as clean as clean can be (there was also a warning of blanket upgrading prior .net projects as the HTML output will be different)
  • HTML Snippets - bringing the snippetness of vb and c# into the markup window. Didn't really excite me but I can see some minor productivity gains
  • Client ID Control! OMG I almost wet myself (Ok I'm not that sad, but from my point of view this was excellent news). One of the biggest stumbling blocks I found when I moved from PHP to asp.NET was losing that control over client IDs if you wanted to take advantage of the server control goodness. Being able to set client id behaviour to static is a big bonus in terms of no longer limiting your css/javascript to unnecessary html containers (that could use normal IDs) or targetting classes alone.
  • A number of small but nice changes to VS such as fast quick search and full page variable highlighting when the cursor is placed on one
ASP.NET 4.0 - TOP SECRET
Ben Hall (RedGate)

A discussion and demo of a Microsoft Research project is always worth a go, and this didn't disappoint.

The best summery of Pex comes from the talk description itself:

"Pex is a project from Microsoft Research which automatically generates a traditional unit testing suite with high code coverage from hand-written parameterised unit tests."

Thoroughly interesting and impressive in equal measures the Pex VS Plugin will explore your code based upon a hand written test and return tabular results including the ability for you to include business rule based assertions.

This shouldn't be used to the exclusion of other testing but looks like it can/will provide an excellent toolkit addition.

Microsoft Pex - The future of unit testing?
Jon Skeet (Google)

It's a shame this talk came at the end of the day as tiredness had caught up with me making it tricky to keep up with Jon's blistering pace through re-creating LINQ to Objects himself using generics and extension methods including the awesome (although seemingly unknown by some) yield keyword.

Theres little to say without trying to redescribe how this implementation was done, which would increase the size of this post dramatically! However the power of Generics and Extension methods was clear to see. As Jon said the implemention is simple because of this. It is the design of linq that is so impressive.

Implementing LINQ to Objects in 60 minutes
]]>
Wordle http://cargowire.net/blog/wordle http://cargowire.net/blog/wordle Craig Sat, 22 Nov 2008 23:30:00 GMT <p> Late night recommendations have led me to Wordle, an app that will create word clouds based upon text, feeds or tags. So obviously I immediately chose a long standing interesting blog to test it with... rather than self satisfyingly submitting my own article feed... Ok, so here's the cloud of my article feed: </p><p>...Pretty don't you think</p> Late night recommendations have led me to Wordle, an app that will create word clouds based upon text, feeds or tags. So obviously I immediately chose a long standing interesting blog to test it with... rather than self satisfyingly submitting my own article feed... Ok, so here's the cloud of my article feed:

Wordle Page Content Word Cloud

...Pretty don't you think

]]>
Brightkite http://cargowire.net/blog/brightkite http://cargowire.net/blog/brightkite Craig Tue, 28 Oct 2008 21:00:00 GMT <p> Unnecessary info? you got it… Now you can see where I am by using my little brightkite/google maps universe pinpointer thingy (it's under the menu over there). Additionally I've added to my RESTlessness with the '.rss' extension on my articles list if you fancy a quick subscribe. The most recent article discusses the issues surrounding Caching API request calls. </p> Unnecessary info? you got it… Now you can see where I am by using my little brightkite/google maps universe pinpointer thingy (it's under the menu over there). Additionally I've added to my RESTlessness with the '.rss' extension on my articles list if you fancy a quick subscribe. The most recent article discusses the issues surrounding Caching API request calls.

]]>
RSS http://cargowire.net/blog/rss http://cargowire.net/blog/rss Craig Fri, 03 Oct 2008 20:00:00 GMT <p> RESTless…? The beginnings of the delicious article have been started over in articles. To coincide with this I've reorganised my url structure a bit so that now an extension of '.xml' will return the data in xml format. I'll eventually add to this (the sneaky of those among you may find that I'm already using '.ajax' for my ajax calls - to identify that a partial should be returned). </p> RESTless…? The beginnings of the delicious article have been started over in articles. To coincide with this I've reorganised my url structure a bit so that now an extension of '.xml' will return the data in xml format. I'll eventually add to this (the sneaky of those among you may find that I'm already using '.ajax' for my ajax calls - to identify that a partial should be returned).

]]>
Twitter http://cargowire.net/blog/twitter http://cargowire.net/blog/twitter Craig Sat, 18 Oct 2008 13:00:00 GMT <p> I've followed the current 'hip trend' of adding a twitter feed to my site (see upper right if you've not noticed it yet) and added the 1st draft of my date formatting article (I say first draft because I kinda rushed it this morning before heading out for the weekend). I'll probably return to it to polish and add some more explanation. </p> I've followed the current 'hip trend' of adding a twitter feed to my site (see upper right if you've not noticed it yet) and added the 1st draft of my date formatting article (I say first draft because I kinda rushed it this morning before heading out for the weekend). I'll probably return to it to polish and add some more explanation.

]]>
The Boag Effect http://cargowire.net/blog/boageffect http://cargowire.net/blog/boageffect Craig Thu, 16 Oct 2008 23:00:00 GMT <p> So today Mr Boag himself helpfully twittered this site address. The image below shows what shall now be known as 'the boag effect'. As you can see there was a 'slight' change in visitors this afternoon. I'd like to attribute that to my excellent content, exciting design and general awesomeness… </p><p>However I must concede that Paul may have had a minor effect.</p> So today Mr Boag himself helpfully twittered this site address. The image below shows what shall now be known as 'the boag effect'. As you can see there was a 'slight' change in visitors this afternoon. I'd like to attribute that to my excellent content, exciting design and general awesomeness…

The Boag Effect

However I must concede that Paul may have had a minor effect.

]]>
FOWA! http://cargowire.net/blog/fowaexpo2008 http://cargowire.net/blog/fowaexpo2008 Craig Sat, 11 Oct 2008 22:00:00 GMT <p>FOWA Rocked! Heres the run down of talks I saw (to be updated/added to):</p><p>This jquery slide down/up seemingly breaks in IE8 and FF2... doh I'll look into a fix or change</p> FOWA Rocked! Heres the run down of talks I saw (to be updated/added to):

Day One: Speaker / Thoughts
Kevin Rose IMO a suprisingly good and interesting talk mainly about the future of digg rather than the future of news. However the talk of servicing niche interests via a combination of clustering like minded people together in a more personalised recommendation system + encouraging participation through increased impact visiblity was a thoroughly interesting listen.
The Future of News
Edwin Aoki I didn't feel like I took much away from this talk. However Edin did reinforce the point that successful web apps should, and generally are, based on a passion being turned into an application with the thought of money coming later.
Web apps are dead, long live web apps
Mike OrmandAnother round of good silverlight demos. Difficult to know when and where I would put this into practice. Flash is still the winner for me.
What's all this Silverlight stuff?
Blaine Cook and Joe Stump Insightful and engaging these two probably provided the best talks. Often verging close to a rant against language fanboys they highlighted the core issue of IO in scaling situations.
Languages, don't scale
Kevin Marks Lots of that 'cloud' word (although quite a nice intro to it's usage). Kevin also spoke of the transition from email as a publically accessible end point that is increasingly used only formally, with social networks becoming far more intrinsic to the personal web experience. I particularly identified with his negative view of unnecessary web form info (I now tell most forms that I live at a well known London landmark).
The Future of Enterprise Web Apps
Andrew ShortenAn excellent intro to Adobe AIR + a free book.
Taking web based applications to the desktop with Adobe AIR
Alvin Woon An interesting perspective on UI design. Adaptive UI (changes in UI based on context etc). Unfortunately not the best speaker in terms of clarity and engaging the audience with rather 'traditional' slides.
The future of social app interface design
Blaine CookThis guy is scary clever, but also cool in equal measure.
Colliding Worlds: Using Jabber to make awesome web sites
David Recordon Another talk that's given me something to read up on.
Blowing up social networks with Open Tech
Francisco TolmaskyA clearly intelligent guy with some crazy javascript app work going on, and yet I'm still put off by javascript being taken that far.
Building Desktop Caliber Web Applications with Objective-J and Cappucino
Crick Waters
Web will heal itself
Mike ButcherEssentially half an hour of Jason calacanis scaring the hell out of startups.
TechCrunch Pitch! @ FOW
Media Temple
Party @Fox
FOWA Expo 2008 (Uni Talks in grey)
Day Two: Speaker / Thoughts
Tim Bray
The Fear Factor: What to be Frightened of in Building A Web Application
Adam Gross
Cloud Computing in the Enterprise - How Businesses are Taking Advantage of the Future of the Web
Andrew ShortenThis talk really highlighted to me the large similarities between Silverlight and Flex. Air/Flash and MXML are strikingly similar to Silverlight and XAML.
Building Rich Internet Applications using Adobe Flex
Chris Messina
How oAuth and portable data can revolutionise your web app
Bret Taylor
The future of your online presence
Jason Calacanis
Work/life balance or Blood, sweat and tears: Which is the startup way?
Elaine Wherry
Scaling the Synchronous Web
Jeremy Baines
How to build a desktop app for your web app
Michael Galpert
How to survive outside of Silicon valley
Dave Morin
Making the web more social with Facebook Connect
Andrew Shorten
Adobe AIR Competition Finals
Mark Zuckerberg
Fireside chat
Kathy Sierra
How to grow and nurture your community
Alex Albrecht and Kevin Rose
Diggnation!
Digg and Facebook
Wrap party @Fox

This jquery slide down/up seemingly breaks in IE8 and FF2... doh I'll look into a fix or change

]]>
Code Highlighting http://cargowire.net/blog/codehighlighting http://cargowire.net/blog/codehighlighting Craig Sun, 28 Sep 2008 12:00:00 GMT <p> Recently the portfolio content has been fleshed out slightly and a rough timeline for the articles I intend to write planned out. I've also plucked for a javascript syntax highlighter for any code examples I include. Heres an example of it in action: </p><p>On a side note I'm massively Looking forward to the Future Of Web Apps in london next week.</p> Recently the portfolio content has been fleshed out slightly and a rough timeline for the articles I intend to write planned out. I've also plucked for a javascript syntax highlighter for any code examples I include. Heres an example of it in action:

public class HelloWorld : StatementMaker { public override void MakeStatement() { HttpContext.Current.Response.Write("Hello World!"); } }

On a side note I'm massively Looking forward to the Future Of Web Apps in london next week.

]]>
Where Was I? http://cargowire.net/blog/wherewasi http://cargowire.net/blog/wherewasi Craig Wed, 20 Aug 2008 22:30:00 GMT <p> After losing all data in July I'm finally back up and running and should be continuing with the site as soon as poss. Portfolio has now been migrated. </p> After losing all data in July I'm finally back up and running and should be continuing with the site as soon as poss. Portfolio has now been migrated.

]]>
Fixes http://cargowire.net/blog/fixes http://cargowire.net/blog/fixes Craig Sun, 08 Jun 2008 14:00:00 GMT <p> Updates tonight included javascript fixes for ie7 and css fixes for ie6.. at least now you should be able to see the same design in most browsers! ...just one ie6 bug left now! I've not got any contact stuff setup yet so if you have any comments please head over to here and try and find some way of tracking me down. </p> Updates tonight included javascript fixes for ie7 and css fixes for ie6.. at least now you should be able to see the same design in most browsers! ...just one ie6 bug left now! I've not got any contact stuff setup yet so if you have any comments please head over to here and try and find some way of tracking me down.

]]>
Designed? http://cargowire.net/blog/designed http://cargowire.net/blog/designed Craig Sun, 01 Jun 2008 12:00:00 GMT <p> After a couple of attempts I've settled on a design. I'm yet to add the relevant css / javascript for IE 6 support, and also I understand the sIFR may not be working correctly. I'll be looking into these points as soon as possible as well as the odd crashing you get in IE7 when the ajax on the links page is used. </p> After a couple of attempts I've settled on a design. I'm yet to add the relevant css / javascript for IE 6 support, and also I understand the sIFR may not be working correctly. I'll be looking into these points as soon as possible as well as the odd crashing you get in IE7 when the ajax on the links page is used.

]]>