too simplistic

follow me on Twitter!

Microformats to Bluetooth

I've modified the Mac only bluetooth user script for operator to work on windows. It's based on this script, and originally inspired by Johns hack of Tails.

It requires the Widcomm bluetooth drivers (they're the most common, if you have c:\Program Files\WIDCOMM then you should be good to go).

Download it

I've tested it successfully on my Win XP machine to a Nokia 6230 and a Qtek S200 Win Mobile phone (aka SPV M600). It sends contacts and events, though events didn't work on my Nokia.

I don't have much available for testing it so I'm relying on some detailed feedback. I may not be able to fix it for you though!

A friend tested it on a newer Nokia, it received the file but failed to recognise it as a vcard to import. I've yet to find a way to use the bluetooth business card service, so I'm sending it just as a file transfer and relying on the device importing it. It'll probably require an XPCOM to use the Widcomm API, but this script should work as well as it's Mac counterpart.

Labels: ,


RadioheadRemix, remixed

Radiohead have released the stem tracks from Nude, for people to remix. They've already got some really great tracks on their site, the top one is a really cool electro mix.

Anyway, the embedded player didn't seem to work for me (I think it was just trying to download the whole song rather than stream it) and I also wanted to download a few tracks to put on my iPod. So I've made a greasemonkey script that will add a download button next to each track. (Greasemonkey is an add-on for firefox, you need that first)

RadioheadRemix Remixed

Drink responsibly, respect the artists rights.

Labels: ,

No Comments

Youtube Seeker

I'm starting to become known as that greasemonkey guy, anyway here's another one!

You can now add times onto youtube urls, ie. http://www.youtube.com/watch?v=2yoIEWpl9oc#0:32

Just a sudden thought, youtube didn't already have something like that did they?



Liverpool .Net User Group

We are arranging the inaugural meeting of the Liverpool .Net User Group on Tuesday, 11th of March at 6pm. We're planning to have it here at the "glowplex".

If you're attending please sign up on the upcoming page or drop me an email.


No Comments

Dom Ready now with added Curry!

The cross browser DomReady event is a great feature in all the good JavaScript libs. Basically you use it where you'd normally use the window onLoad event, the only difference is that it doesn't wait for images and other large assets to load before firing. So when people are in a hurry or the page is just slow they don't get a lessened experience because your progressive enhancements haven't done their enhancing.

Quite often you don't want to use a library, like when you're trying to make a simple standalone util. So here's a simple standalone cross browser DomReady script, tested in a few versions of IE, FF and Safari (should be fine in Opera).

Here's how to use it in it's simplest form.

Here's how to use currying, the second argument is the scope that the method is fired in and the rest of the arguments are passed to the method.

So this would call the function fHandler, when that function uses this it will refer to MyNamespace and it's one argument is a string containing init


1 Comment

Unix Utils on Windows

I find this little library indispensable. I use it almost every day for all sorts of tasks, an obvious example is scanning log files with grep or monitoring them with tail. Here's something I just did with it that's a good example of one of the ways I use it quite often.

The Problem: I have a lightbox on iStockPhoto, I want to download the medium resolution images to print out and have on my laptop to show to a client at a meeting, there won't be an internet connection. iStock don't have an option to do this so I need to rip the images, here's how to do it in about 60 seconds without writing any code (if you're quick!)

Copy and paste the text off the page into notepad, if you've got more than one page just click through and paste it on the end. It's usually best to try and copy the rough area where the data is. Save your file in a new folder.

Open a command prompt and grep the file for the data you want, in this case it's grep "#" input.txt.

Copy the output into a column in excel. Make a simple excel formula that builds a shell command to run wget and grab the files you need, eg ="wget ""http://www.istockphoto.com/file/"&A1&"/2/"&A1&".jpg""".

Copy the resulting column and go back to your command prompt, paste it and it starts running. Watch all your images appear! When you do this often you may find it's quicker to start Excel before you start your grepping, then it should be ready for you when you need it ;)

I suggest having a quick look at the usage info for the various tools (tool --help), get to know how to use regular expressions with grep, also have a look at the things you can do with dir to get bare file listings. Try piping outputs from one operation into another, eg dir /B *.jpg | grep "DV0" > output.txt. If you have problems with line lengths (with looking in logs usually) just use mode con cols=1000, you can use lines instead of cols to increase your scrollback.

I promise you'll find uses for them every where and you'll soon wonder how you ever lived without them!

Labels: , ,

No Comments

Cross Browser Cookies

I've been experimenting with a way to make cookies carry across different browsers on the same machine. Currently it only works with Windows, I'm not sure if there's anyway to do it on a mac. You can see an example here.

