Cargowire Ramblings http://cargowire.net Ramblings From Craig Mon, 11 Jul 2011 20:00:00 GMT http://cargowire.net en The Barn site is live! http://cargowire.net/blog/barnsite http://cargowire.net/blog/barnsite Craig Tue, 03 Apr 2012 17:30:00 GMT Finally it's here<p> For the last few weeks I've been pulling together the concept of 'The Barn'. Ostensibly it's a company blog, but to me it's a bit nicer than that. </p><p>In drafting up the 'about' page I defined it as 'Headscapers not Headscape' and that's my hope. The intention is that there is a clear Headscape tie in - Articles and content will relate strongly to what we're doing at Headscape, how and when. This allows us to talk openly about clients and particular implementations we've done, perhaps more so than we would have done on personal sites. However it's not intended as a press release mechanism, nor an enforced 'write an article for every project you do'.</p><p>The articles will be written by all Headscapers. That means the scope will be broad. But if you are more code focused simply follow the code category or authors such as Dan and I. If design's your thing follow Ed or Chris. The design (pixels!)Once again our designer Ed has done an awesome job both with handling my demands and coming up with some great pixel artwork for the header. I'm still staring at it now - one day I will find Wally in there I'm sure.Check it outPlease do check out the site. We've tried to avoid a classic 'launch with no content' scenario and have filled in a bunch of stuff including some downloads, code and articles. My launch articles are: Rule based themes - WP Plugin, Using Domain Events and Unit-testing - first steps. Although dated to match when they were relevant to projects these are pretty much freshly written so please do let me know what you think.</p> For the last few weeks I've been pulling together the concept of 'The Barn'. Ostensibly it's a company blog, but to me it's a bit nicer than that.

In drafting up the 'about' page I defined it as 'Headscapers not Headscape' and that's my hope. The intention is that there is a clear Headscape tie in - Articles and content will relate strongly to what we're doing at Headscape, how and when. This allows us to talk openly about clients and particular implementations we've done, perhaps more so than we would have done on personal sites. However it's not intended as a press release mechanism, nor an enforced 'write an article for every project you do'.

Content

The articles will be written by all Headscapers. That means the scope will be broad. But if you are more code focused simply follow the code category or authors such as Dan and I. If design's your thing follow Ed or Chris.

The design (pixels!)

Once again our designer Ed has done an awesome job both with handling my demands and coming up with some great pixel artwork for the header. I'm still staring at it now - one day I will find Wally in there I'm sure.

Check it out

Please do check out the site. We've tried to avoid a classic 'launch with no content' scenario and have filled in a bunch of stuff including some downloads, code and articles. My launch articles are: Rule based themes - WP Plugin, Using Domain Events and Unit-testing - first steps. Although dated to match when they were relevant to projects these are pretty much freshly written so please do let me know what you think.

]]>
Barcamp Bournemouth 4 http://cargowire.net/blog/bcbomo4 http://cargowire.net/blog/bcbomo4 Craig Wed, 07 Mar 2012 22:30:00 GMT This time with added hackspace.<p>Having made the trip twice before I was looking forward to Barcamp Bournemouth. It's probably my favourite small event. Partly because it's so close, partly because it's a great venue but mainly because there's always something interesting and new (at least new to me) going on.</p><p>This year Mozilla Developer Network had added a new element into the mix by sponsoring and providing gamepads for a hack space. But that wasn't the only difference. There was, at least in my now old man eyes, many more younger attendees than before which led to some interesting discussions - ranging from the validity and credibility of our professional body, the BCS, to interesting views on getting a job and what the best smart phone is.</p><p>As a career long member of the BCS it was interesting to get involved in debating its usefulness during the discussion led by Tom. My personal view is that it's very london centric with too broad a remit to be of more use to someone than the independent, specific events/groups that are available. It's power comes however in being a 'force for our interests' at a governmental/lobbying level. For example, in recent work pushing for computer science rather than an MS Office based IT curriculum.</p><p>It would appear that many of the attendees also felt that it was irrelevant to (particularly web, as was the nature of the audience) development job applications and it's accreditation of degrees was not particularly seen as the 'gold standard' as the organisation maybe hopes.</p><p>By far the most memorable thing from this years event was the Hack created by Syd and Ad.</p><p>Having retired to the comfort of my own bed late on Saturday night I returned to find that Syd and Adam had spent the night knocking up a pretty impressive demo using an arduino, mac, ruby, objective-c, LED combo. The device was able to display an 8 by 8 grid of lights based either upon a website control or by reading tweets marked with the #bcbomo4 hashtag (using the now readily available Lawrence Sans font).</p><p>Whether it was down to that, or the talk by Syd (that I'm now referring to as the 'make awesome shit' talk) I knocked up a tiny hack myself afterward. In fact I'd hate to say it was actually inspired by cocks, but maybe it was. While various attendees were fighting for control to draw phallic symbols on the 8x8 grid I thought it'd be kinda cool to be able to create such a dot matrix style picture based on an image.</p><p>Written in JS and using canvas this little tool now lives here and here. It will take an image from a remote online location and transpose it into a grid of coloured or black and white dots. Not particularly useful, but kinda fun - and that's the whole point really.</p> Having made the trip twice before I was looking forward to Barcamp Bournemouth. It's probably my favourite small event. Partly because it's so close, partly because it's a great venue but mainly because there's always something interesting and new (at least new to me) going on.

