third solution

follow me on Twitter!


I think most of us who are passionate about programming and software are the sort of people who'd like to tinker with anything, I doubt there are many of us who didn't have Lego (or Meccano if you're a bit older). It's just that software is a bit cleaner, cheaper and less frustrating than making things out of metal, have you ever wished you could have an undo key in real life?

The point is that I'm still fascinated with real life things, whether its space shuttles, robots or lasers. But the really exciting stuff is real world things that I can hook up to a computer and write nice clean undoable software to make new stuff in the real world. There's been a couple of things I've come across recently that have really impressed me, the first was Matt Biddulphs experiments with hardware controllers hooked up to objects in Second Life. He was using an Arduino board, which is a small piece of hardware you can hook up over USB and use to control devices and receive feedback. Both the hardware design and all the accompanying software is open source, you can build your own board from off the shelf parts or buy one from a number of places for around £15 (£50 for a bluetooth version).

The next cool thing I came across was a new multi-touch screen technology. You may think that doesn't sound like all that, we've had touch screens for years, so you can touch it in two places, with this screen though you can touch it with as many body parts as you have! Plus it can sense pressure, this adds several new dimensions to your input interface. You can then make use of multi-finger gestures that are simple to do but convey much more information more precisely than you could with just a mouse/keyboard. There is a presentation on it here, well worth watching.

The last thing I came across just today was an experimental music sequencer which can be used as a toy or a learning device. You have physical blocks that represent samples, you chain them together and each one triggers the next with infra-red, you can move the blocks around in real time changing the flow, place them in circles to make it loop or fork it out into different paths. This would be great at a party for interactive colloborative DJing. You could apply this technology to more than music though, imagine hooking these blocks up to yahoo pipes to filter and process data feeds, or experiment with workflows. I really hope someone decides to manufacture these soon. Watch more videos on their site here.

Labels: , , ,

No Comments

Label for input in ASP.NET

Another ASP.NET 2 "secret" for you, this one courtesy of Ben Wards presentation at BarCamp.
AssociatedControlID will automatically write out the for attribute on the label. Saves you waiting till PreRender to get the right ClientId, and keeps UI logic where it should be. Obviously it's a label element and not a span which is what asp:label normally writes out.



Default button in ASP.NET

I just had to share this little tip with you. A really annoying problem in ASP.NET 1.1 caused by the fact WebForms are just one big HTML form, is that when you hit enter you never really know what's going to happen, and it's rarely what you wanted. For example, you have a search box and a search button, the search method is attached to the click event of the button. User comes a long, types his query, hits enter, the browser then posts back the form, but hasn't triggered any button clicks. In old multiformed applications you'd have a seperate form for the search control, and the browser would have triggered a click action on the single button in that form (the search button).

Thankfully ASP.NET 2 has a solution for this, you can surround your control in an asp:panel and set a button in it as the default button, then if the user hits enter while focus is on any control in that panel, that button is triggered.

Scott Guthrie has an article on it here.


1 Comment


I've just marked up my little bio on the right hand side there with some subtle microformats. You may notice the vCard link which uses technorati to parse the HTML and returns a vCard, you can also use browser plugins to like Tails to extract the data and do what you want with it (bluetooth it to a phone, like Jeremy demoed at BarCamp).

Next I wanted to markup the names and urls of commenters on my blog, (no real reason). But I quickly hit a wall, blogger templates! I don't know why I'm still using this system, I keep promising myself I'll migrate to something better. Anyway I decided to spend a few minutes seeing if I could hack it to do what I want. The problem is that the blogger template has a single tag that is replaced with the link, <$BlogCommentAuthor$> turns into something like <a href="http://example.com" rel="nofollow">Joe Bloggs</a>

My awful awful hack goes something like this, <a class="fn url" junk=<a href="http://example.com" rel="nofollow">Joe Bloggs</a> . Now this is of course totally invalid XHTML, there are no quotes around an attribute and the chevron isn't encoded. But it works! Except when I try to use technorati to parse a vCard, but Tails works fine, if I'm lucky it might be something other than the hack causing it.

I've noticed a problem though, I allow anonymous posts, which appear as spans instead of links, so you get something like <a class="fn url" junk=<span class="anon">Anonymous</span> so then I have to add a closing anchor after, and we end up with an anchor with no href. Maybe I should just ban anonymous postings!

Labels: , ,

No Comments


I'm only just starting to feel like I'm recovered from that weekend, I had about 4 hours sleep on Friday night and the same again on Saturday. This BarCamp was probably about 3 times the size of the last one, the venue was impressive, they had a proper little auditorium. There still wasn't anywhere very comfy to sleep, although I think I found the best spot (the only sofa in the building!) next time I'm going to pack some sort of inflatable bed.

This time round the presentations had a different feel, it seemed that the more seasoned speakers were dominating, but that was probably just because I was attending talks by names I recognised! Also with it being much bigger it lost the feeling of intimacy. It was still a great event though, big respects to Ian and the other organisers, and BT really put a lot into it too (nice pizza and way more beer than 200 geeks could drink!)

I've been thinking about trying to kick one off up north since last time, but I've heard that the guys from GeekUp are working on that already. So instead I'm planning to try and gather together some people from the Liverpool area, all the folk that can't make it into Manchester very easily. I'll write up a bit more in another post shortly.

Labels: ,

No Comments

Tomorrow is BarCamp

I've made a start on my presentation, I've got a few notes but there still isn't a presentation there. I seem to have a habit of picking topics that I don't know all that much about, mainly because they're the ones that interest me! So then I have to do masses of research so I can fill 30 mins talking about it. This time I've gone for development on windows mobile with .NET, which I got into about 2 months ago when I wrote my PocketGCal app. Which is still the only mobile application I've written that really does anything. The great thing about using the .NET Compact Framework though is it's so similar to the desktop version (only more compact, obviously). So I'm going to look at it from that angle, and since I know there's not a whole lot of .NET lovin' amongst the BarCamp folks I'm going try to keep out of the techie stuff, focus a bit on the cool things you can do with it. I just hope Sarah Blow doesn't decide to watch.

Labels: , , ,

1 Comment

Alliance Against Urban 4x4s

I'm not even a driver but chelsea tractors make me really mad. It's not just the issue of their greeness (I know there are normal cars that pollute as much, and 4x4s that pollute a lot less), they're unsafe and totally unnecessary. I recently came across the site Alliance Against Urban 4x4s, where you can order fake parking penalty flyers to put on peoples cars, it's a great idea. Except I can imagine a lot of 4x4 drivers wouldn't really give a shit either way, but passers by will notice them, and may stop to read them, and hopefully it will put a few people off buying them. Now I know some people do actually need big vehicles, and some even go off road. But I think it was on topgear that they pointed out you cant even fit offroad tyres on a Porsche Cayenne! So if you live in a big city and fume with anger everytime you see a stupid shiny 4x4 without a single grain of mud on it, order some flyers, or print your own. And don't even get me started on Bullbars!

Labels: , , , ,

1 Comment

Cloud 9

It's been bothering me that you can't make use of the cool new templates stuff in blogger 2 when you're hosting your own blog. One thing I found really annoying was that there's no clear way to have a tag cloud of your tagged posts. So I just threw together this little bit of code that generates a tag cloud based on file sizes in your labels folder, it was quicker and easier than counting occurence of a string in each file and I thinks it's good how it's representitive of how much I've written rather than how many posts. It makes plain old HTML and sticks it in an app variable, i recommend running it on app start and maybe on another url to run when you need. (Yes I know it's classic ASP, just don't ask!)

Labels: , ,

1 Comment
Thom Shannon's background in making chips gives him a unique insight into the web development industry. As the Technical Director of Glow New Media he works with clients across the UK to deliver high quality web marketing solutions using the latest techniques, accessibility practices, and web standards in both straight and crinkle cut.

Download a vCard (for Outlook)


Find Me (and my Social Graph)

RSS Feed

Archives 08.06 09.06 10.06 11.06 12.06 01.07 02.07 03.07 04.07 05.07 06.07

Thomas Shannon-Smith
Tom Shannon-Smith
Tom Shannon
Thom Shannon-Smith