I've wrapped it up in an easy to use JavaScript library, once included (requires jQuery and SWFObject) there are just two calls.

This will save the current cookie to the cross browser store.

This will load the cross browser store as a cookie.

Download the code and examples.

Labels: , ,

No Comments

Friend links

I just updated an old greasemonkey script I wrote some time ago. When you type a friends name into a textarea it will add a link to their blog from a predefined list. I've extended it using Jeremys little inline microformat pattern. As demonstrated in that link to his site. Now on any sites you choose (set them in GM settings, it runs on all by default) you can have hCards and XFN wrapped around your friends names as you type.

Download the script here. After installing it reload the page, then go to Tools>Greasemonkey>User Script Commands>Edit Friends Names.

Question: The outer tag is a span, to hold the vcard class. Now would a cite be more suitable here? In most use cases I can think of (eg. referring to people from blogs) you are essentially citing that person in some way. Does anyone else agree?


1 Comment

Ouch my face!

PICT2325.MRW We've been playing giant faceball with space hoppers at Google. We had to change the official rules a bit since the ball is so big it's too easy at 10 feet, so we scaled it up.

Anything Yahoo do, Google do better! It did hurt a bit though.

Labels: , , ,

No Comments

Social games

Facebook are still far behind MySpace in market share but Facebook are coming up fast. But have the rules of the game just changed?

A couple of days ago Google announced OpenSocial, an API similar to the one Facebook opened up for it's applications platform. It can be used to build similar apps for networks that support this API. They launched with a long list of partner sites but rather amazingly they've just announced that MySpace are in too!

So lots more gadgets, widgets and annoying zombie biting things. What's changed the game though is that social network sites can use this API to get user info out of other social networks. Is this the answer to the social network portability problem? It's something Jeremy Keith has been talking about for some time (he has a real thing about it), but he's been pushing for adoption of XFN and other open standards. So have Google just solved the problem over night?

Well OpenSocial isn't exactly an open standard, but it's a good start. Combined with networks publishing XFN and hCard there will hopefully be a smaller number of standards to access a much larger amount of data.

The potential now is to be able to interact with people on other social networks as though they were on yours. The way

Labels: , , ,


Transient Skip Links

"Skip links" is the name given to a little accessibility feature, simply a link that uses an anchor to skip you down the page to make keyboard navigation easier. If you see them it's usually right at the top over the site navigation, so a user doesn't have to tab through the whole nav to get to the content.

Quite often you won't see them though, unless you use view source, many people choose to hide them using CSS. If you move them off the screen with a position:absolute then they will still be read out by screen readers. It's easy to forget that blind users make up a tiny fraction of web users suffering a disability. Many more people rely solely on their keyboard to use the web than screen readers, they range from stroke victims to sufferers of spinal injuries or motor neurone disease.

So should you display the skip links? Well people confined to keyboards still make up a small fraction of users on the web, and when you start adding links to all sections that may want to be skipped it can become a disadvantage to none disabled users. What you want is for the links to only appear when they're needed, which is so easy to do with a :focus.

You can add the following HTML to the top of the body: With this CSS: Try tabbing from the top of this page and you'll see how it works, it's simple and works on all major browsers.



Google Analytics ASP.Net Web Control

Update 2007-11-09: I've set this up as a Google Code project, there'll be more features to come.

Google Analytics is an amazingly powerful tool, we don't build a site without it these days. In its simplest form it's not much more than a fancy looking version of your usual web server stats. When used properly though it does so much more than show you how many hits you've had, it will tell you how hard your site is working to make you money. It will show you exactly where your online marketing spend is going.

A lot of the really good stuff means fiddling around with JavaScript and some stuff isn't even in the API, like setting a campaign source from the server (without using the querystring)

So here is a handy a little web control that makes it all much easier. GAControl.zip

How to use it

Place an instance of the control in your head tag, this can be on a master page. Set the account Id property, you'll find it in the tracker code.

In the master page code file you can make it a public property.

You can then use it from any control or page to do things like add page hits for goal tracking.

Set a campaign source

Add other domains to be tracked in the same account. All links and forms going to that domain will pass the cookie across, so long as the other site is tracking with the same GA account the user session will carry across.

You can also save the details of e-commerce transactions for accurate ROI reporting.

And a few other things! Give it a go and let me know what you think.

Labels: , ,


Make it all worthwhile

Please sponsor me to abseil down this monstrous thing.

I don't want to kill myself for nothing!

Labels: ,

No Comments

Degrees of Wikipedia

I've invented a new game based on wikipedia. See how few clicks you can use to get from Computer to Cheese, only using the links in the article on wikipedia and no back button! You have to keep going forward.

I did it in 3