This year Mozilla Developer Network had added a new element into the mix by sponsoring and providing gamepads for a hack space. But that wasn't the only difference. There was, at least in my now old man eyes, many more younger attendees than before which led to some interesting discussions - ranging from the validity and credibility of our professional body, the BCS, to interesting views on getting a job and what the best smart phone is.

As a career long member of the BCS it was interesting to get involved in debating its usefulness during the discussion led by Tom. My personal view is that it's very london centric with too broad a remit to be of more use to someone than the independent, specific events/groups that are available. It's power comes however in being a 'force for our interests' at a governmental/lobbying level. For example, in recent work pushing for computer science rather than an MS Office based IT curriculum.

It would appear that many of the attendees also felt that it was irrelevant to (particularly web, as was the nature of the audience) development job applications and it's accreditation of degrees was not particularly seen as the 'gold standard' as the organisation maybe hopes.

Hacks

By far the most memorable thing from this years event was the Hack created by Syd and Ad.

Having retired to the comfort of my own bed late on Saturday night I returned to find that Syd and Adam had spent the night knocking up a pretty impressive demo using an arduino, mac, ruby, objective-c, LED combo. The device was able to display an 8 by 8 grid of lights based either upon a website control or by reading tweets marked with the #bcbomo4 hashtag (using the now readily available Lawrence Sans font).

Whether it was down to that, or the talk by Syd (that I'm now referring to as the 'make awesome shit' talk) I knocked up a tiny hack myself afterward. In fact I'd hate to say it was actually inspired by cocks, but maybe it was. While various attendees were fighting for control to draw phallic symbols on the 8x8 grid I thought it'd be kinda cool to be able to create such a dot matrix style picture based on an image.

Written in JS and using canvas this little tool now lives here and here. It will take an image from a remote online location and transpose it into a grid of coloured or black and white dots. Not particularly useful, but kinda fun - and that's the whole point really.

]]>
WP7 vs iPhone http://cargowire.net/blog/wp7vsiphone http://cargowire.net/blog/wp7vsiphone Craig Thu, 16 Feb 2012 21:20:00 GMT <p>Ok so if you follow me on twitter you may know that towards the end of last year I took part in 'Alphalabs'. Organised by onedotzero this was a competition aimed at encouraging developers and artists to work together on the Lumia 800 platform.</p><p>While not taking part in the eventual competition I was part of an initialteam creating projects for the launch of the event. This meant an intensive two week project (which, in our case, used Silverlight and XNA 3D).</p><p>I'll write something up about that later. However a side effect of this was that I was able to get hold of a Lumia 800 very early on and for the duration of the project I was using the Lumia as my main device.</p><p>What that sentence also tells you is that I'm no longer using it as my main device. So why is that? I'm a .NET developer after all. Doesn't that make me a windows fan boy? well... no...</p><p>The physical phone itself is roughly equivalent in size to the iphone so makes little difference (other than the power button placement on the side of the device - which is actually quite nice). So what does, is the OS and the surrounding ecosystem.</p><p>WP7 requires a Windows Live account (OK, so iPhone requires an iTunes/Apple ID). One of the annoying things about this however is that if you want to change it you have to effectively factory reset the device. So you better make damn sure you use the same live account that your xbox uses or else you're in for some fun after setting it all up and realising your mistake (OK I did that.. what of it!). Oh and yes I love having my legacy xbox live related hotmail account syncing to my phone...</p><p>In addition to normal phone functionality the main apps I use every day on iPhone are:</p><p>All of these apps are available on WP7. In fact they go one step further and integrate into the rest of the phone. With a facebook account added these people appear in your 'people' hub, same with twitter. The only problem is I never really got why I'd want them integrated like that. I'm on a small device undertaking specific tasks I don't really find value in an app that washes over me my entire set of contacts and social interactions across different apps that I probably already segment people in to e.g facebook = friends, twitter = work.</p><p>It's odd to think that one of the big reasons I quit using WP7 was also one of it's biggest selling points - The Metro interface. At a glance, and if you play with someone elses phone temporarily this is really nice. Not only does it seem new and slick it is also very different - not an iphone clone at all.</p><p>The problem comes after you use it for a while and I'll illustrate it with this comparison shot:</p><p>Can you se what the problem might be? yep... it's the stupid waste of space. In the same space that WP7 has told me I'm using facebook and looking at the most recent posts the iPhone app has provided links to the menu, friends, messages, notifications plus action buttons for sorting, adding a new status, photo or checking in. By the time we get to the content area I can see one facebook update compared to two on the iphone.</p><p>The facebook app is by no means alone in this. The twitter and guardian apps have similar problems. This isn't because people are being slap dash with their WP7 implementations (at least not just because of that!). This is the design approach WP7 and Metro are pushing for us to use.</p><p>I want the WP7 devices to succeed. Aside from their shortcomings they at least provide a viable and real alternative to iphone with a pre-existing set of .NET and Silverlight developers. But they need to get usability right, now that they've done the whole beauty thing.</p><p>An end to end tie up between my WP7 device, Windows machine and Xbox live account is quite enticing... and definitely better than that Game Centre rubbish.</p> Ok so if you follow me on twitter you may know that towards the end of last year I took part in 'Alphalabs'. Organised by onedotzero this was a competition aimed at encouraging developers and artists to work together on the Lumia 800 platform.

