-
links for 2008-01-29
-
Make your own book cover
-
-
Site Launch: Django People
One of the many sites Simon and I are collaborating on at the moment came into fruition in the (very) early hours of this morning.
Djangopeople.net aims to unite the Django community in their common allegiance of development environment. Until now the Django community's spirit had been a victim of the documentation's success, with such conclusive coverage people commonly don't feel the need to venture into IRC channels, or mailing lists to ask for help.
A very simple site, Djangopeople is (currently) just a mechanism to say who you are, where you live, what your skills are and provide links to sites you have contributed to that run on Django. Naturally there are plans to develop this further.
So far uptake has been great, since we launched—About 15 hours ago—a total of 633 people have signed up and added their profiles. Which is really exciting!
If you develop in Django head on over to Djangopeople.net and add your profile. We welcome feedback and bug reports.
-
links for 2008-01-21
-
Six abandoned kittens have found an unexpected new mother figure - a pet rabbit. (Thanks Paul for the tip-off!)
-
The University of Sussex is gearing up for a series of Thursday evening seminars. Kicking off this Thursday 24th Jan with a talk about the One Laptop Per Child project (OLPC)
-
An Opera style homepage for screenshots of sites you may want to visit on opening your browser. Saves firefox from opening multiple homepage tabs (which can be really anoying)
-
Cute list based calender, using the same markup but different CSS to display two different calender views. It would be even better if it sported hevent though :)
-
Absolutely beautiful flying hotel that takes 40 guests, I so want to go in one of these ... lets hope this is a new wave of zeppelin-like crafts!
-
Ingenious, there are so many times when I am tempted to stir my tea with my pen, think of the usefulness of having a knife and fork too! wow!
-
Finally! the ability to associate other email identities with your google account, also check gmail's other email feature for the ability to have a different reply-to address
-
Great online beautifier for javascript
-
Punctuation substitution, perfect for those 'frustrated' emails
-
-
Snipplr redesign
It is always the way, ideas are 10 a penny. If you don't actually get round to implementing it someone else eventually will. Quite often though it's the case that I don't mind not having implemented it, just so long as it exists.
A fine example of this is Snipplr. Ever since I first got into web development I intended to build something like this, I am sure I am not alone here, it is something that was desperately needed. Snipplr do a good job and I am very glad something like this exists now.
A very handy little app, Snipplr lets you store code snippets against a particular language for easy future access. Naturally—like all good web apps—you can tag and comment too.
To the best of my knowledge the Ruby on Rails based 'BigBold' (now Dzone) by Peter Cooper, was the first big snippet app. Released shortly after was Snipplr and then CAB, the engine behind Django Snippets.
The winning feature as far as I am concerned is Snipplr's simplicity, BigBold I think tried to do too much in requiring code type syntax to mark up the snippet, lending itself more toward mini tutorials than reusable code. Snipplr's recent redesign is nice too, very striking and low on imagery it uses nice and bold typography to bring out the code samples and tags.
Snipplr also has a textmate bundle which is awesome. You can configure key combinations to post or insert snippets directly to what you are working on. There is also an API, browser bookmarklets, Gedit plugin and a Wordpress plugin.
There are a few things that are still a bit shaky, such as pagination or private snippets amongst groups (it only lets you do public or totally private snippets). But all in all an attractive solution if you want to share or store bits of code.
-
Usability issues, when lives depend
I tried to give blood today. Although I'm a registered donor I haven't been for quite some time, not since they turned me away for being anemic. Times have changed since then, you no longer get a free tub of Ben and Jerry's ice-cream, and it isn't against campus equal opportunities law to advertise the time and place to give blood. You can also book online now.
Naturally, for a large and important system, the online booking form isn't great. Just looking at the main issues (I'm sure there are a ton more): You search for your postcode to find the nearest donation center, in smaller areas it is probably not so much of a problem but there are three donation centers in Brighton, each identified only with 'BRIGHTON' and the distance. There is also an unexplained number of 'days'; what that means is pretty much anyone's guess. It could be the days in a week the donation bank is open, except the first result is '16 day(s)', last I checked there weren't 16 days in a week.
Clicking on a venue took me through to the page for that place, it was then that I realised there are '16 sessions at this venue' - what did that have to do with days!? Is that 16 sessions per day? Perhaps, though probably not.
A list of available sessions is shown. The little clock bullet point is cute, until you realise it is the only clickable area to get through to book a session on that day, and the next / previous buttons just take you through to more sessions - I spent ages trying to find how to book a session from this page!
Clicking the little clock brings up a popup window for your personal details, blocked by my popup blocker, nuff said. The options don't include the ability to change the date but do let you select a time that wasn't previously listed as available for that date, totally infuriating if you have clicked the wrong date, also how do you remember which times were OK?
I submitted my details to give blood that afternoon, then I notice in teeny tiny writing ...
If you want to book an appointment for the next day, you must book it Monday-Friday between 9am - 5pm. Unfortunately we cannot take appointments on a weekend for Mondays. We are also unable to accept appointments made for today, unless otherwise stated.
Now I understand that someone for some reason may need to check the details and respond personally but it does seem odd that you can't book for, say, the afternoon. Perhaps some routine behind the scenes where they only check the website once a day to correlate the books? To me this smells of bad practices underlying bad software implementation.
My theory was further confirmed when I received the following email from someone at the National Blood Service:
EBLOOD - Donor - Details don't match
Thank you for using the website to make an appointment. Unfortunately, our system will not let me do this and we need to speak to you to resolve this...
Despite giving them my phone details in the compulsory field that they made me fill in, I received no calls (they said they tried to call and failed). I called the booking helpline to sort things out, and apparently the "system doesn't work well when people change addresses". The problem was that they had two records for me and couldn't combine the details easily, so the lady had to send a form off to get 'them' to update my address on one of the records and delete the other one. I couldn't even go down to give blood and sort things out there because "they wouldn't know which record to use". Unbelievable.
I gave the lady my phone number (again) and am currently waiting for someone to call me to confirm things have been straightened out and I can finally donate blood to someone who needs it.
-
links for 2008-01-11
- Beautiful art portfolio, including awesome heat sensitive wallpaper and exquisitely delicate pre-cut origami calender - found via Mike Stenhouse sharing on Google Reader
- Nokia have developed a touch screen that allows for 1mm movement when pressed, theoretically providing haptic feedback for phone interfaces.
- Quite exciting news from the Yahoo camp. Simon explains some of the implications of this
- The official SXSW party for Brits in Texas. Organised and funded by Clearleft, Carsonified and Boagworld this looks to be a lot of fun! see you there :)
-
Poorly Macbook, ineffective error message design
I am lost without my beautiful black macbook. After it 'bOrk3d' itself late on New Years Day (I understand tis the season) I have been stuck with my old windows machine. I don't have any of my programs or saved passwords, I cant type on this keyboard, I miss quicksilver and the system-wide spell checker more than anything. Worse than this though, I keep getting muddled between work and home and those darned command keys and whenever it gets too hot this machine shuts down ... grr!
There I was, innocently minding my own business, uploading some photos from my SD card, doing nothing unusual (yes, I know everyone says that, but really!) when it stalled. I restarted and after some time I got the familier blue screen but without the friendly apple logo, in its place was this:
Not a lot of help! Now I know Apple's have to be international, but by catering to every language with a universal sign and no error message it becomes impossible to google for an answer! what do you search for? "circle with a line through" "stop sign" "universal no sign" "prohibitory sign" and that is just in English! A short phrase, or a number, or anything would help lead to an article on the problem, people could translate it at will and may well have saved me the 30 minutes I was on hold to Apple care in the states.
Before calling I inserted my apple installer disk and tried to run disk utilities on it. Only having 2.6GB left probably didn't help matters. I tried Fix / verify disk permissions but I got the error:
First Aid failed Disk Utility stopped verifying permissions on "Macintosh HD" because the following error was encountered: The underlying task reported failure on exit.
Gee, thanks Apple that was insightful.
Error message design and copy is so important. Something has gone wrong, the user panics and blames themselves, its a very natural and common emotion. Having error message 'icons only' is not at all comforting. The fact that the user has to go that extra step to figure out what is wrong can only serve to make them frustrated at themselves (and the product) and feeling stupid, not a good thing. Hiding technical details but still using technical speak with an error message like "The underlying task reported failure on exit" is so totally pointless that it made me quite angry.
Despite that, Apple care (0870 8760753) were indeed very nice and helpful (even if they do play Christmas holding music well into January!) they took me through the weird apple magic baked into the firmware. None of which worked. I tried using 'repair disc' in the disk utilities, the error "Invalid node structure, rebuilding Catalog b-tree" was slightly more informative but no more helpful.
A friend pointed me to the hard-to-find article on apple support. When none of that worked I realised it was pretty much beyond me. I could have tried to re-install, but the Apple chappie said it was most likely a hardware issue and I should take it in. The "folder with a question mark in" confirmed matters.
There are only 3 places in Brighton / Hove I found where you could actually get a macbook repaired. Cancom have a branch on the road leading up to the station but their repair shop is in Gloucester, there are only weekly deliveries so the estimated TWM (Time Without Macbook) was 2-3 weeks. Going to NZ soon so this was pretty tight.
Solutions seamed ok with TWM of under a fortnight, but despite having a branch in Brighton you have to physically go to deepest darkest Hove to take it in, and the people in their call center didn't appeal to me that much, quite brusk and dismissive. Robert Harding on the other hand is not far into Hove, was very friendly and knowledgeable on the phone and said he would do his best to recover the data, replace the hard drive and have it ready in a week. So that is where I went, I should have it back soon (touchwood).
All in all it was jolly lucky I did a full backup three months ago and use flickr regularly. As for things I create, they are all in remote subversion repositories. The only lost items were a couple movies, which although a shame is not life or livelyhood threatening. I can't wait till I have my laptop back though.
So I hope you can learn from my close shave, back everything up frequently and use remote repositories ... oh and pay attention to error message design!
-
So I totally forgot to mention ...
Drew and Brian did a fantastic job last December with their organisation and editorial skills for the annual magazine 24ways. I was very honoured to be asked again to contribute to the 2007 issue.
Natalie Downe sets the presses rolling with an in-depth look at the state of print stylesheets in 2007. Often neglected by developers but much loved by the user, the simple print stylesheet can really add that finishing touch to even the best site designs. So get this down you. Ding dong!
It really is worth checking out the selection of articles, there is a great variety of topics and all make fascinating reading.
-
New Year, New Job, New adventures
This year has started pretty nicely, we have just returned from a lovely weekend away in our University town of Bath, meeting up with old friends, haunting old haunts. Organised by Laura, most of our old gang were there, it really was great to see people again.
We finally made the time to go to the Roman Baths, despite being free to visit for residents, we lived in Bath for three years and never went. I wasn't sure what to expect, I had seen the usual picture postcards but they always looked a bit photoshopped, an ancient bathhouse couldn't possibly look that well preserved.
Surprisingly, it looks just like the postcards. The tour starts by going through the interesting museum of Roman and Victorian items and excavation sites of parts of the baths and temple. Included in your £10.50 entrance fee is a rather excessive audio guide that should you listen to all the numbers may well take you all day! In addition to the standard commentary numbers there are narratives from 7 different actors portraying to be of different ages and social statures, Bill Bryson also has added extra notes and observations.
Luckily for our combined short museum attention spans, you can still gleam a lot of insightful information by forgetting the audio-guide entirely and reading the notices.
Entering the main bath area it really is like going back in time, green mineral-rich slowly smoking waters, limestone pillars and alcoves, statues of Romans atop the walls and a view of the Abbey peaking from outside. For effect it also helped the sky was a glorious blue. After your visit a free glass of the hot spring water is included (50p without a ticket) which other than being lukewarm and slightly odd tasting, is not all that bad.
I would definitely recommend a trip to the Roman baths early on a Sunday Morning as we did, I doubt it would have felt so magical with a surrounding tour group!
Currently, Simon and I are busily planing ourselves a trip to New Zealand for Kiwi Foo, Webstock and general adventuring, coming home via San Francisco, LA and South by South West in Texas, I am very excited about it!
In other news, yesterday was my first day working full time as a Senior Client-side Engineer for Clearleft. I was contracting here for the few months before Christmas, which meant I was familiar with the people and the working environment before this week, so it's not as scary as starting totally afresh :)
Clearleft are a great bunch, the projects are interesting and there is plenty of intelligent discussion and friendly debate. I am really enjoying being part of the team.
So in general, my hopes for this year are that it will be full of exciting new challenges, traveling and adventuring, making new friends, catching up with and getting to know current friends better. As for resolutions for 2008, I plan to spend more quality time with Simon, get fitter, perfect the poached egg and learn to bake a souffle.
-
links for 2007-11-28
-
Beautiful! Panic make lovely websites and lovely webapps, Candybar 3 for customising your Leopard dock has just been released
-
Useful article on Javascript shortcuts from Christian Heilmann ... "OMG! Ponies!"
-
I have yet to play with this but it is effectively a 'firebug for ie' - Thanks Dan Webb for pointing me at this one
-
integrated with Firebug this looks an interesting tool to help debug JS
-
This is really sweet! integrates nicely with the Apple address book, only works on Leopard though, you have to install SIMBL first
-
Download the thing, install it, THEN MANUALLY CREATE PLUGINS FOLDER (that one caught me out!)
-
OK this looks great, not sure really how to go about fiddling this till it works though, I hate installing things
-
Art
-
Everybody should come to this, its going to be great! see you there! ...
-
Holding page of upcoming site by Clear left
-
Relatively old article but still useful
-
Jeremy's printstyles photoset
-
Great article by Brian Suda on portable social networks
-
Important information clearly put, Richard discusses best practices in text sizing on the web, complete with lots of screenshots
-
working with email client developers and the design community to improve web standards support and accessibility in email
-
-
'Networking'
I entirely agree with this chap when he talks about being in someone's company because you want to be, not for what advantages it can get you in life.
I have been in situations at conferences where you think you are having a nice chat with someone and then they get starstruck and leave suddenly - even mid-sentence on occasion - to talk to the object of their admiration.
John Scalzi's article makes for a far more articulate rant:
The most successful networkers don’t 'network.' It’s an odious term. The most successful networkers ignore the grasping patheticness of the term altogether. Rather, they talk. They laugh. They share the moment, and enjoy other people’s company; are generous with other people and help them celebrate their successes, rather than asking to scrape up against that success so some of it might crumble off on them. It works the same online and off.
-
Settling into Brighton