Here's a harder one (using random articles): get from Forward compatibility to Oliver Milburn

Post your paths in a comment.

Labels: ,


Semantic rich text editor

I've written before about the idea of a WYSIWYM editor. Something to bridge the gap between the semantic clean code we write as web developers and what our clients and users generate via rich text tools. There are projects out there, such as WYMEditor, but they still seem to fall short of what I think is needed.

When we design a content managed site using CSS we invent classes and structures for the sort of data that will be used. An example of this might be a blockquote with quote images either side, this would use a blockquote tag containing a div, CSS would then apply two background images aligned top left and bottom right. Using a standard rich text editor the client would have to go into source view to recreate this! You could have another structure for inserting images into content with a caption, the surrounding block might have a class that decides whether it is left or right aligned. Same goes for headings or complicated structures like an address (microformat!)

I've been working on a new rich text editor where the web designer can template these structures and add them as buttons onto the toolbar, and the user will be kept within the styles available. What I want to do though is gather some more information on how this would be used.

These are what I think the basic objectives should be, but please do comment to refine and focus these a bit.

  • End user works in WYSIWYG, actual site styles applied
  • Conventional word processor or email editor look and feel
  • Simple configuration of templates for web designer to use
  • Support multiple style contexts for different site sections
  • Generate XHTML
  • Hides all technical aspects from end user

Labels: , , ,


Microformats: what's the point

I gave this talk a couple of weeks ago at GeekUp Liverpool. The aim was to illustrate how simple microformats are to implement and to convince people it's worth while by showing the tools and services that are on the horizon.

Again the slides are pretty slim on content since it was all in the talk, just let me know if you want me to elaborate on anything. I also gave a demo of the operator extension as part of the talk.

Labels: , ,

No Comments

How To Hack

Here are the slides from my presentation at BarCampBrighton. The aim of this talk was to show the common ways that web applications are compromised that the web developer must take responsibility for. The slides aren't actually much without the talk, but if you want more info on anything in particular let me know

Labels: , , ,

No Comments


GeekUp Liverpool is tonight, 6pm at The Pilgrim. I'm going to be giving a short talk about microformats, not planning on going hugely into depth, more of an overview of the why and how.


Thursday, August 30, 2007 6:00 PM

The Pilgrim
34 Pilgrim St
Liverpool, England L1 9HB

Labels: ,

No Comments

Second Life geotagging in Flickr

After seeing Kisa's cool SL2Flickr app that lets you send a postcard from within SL straight into your flickr account, and the conversations around the geotags for it (machine tags of course). I decided all it needed was a GM script to add an SLurl, similar to the built in Upcoming link when you add an upcoming tag to an image.

Flickr SLurl

You'll see a link to a SLurl when the machine tags are there, and you can add the tags by just pasting in a SLurl. Download the script here.

It supports the legacy SL2Flickr tags and partial SLurls (just region, or just region, x and y)

The next thing is to use the SL maps api to browse them!

Labels: , ,

1 Comment

Light adjusting Panoramas

HDR seems to have been the in thing on flickr for a while. You get an image that in some ways is more like what you would see in real life, since all the detail is there. But what really happens is your eye adjusts to the different light levels as you look around a scene.

I just came across this very cool panorama app that can blend between two images of different exposures as you look around. Have a look at this one taken at Petra.

Labels: ,

No Comments

Hackday Presentation

I just stumbled across the video of the presentations from hackday. Strange watching it back, it wasn't how I remember it. I did get a laugh though!

View here

Labels: ,

No Comments


The Cache StashMoo stuff is just nice, very well thought out, very tactile, but once you get it no ones really sure what to do with it. A few swapping groups sprung up where people would post things to each other, but this seemed a bit cumbersome. I thought maybe you could mix the geocaching idea with moo things, MooCaches!. Just like geocaching but for people to swap moo things, now we just need more people to go out and set up more caches around the country, and the world. Then go and enjoy swapping your cards and stickers to get a few moomentos of your travels!

Labels: , ,


Snap Off!

Has anyone noticed a surge in the use of those annoying mouse over popup things from snap? My first thought was "god they're annoying", second thought was more useful though, "that needs a greasemonkey script" so here's one.

Labels: , ,

No Comments


Ma.gnolia Ma.gnolia is a bookmark sharing site, quite similar to del.icio.us. I've been hearing lots of good things about it for a few months and got around to setting up an account last week (you can import from del.icio.us). I used OpenID and hit a little bug that caused me some problems signing up, I told them about it and they sent me all this sticker booty as a reward :) Far more than I need, I'll bring it to GeekUp on Thursday if anyone wants some. Ma.gnolia looks pretty good so far too, they fixed the bug!