While not taking part in the eventual competition I was part of an initialteam creating projects for the launch of the event. This meant an intensive two week project (which, in our case, used Silverlight and XNA 3D).

I'll write something up about that later. However a side effect of this was that I was able to get hold of a Lumia 800 very early on and for the duration of the project I was using the Lumia as my main device.

What that sentence also tells you is that I'm no longer using it as my main device. So why is that? I'm a .NET developer after all. Doesn't that make me a windows fan boy? well... no...

Using the thing

The physical phone itself is roughly equivalent in size to the iphone so makes little difference (other than the power button placement on the side of the device - which is actually quite nice). So what does, is the OS and the surrounding ecosystem.

WP7 requires a Windows Live account (OK, so iPhone requires an iTunes/Apple ID). One of the annoying things about this however is that if you want to change it you have to effectively factory reset the device. So you better make damn sure you use the same live account that your xbox uses or else you're in for some fun after setting it all up and realising your mistake (OK I did that.. what of it!). Oh and yes I love having my legacy xbox live related hotmail account syncing to my phone...

The Apps

In addition to normal phone functionality the main apps I use every day on iPhone are:

  • Twitter
  • Facebook
  • Guardian News

All of these apps are available on WP7. In fact they go one step further and integrate into the rest of the phone. With a facebook account added these people appear in your 'people' hub, same with twitter. The only problem is I never really got why I'd want them integrated like that. I'm on a small device undertaking specific tasks I don't really find value in an app that washes over me my entire set of contacts and social interactions across different apps that I probably already segment people in to e.g facebook = friends, twitter = work.

The main reason I quit WP7

It's odd to think that one of the big reasons I quit using WP7 was also one of it's biggest selling points - The Metro interface. At a glance, and if you play with someone elses phone temporarily this is really nice. Not only does it seem new and slick it is also very different - not an iphone clone at all.

The problem comes after you use it for a while and I'll illustrate it with this comparison shot:

Can you se what the problem might be? yep... it's the stupid waste of space. In the same space that WP7 has told me I'm using facebook and looking at the most recent posts the iPhone app has provided links to the menu, friends, messages, notifications plus action buttons for sorting, adding a new status, photo or checking in. By the time we get to the content area I can see one facebook update compared to two on the iphone.

The facebook app is by no means alone in this. The twitter and guardian apps have similar problems. This isn't because people are being slap dash with their WP7 implementations (at least not just because of that!). This is the design approach WP7 and Metro are pushing for us to use.

Don't get me wrong...

I want the WP7 devices to succeed. Aside from their shortcomings they at least provide a viable and real alternative to iphone with a pre-existing set of .NET and Silverlight developers. But they need to get usability right, now that they've done the whole beauty thing.

An end to end tie up between my WP7 device, Windows machine and Xbox live account is quite enticing... and definitely better than that Game Centre rubbish.

]]>
Cargowire has a new design http://cargowire.net/blog/newdesign http://cargowire.net/blog/newdesign Craig Sun, 05 Feb 2012 21:30:00 GMT <p> Apparently doodling can be good for you. Although when I do it, it's not so good for Ed Merritt.</p><p>A bit before christmas I finally decided to sketch out some ideas I'd been having for a new layout and design for cargowire. </p><p>The idea was pretty simple. With the homepage acting as a funnel through which I push the various channels of blog, articles, portfolio and events I could have a consistent, relatively rigid, grid layout with obvious scope for responsiveness. The only problem was I wanted some nice design touches.</p><p>Luckily I work at a great agency where I get to share the building with some awesome designers... who I can then hassle for pro bono photoshop wizardry.</p><p>So Ed got my sketch, a paragraph explaining it and a skype along the lines of:</p><p>In our microcosm of the design process we'd started out with a wireframe and a genre based on some keywords and a few snippets of other sites (e.g. breadcrumbs from the guardian) - a losely held together 'mood board' if you like.</p><p>After a few iterations Ed came up with an automotive / americana feeling logo that fitted right with my thinking and from there the rest just grew into the original wireframe. He even did an html template for me... what a nice guy...</p><p>Although I'm pretty pleased with it I now have to hunt down a whole bunch of content that I didn't have on my previous site. While I do that, please bear with me with the Placeholder images!</p><p>So, cheers to Ed for the stunning design. Hopefully I won't bastardise it too much as I bend it to my will... although I might redo the markup and js ;-)</p> Apparently doodling can be good for you. Although when I do it, it's not so good for Ed Merritt.