It has been roughly a month now since Simon and I have moved to Brighton. Our lovely if tiny flat has been suitably warmed and we have happily settled into Brighton life now I think. I have recently been contracting 3 days a week for Clearleft and as well as working on some personal projects and tech reviewing a book I am currently looking for freelance projects in the local area.
There have been a healthy amount of events since we moved, both social and tech-related, Brighton is definitely a nucleus of exciting things to do and it is great fun. It has been a bit of a conference season too, what with the awesome dConstruct directly after we moved, the great (if slightly hungover) BarCamp Brighton, followed shortly after by an equally great FOWA Expo. It has been fun meeting new people and catching up with ones I know, both those who I am in regular contact with and people who I haven't seen for years!

-
Going freelance and moving to Brighton
These few months hold some pretty exciting changes for me and Simon. Monday of last week was my last day at Torchbox, I have spent a very happy two years there but the time was right for me to move on.
As of the 10th of September I will be working as a freelancer, available to hire for semantic CSS / (X)HTML / JavaScript client-side development work, usability and IA consulting. Simon and I also plan to take on some freelance work together.
We are also leaving our two bedroom flat in its leafy Oxford suburb to make a new home in a shiny one bed in the vibrant area of the North Laines in Brighton. I am terribly excited about the move, the main emphasis at the moment though is to pack all our worldly possessions into boxes in time for the move.
-
ThinkGeek :: IM In UR Blank
ThinkGeek :: IM In UR Blank — LOL cat t-shirt!! "im in ur shop lolcat-ing your products".
-
links for 2007-05-27
-
Absolutely awesome comic about the danger of wifi and how all it really wants to do is eat your babies and take over the world!
-
-
links for 2007-04-20
-
Being a recent Mac user it would be pretty cool if i can sync my life aka my google calender to my desktop
-
nicely implemented connected selects
-
Keyboard event properties, handy reference that looks to be quite useful
-
Looks like it could be quite a nive wrapper for keyboard shortcuts, might be good for accidental presses of Ctrl+S to save large text areas
-
Mechanical automiton art exhibition - way cool!
-
-
So that was Oxford Geek Night 2

