Ruby :symbols understood - "A symbol is an object with a name"

Back in August
, I blogged about Ruby's symbols as I tried to get my head around what they really were. Jim Weirich made a post yesterday entitled 'Symbols Are Not Immutable Strings' which really helped solidify my understanding, his main two points being:

* Symbols are not immutable strings
* A symbol is an object with a name

Thanks Jim!

Technorati Tags: , ,

Support the new blog/RSS feed icon

Based on the Firefox RSS feed icon, (and adopted by Microsoft) is the transmitting symbol that with a big push from Feed Icons is trying to become the standard symbol that means "this is an RSS feed". I've added it to my blog today to support the effort.

Let's make RSS feeds simple enough for anyone to recognise - none of this orange XML this or RSS that...

Technorati Tags: , , , ,

Migration to Ruby for Java developers

As an experienced Java developer converting to a Ruby newbie I found the following posts from Sam Newman rather helpful in making the switch:

* Ruby For Java (and C#) Programmers, Part 1 - Conventions, methods, modules, and classes
* Ruby For Java (and C#) Programmers, Part 2 - Operators, methods, and more on classes
* Ruby For Java (and C#) Programmers, Part 3 - Introducing Arrays, Hashes and the typing system

If your anything like me having a good book by your side can really help when picking up a new language. There is one Ruby book that everyone seems to have, Programming Ruby: The Pragmatic Programmer's Guide. It really is an excellent book, I liked the first edition so much that I bought the second as well!

Let me know if you find any other resources that would be helpful to anyone else making the switch.

Another useful resource for people interested in see what Ruby is all about is Try Ruby! - an online interactive Ruby terminal that runs in a browser, created by the rather insane why the lucky stiff. Try it, you might like it!

Technorati Tags: , , , , ,

Missed your bookmarks when was down? Not if you've got Foxylicious!

If you are a regular user you will most probably know that they have had some server & database troubles over the past couple of days that caused the whole system to be unavailable for a considerable number of hours.

What you might not know is that you could have had access to them (if you are a Firefox user) if you had the Foxylicious extension installed. It maintains a copy of your links as normal Firefox bookmarks and I blogged about it back in April.

I find the Firefox extension better for posting to, but nothing beats Foxylicious for ensuring that you have fast local access to all your bookmarks should every have problems in the future.

Technorati Tags: , , , ,

DevBoi - the Ruby on Rails & web development quick reference sidebar for Firefox

If you use Firefox and develop either websites in HTML/XHTML, CSS & JavaScript or web applications in Ruby on Rails (or PHP) then the DevBoi sidebar written by Martin Cohen is a pretty handy extension to have.
A great Ruby on Rails book
Rob Sanheim has a great post introducing the new features and the offline version comes highly recommended if you ever want to develop whilst not connected to the net.

Technorati Tags: , , , , , , , ,

Increasing your USB gaming mouse polling rate with USB Mouserate Switcher 1.1 (usbmrs11.exe)

In my last post I talked about how to check your gaming mouse polling rate with a Windows utility called mouserate. You may have noticed that my polling rate was way above the standard 100Hz - in this post I'll tell you how I did it. This obviously only works with USB mice but there are not that many PS/2 gaming mice sold these days.

Important Disclaimer: Although I have not had any problems since running this patch, there have been reports on various gaming forums that people's mice or other USB devices have stopped working as a result of applying this patch. For some people it was fixed by choosing a slower patch rate but I wanted to mention this, as if you follow my instructions below and something goes wrong with your setup - your on your own... (it might be best to have a PS/2 mouse handy or know the keyboard shortcuts to revert the patch).

Ok with that disclaimer out the way, let's get stuck in and really ramp the polling speed up. First download USB Mouserate Switcher 1.1 by Anir. I had problems using the "Softpedia Mirror (US)" link but the "Softpedia Mirror (RO)" one worked fine. When you double-click usbmrs11.exe you are presented with a screen explaining what the tool can do. Clicking the "patch" button moves you to the screens that let you choose what speed you want to try. With each page it asks you if you want to change to that speed. It starts with 250 Hz/4 ms (slow), then 500 Hz/2 ms (medium), and then the fastest setting 1000 Hz/1 ms (the next page asks if you want to revert to the very slow Windows standard of 125Hz/8 ms).

If you answer "yes" to a question it patches the usbport.sys USB driver and asks you to reboot for the change to take effect. When you reboot is when you will find out if the patch has worked or if it has caused some or all of your devices to stop working.

If you have problems with any of your USB devices then try choosing a sightly slower setting first, if that doesn't work you will have to use the tool to restore the original Windows version - remember your USB mouse might not be working at this time, hence the reference to the PS/2 mouse above.

Once you've patched and rebooted, rerun mouserate to see what your new average polling rate is. Please leave me a comment below to let me know if it works (or not), and what average rate you are able to get. Also let me know if you think it makes your aiming and gaming any better.

Technorati Tags: , , ,

Check your gaming mouse polling rate with mouserate.exe

I'm not a big PC gamer but I do enjoy the odd hour online playing ET (Wolfenstein - Enemy Territory). Recently I've been disappointed with my accuracy and aiming, I just seem to always miss when in the middle of a frantic firefight.

I had read on an ET forum that a good way to improve your aim was to download and consume 'Aiming by RaZiel'. After reading some of the documentation and watching a couple of the movies in this pack I wanted to try and 'tweak' my mouse configuration.

One tip was to increase the mouse polling rate within Windows so that it would be read faster and therefore give a more accurate reading on the mouse's position. One way that you can check your mouse polling rate is with the rather handy 'mouserate' by Oliver Andreas Tscherwitschke.

It's a tiny download that contains a simple executable file that pops up a window which gives you an area in which to move your mouse around, and a list of the polled rate on the right-hand side (along with an overall average).

screenshot of mouserate window

When I first ran this program with my Microsoft optical Intellimouse plugged into the PS/2 port (via the green USB adapter) I got an average reading of just less than 100Hz. I then tried plugging the mouse directly into a free USB port and got pretty much the same readings so at least I know that the talk of PS/2 mice giving a steadier polling rate must only apply to 'true' PS/2 mice, not USB mice with PS/2 adapters.

Try it out and see what polling rate you get, I would be interested to hear what you have to say.

P.S. Have you noticed in the picture above that my polling rate is a fair bit higher than the 100Hz that I've talked about? More in a future post... ;-)

Technorati Tags: , , ,

Creating a Trac instance on Debian Linux

In a post back in October (has it really been that long?) I walked through how to install Trac on Debian Linux. This post will cover the configuration of Trac so that at the end you will have a running Trac system that you can use as a wiki, ticket manager and Subversion repository browser.

First you need to decide where you want your Trac instance to live, I wanted mine to be accessible via a sub-section of a website, but I wanted the instance to live outside of that website's directory structure. I decided on /var/www/Trac which I would link to from within my other website.

To create the instance run the trac-admin command as the root user like so:
trac-admin /var/www/Trac initenv

It will now ask you a number of questions about your environment and project:
* Project Name - enter a human-readable name for your project, this will appear on emails, webpages, etc.
* Database connection string - just hit return to use the default SQLite
* Path to repository - the directory path to your Subversion repository, note: it cannot be a remote repository with the current version of Trac.
* Templates directory - just hit return to use the default templates directory.

If all went well it should report that the environment was created successfully and will give you instructions on how to quickly test that it's working.

Now that we have created the Trac instance, we need to configure Apache to make the site available to the outside world (or intranet if that's more relevant to you). I've set it up to be accessed via a so I added the following stanza to that site's virtual host entry within the /etc/apache2/sites-available directory:

# trac
ScriptAlias /trac "/usr/share/trac/cgi-bin/trac.cgi"
<Location "/trac">
SetEnv TRAC_ENV "/var/www/Trac"

# edit trac.ini to change /trac to /trac-static
Alias /trac-static "/usr/share/trac/htdocs"

<Location "/trac">
AuthType Basic
AuthName "Trac"
AuthUserFile /some/path/htpasswd
Require valid-user

This sets up /trac to point to the Trac master CGI script, and tells the script that the instance lives in /var/www/Trac. The htpasswd file protects the whole site from unauthorised people, (make sure that the htpasswd file exists and has some users in it otherwise you won't be able to access your Trac instance).

Before you restart Apache to see your new Trac instance you need to ensure that the Trac directory structure is owned by the same user as Apache, in my case www-data. Simply run chown -R www-data:www-data /var/www/Trac to sort this out.

Now restart Apache, (/etc/init.d/apache2 reload) and then goto to see Trac in all it's glory.

There are loads of things that you can configure with Trac and general usage instructions are all available within your instance, just click 'Help/Guide' link in the top-right menu bar.

I hope this has been informative, if you have any questions or comments then please don't forget to leave a comment or trackback below!

Technorati Tags: , , , ,

Firefox 1.5 is out!

The best browser has just got better, go get it now and check out their new look website as well!

Technorati Tags: ,

Summary of last night's AgileNorth meetup - "The Game of Life Kata"

Last night was the November meetup of the AgileNorth group. It was kindly hosted by the computing department of the University of Central Lancashire, Preston. They provided a sizable room, with great presentation facilities and even sorted out some tea, coffee and cakes!

There were 10 attendees in total (which was double the size of the first meetup that I attended), and the session was run by Murray Tait & David Draper. The topic was "The Game of Life Kata".

So what is a code Kata?

A Kata is an exercise in karate where you repeat a form many, many times, making little improvements in each. The intent behind code Kata is similar. Each is a short exercise (perhaps 30 minutes to an hour long). Some involve programming, and can be coded in many different ways. Some are open ended, and involve thinking about the issues behind programming. These are unlikely to have a single correct answer. - Dave Thomas

A number of acceptance tests for the rules of the game were provided by Murray and a very bare-bones class that would make up the game itself. The aim was to pair-program the implementation of the game by making the tests pass, and swapping coding partners every 20 minutes or so.

The session went well, with everyone getting stuck in to the design of the game and what rule should be implemented next. Without internet access or a selection of Java in a Nutshell books some aspects of Java caused us to slow down at a number of points during the evening.

It was interesting to see a number of different viewpoints on how far you should implement the feature in question. If the test passes even with a trivial implementation that you know is not a full-blown solution is it ok to leave it at that?

Time passed very quickly and we stopped at one point for quite some time for a valuable discussion about the game board setup and what parts of it we were testing. We pressed on without really resolving the issue and it continued to cause us problems as we got further through the tests. This taught us that as soon as we have a question regarding the requirements we really should down tools and get with the (on-site) customer to get to the issue ironed out.

The end of the session was soon upon us and so we had a 5 minute wrap-up to discuss what we had learnt from the session. Most of that is covered above, but it was also mentioned that although the concept of the problem was simple to understand, due to the acceptance tests using arrays and ints, the implementation was bogged down in for loops, if statements, 1's & -1's rather than allowing us to progress at a higher level (and therefore faster) through the rules and complete the Kata in the time provided (7:00-9:30).

It was decided that we would continue with this Kata at the next meeting, maybe splitting the group into the two 'drivers' at the keyboard implementing the current feature whilst the rest of the group discusses the next step and any design decisions that may need to be made.

I'm looking forward to it already!

Technorati Tags: , , ,

Firefox Greasemonkey script for Yahoo! Mail

I've had a Yahoo! Mail account for years now, but I've never really been a fan of webmail, mainly due to the clunky slow interface that so many web-based email clients exhibit. Then everything changed when Google came along with GMail, I signed up for an account and love the interface, but still liked my Yahoo email address.

My main grip with Yahoo Mail is the time it takes to browse between multiple 'new' emails, I hate the page reloads for each one. Imagine my delight when I happened across a post on the Quick Online Tips blog talking about Ajax Enabled Yahoo Mail.

It mentions two ways to get a better Yahoo Mail experience, one is a firefox extension and the other is a firefox greasemonkey script. I'm a big fan of greasemonkey so I've opted for that version of AJAX Yahoo! mail by Viamatic Softwares.

Just install it like all the other Greasemonkey scripts and now in Yahoo Mail you get a little arrow at the side of each mail in the Inbox which when clicked expands to show the full email without doing a full page reload. Top one!

Technorati Tags: , , , , ,

Is there such a thing as agile jokes?

In the true spirit of KISS (Keep It Simple, Stupid) here is a joke that had us all chuckling in the office this morning (well it is a Friday after all):

A man goes to the Zoo.

The only animal there was a dog.

It was a shitzu.

Technorati Tags: , ,

Digiana Audiax II - an excellent car FM transmitter for your MP3 player

I recently bought a new car which didn't have a tape deck so I couldn't plug my MP3 player into the car so that I could listen to my latest podcasts. I couldn't live with it like this so I started to research into FM transmitters for my player.

I had heard mixed reviews regarding these FM transmitters, quite a lot of people were reporting that although they were ok, but a large amount of interference was received when travelling in built up towns and cities. Most of these transmitters can only be configured for one, four, or maybe eight different frequencies, meaning that the choice you have is severely limited.

After quite a bit of surfing I managed to stumble upon the Digiana Audiax II. It supports tuning to around 200 different frequencies which covers the full UK radio range, it's really small and comes with a car charger and a battery.

It's incredibly easy to setup and tune, I have mine tuned to 106FM as there is very little around in that frequency range in my area. I've been using it now for about two weeks and it's brilliant, the sound quality is great and it's so small and neat - I can't fault it.

I bought mine from for £28.95, I placed the order at lunchtime one day, it was sat waiting for me when I got home the next! Great price and fantastic delivery.

If you want to get you MP3 player working in your car (or anyone vehicle for that matter) then I think that this is the way to do it. I showed it to a colleague, and he bought one that very afternoon - what more can I say?

Technorati Tags: , , ,

Installing Trac on Linux (Debian Stable)

Now that you've installed a dummy Debian package for Subversion you are ready to install Trac. I wanted to use the very latest version of Trac so I opted for building it from source using the latest code via the Trac Subversion repository.

The first thing to do is install the current Debian stable Trac package, this will install all the dependencies that we need (there are quite a few):
apt-get install trac

Once that's complete, we want to remove just the Trac package so that we can install it from source:
apt-get remove trac

To be able to build Trac from source it requires the Python development libraries:
apt-get install python-dev

Then we can checkout the latest version of the Trac source code (I did this in my home directory):
svn co Trac

Then change directory into the Trac directory and as root issue the following command to build and install Trac:
./ install

This step is optional, but if you want to ensure that get the latest version, periodically run svn update from the Trac directory (where ever you checked it out to) and then reinstall it (as root):
./ install

Ok, that's the basic version of Trac installed, but you still won't be able to access the wiki, ticket management system or source code repository browser as you will need to create an instance of Trac that points at your repository and add it to an Apache virtual host, but hey, that's a topic for another post!

Technorati Tags: , , ,

A new agile blog by Gavin Hope

Kevin Rutherford posted recently about a new blog by a British agile developer called Gavin Hope. His name seemed strangely familiar, and then it dawned on me - he was one of the presenters at the Agile North conference that was held last month.

He presented a session titled "Fitting Agile Teams in a non Agile Organisation" along with his colleague Lindsay McEwan. His session was the best one of the day as I was concerned, I was impressed by Gavin's enthusiasm for trying to take a traditional development team through the transition to a truly agile one. I'm looking forward to seeing what he has to say about his team leading experiences over the next few weeks and months...

Technorati Tags: , , ,

I've fixed my Bloglines Shrinker - and so soon I hear you shout!

Thought I'd take a quick look into the issue of my broken Bloglines Greasemonkey script and spotted the issue straight away. It's a pretty simple thing really...

They've changed the title of their site from "Bloglines | My Blogs" to "Bloglines | My Feeds". So all I had to do was update the little bit of code in the script that checks the title to read "if (document.title == "Bloglines | My Feeds")" and upload the script to my website.

The script is available here, or through my original post which covered installing Greasemonkey as well as details of installing the script.

UPDATE: I've moved some files around on my server, I've not changed any of the content of this post.

Technorati Tags: , ,

Bloglines breaks my Bloglines Shrinker GreaseMonkey script

Back in May I blogged about modifying a Greasemonkey script written by Matthew Gertner over on the Peer Pressure blog.

Well the recent additions to Bloglines has stopped my script from working, all the icons and text are back to their rather large size. I wish there was an option to set the feed list text to be small but the blog post text to be big. As that's the main reason this script exists.

I'll have to see if I can figure out what's breaking it, but don't hold your breath, I'm no Javascript wizard!

Technorati Tags: , , ,

Bloglines gets hotkeys!

I was in for a treat when I got to work this morning and powered up Bloglines to catchup with what's going on in the world of tech whilst enjoying my first brew on the day.

A little message at the bottom of every page informing me of some rather handy keyboard shortcuts.
Bloglines keyboard shortcuts

This was followed up sometime later by an official announcement on the Bloglines News blog.

My personal favourite is the s key which moves you to the next sub-folder and just keeps going to the next, and the next, and the next...

The 'next article' j key seems interesting which moves the right-hand pane to the next post from that blog, but if you have a multi-page post it will skip too far - I prefer to still use the down cursor key.

The real nice thing with these keyboard shortcuts is that you can navigate around your feeds without loosing the keyboard focus on the right-hand side - I'm not sure of how many times I've pressed down on the cursor key expecting to scroll down in a long post only to find the left-hand list of blogs scrolling instead!

Great work bloglines, could you now possibly add a keyboard shortcut for 'Keep New'?

Technorati Tags: , ,

Oddiophile's Technorati Tags Bookmarklet is available here

One of my more popular posts is regarding a bookmarklet by Oddiophile that will create the html template for any number of space-separated Technorati tags.

For quite a while now the Oddiophile blog has been offline, and after quite an exhaustive search on the web I cannot find a bookmarklet that offers similar functionality.

As I use it all the time for my posts (as you can tell from the bottom line of every post) I have a local copy. I'm going to put it up for distribution, if anyone has any issues with this duplication please get in touch with me by commenting on this blog post and I'll take it down (if you have a damn good reason why the blogosphere shouldn't benefit from this rather fab tool!) :)

Ok, here you go...

Oddiophile's Rather Fab Technorati Tags Bookmarklet

Technorati Tags: , , ,

Creating a dummy Debian package for Subversion (svn)

Since I've installed Subversion, I've been looking around for a good wiki and ticket management system so that I can get the whole 'development environment' setup on my home server.

I installed Wikipedia's MediaWiki at work, after our Instiki wiki came unstuck and left me with a whole load of nothing after it decided to stop writing archives to disk for about 5 weeks! MediaWiki is a little heavyweight for what I need, so I started to look around. I noticed on the Ruby on Rails website that they had a pretty simple ticket system, and after some investigation it turned out to the the open source Python-based Trac.

Trac also has a rather pretty Subversion repository browser so it seemed perfect for the small home projects that I want to develop.

I went to 'apt-get' Trac on my Debian Stable server, only to find that it wanted to install Subversion as a dependency even though I had a later version installed from source.

The Debian package management system works great so long as you don't install any applications from source, if you do it doesn't know they are installed and so will try to install over the top of your newer version.

What you need to do is create a 'dummy package' to fool the Debian package management system into thinking that it's installed a valid package. Here's how I made a Subversion package for my latest 'built from source' version 1.2.1 of Subversion.

First you need install the equivs package, this provides all the tools to be able to build Debian packages that apt-get & dpkg can understand and install.

apt-get install equivs

Now that equivs is installed, you need to generate the templates that are used to build the package. Run equivs-control and pass in the name of the package that you want to create. In my case I wanted to emulate the Subversion package that Trac wanted to install which was named 'subversion'.

equivs-control subversion

This creates a 'subversion' file in the directory that you ran the equivs-control command from. Edit this file as follows:

* Leave the top three lines:

Section: misc
Priority: optional
Standards-Version: 3.5.10

* Change the following lines: (note: the Subversion I installed was 1.2.1, hence the "Version: 1.2.1-1" value)

Package: subversion
Version: 1.2.1-1
Maintainer: Andrew Beacock <>
Architecture: all
Description: A dummy Subversion package to fool Debian's package management system into thinking that the 'built from source' version is an official Debian package.

* Remove all these lines:

Pre-Depends: <packages>
Depends: <packages>
Recommends: <packages>
Suggests: <package>
Provides: <(virtual)package>
Copyright: <copyright file; defaults to GPL2>
Changelog: <changelog file; defaults to a generic changelog>
Readme: <README.Debian file; defaults to a generic one>
Extra-Files: <additional files for the doc directory, commaseperated>

Save the file, quit back to the console and then run the equivs-build command to build the package.

equivs-build subversion

As long as you've done everything right, it will start to generate all the install scripts that are required by Debian packages, and ends up creating an equivs directory (that can be safely deleted) and the package itself - subversion_1.2.1-1_all.deb.

Now install this package using dpkg as you have it locally and apt-get would get the wrong version from the internet.

dpkg -i subversion_1.2.1-1_all.deb

You now have Subversion registered in Debian's package management system. To prove it, run dpkg -l subversion, there should be "ii" to the left of the listing for "subversion". This means that you can now install Trac without it stomping over your existing 'latest version' of Subversion.

A future post will document the steps involved to build Trac from source, but using the Debian package management system to install all the dependant components...

Technorati Tags: , , , ,

Ruby to replace Java - or compliment it?

I've been singing Ruby's praises ever since I started researching the language a couple of years ago. I've not written much Ruby code, picked up the 1st pickaxe book, read it a couple of times, then the next year came round so I've now got the 2nd edition!

I've written a few Ruby 'scripts' (no objects or classes) and have been impressed with how quickly I have been able to get it to do my bidding compared to Java. One application running on Linux needed to read some data from a Postgresql database, generate a Windows Zip file then FTP it to a remote server. When I thought about coding this in Java I started to shiver, Java's strong point has never been it's ease to interact with the command line, and FTP libraries are not part of the java. or javax. packages.

Several people have asked "so are you saying that Java is rubbish and we should all move to Ruby?". My basic answer is "no, but I want to really get into a scripting language and Ruby seems OO enough for me to get into it fairly easily".

Dave Thomas (one of the Pragmatic Programmers) said it best recently when he said "not exclusively: you're likely to want to use Rails as well as Java." Dave has started a number of posts around this topic the first is titled "Is Ruby Better Than ...?".

Java and Ruby are similar in some respects and different in others, if I need to write some quick utility scripts or manipulate some text files then Ruby would be my choice. If I need to access some middleware message queues and fit into an existing application server infrastructure then Java would be the language of choice.

At the end of the day, it's all down to adding strings to your bow, sometimes the choice is just which strings to invest your time and effort in...

Technorati Tags: , , , ,

Feedback from yesterday's AgileNorth conference.

Note: This is a long post as I've tried to get down all my notes, please skip this post unless you really want to read all my view of the AgileNorth conference!

These are my notes from yesterday's AgileNorth conference held in Preston in the north west of the UK. It was a full day and to be honest, I was knackered! It's funny how listening and talking all day really tires you out. There were approximately 50 people, which seemed about right for the size of venue.

What is Agile? by Kevin Rutherford

The day started with introductions from Phran Ryder (chairman) and Katie Taylor (secretary) covering the format of the day, followed by the day's keynote from Kevin Rutherford, who ran his discussion as a number of agile iterations.

We all added 'requirements' (topics to potentially cover) to the board, then Kevin suggested a number of them that he would get through in the first 'iteration' (10 minute speaking block). It covered a whole host of topics, but two key factors jumped out at me:
* Measure and track the number of running, tested features completed per week (or month) so that you can track how well you are doing with some real 'hard and fast' data.
* Create an interface to management that gives them all the data that they need to do their job, but allows you to do XP within your team.

Fitting Agile Teams in a non Agile Organisation by Lindsay McEwan & Gavin Hope

This session was the main one that I was interested in when signing up for the conference and they didn't disappoint.

They started with a look at how to get a 'team' together that really gels as a team, noted that the environment is very important, they moved into a separate room from the rest of the development department and created their own workspace.

The whole team's work revolves around the 'task board', a large pin board where tasks and stories 'to do' were pinned on one side, and then moved to the 'done' side once completed. It gave a very easy way to see where everyone was up to, and what was outstanding. They have daily stand up meetings where the cards are moved so that everyone is aware of what is being worked on.

They have a 1-hour project retrospective at the end of each iteration (each iteration lasted 2 weeks) to review both technical and personal issues that had surfaced during that time. This allows the team to correct any problems early on before they become big issues. A recommended book was "Project Retrospectives: A Handbook for Team Reviews" by Norm Kerth.

Time management was driven by the task board, items are either to do or done, there is no "90% complete" concept. The daily stand up meeting includes task tracking progress. Only one task is worked on by a developer at any one time - this stops tasks backlogging with one person if they get stuck on a different task.

The whole team are involved in the planning meeting so that all parts of the team are aware of the requirements and features. The tasks are broken down into 2-4 hour lumps, this allows easier tracking and monitoring of the team's 'velocity'. A graph of the time spent delivering business value is derived from the completion of the task cards, this is then used to estimate the number of tasks the team can handle during the next iteration. They suggested that if you get someone who is hung up on the code in a perfectionist way - "the code's just not quite right..." then a good question to ask is "Who is the judge of quality?" - it could be the end user, the support team, etc. Maybe 'good enough' is ok in this situation.

They had major problems trying to implement the 'on-site customer' idea, it just didn't work for them. What was happening was that the customer was reporting a problem to sales, and they would report a solution to technical. What the customer got was usually not what they wanted. They are now trying to gain access to the real customer problems by putting their staff on placements at their customer sites.

They had problems initially with customer support requests. They were tracking the amount of time the requests where taking to resolve, this lead to support tasks being looked upon as "getting in the way of real work". Their solution to this was to add the support request as a regular task to the board, and then track how many support tasks were being completed each week. They then factored the average number of support tasks per iteration into the planning for subsequent iterations.

15% slack time was added to each iteration for continuous improvements and planning for the future. Recommended reading was "Slack" by Tom DeMarco and "Lean Software Development: An Agile Toolkit" by Mary & Tom Poppendieck.

Managing Agile Projects by Jim Sutton.

Jim's presentation focused on how and why his company needed to go agile and some of the difficulties faced when trying to do so. The title lead me to believe that it was going to be more 'down to earth' on how to manage the team on a day to day basis.

None the less it was a good presentation, here is a list of the items that I pulled from it:
* Break the cycle - do one thing VERY differently!
* Try the daily stand up meeting
* Have a "cut the crap" card that can be held up when discussions get too woolly
* Use 2 week iterations, monthly is just too long
* Sales and marketing departments are still very non-agile, this can be a problem

Refactoring by Ivan Moore & Duncan Pierce.

This was my 'developer' session of the day, where Ivan and Duncan along with the 20 (or so) audience performed a live refactoring of some very poorly written java code. Ivan was using Eclipse to edit the code, and was quite a wizard at using the refactoring tools on offer. It was mostly a discussion-led session with not a lot of things to note down but I learnt a lot about using the refactoring tools and how to spot code that was ripe for refactoring. Suggested reading was "Working Effectively with Legacy Code" by Michael Feathers and the "Refactoring Workbook" by Bill Wake.

All in all it was a fantastic day, and really re-energised me into 'the agile way'. Now I need to figure out how to introduce agile and XP into the company I work for...

Technorati Tags: , , , , , , , , , ,

Off to the AgileNorth conference tomorrow

I'm off to the AgileNorth conference tomorrow, which is "a conference for local technical and business staff who wish to learn and share their experiences of becoming and being agile."

It's a 1-day event in Preston in the north west of the UK covering a range of topics including "What Is Agile?", "Test Driven Development", and "Refactoring". I'm particularly looking forward to the "Fitting Agile Teams in a non Agile Organisation".

I'll let you know how it goes...

Technorati Tags: , , ,

Constants in CSS - it's like waiting for a bus

I'm more of a server-side programmer really, and don't deal that much in client-side stuff like CSS and JavaScript, but I try to keep an eye on what is going on in those areas as they tie so closely to the backend stuff.

I was reading the lunchroom blog a few weeks ago where Scott was talking about how he's modified Jim Weirich's Ruby Builder object to be able to express CSS files in Ruby so that you can implement things like CSS constants among other things.

Then a week later Eric Meyer posts about Shaun Inman's update to CSS-SSC. Which funnily enough is another way to achieve CSS constants (CSS-SSC stands for "Cascading Style Sheets Server-Side Constants")

It's just like London buses... ;)

Technorati Tags: , , , , , ,

Trying to understand Ruby :symbols

After reading Kevin Clark's recent post on Ruby symbols made me want to learn more about this mysterious part of the Ruby language. After writing some unit tests to ensure that a symbol really is the same object as any other with the same name, I have come to the following conclusion: symbols are immutable string objects, same named symbols share the same object and therefore the same object_id.

Kevin's example points out that they make great keys for hashs, and other indicators of what action to take (:get, :post, etc.)

Coming from a Java background, symbols have made me hit my head a number of times, this rather helpful post from Rob Sanheim helped clear things up a lot for me.

Why the lucky stiff also has a good explaination, he suggests:


Symbols are words that look just like variables. Again, they may contain letters, digits, or underscores. But they start with a colon.

:a, :b, or :ponce_de_leon are examples.

Symbols are lightweight strings. Usually, symbols are used in situations where you need a string but you won’t be printing it to the screen.

You could say a symbol is a bit easier on the computer. It’s like an antacid. The colon indicates the bubbles trickling up from your computer’s stomach as it digests the symbol. Ah. Sweet, sweet relief.

So I've got a number of different explainations of symbols, I've written 5 unit tests about them, but I'm still not 100% sure of all their uses. I suppost I just need to get Rails installed and start playing with that to really see how symbols should be used...

Technorati Tags: , , , , ,

Configuring Subversion (svn) on Linux (Debian Stable)

My last post documented how to install Subversion. This post will cover the resulting configuration of Apache, plus the creation of the initial repository.

When you install Subversion, it adds two LoadModule lines to /etc/apache2/httpd.conf. This is not wanted as the Debian version of Apache2 installs things slightly differently from the default Apache (httpd.conf is not used, all this configuration now lives in apache2.conf, plus the loading of modules is done differently). edit /etc/apache2/httpd.conf and remove the 2 uncommented LoadModule lines.

Debian loads modules a little differently that the default Apache2. It lists the available modules as individual configuration files within a mods-available directory, then enables these by linking to them from a mods-enabled directory.

We need to create the two required module configuration files that are required by Subversion (we just removed them from /etc/apache2/httpd.conf!):

cd /etc/apache2/mods-available
echo "LoadModule dav_svn_module /usr/lib/apache2/modules/" > dav_svn.load
echo "LoadModule authz_svn_module /usr/lib/apache2/modules/" > authz_svn.load

Now we need to enable them so that Apache will load them when it restarts:

cd ../mods-enabled
ln -s ../mods-available/dav.load
ln -s ../mods-available/dav_svn.load

That's the modules configured, now we need to create the Subversion virtual host entry that will point to our Subversion repository. Again, Debian does things a little different with virtual hosts, it has them listed as separate virtual host configuration files in sites-available and then enables them in sites-enabled:

cd /etc/apache2/sites-available

Due to Blogger being a pain when it comes to trying to post details containing lots of <'s and >'s, I'm including a link to an almost-copy of my Subversion virtual host configuration file. As you can see, it points the WebDAV & Subversion modules at /var/svn which will be the root of our repository, and uses Apache's htpasswd authentication to validate access.

Now we need to make the Subversion site available to Apache:

cd ../sites-enabled
ln -s ../sites-available/svn

Ok, that's Apache all done and dusted, now we just have to actually create the repository and then we are done.

The repository must be 'owned' by the same user that Apache runs as, otherwise read/write access may be blocked and all sorts of strange problems can occur, Debian runs Apache as user www-data by default:

mkdir /var/svn
chown www-data:www-data /var/svn

Now that the repository's root directory has been created, it's best to be the same user as Apache when creating the repository to ensure the files are created with the correct permissions:

su – www-data
svnadmin create /var/svn

That's the repository created, now we need to restart Apache to let the WebDAV & Subversion modules know that the repository is now available:

/etc/init.d/apache2 reload

If you now point your browser at you should see a web view of your new repository...what's that? It's asking for a username and password? Oh yes, we need to create any required users via the Apache htpasswd utility:

cd /etc/apache2
htpasswd -c svn.htpasswd your_username

Ok, try that URL again, you should be able to login and see a rather basic view of an empty Subversion repository. There is a slightly nicer skin that can be applied to Subversion to make the repository view cleaner, it's tucked away in the /usr/local/src/subversion-1.2.1/tools/xslt directory. These XSL and CSS files need to be added to the virtual host's document root, but as you may have noticed the DocumentRoot is the root of the Subversion repository. This means that you just have to import the two files into Subversion for the changes to take effect:

cd /usr/local/src/subversion-1.2.1/tools/xslt
svn import svnindex.xsl -m "Improved web interface."
svn import svnindex.css -m "Improved web interface."

Now revisit that URL again, and it should be a slightly nicer view of the repository, now with two files in it, svnindex.xsl and svnindex.css.

That's it, the repository is fully available to any user that you have created an htpasswd entry for in /etc/apache2/svn.htpasswd and who has a suitable Subversion client (TortoiseSVN and RapidSVN are two that I have used).

For full documentation on how to really use Subversion, please take a look at the O'Reilly Version Control with Subversion online book or buy the rather excellent book Pragmatic Version Control Using Subversion by Mike Mason.

Please let me know if you found this post (and the last one on how to install Subversion) useful, if so I might start to blog about Subversion even more...

UPDATE: I've moved some files around on my server, I've not changed any of the content of this post.

Technorati Tags: , , , ,

Installing Subversion (svn) on Linux (Debian Stable)

This post details my recent install of Subversion 1.2.1 on Debian Stable. The Debian packaged version of Subversion is currently only 1.1.4, but I wanted to install the latest version as it supports full WebDAV autoversioning & has the FSFS repository back end as the default.

I wanted to access Subversion via the WebDAV protocol, this requires Apache2. As Debian Stable only recently included the apache2 package, I had to update to that version first.

Note: all these commands were run as the root user.

Install Apache2:

apt-get install apache2

That installs the web server and all the required packages, it does not start Apache by default, you need to edit /etc/default/apache2 and change NO_START to 0, then run /etc/init.d/apache2 start to get the basic web server running.

When you build Subversion from source, it requires the apxs2 tool to be able to build and install the Subversion extension modules. This is hidden away in the apache2-threaded-dev package, it's not available in any other package:

apt-get install apache2-threaded-dev

Now we need to download, build and install Subversion. Download Subversion 1.2.1 and save it in /usr/local/src

Unpack Subversion:

tar zxvf subversion-1.2.1.tar.gz
cd subversion-1.2.1

We now need to ensure that all build dependencies are taken care of, plus let the build scripts know where the apxs2 tool is located (it's in a non-standard place with Debian):

./configure --with-apxs=/usr/bin/apxs2

Build Subversion:


Run the unit tests to ensure that the built version is a valid release (note: this can take quite a while - well at least it does on my poor Celeron Linux server!):

make check

Install the Subversion binaries and libraries to the correct places:

make install

OK, that's Subversion installed, but it's not available yet, we still need to config access to it via Apache, and create the initial code repository. Please see my next post on how to do this...

Technorati Tags: , , ,

Mr. IT Conversations (Doug Kaye) discovers my podcast post

Just took a quick look through my StatCounter logs, and found a strange link from Google Groups pointing at my recent post about the podcasts that I listen to. I followed it through to find Mr. IT Conversations himself, Doug Kaye, thanking me for my review:

"There are new blog postings like this one *literally* every day, but I particularly liked what Andrew had to say"

Cheers for the kind words Doug!

Technorati Tags: , , , , ,

A list of the podcasts that I subscribe and listen to

Peter Cooper asked a few days ago about what podcasts people are subscribing to. Here's my list:

IT Conversations
IT Conversations got me into podcasting, it's the original and the best for anything to do with technology. They have loads in interesting recordings, the best ones for me are recordings of presentations given at conferences like eTech and Web2.0. If I could only subscribe to one podcast it would have to be this one.

For Immediate Release: The Hobson and Holtz Report
Neville Hobson and Shel Holtz are two communication professionals who discuss public relations, corporate communications and how that intersects with technology in a twice-weekly show, each show is about 1 hour in length. They normally discuss what's happening in the blog and podcasting worlds including any new tools or sites that are of use in tracking what is going on. Shel and Neville get some great banter going and so this podcast is one of my favourites.

Lee Hopkins' Better Communication Results
A short weekly podcast by Lee discussing communication issues and how you can improve your communication results. Lee has a very entertaining style and his podcasts are always a pleasure to listen to.

Gillmor Gang
The Gillmor Gang has been podcasting for quite a while, they were originally hosted as part of IT Conversations but have now moved off into their own 'space'. They are five industry experts who have been around the block a few times discussing recent technology issues (e.g. Apple/Intel, Gnomedex, RSS, Attention). They normally have some good disagreement going, this extends the context of the item in question as you get a more balanced view.

Gillmor Daily
Similar to the above Gillmor Gang, but hosted by Steve Gillmor and a guest or two.

A fortnightly show that looks at Linux and open source. It's hosted by four British guys, with lots of swearing and foul language. They normally interview a lead developer of an interesting open source project, and discuss various distros, applications, etc. I find it a pretty good, light-hearted look at the open source world.

Manager Tools
A weekly podcast on how to be a better manager. The two US hosts have a lot of managerial experience and give a very informative and educational show. They are upbeat presenters, and present real stuff that is actually useful. I have particularly enjoyed their most recent editions that covered how to host more effective meetings.

Ruby on Rails
A podcast dedicated to providing information about Ruby on Rails. It covers new tools, modules, and tips & tricks for Rails, interviews with key players in the Rails world among other things. There has only been two of them so far so I'm not sure just how good or useful this one will be.

BayCHI is the San Francisco Bay Area chapter of the ACM Special Interest Group on Computer-Human Interaction (SIGCHI). They have a number of interesting recordings of lectures by industry experts in the web world including David Sifry of Technorati, Stewart Butterfield of Flickr, and Scott Berkun of ex-Microsoft.

Agile Toolkit
I haven't listened to this one yet, but it's got a good list of recordings with various people from the agile world.

Please let me know if you have found this list useful, and if there are any that you are aware of that you think I would be interested in.

Technorati Tags: , , , , , , , , , , ,

Pretty printing Java classpaths using Ant's pathconvert task

Lance Hankins posted on Saturday about more readable classpaths using the <propertyregex> task. It jogged my memory back about 4 years when I was trying to solve the same problem. This was back in the days of Ant 1.4.1 and just before the existence of the optional Ant-Contrib package. Back then I was considered a bit of an Ant Meister by my colleagues as I managed to spend hours tweaking the smallest of things in my lovingly created Ant build environment searching for perfection...

So how did I solve this particular issue? A clue is in the title of this post, I used the <pathconvert> task, which is normally used to convert lists of files, directories, etc. and convert them to a different platform's style. So path separators using Windows ';' get converted to Unix ':', etc. But you can also use it to convert the path separators to something else, in my case a nicely formatted string for displaying in a printable form.

Here's the code:

<!-- get the source compile classpath in a printable form -->
<pathconvert pathsep="${line.separator}| |-- "

The original classpath is referenced in 'path.classpath.compile', and the newly formatted classpath is saved in 'echo.path.compile'. The magic is the pathsep statement. This says that the path separator (the ';' or ':') is to be replaced with a new line (CR or CRLF depending on operating system) followed by some characters that make the listing look nice.

To display your pretty printed classpath just use:

<echo message="|-- compile classpath"/>
<echo message="| |"/>
<echo message="| |-- ${echo.path.compile}"/>

This gives the following output:

[echo] |-- compile classpath
[echo] | |
[echo] | |-- /tomcat/common/lib/jsp-api.jar
[echo] | |-- /tomcat/common/lib/ant.jar
[echo] | |-- /tomcat/common/lib/jmx.jar
[echo] | |-- /tomcat/common/lib/commons-collections-3.1.jar
[echo] | |-- /tomcat/common/lib/commons-dbcp-1.2.1.jar
[echo] | |-- /tomcat/common/lib/commons-el.jar
[echo] | |-- /tomcat/common/lib/commons-lang-2.1.jar
[echo] | |-- /tomcat/common/lib/commons-pool-1.2.jar
[echo] | |-- /tomcat/common/lib/tools.jar
[echo] | |-- ...

So there you have it, nicely formatted classpaths using only standard Ant tasks.

Technorati Tags: , ,

Add fresh RSS content to your website with Feed Digest

Peter Cooper in the UK has just launched Feed Digest, the successor to the very popular RSS Digest.
It's a tool that allows you to put a section of HTML on your website which is powered by one or more RSS feeds so it means that your website is updated by these RSS feeds.

Here are a number of things you could do with it:

* Show the latest BBC news.
* Display your latest 10 bookmarks.
* Display your latest blog post in your home page.

I haven't thought of my use for this yet, If I add too much other data, the blog posts will disappear into a sea of links, but it's an interesting service none the less.

The other thing that is interesting about this service is that it's powered by Ruby on Rails. This is a Ruby-based web framework that I've been reading about lots but haven't got into yet. There are quite a few US-based sites that use it, but Peter's is the first UK one that I've heard about.

Technorati Tags: , , , ,

Google maps gets even better with 'Hybrid' mode!

I've been using UK Google Maps as my mapping website of choice for a while now. The road layouts are so clear and it's great to be able to drag the map around.

Peter Cooper has pointed out this morning that it's just got even better, now overlaying the road names on top of the satellite view. Check out this map of Ormskirk (the town where I live) to see what I mean.

All I can say is "wow".

Technorati Tags: , , , ,

Great project managment podcast by Scott Berkun

Finished listening to a great podcast this morning on my way to work. It's an audio recording of a presentation that Scott Berkun gave to BayCHI on "What To Do When Things Go Wrong: Saving Design Train Wrecks".

Scott is an excellent presenter and it is both entertaining and informative. He discussed a whole range of topics on program/project management and how to save death march projects.

I really enjoyed it.

Technorati Tags: , , ,

Firefox Greasemonkey security update

Just wanted to let anyone know that uses Greasemonkey that a security flaw has been found in version 0.3.3 and so it's been updated to version 0.3.5. Make sure you update your Greasemonkey as soon as possible to keep you safe.

Technorati Tags: , ,

How to use HaloScan's TrackBacks

Last night I detailed how to add trackbacks to Blogger, a free service provided by HaloScan. In this post I want to cover how to actually use trackbacks to enable the conversation.

So you've read a blog post that you want to comment on. You want to say more than just 'great post!' but don't want your finely crafted response disappearing into someone else's comment bucket. Not only would this be never found by your blog subscribers, but it's also difficult for you to see if anyone is adding to the comment discussion.

Enter trackbacks - a way for you to inform the original blog post that you have made a comment on your own blog, and that they are regarding the same topic of conversation.

How do you actually use them then I hear you ask?

Trackback URL

First of all, make sure that the original blog actually has Trackback capability. If you can't see a 'Trackback' link mentioned at the bottom of the blog post, that author (or blogging system) doesn't support trackbacks, so you might as well stop now. If it does support them, click the link, you will be taken to a page that provides a trackback URL to 'ping'.

Permalink URL

Back on your own blog write your response as a regular blog post, and publish it as normal. You will need the 'permalink URL' to your entry, this is the URL that will take you straight to this particular post. On Blogger you can get to the permalink version of a post by clicking the 'post time' given at the bottom of each post listed after the author's name.

Trackback Pings

Login to HaloScan, click 'Manage Trackback' in the 'Members' menu on the left-hand side. Choose the middle tab 'Send a Trackback Ping' as you want to inform the original blog that you have posted a response on your blog. Now you need to do a bit of 'cut and paste' from both blogs, I'll list each field in the HaloScan 'Send Trackback Pings' form, and what to put in them:

* Your Blog Name - This should already be filled in as you provided this information when you signed up for the service.

* Your Permalink URL - This is the link that goes straight to your blog post, details of how to find this are given above.

* Your Post Title - I copy and paste the title of my blog post provided on the permalink page.

* Your Excerpt - A short paragraph from your blog post, I try to find the most relevant section of my blog post that covers the original topic.

* URLs to Ping - This is the 'magic' step, you put the Trackback URL that you found on the original blog here, this is the location that HaloScan will tell that you have responded to the conversation.

Once all that is filled out, click 'Ping Now' and let HaloScan do the rest.

That's it!

Your trackback is now in place and the relevant blog has been notified of your post. You can notify multiple blogs of your post by putting additional trackback URLs in the 'URLs to Ping' box.

If you revisit the original blog post you should see that the number of trackbacks to that post has gone up by one, if you view the list of trackbacks you should now see your excerpt with a link to your blog.

Technorati Tags: , , ,

Adding TrackBacks to Blogger using HaloScan's TrackBack service

After being an RSS consumer for a while I started to pay attention to 'TrackBacks'. They are a way to allow you to comment on your own blog regarding someone else's post, but inform their blog that you have done so. By using this feature you can continue the 'conversation' without having to leave comments on the original blog and remembering to check back every now and then to see if someone has replied to you.

Blogger doesn't including this feature but you can add it in easily by using a free service provided by HaloScan. I added the trackback feature quite a few weeks ago, I'm going to try and document the steps I went through as I know that Lee Hopkins has had some trouble recently, and my friend Robert Baillie is too lazy to figure it all out himself!

The first thing to do is go to HaloScan and register to become a member. Once you are signed up and logged in, click 'Instructions/Code' in the 'Members' menu on the left-hand side.

Select 'Blogger' from the options list, make sure 'Display trackback code' is ticked, then click 'Next', DO NOT click 'automatic install' as it may alter your Blogger template without letting you know what it has changed (I seem to remember that this didn't work for me anyway).

You now need to edit your blogger template in a separate tab (or window) so that you can add the code that will enable trackbacks for each of your blog posts. Open your blogger dashboard, click the name of your blog, then click the 'Template' tab.

Back on the HaloScan site, follow the instructions for 'Step 1', I have placed mine after the last '<link rel=...' statement, before the '<style type="text/css">'.

Next you need to add the 'Trackback' label to each post. This is achieved by looking through your template until you find the section '<p class="post-footer">', within this is the commenting template code which we will add to. Find the line ending 'Comments (<$BlogItemCommentCount$>)</a>', you will be adding the trackback code here.

Back on the HaloScan site, examine the code in the textbox in 'Step 2: Automated for Blogger (or BlogSpot) Users' and you will see that it contains a '|' roughly in the middle of the text. Copy all the text after the '|' and paste it in your blogger template at the end of the comments section as described previously.

Follow 'Step 3' on the HaloScan site if you wish, it's just a little advert graphic telling your readers that you are using the HaloScan service, I've added mine at the bottom of my right-hand menu.

Now made sure you 'Save Template Changes' and then 'Republish' your blog otherwise your new TrackBack service will not be available.

That's it, you are now using Blogger's commenting system & HaloScan's Trackback system so you really can now 'join the conversation'.

If you have any problems with any of these instructions, please leave me a comment as I performed this operation some time ago, and I'm writing this mostly from memory (and revisiting the HaloScan site).

Happy Trackbacking...

Technorati Tags: , , , , , adds tagging bookmarks for other users

This post on the blog caught my eye recently, a new
feature has been added that allows tagging a bookmark for someone that you think might be interested in that webpage.

You tag the bookmark 'for' someone else by using the 'tag:<username>' syntax, for example to tag a bookmark that you think I might be interested in use 'tag:abeacock'. To see the bookmarks that other people have tagged for your interest, go to

An RSS feed is provided on that page so that if you subscribe to it, it will keep you informed if anyone is tagging bookmarks 'for' you.

By using this feature you can pass around bookmarks that you think your friends and colleagues would find interesting and/or useful.

Now I just need to wait for my mate Robert Baillie to become a user (if he's not one already!) so that I can pass relevant bookmarks his way...

UPDATE: Just visited Rob's blog and found that he is already a member!
He'd better get ready, the bookmarks are going to start flooding in...

UPDATE: 'for:<username>' is only valid in the 'tags' field.

Technorati Tags: , , , ,

Nice podcast mention from Lee Hopkins' Better Communication Results

I have just listened to Lee Hopkins' latest podcast tonight and was delighted to hear not only that he was mentioned me, but that he gave my blog a favourable review!

I've been enjoying Lee's 'Better Communication Results' podcast for quite a number of weeks now, having been referred there from the rather good 'For Immediate Release' podcast produced by Neville Hobson & Shel Holtz.

Thanks again for the mention Lee, just hope I can keep up the quality of posts that gave you such a good impression!

Technorati Tags: , , , , , ,

Even more blog usage statistics via StatCounter

Lee Hopkins (who hosts an excellent podcast on business communications) posted a comment to my last post about MyBlogLog with a suggestion to also try out StatCounter for some excellent website (and therefore blog) statistics.

It's a cookie-based system, with a small amount of JavaScript that is inserted into each and every page on my blog (easy with the use of the Blogger template). It can then report all sorts of interesting information regarding number of visitors, returning visitors, browsers & OSs used, resolutions, etc.

I really need to start posting to my blog a bit more frequently, I've got a bit stuck in a rut lately, not really trying out new stuff and so my blogging has suffered.

Maybe these stats will show that people do read this blog, and that might give me the kick I need, who knows... :)

Technorati Tags: , , , , ,

Track outgoing links on your blog with MyBlogLog

I read an interesting post on Successful Blog last night that mentioned a site called

It's a site that with a little scriptlet that you drop into your blog template allows it to track what links on your site have been clicked, so you can see what links your readers are interested in.

I've only just added it to my blog, so I've nothing to report yet but if I get any interesting statistics I'll drop them here.

Technorati search engine for Firefox

If you use Firefox then you probably use the Google search box in the top left corner. If you want to add Technorati to the list of search engines in the drop-down box then download's beta Firefox Technorati search plugin.

Technorati Tags: ,

How to create Technorati tags

Each of my blog posts has a list of relevant Technorati tags that makes it easy for Technorati to categorise my posts, hopefully generating more readers of my blog. I read about Technorati's tagging system a while back, but didn't really want to handcode the HTML at the bottom of each post.

I set about searching the web to see if anyone else has the same issue and can across the Oddiophile blog. There is a post from January which provides a bookmarklet that does all the work for you.

You drag the bookmarklet link to your bookmark toolbar (that's the installation process!), then whenever you want to create some tags, you click the bookmarklet, type in the tags with a space between each one, click 'OK', then copy the resulting text and paste it into your blog post.

That's it, nicely formatted Technorati tags, without any of the work or possible typing errors!

Technorati Tags: , ,

Foxylicious hack for experimental popups

After receiving some help from my mate Robert Baillie, I've finally managed to finish my 'hack' to Foxylicious (v0.4) to enable the experimental interface when you right-click and choose 'Add to'. This gives a slightly larger window than the default one but includes the recommended, popular, and your tag lists making it easier to categorise your bookmarks.

So why use this over the experimental bookmarklet provided by For a start I find it much easier to right-click than to navigate to a bookmarklet up at the top of the screen. Another reason is that if you are using Windows (XP at least) then with certain tabbed browsing settings the popup window goes behind the current window (it doesn't do this under Debian). I also wanted to give hacking an extension a go, and this seemed an easy way to try it out.

I can't be bothered trying to create a full extension, and don't want to take credit for the excellent Foxylicious, so to use my hack you need to first install Foxylicious, browse to your Firefox profile directory, then browse to the Foxylicious extension folder (extensions -> {32537848-7D38-4ee2-B5A2-47562E69C59E} -> chrome) and replace the foxylicious.jar with this one.

Restart Firefox, then go to the Foxylicious config screen ('Tools' -> 'Foxylicious') and if everything has worked correctly there should be an option for 'Use Experimental Interface', tick that box, click 'OK' and the next time you right-click and choose 'Add to' it will use the experimental interface.

Oh just one more thing, any text that you have selected on the webpage will be entered into the 'extended' field in the popup.

Enjoy and let me know if you find it useful! I'm now going to pass this on to Dietrich Ayala, the author of Foxylicious...

UPDATE: I've moved some files around on my server, I've not changed any of the content of this post.

Technorati Tags: , , , ,