A bit before christmas I finally decided to sketch out some ideas I'd been having for a new layout and design for cargowire.

My initial sketch for the new cargowire

The idea was pretty simple. With the homepage acting as a funnel through which I push the various channels of blog, articles, portfolio and events I could have a consistent, relatively rigid, grid layout with obvious scope for responsiveness. The only problem was I wanted some nice design touches.

Luckily I work at a great agency where I get to share the building with some awesome designers... who I can then hassle for pro bono photoshop wizardry.

So Ed got my sketch, a paragraph explaining it and a skype along the lines of:

...a Sharp Retro look, kinda 50s with bright strong colours.

In our microcosm of the design process we'd started out with a wireframe and a genre based on some keywords and a few snippets of other sites (e.g. breadcrumbs from the guardian) - a losely held together 'mood board' if you like.

After a few iterations Ed came up with an automotive / americana feeling logo that fitted right with my thinking and from there the rest just grew into the original wireframe. He even did an html template for me... what a nice guy...

Although I'm pretty pleased with it I now have to hunt down a whole bunch of content that I didn't have on my previous site. While I do that, please bear with me with the Placeholder images!

So, cheers to Ed for the stunning design. Hopefully I won't bastardise it too much as I bend it to my will... although I might redo the markup and js ;-)

]]>
Why you should try to be a middle class developer http://cargowire.net/blog/bemiddleclass http://cargowire.net/blog/bemiddleclass Craig Tue, 16 Aug 2011 21:30:00 GMT <p>You may not know this but this blog has been xml based since its inception (in fact there's a longstanding, not yet achieved, task to 'replace' it with a 'better' persistant storage mechanism -- clearly I must agree then, that the perfect is the enemy of the good). But anyway... don't worry. I'm not about to do anotherblogaboutxml.</p><p>My point/warning really is that the root node of my articles xml is 'articles' as you might expect. The root node of the blog/front page however has always been 'Rambling'... ...so let the <ramble> begin...</p><p>Some time ago I had an idea for a blog post talking about various developer 'personas'. Mainly to give me a chance to talk about the many hats web developers are required to wear day to day. That never came about, however a clip show, or the internet, or a random thought reminded me of this:</p><p>Now, I've talked before about developer humility and what to look for when applying for a job. However there is another, perhaps even more important, thing to consider when plucking for a place to work or finding people to surround yourself with:</p><p>Can you be the Ronnie Barker in the comedy sketch that is your career?</p><p>Perhaps, you may say, it's obvious that you will want someone to look up to. Someone to aspire to be. Moreover you may want to actually be the 'top dog' (the Cleese in this ever imagination stretching metaphor that is my mid year ramble).</p><p>My argument would be that you want, for as long as possible to be Barker. You want to learn from someone but also to be able to teach those Corbetts among us. You don't want to rest on your laurels, don't want to avoid being questionned by someone who may actually know more than you and you definitely don't want a superiority complex.</p><p>On the other side the teaching of others 'below you' is in itself developing your understanding. Never underestimate the power of trying to teach someone else something that you think you understand.</p><p>You need to be kicked every now and then and to be honest to realise that you never will be Cleese. In fact agree with yourself now that you won't ever be. If you think you are then you've stopped trying to get better or are just plain ignorant of the vast skill and ingenuity that is out there now and was there before allowing you to stand on their shoulders.</p><p>If you can't find these roles within your organisation (and many of us can't) put yourself out there, find Cleese at a conference or a Corbett to mentor or help on stackoverflow.</p> You may not know this but this blog has been xml based since its inception (in fact there's a longstanding, not yet achieved, task to 'replace' it with a 'better' persistant storage mechanism -- clearly I must agree then, that the perfect is the enemy of the good). But anyway... don't worry. I'm not about to do anotherblogaboutxml.

My point/warning really is that the root node of my articles xml is 'articles' as you might expect. The root node of the blog/front page however has always been 'Rambling'... ...so let the <ramble> begin...

Some time ago I had an idea for a blog post talking about various developer 'personas'. Mainly to give me a chance to talk about the many hats web developers are required to wear day to day. That never came about, however a clip show, or the internet, or a random thought reminded me of this:

The famous class sketch between Cleese, Barker and Corbett

Now, I've talked before about developer humility and what to look for when applying for a job. However there is another, perhaps even more important, thing to consider when plucking for a place to work or finding people to surround yourself with:

Can you be the Ronnie Barker in the comedy sketch that is your career?

Perhaps, you may say, it's obvious that you will want someone to look up to. Someone to aspire to be. Moreover you may want to actually be the 'top dog' (the Cleese in this ever imagination stretching metaphor that is my mid year ramble).

My argument would be that you want, for as long as possible to be Barker. You want to learn from someone but also to be able to teach those Corbetts among us. You don't want to rest on your laurels, don't want to avoid being questionned by someone who may actually know more than you and you definitely don't want a superiority complex.