The second Oxford Geek Night last night went well and was by all accounts a success. We came across various hiccups in setting up but several totally ingenious solutions and a few friendly geeks later we were all set.
The talks were great, and in my mind they really made the event what it was. So, a big thank you goes out to all the speakers. Also in my list of thanks is our very generous sponsor Torchbox who kindly funded the event, keeping it free for all to attend.
Most of the slides and links from the talks are up online already and the remainder will follow shortly. Also to come soon are the videocasts and podcasts of the event. I'll keep you posted as to when they are ready.
The photos are now up online too. If you are uploading any then the official Flickr tag is 'oxfordgeeknight2'. If you tag them they will appear on the site for the event.

If you were at the event last night you may have noticed two women with fancy video cameras interviewing and filming, they were from BBC Oxford South Today. The media coverage has all been a bit of a surprise really, I guess when it got picked up by the Oxford Mail after the last one everyone else wanted to have an "and finally, geeks leave the house" type story! :)
Interview with BBC Radio Oxford (Wednesday 11th, 11:30):
Get Flash to see this player.
(Download Interview)
Oxford Geek Nights on BBC South Today Oxford (Thursday 12th, 18:30)
See high resolution Quicktime version (4.8 MB)
I am really keen to get other people inspired to organise their own, more specialised events. So if anyone wants to start up, say, a JavaScript meet-up, Oxford Pub Standards, Oxford 2.0 or anything really, then that would be absolutely fantastic! I would be happy to help.
I would really love to hear your feedback on Oxford Geek Nights in general and on the last event. I have set up a (optionally anonymous) feedback form, so you can let us know what you enjoyed or how we can improve the next one.
We have set up an announce only email list as a Google Group for Oxford Geek Nights, or you can use our new Atom feed to keep up with news and information.
The Oxford Geek Nights are every two months so watch this space in June/July for the next event!
-
Talks for Oxford Geek Nights announced
The talks for the forthcoming Oxford Geek Night event have now been announced. You might already know that Jon Hicks and James Webster are lined up for two great looking keynotes on Typography and Amazon web services respectively, which is very exciting. What you might not know yet is the fantastic line-up we have for the microslots ...
- Jim Purbrick - Second Life Meets The Web
- Josh Hart - The making of Diarised
- Simon Whitaker - Yahoo Pipes introduction
- Mark Norman Francis - Code review processes at Yahoo
- Nick Grandy - Semantic Mediawiki and DiscourseDB
- Marc Tobias Metten - Geocoding
- Matthew Westcott - DIY Javascript effects without Scriptaculous
- Dave Sant - Quakr, 3D modeling of the world
Update [07-04-07]: Due to illness, Norm's talk above has been replaced with Simon Willison talking on 'Why HTML 5 Matters'
So it looks to be a fun and informative event! I hope to see you there, feel free to sign up on upcoming to give us an idea of numbers.
-
Happy Naked day!
As part of CSS Naked day this site is going CSS nude for today only! I encourage you to do the same. Go on ... show off your <body>!
-
links for 2007-03-30
-
This is truely the cutest thing I have seen in a long time! ... everybody say aww! ...
-
Neat, must try this one out at some point
-
randomly came across this, looks interesting
-
convert from flash to another format
-
Internet archive supported, creative commons video sharing with no filesize limit
-
displaying custom panes at the beginning and end of a flash video dynamically could be done using this.
-
New version of Nifty Corners ... still using the b tag with inline styles though I see
-
Simon and I are big "I CAN HAS CHEEZBURGER?" fans!
-
"Diarised is a quick and simple online tool to help you pick the best time for a meeting" - meeting, or event or weekend away... cool
-
-
Hacking del.icio.us with Python
I wrote this a few weeks ago, it's a hack for del.icio.us to scratch an itch that I had. At work we have a communal del.icio.us account so that if one of us finds a link we think might be interesting or informative to the others we can post it, together with our name as a tag to the account.
This is great if you don't also have a personal delicious account, you just stay logged into delicious and use the 'post to delicious' bookmarklet, dandy. The problem for me at least was that I wanted to post to my del.icious, and only occasionally if I found something really interesting, post it to the Torchbox delicious account. In order to do that however, I had to be logged in to my account to use the bookmarklet to post to my delicious, then go to the delicious site log out and then back in again with the Torchbox details in order to use the bookmarklet again. Not optimal!
To scratch the itch I wrote a Python script that runs every 20 minutes from the crontab. I wanted the script to look at my account for link posts I had specified with a particular tag ('fortorchbox' in my case) and to take these and post to the communal account.
Realising other Torchbox-ers would likely want to use this too, I set up the script to read from a configuration file to know what user names and corresponding tags to look for. Given that all delicious api requests are done over https and require HTTP-Auth, getting the delicious user names and passwords for the accounts of my colleagues was not really a good plan. Instead, the script sucks in and parses the public RSS feed for the user it is looking at. This now means that that the only password you need is that of the communal account.
Instead of the hassle of logging out and in again, all I or any of my colleagues covered by the script have to do is post a link to delicious with the pre-agreed tag. This can be different for each user - mine is 'fortorchbox'. The script then posts this to the communal account together with a tag of the user who submitted it.
If you suffer from a similar problem of communal link sharing, to use my solution all you need is the python script - which in true modern style losing vowels in proximity to an 'r', I called snaflr - the configuration file with the names etc, and the following line in your crontab (which you can run anywhere in your server by typing
crontab -e)0,20,40 * * * * /usr/bin/python /home/natbat/applications/snafflr/sync.py
This then runs every 20 minutes. The first path is the full path to your python (you can get this by typing
which python) and the second is where you have put the script - once copied dont forget to rename the file from sync.txt to sync.py, the config file remains as .txt.I put the script and configuration file outside of my public html directories for privacy as it contains login details for the communal account.
The configuration file is then in the following format:
#Username - tag prefix - tag to look for - mainusername, mainpw username1, realNameToTag1, tagToLookFor1 username2, realNameToTag2, tagToLookFor2 username3, realNameToTag3, tagToLookFor3 username4, realNameToTag4, tagToLookFor4 ...
Each user has their own line, lines starting '#' are comments, and the line starting '-' is the login information for the communal account.
Feel free to take this script and improve it as you like, it is released under the MIT License.
-
Oxford Geek Night 2 call for proposals
As there are limited places available for microslots and demos at the forthcoming Oxford Geek Night in April, I have set up a wufoo form (I really love wufoo!) to manage talk submissions.
If you have a talk proposal please fill it out the form below or go to the wufoo form:
Powered by Wufoo -
Oxford Geeks hit the media!
It looks like the last of the Oxford Geek Nights has caused quite a stir in the media recently. I'm not entirely sure how the Oxford Mail initially came across the story but it got half a page of coverage in last Wednesday's edition (see online version or archived online version)
As a result of this I was contacted by BBC Radio Oxford, BBC South Today and Radio Oxford (Formerly Passion FM) who are all interested in covering the next one. Radio Oxford also interviewed me for about 10 minutes, snippets of which were used in the news every half hour for the next morning.
Get Flash to see this player.
(Download News snippet)
Adam from the breakfast show heard the interview I gave to the news team and wanted to interview me live on his breakfast show, although this meant me waking up at 8am on my holiday, I agreed.
Get Flash to see this player.
(Download Breakfast snippet)
With all this news coverage and potential publicity for the next event, I decided to start planning for the next one. We are looking at Mid April, likely the 11th of April for the next event.
Consider this a call for participants, I need 2 keynotes of 15 minutes and 8 Demos or lightning talks of 5 minutes each. Let me know if you are interested - nat@natbat.net
-
An excitable BarCamp
This week has just been all go! Fresh from a successful project launch I dived straight into BarCamp. BT were generous in their provision of the great venue we used for the weekend. There were over 160 people attending, roughly 70 of whom stayed overnight we think!
Co-organising BarCamp with Ian and Jason was a lot of fun, sure I was running around and I didn't get chance to have as many in depth conversations with people as I would like, but it was definitely an energetic and exciting weekend. I would do it again in a shot.
All the talks I went to were superb, I just wish I could have seen more - I was particularly upset at missing the improvisation sessions which I hear were fantastic! My personal favourite of the whole weekend was my sister Leu Downe who is an artist and not (yet) a web developer, but she had a great time and gave a presentation on how to release your inner owl to save it from being forced to produce ice cream!
Other talks (sorry if I miss any out) that I enjoyed and got something out from include:
- Design consequences by Lisa Reichelt - Fascinating technique to get everyone from the team involved in the behavioural design (the fun part) of an interface. 5-8 people sit together with lots of post-it notes paper and pens, everyone designs separately the same wireframe of the interface. After this you swap with the person next to you, annotate and improve on their design for another 5 minutes and then present what you now have to the group. The meaning behind this process is to get everyone involved and thinking about ideas of the design, development and consequences of the design.
- Project Management for busy geeks by Meri Williams - Good presentation aimed at busy geeks with little time for project management. The main point I got out of this was that planning isn't always about producing artifacts you will use later on, it is more useful as a process just to get members of the team thinking about the project.
- User centric design by Andy Budd - Proposing the idea that usability is not everything, ("The ipod would have failed usability tests") there needs to be more fun in design. Reasons behind the popularity of sites like myspace revolve around the interface being 'game' like, users are rewarded for exploring yet at the same time should be prevented from doing any serious damage to anything in the process of their exploration.
- Code reviews by Mark 'Norm' Francis - On the code review process at Yahoo! Code reviews in my opinion are important to the maintainability of a project but also as a quality assurance method within the team. Norm elaborated on the best way to perform regular code reviews with as little wasted time as possible. The thing in particular I got out of this talk is that every time an agreement is reached in the code review sessions, for example doctypes or the best way to do 'x' it is documented in a table with a reference to resolve future disputes. The code reviews Norm talked about had 3-6 people analysing the code in a quiet place away from IM, email and phones. After this they get together for 30 mins with the author (who is encouraged to say as little as possible) and discuss their findings and a moderator takes notes and keeps things on course. A list of recommendations is produced, these are addressed and then there is a followup meeting. I think this is a good process and it would be really interesting to see exactly how effective it is.
Strangely enough - I didn't realise this till writing it up just now - all the talks above that I really enjoyed are about processes!
As anyone who was there knows though, BarCamp isn't just about the talks - its about the energy created by the people that attend (and of course the now obligatory late night werewolf sessions!). The atmosphere last weekend was electric, the feedback received has been really positive which is fantastic.
Thanks once more to the generous sponsors of the event BT, BBC Backstage, O'Reilly, and Torchbox. All in all it was a very fun weekend! I met lots of really interesting people who I hope to see again, thanks to everyone who came and made it so enjoyable.
-
links for 2007-02-10
-
not often you find a dedicated snail blog in your referals, awesome!
-
Ever have problems remembering which months have 30 or 31 days? use your knuckles! I use the little rhyme, but this method seams much less prone to error!
-
Using Twitter productively
-
-
First Oxford Geek Night a success!