Labels: , ,

1 Comment

OpenCoffee Liverpool

After the success of the last event we're really looking forward to the next one. We've got people heading over from all over the North West, entrepreneurs, creatives and investors. We'll be hosting it in Hemingways on Duke St again, it's a nice relaxed informal atmosphere, and the coffee's not bad! Put your name down at Upcoming

Tuesday 17th July, 10-12

Labels: ,

No Comments

Another reason to hate M$

I often find myself defending Microsoft and aruging FOR software copyright and patents. Well not anymore! Microsoft have just lost one more supporter.

Unsupported Cascading Style Sheet Properties Compared with Cascading Style Sheets, Level 1

The following is a list of all the top-level cascading style sheet properties that the Cascading Stylesheet Specification, Level 1 supports, but that Word 2007 does not support. Note that Word 2007 considers unsupported cascading style sheet properties to be unknown properties.

  • background-attachment
  • background-image
  • background-position
  • background-repeat
  • clear
  • display
  • float
  • list-style-image
  • list-style-position
  • text-transform
  • word-spacing

This is taken from this hideous document that Microsoft should be ashamed even exists, I hope the person who was made to write it immediately quit!


Labels: ,


Posh Wysiwyg

None of us techie types like wysiwyg editors, we all know they generate awful HTML, some of them even use FONT tags still! The problem is clients need to add text to their sites, they need to format it, and they really don't want to learn HTML.

Most modern content management systems, including our own, rely on the browsers built in wysiwyg editor. These are some of the worst offenders for bad HTML, the problem is helped slightly by JavaScript components like FCKEditor that try to clear it up.

The problems really start when you try to ensure a good seperation of content and design, using carefully constructed CSS rules around semantic HTML and a rigid CSS class vocabulary. For example on our site, surrounding content with a div and blockquote results in the text being padded and surrounded with pretty quote graphics. This is great when the content author knows this, dips into HTML mode in the editor and enters the couple of tags needed.

Of course, you can't expect your clients to do that. What is really needed is an editor tightly integrated into the sites stylesheet, that helps the user markup their content in the right way without even knowing it. It needs to be easily configured by the web designer who defines the markup structures, and it needs to be context sensitive to different areas of a site.

I've tried to do this in the past, we had something similar where I used to work. What I'm imagining is a little more complicated, so it can be used to generate complex sets of data. Definition lists, site specific structures, hCard and hCal microformats. I think FCKEditor is probably a good platform to build this off but I need to have a look around first, check it doesn't already exist!

Labels: , , ,


OpenCoffee Morning

We've arranged the Liverpool branch of the OpenCoffee Club.
OpenCoffee Liverpool is an open and regular meeting where technology entrepreneurs can meet with investors (and anyone else who fancies coming along) in a totally informal setting.
We've got a few people coming a long, and hopefully it will grow into a regular and useful meet up. If you want to come just show up anytime between 10 and 12.

Labels: , ,

No Comments

Hacked Out

Back in the office now and can barely keep my eyes open! What a great weekend, I can't believe the amount of attention our blimp got, lots of photos, lots of people wanting to help out. In the end we had a team of 5, myself, Niqui, Alistair, Stephen and Shawn. We went through about 5 different verions of the blimp, different hardware, different kinds of comms, different interface ideas. The concept we finally got to was pretty cool, and it would have been working great for the presentation except for the bluetooth, there were more devices in the room than the software could list, so we couldnt pair them. I had my phone sending images up to a web server automatically over the Wifi but it was too heavy with the rest of the kit.

Still, we won the award for best hardware hack, which was unexpected. There were some really great hacks in that category, like the real/virtual reality mashup with paper submarines controlling virtual submarines in second life.

We did an interview with the film crew there but I'll be pretty surprised if they use it, we'd barely got the thing working and were about to go on stage to demo it, so we were a bit distracted.

The site's still up at bli.mp, the balloons are somewhere over London as far as I know, and we've got a blog here. We'll get photos and videos on there, and hopefully find out where the balloons got to, and we've got some plans for a new version of the system that will let you fly the blimp anywhere in the world!

Thanks again to the team for getting this idea off the ground :)

Labels: , ,

1 Comment

Faceball yourself!

I've been enjoying all the faceball pictures going around Yahoo, but I was feeling a bit left out since I didnt have a big pink ball. Then I thought it might be funny to photoshop some :)

Me Phil Jeremy Keith Chris Heilmann Tom Coates Andy Budd Simon Willison

If you want to have a go you can download a psd with some pink balls in here, the photos are from here and here.


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 07.07 08.07 09.07 10.07 11.07 12.07 01.08 02.08 03.08 04.08

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