On the other side the teaching of others 'below you' is in itself developing your understanding. Never underestimate the power of trying to teach someone else something that you think you understand.

"It is the way of the world, Baldrick. The abused always kick downwards. I'm annoyed, and so I kick the cat. The cat pounces on the mouse, and finally, the mouse..." "...bites you on the behind." Edmund B.

You need to be kicked every now and then and to be honest to realise that you never will be Cleese. In fact agree with yourself now that you won't ever be. If you think you are then you've stopped trying to get better or are just plain ignorant of the vast skill and ingenuity that is out there now and was there before allowing you to stand on their shoulders.

If you can't find these roles within your organisation (and many of us can't) put yourself out there, find Cleese at a conference or a Corbett to mentor or help on stackoverflow.

]]>
Falling out of Kindle love http://cargowire.net/blog/fallingoutofkindlelove http://cargowire.net/blog/fallingoutofkindlelove Craig Sun, 10 Jul 2011 20:30:00 GMT Have I fallen out of love with my kindle?<p>While reading a book the other day (C# in depth if you're interested... I'd recommend it to all you .net lovers out there.. yes you.. both of you) I suddenly realised something. I was holding a book.</p><p>Now the odd thing about that of course is that I own a Kindle and that, as we all know, replaces books.</p><p>Don't get me wrong.. I was very much on the Kindle bandwagon and to some extent I stillam. I've just noticed something recently about my reading habits and how the Kindle has affected them. So, bearing in mind this is the internet and I have a blog I thought I'd over generalise my personal experience and draw conclusions about the world at large... with no authority or legitimacy. Ya'know, as you do.</p><p>When I first got my kindle I was all over it, downloading books willy nilly, starting multiple books at once... but ultimately... not really finishing them. Looking back I was quick to take recommendations and download books that I was, shall we say, 'half interested' in. Admittedly I should probably have gone with sample chapters... but hey... it's so easy to just 'buy now'!</p><p>With regard to the book I was reading, I even had it on my kindle... and yet I chose to read it via ink imprinted on the remnants of a dead tree.</p><p>To me this is beginning to mirror my initial feelings towards digital music. If I wanted to listen to something I would download it via iTunes or similar, but if I really wanted it I would buy the physical disk. With music this categorisation works out ok as you can consume it differently: from casually liking/listening to really loving and focussing on it. With books this is harder. I mean, can you 'casually read'? maybe for a bit... but you're not going to last the whole book.</p><p>To be fair my aversion to buying/leasing digital music is less true now. The ever growing grumpy old man in me has caught up with the cool kids. But I think it's going to take slightly longer for digital books to bypass this.</p><p>With music the feeling as a user is fundamentally the same. If you closed your eyes, but for the particularly atuned ear, it would be hard to differentiate the experience. With a book it's entirely different. There's the 'affordances' factor: with a kindle I can't feel it's weight, flick back and forth, hold one page open as I glance back at another or even display them for guests to admire.</p><p>And yes... I have many leather bound books and my apartment smells of rich mahogany.</p> While reading a book the other day (C# in depth if you're interested... I'd recommend it to all you .net lovers out there.. yes you.. both of you) I suddenly realised something. I was holding a book.

Now the odd thing about that of course is that I own a Kindle and that, as we all know, replaces books.

Don't get me wrong.. I was very much on the Kindle bandwagon and to some extent I stillam. I've just noticed something recently about my reading habits and how the Kindle has affected them. So, bearing in mind this is the internet and I have a blog I thought I'd over generalise my personal experience and draw conclusions about the world at large... with no authority or legitimacy. Ya'know, as you do.

When I first got my kindle I was all over it, downloading books willy nilly, starting multiple books at once... but ultimately... not really finishing them. Looking back I was quick to take recommendations and download books that I was, shall we say, 'half interested' in. Admittedly I should probably have gone with sample chapters... but hey... it's so easy to just 'buy now'!

With regard to the book I was reading, I even had it on my kindle... and yet I chose to read it via ink imprinted on the remnants of a dead tree.

To me this is beginning to mirror my initial feelings towards digital music. If I wanted to listen to something I would download it via iTunes or similar, but if I really wanted it I would buy the physical disk. With music this categorisation works out ok as you can consume it differently: from casually liking/listening to really loving and focussing on it. With books this is harder. I mean, can you 'casually read'? maybe for a bit... but you're not going to last the whole book.

To be fair my aversion to buying/leasing digital music is less true now. The ever growing grumpy old man in me has caught up with the cool kids. But I think it's going to take slightly longer for digital books to bypass this.

With music the feeling as a user is fundamentally the same. If you closed your eyes, but for the particularly atuned ear, it would be hard to differentiate the experience. With a book it's entirely different. There's the 'affordances' factor: with a kindle I can't feel it's weight, flick back and forth, hold one page open as I glance back at another or even display them for guests to admire.