Thanks to everyone who came last night. I really hope everyone had a fantastic evening, we had some interesting talks and some cool demos. It was pretty tricky to judge numbers from where I was sat, but I have been told that we had over 100 people at one point, which is great!
The running order of the night went as follows ...
Keynotes
- Simon Willison - An introduction to OpenID
- Olly Willans - Demonstration of Photoshop CS3
Microslot set one
- Tom Dyson - Peastat
- Jonathan Leighton - Ruby on Rails Migrations
- Tim Almond - Wordpress as a CMS
- Gemma Hentsch - Concatenating forms, a Django extension
- Garrett Coakley - Drupal 5
- JP Stacey - Building an ultra thin CMS with XSL and Atom
Microslot set two
- Nick Birch - New Popular Edition Maps
- Artem Pavlenko - Mapnik, a map rendering engine
- Matthew Westcott - London Underground Tube map demonstration
- Bryan Gullan - Avoiding accessibility pitfalls
- James Wheare - Live bus times, a Google maps mashup
The photos from last night are online and can be found on flickr, the slides, links and hopefully audio of the talks will be available soon.
A big thank you to the fantastic speakers yesterday, to Torchbox for their generous sponsorship and to all the wonderful people who helped me out on the night.
We're planning to organise a second Oxford Geek Night in a few months time.
-
links for 2007-02-08
-
An 'interesting' usage of a maps mashup ... "A freely browsable database of prostitution in Chicago, with microformats."
-
A social site for resolutions to make the world a better place
-
-
Line-up for Oxford Geek Night
The debut event for Oxfordshire based geeks draws ever closer, this coming Wednesday at the Jericho Tavern! As you may have already read, the doors to the upstairs bar will open at 8pm and the talks will then start at about 8:30.
We now have a fantastic line-up for the evening, starting with two 15 minute keynotes on very different subjects. Simon Willison gives an introduction to OpenID followed by Olly Willans demonstrating the latest version of Photoshop - Photoshop CS3.
The set of 5 minute microslots cover a wide range of exciting topics. The first 6 cover content management, frameworks and statistics, the second set explores maps, mashups, JavaScript and accessibility.
Microslot set one
- Tom Dyson - Peastat
- Jonathan Leighton - Ruby On Rails Migrations
- Tim Almond - Wordpress as a CMS
- Gemma Hentsch - Concatenating forms, a Django extension
- Garrett Coakley - Drupal 5
- JP Stacey - Building an ultra thin CMS with XSL and Atom
Microslot set two
- Nick Birch - New Popular Edition Maps
- Artem Pavlenko - Map rendering engine
- Natalie Downe - The importance of permalinks in unobtrusive JavaScript
- Bryan Gullan - Avoiding accessibility pitfalls
- James Wheare - Oxford bus times, a Google maps mashup
There will also be plenty of time in between the talks for socialising and drinking at the upstairs bar.
Look forward to seeing you on Wednesday!
-
links for 2007-02-05
-
beginner's guide to design with front end development
-
I disagree with this article, at some point I will explain in more detail why
-
The gimp also does a good job with a .ico file
-
glimpsing into the future of CSS
-
cute
-
useful for generating gradient images
-
-
Oxford Geek Nights
A note to anyone in or around the Oxford area on Wednesday the 7th February, or even to those willing to travel .... The first Oxford Geek Night will be held at 8pm upstairs in Oxfordshire's fine venue of "The Jericho Tavern".
For more information of the event and directions, please see the official site
Oxford Geek Nights offer a chance for web developers and designers in the local area to get together, share their skills and talk about new ideas, techniques and technologies.
The format of the night will include two or three keynote talks of 15 minutes each, followed after a healthy period of socialising with a set of open microslot sessions.
I personally believe that Oxford has a thriving, talented and enthusiastic geek community. This event is a chance for everyone to finally meet up and share their skills and ideas.
-
One from the archive: resurrecting time_since()
Since the disastrous demise of my once dependable hosting company, I have lost a lot of data and subsequently broken permalinks to various entries of mine around the internets. Using the wonders of the Internet archive and the wayback machine I managed to ferret out one of my older posts that got a lot of coverage back in June 2003.
Yep, I know that was a long time ago now, I was a 21 year old, fresh faced computer scientist and this was one of the first bits of PHP I wrote and then released (the very first was a ShoutBox application), my first languages being Visual Basic and Java. I am not republishing this as an indication of my current coding ability or for any other self publicising reason. I decided to resurrect this post exactly as it was back then, mainly so permalinks could be updated now I have a more stable hosting provider, but also to provide a bit of an update as to the function's usage over the years.
Since its initial launch, the time_since() function has been translated into various different languages, both spoken (of which I can only find links to the German translation) and written programming languages - many of which are much improvised and improved implementations.
- ASP
- JavaScript
- Perl
- Python (or here)
But what I am most pleased with, if you can excuse my temporary lack of British modesty, was its inclusion in various notable applications or plugins for applications.
- Django - The popular content management framework written in Python.
- Feedster - Scott Johnson has written some very nice things about the time_since function and used it in Feedster.
- Blogroll - Keith Devens blogroll implementation, I am not sure if he released it or not though.
- Wordpress Plugins - various wordpress plugins, one by Michael Heilemann, and another by some guy who only mentions me by my alter-ego 'Simon Willison's Girlfriend' and not by my actual name.
- Wordpress core - can't be 100% certain about the derivation of this one but I'm pretty sure the timesince function has made its way into the wordpress core by way of the
human_time_difffunction. - Expression Engine - A plugin for the Expression Engine content management system written by Steve Sharpe.
- TWiki - Plugin for the TWiki engine.
- Xaraya - Another content management system written in php, with details of how to use.
So, without further ado, and with great respect to everyone who has altered, re-written and improved the function over the past 3 or 4 years ... here is the post as originally presented.
The original post ... "The time_since() function"
I have changed the function that displays the 'time since' each blog entry, managing not only to reduce it from 68 lines of code to 41, but also making it more maintainable in the process.
The basic requirements were that it should display the following:
- minutes up until 1 hour,
- hours and minutes up until 5 hours
- hours up until 1 day
- days and hours up until 1 week
- weeks and days up until 1 month
- months until 1 year
- years and months until 5 years
- years after that.
This was fine but the code was messy, with 7 if-statements used to calculate minutes, hours etc. separately.
Looking at the algorithm closer (and ignoring items 2 and 7) I decided that a better way to represent it would be through a series of time periods or 'chunks', where it displays the largest and the second largest chunks that will fit into it (eg. for 9 years 6 months 2 weeks and 1 day it would display '9 years, 6 months').
Using this data structure as the core behaviour of the function, and representing it as an array of arrays, turned out to be a much neater way of doing things. The subarrays each have 2 elements in them, with the first element being the number of seconds in that time period, and the second being the singular name for that period. The first part of the function is as follows:
/* Works out the time since the entry post, takes a an argument in unix time (seconds) */ function time_since($original) { // array of time period chunks $chunks = array( array(60 * 60 * 24 * 365 , 'year'), array(60 * 60 * 24 * 30 , 'month'), array(60 * 60 * 24 * 7, 'week'), array(60 * 60 * 24 , 'day'), array(60 * 60 , 'hour'), array(60 , 'minute'), );After this we work out the number of seconds since the time passed to the function:
$today = time(); /* Current unix time in seconds */ $since = $today - $original;A '
for' loop is used find the largest 'chunk' by cycling through the '$chunks' array and checking if the number of chunks that fit in to the time period is not zero. This is why the '$chunks' array is reversed with the largest chunk first, so that if doesn't match that one it skips to the next.// $j saves performing the count function each time around the loop for ($i = 0, $j = count($chunks); $i < $j; $i++) { $seconds = $chunks[$i][0]; $name = $chunks[$i][1]; // finding the biggest chunk (if the chunk fits, break) if (($count = floor($since / $seconds)) != 0) { break; } }By having a '
$print' variable to output, it is possible to now use PHP's string concatenation '.=' operator to add the smaller chunk to the beginning of the '$print' variable. The 'floor()' function knocks off the remainder, so 2.5 becomes 2.$print = ($count == 1) ? '1 '.$name : "$count {$name}s";By using a ternary operator here, this can cope with having 1 week and x weeks, by checking if the number of chunks is one or not.
The next item in the array, '
$chunks[$i + 1]' is the next smaller time chunk, so we need to display how many of these occur in the time period once the number of seconds taken up in the first chunk have been accounted for.The second chunk is only added if its count is greater than zero; if it is not then the '
$print' variable only contains the number of the larger chunks that occur.if ($i + 1 < $j) { // now getting the second item $seconds2 = $chunks[$i + 1][0]; $name2 = $chunks[$i + 1][1]; // add second item if it's count greater than 0 if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0) { $print .= ($count2 == 1) ? ', 1 '.$name2 : ", $count2 {$name2}s"; } }Now we can return the '
$print' variable and finish the function.return $print; }The full function can be found in this plain text file.
-
GIMP - Tutorials
GIMP - Tutorials — I have found the gimp to be way more intuitive than Photoshop, definately plan to go through some of these tutorials though!
-
The 7 hidden pages within your Firefox browser
The 7 hidden pages within your Firefox browser — "Have fun browsing through your browser’s internal features".
-
w850i and the mobile Gmail app
I finally reached the end of my tether with Orange and their customer service, continued cold calling from mobile phones, dreadful cattle-market style shops, and lack of knowledge of their sales staff. I was also paying over £100 a month for the everyday 50 plan which is about 9 years old now. It has only been 2 days but I am already much happier with T-Mobile and their flex-t plan.
The new phone is pretty sweet too, I went for the Sony Ericsson w850i in the end. Buying the phone online I got a cheaper package which encouraged me to get the web 'n walk package - always on flat rate Internet for £7.99 a month, quite a good deal I think. Any which way you calculate it, I'm paying a lot less than I used to!