And yes... I have many leather bound books and my apartment smells of rich mahogany.

]]>
Last night I dreamt something existed that didn't.. http://cargowire.net/blog/wishfulhookthinking http://cargowire.net/blog/wishfulhookthinking Craig Sat, 30 Apr 2011 13:00:00 GMT <p>Part of my role at Headscape has included looking at our development processes/practices. There's a blog in this (and it's coming soon), but as a brief teaser to that:</p><p>I'm using Cruise Control.Net to automate MSBUILD builds from our source control provider. Originally this was happening on a regular interval... but that's just annoying (if you get annoyed by such things) and led to waiting to see if it had built, or worse just force building anyway. Luckily Github and CodebaseHQ both have post commit/push hook mechanisms that we can take advantage of.</p><p>As you'd expect these processes post some data to a url of your choice when a push is received for a particular repository.</p><p>So, taking codebasehq as an example the post data they provide is json (as listed in their own repo). This is fantastic but the notification centre itself only allows creation of notifications to the project level, not repository level. So the repository name has to come from the post data itself (if I wish to build the CCNet project with the same name) i.e. I cannot use the url alone to identify the repository.</p><p>To join these two tools together I ended up making a small Application that could accept the post from Codebase and essentially forward it on to the appropriate CCNet build request. And so CIBridge came into existance, leading to the following workflow:</p><p>Commit Locally -> Push to Codebase -> Codebase Notification notifies CIBridge -> CIBridge forces a CCNet Build -> CCNet publishes the site</p><p>Ok, so what I thought might be cool.. is customisable posts from these hosted source control providers. Something along the lines of a screen that allows you to build up a list of post variable 'templates' with keywords used to be replaced by the hook info during generation of the post.</p><p>So I could, for example, say 'I want one form variable called 'Repository' with the contents { name: %REPO_NAME% }' (where repo name is replaced by the repo that caused the notification).</p><p>In this way I could use the hosted source code provider directly, without the need for the bridge, nor for specific support from my current or future build server.</p><p>CIBrdige was a quick fix to get it running. Is there a better way?</p> Part of my role at Headscape has included looking at our development processes/practices. There's a blog in this (and it's coming soon), but as a brief teaser to that:

I'm using Cruise Control.Net to automate MSBUILD builds from our source control provider. Originally this was happening on a regular interval... but that's just annoying (if you get annoyed by such things) and led to waiting to see if it had built, or worse just force building anyway. Luckily Github and CodebaseHQ both have post commit/push hook mechanisms that we can take advantage of.

As you'd expect these processes post some data to a url of your choice when a push is received for a particular repository.

  • Great Stuff: I can simply post to a url to build from
  • Not so great stuff: I have no control over the hook other than the url it goes to

So, taking codebasehq as an example the post data they provide is json (as listed in their own repo). This is fantastic but the notification centre itself only allows creation of notifications to the project level, not repository level. So the repository name has to come from the post data itself (if I wish to build the CCNet project with the same name) i.e. I cannot use the url alone to identify the repository.

To join these two tools together I ended up making a small Application that could accept the post from Codebase and essentially forward it on to the appropriate CCNet build request. And so CIBridge came into existance, leading to the following workflow:

Commit Locally -> Push to Codebase -> Codebase Notification notifies CIBridge -> CIBridge forces a CCNet Build -> CCNet publishes the site

A better way?

Ok, so what I thought might be cool.. is customisable posts from these hosted source control providers. Something along the lines of a screen that allows you to build up a list of post variable 'templates' with keywords used to be replaced by the hook info during generation of the post.

So I could, for example, say 'I want one form variable called 'Repository' with the contents { name: %REPO_NAME% }' (where repo name is replaced by the repo that caused the notification).

In this way I could use the hosted source code provider directly, without the need for the bridge, nor for specific support from my current or future build server.

Am I missing something?

CIBrdige was a quick fix to get it running. Is there a better way?

]]>
SXSW 2011: The tale of the lost man points http://cargowire.net/blog/lostmanpoints http://cargowire.net/blog/lostmanpoints Craig Thu, 10 Mar 2011 00:00:00 GMT The best made plans...<p>So we're here... just, but with far less man points than we started... to be fair I think I've lost out to Ryan on this one</p><p>For more info see...Ryans post</p> So we're here... just, but with far less man points than we started... to be fair I think I've lost out to Ryan on this one

The first points slip from my grasp...

"Hey Rob, where's Marcus live again?"

"I dno you're driving"

"...shit"

It gets better

"So you guys got some money for the taxi"

"...money?"

Ryan get's onboard with the shame...

"You've got a boarding pass for the connecting flight?"

"Yeh, don't you?"

"...shit, we haven't"

It's ok we got the passes... kinda...

"Dude, I'm so unfit, least we're on the tram now. What seat are you?"

"22B"

"Same here... hang on?!"

At least we kept our morals...

"You on this flight too?"

"Yeh, heard they've delayed it a bit for us though"

....

"I'm afraid there's only five seats left"

"THERE'S FIVE OF US"

...

...sorry girls