Initially I really wanted a phone that ran Edition 2 of the Symbian Series 60 operating system, so I could play with the gps software that Nick wrote. I was on the phone to t-mobile tech support for quite a while till we determined that they didn't stock any, its all edition 3 now and apparently python software that used to run on edition 2 now will be a bit flaky on 3 because it has to be signed.
The battery life of the W850i (if you are playing with settings and the interweb constantly) is not quite what I would like, and the buttons are quite tricky to use at first. However, there are a lot of really neat features, the inbuilt RSS reader is lovely! and knowing that the Internet is at a flat fee gives you peace of mind.
That became especially useful when I discovered the gmail mobile app. Having battled before with security certificates and pop3 settings on my old phone just to get mail to work, this mobile application by comparison is breeze. Its lightweight, fast, utterly gorgeous!

You can browse your mail, jump to star'ed mail, use keyboard shortcuts to reply and its all very aesthetic and nicely done. If you have ever battled with Gmail on your phone either with pop3 or in a browser, this will make you life a lot easier!
To download the google mobile app, go to gmail.com/app from your phone and follow the instructions there. It is apparently best to do this from your default mobile browser instead of from opera mini so that the download can detect your mobile model. Happy emailing!
-
IEEE Spectrum: Why Software Fails
IEEE Spectrum: Why Software Fails — "We waste billions of dollars each year on entirely preventable mistakes" a look at where the risks really are.
-
It Ought To Be Simple: I'm an Idiot...
It Ought To Be Simple: I'm an Idiot... — Brilliantly written witty article on why your users arent stupid for not understanding software with usability problems.
-
Upcoming geek fun and frivolities
So there looks to be a particularly busy period of fun things to do as a geek in and around London! Not being so close to the capital I won't be going to all of them but, for your information I thought I would briefly sum up some of the happenings. The first of which is a bout of Werewolf games in a London Pub tomorrow night (Monday). Werewolf is a fun role playing social game played a lot at the moment on the geek conference scene, for more information about the game see the entry on the geekdinner site or wikipedia for information about the dynamics of the game.
This Thursday (18th Jan) holds two events! Pub Standards and the Google Open Jam. Pub standards describes itself as "Where the worlds of web and booze collide, slap-bang in the middle of London ... " - and has always been a fun group of people to meet up and chat with. This second Google Open Jam I haven't seen publicised anywhere, so I am not sure if it is an open registration but if you can get a place it is quite an original event with a decent amount of free pizza!
Three events I know little about are 'Beers & Innovation 7: Do Agencies Innovate?' (upcoming) an unfortunately sold out new-media event on the 30th January, organised by NMK. ' Chinwag Live: Wobble 2.0' (upcoming) is described as 'When Web 2.0 collides with Bubble 2.0 is the result real, sustainable business or faddish pipe dreams?', Tuesday 6th February. 'Innovation technology' (upcoming) is on the 13th February and looks to be aimed more at theory of technology and business, though I could well be wrong about that.
Barcamp London 2 is one of the events I am most looking forward to. It is on the 17th and 18th of February and follows the time-old Barcamp format of a a fun relaxed adhock mini conference. People attending are not required to present though it makes it more fun if there is that solidarity of 'so what are you presenting', there is also less pressure to have good presentation skills when everyone is in the same boat.
The future of Web Apps (upcoming) was much anticipated last year and indeed a successful fun event. However I for one am undecided if I will be attending this year, the price has been jacked up to £195 and the conference now stretches over two days. I don't doubt it will still be good, but for me I'm not sure it is worth it.
You may also be interested in the MediaGuardian Changing Media Summit on the 22nd of March. This one-day conference is 'billed as bringing together senior execs grappling with the challenges facing traditional media in the digital age'. It has an interesting array of speakers though may not be aimed at a general web developer audience.
I'm sure I will have missed out some events worth going to over the next month or two, but I couldn't finish off a listing of this type without mentioning SxSW. So, an event packed period culminating in the pilgrimage many of you will make to Texas in March of this year. I wont be attending because of prior commitments, though I'm sure I will see you at something or other soon.
One final note, there has been recent talk on the Guardian that the web 2.0 bubble may have burst. The conference they are referring to was Upload 2007 due to be held on the 20th February, the first I heard about this was that it was an event that had already been canceled from lack of numbers, inadequate publicity may well have played a part here. I however, think that from the levels of continued enthusiasm and people's willingness to meet outside of work to discuss issues, exciting new techniques and just to generally have fun with like minded people; any bubble is far from bursting!
-
Ubuntu sugar cookies
Ubuntu sugar cookies — Im not sure what a sugar cookie is but Im all for trying to make Ubuntu cookies!
-
links for 2007-01-10
-
Christian Heilmann shares tips for web developers on how to find a job worth having
-
While serverside solutions are preferable for this sort of thing, this is a nice JS solution should you need one.
-
Unobtrusive JS tutorial that I thought I had bookmarked ages ago but apparently not.
-