For more info see...Ryans post

]]>
The start of a brand new year (2011) http://cargowire.net/blog/newyear2011 http://cargowire.net/blog/newyear2011 Craig Mon, 03 Jan 2011 17:00:00 GMT <p>Year in review and resolution posts may seem a bit passe, cliche and anything else that ends in an 'e' that sounds like an 'a'... but let's get one out of our (my) system anyway.</p><p>Rather than an elongated reflection over the year - what I have started, not started, bought, not bought, I'd just like to take the opportunity again to reiterate how amazed I am at the differences in the world in just this decade. This video still sums up the awe that we, for me, still need. Ten years ago we're talking pretty much no google, a pre-gamecube, pre-youtube, pre-firefox, pre-wikipedia era where everyone had a Nokia 3210 (we also had a 9th planet!). Come on... that's awesome and has to bode well for the next ten.</p><p>So if that's the review bit what about the resolution bit? Well rather than a set of resolutions here's a bunch of things I did on Jan 1st that you might like to too... in prep for the year and all that...</p><p>I think my overidding resolution then, if that's appropriate, is just to continually keep in mind the idea of being and getting better - plain and simple. The last few comments of Robin Ince here really resonate with that idea. </p> Year in review and resolution posts may seem a bit passe, cliche and anything else that ends in an 'e' that sounds like an 'a'... but let's get one out of our (my) system anyway.

Rather than an elongated reflection over the year - what I have started, not started, bought, not bought, I'd just like to take the opportunity again to reiterate how amazed I am at the differences in the world in just this decade. This video still sums up the awe that we, for me, still need. Ten years ago we're talking pretty much no google, a pre-gamecube, pre-youtube, pre-firefox, pre-wikipedia era where everyone had a Nokia 3210 (we also had a 9th planet!). Come on... that's awesome and has to bode well for the next ten.

So if that's the review bit what about the resolution bit? Well rather than a set of resolutions here's a bunch of things I did on Jan 1st that you might like to too... in prep for the year and all that...

Small things

  • Reset iGoogle to stuff I actually pay attention to
  • Clear out my Google Reader (particularly things I follow because I think I should rather than because I am actually interested)
  • Review app authorisations (facebook inc privary settings, fireeagle)
  • Use lanyrd.com to find a few interesting events to register for
  • Create pile of charity shop books/cds/dvds

Changes

  • Listen to classical music when wanting to get things done (I had a Vanessa Mae CD that I used when revising for GCSE's - no lyrics - works) - also try Zero 7 or even PPPPPP

Semi-weird things

  • I added a bunch of my worst time wasting sites to my hosts file and created a default website that effectively points to a local copy of this /GetBetter. Just as an added kick up the arse when I find myself procrastinating.

I think my overidding resolution then, if that's appropriate, is just to continually keep in mind the idea of being and getting better - plain and simple. The last few comments of Robin Ince here really resonate with that idea.

]]>
FOWA London 2010 http://cargowire.net/blog/fowalondon2010 http://cargowire.net/blog/fowalondon2010 Craig Sat, 09 Oct 2010 16:00:00 GMT <p>In keeping with my 'write a blog post when I go to an event' approach to blogging... I was at fowa last weekend!</p><p>Carsonified were kind enough to allow me to attend as a helper on the day (cheers again to Keir and Lou for sorting that for me). Which meant I was one of the 'Turqoise Shirts' helping with registration, ushering, getting prints done etc. </p><p>As an aside I'd recommend offering to help out at events. It's not just that you don't have to fight for (and pay for) a ticket. If you're less gregarious than some, or are travelling alone it's a ready made way to meet people including the organisers and potentially speakers when they register. You're also still able to get to your "can't miss" talks.</p><p>This was my second fowa, having attended in 2008 and I must say, I enjoyed it thoroughly. The event appeared to have been downsized slightly since then but The Brewery is a great venue with a very friendly feel. I particularly liked the 'loft party' cushion area at the back of the porter tun.</p><p>The highlight for me was catching John Resig, creator of jquery, discussing jQuery mobile and jQuery Templates. Some exciting stuff here for us web devs. The idea of double binding a json object to an html template (that was brought down in the markup of the page) seems like such a clean approach to building on the clientside. I've also, since the event, watched and enjoyed Jason Calacanis's keynote. Grating and potentially intimidating as he is he does speak a lot of sense (in my view anyway).</p><p>I'd also recommend catching Joe Stump talk about location aware apps in his very enthusiastic style. I'm still waiting for that Role playing game where my dragon is less effective if the geo space I'm in is under stormy conditions!</p><p>Some related linky link links..</p> In keeping with my 'write a blog post when I go to an event' approach to blogging... I was at fowa last weekend!

Carsonified were kind enough to allow me to attend as a helper on the day (cheers again to Keir and Lou for sorting that for me). Which meant I was one of the 'Turqoise Shirts' helping with registration, ushering, getting prints done etc.

As an aside I'd recommend offering to help out at events. It's not just that you don't have to fight for (and pay for) a ticket. If you're less gregarious than some, or are travelling alone it's a ready made way to meet people including the organisers and potentially speakers when they register. You're also still able to get to your "can't miss" talks.

This was my second fowa, having attended in 2008 and I must say, I enjoyed it thoroughly. The event appeared to have been downsized slightly since then but The Brewery is a great venue with a very friendly feel. I particularly liked the 'loft party' cushion area at the back of the porter tun.

The highlight for me was catching John Resig, creator of jquery, discussing jQuery mobile and jQuery Templates. Some exciting stuff here for us web devs. The idea of double binding a json object to an html template (that was brought down in the markup of the page) seems like such a clean approach to building on the clientside. I've also, since the event, watched and enjoyed Jason Calacanis's keynote. Grating and potentially intimidating as he is he does speak a lot of sense (in my view anyway).

I'd also recommend catching Joe Stump talk about location aware apps in his very enthusiastic style. I'm still waiting for that Role playing game where my dragon is less effective if the geo space I'm in is under stormy conditions!

Some related linky link links..

]]>
dConstruct 2010 http://cargowire.net/blog/dConstruct2010 http://cargowire.net/blog/dConstruct2010 Craig Sun, 05 Sep 2010 19:00:00 GMT <p>It seems that I mainly Blog (as opposed to write 'articles') after attending some kind of nerd based event, but here I am again, just after an event typing away...</p><p>This time it's dConstruct, and I have to say it was a blast - very different from other events (FOWA, SXSW and smaller events like DDD, WebDD, Barcamps and user groups like NxtGen).</p><p>Like Jasper I'd have to say that the thing that makes dConstruct a great conference to attend is its almost brazen affront to technique style takeaways and it's ability to either shun, or at least dramatically downplay, any feelings of being sold to or comercialised. Techniques are rightly consigned to the realm of the workshop. The difficulty then, as an attendee, is to justify attendance. Can you quantify the shot of enthusiasm and inspiration as easily as going on a training course?</p><p>I think so. Attempting to provide workshop style content is a huge balancing act between the potential knowledge bases of the large audience. And putting up sponsors to speak is an immediate turn off. But planting ideas, making you think, that is what makes you want to get back onto your laptop and start working away.</p><p>I've boiled the conference down to a single sentence per talk. At this point the interesting thing to me is that some of the remainder might be labelled 'obvious', but to me it's down to the quality of an engaging speaker that you come away with a clear message.</p><p>This also reminds me of an article by Max Pool that I read not too long ago:</p> It seems that I mainly Blog (as opposed to write 'articles') after attending some kind of nerd based event, but here I am again, just after an event typing away...

This time it's dConstruct, and I have to say it was a blast - very different from other events (FOWA, SXSW and smaller events like DDD, WebDD, Barcamps and user groups like NxtGen).

Like Jasper I'd have to say that the thing that makes dConstruct a great conference to attend is its almost brazen affront to technique style takeaways and it's ability to either shun, or at least dramatically downplay, any feelings of being sold to or comercialised. Techniques are rightly consigned to the realm of the workshop. The difficulty then, as an attendee, is to justify attendance. Can you quantify the shot of enthusiasm and inspiration as easily as going on a training course?

I think so. Attempting to provide workshop style content is a huge balancing act between the potential knowledge bases of the large audience. And putting up sponsors to speak is an immediate turn off. But planting ideas, making you think, that is what makes you want to get back onto your laptop and start working away.

Talks

dConstruct 2010: Talks / Boiled down
Marty Neumeier Products fall into four broard categories: "good and different", "not good but different", "good but not different" and "neither good or different"
The Designful Company
Brendan Dawes1. Collect, 2. Think, 3. Remove all that isn't necessary
Boil, Simmer, Reduce
David McCandlessVisualise data to see what you couldn't before
Information Is Beautiful
Samantha WarrenThe time for web typography is now
The Power & Beauty of Typography
John GruberSuccess comes from a single mindedness but that single mind can lower the collective talent if the auteur has a lesser taste than the team
The Auteur Theory of Design
Hannah DonovanThe power of collaboration through improvisation (which isn't just random ad hoc activity it's subject to structure, timing and harmonious roles).
Jam Session: What Improvisation Can Teach Us About Design
James BridleThe journey from one historical fact to another is as much, if not more, intriguing than facts alone
The Value Of Ruins
Tom CoatesInterconnectedness enabled massively by the proliferance of APIs are as revolutionary as the roads of the Persian Empire (2secs I'm just off to make a mash up)
Everything The Network Touches
Merlin MannIt's good to be a nerd but don't be complacent, keep looking for the next thing to nerd out about (before you're obsolete)
Kerning, Orgasms & Those Goddamned Japanese Toothpicks

I've boiled the conference down to a single sentence per talk. At this point the interesting thing to me is that some of the remainder might be labelled 'obvious', but to me it's down to the quality of an engaging speaker that you come away with a clear message.

This also reminds me of an article by Max Pool that I read not too long ago:

Just because you can grasp the answer does not mean you have the knowledge, wisdom, experience, or work ethic to come to that answer http://www.codesqueeze.com/intellects-dont-appreciate-intelligence/
]]>
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.

]]>