I am quite sure that nobody cares about this except for me, unless they happen to have a similar scanner to mine. I've had to do this process about 5 times now on different installs. I can guarantee that it works for Fedora, Debian, Ubuntu and Mint. I thought i'd share it because i'll probably need it again and someone else might find it helpful.
First you need xsane to be able to scan things at all.
sudo apt-get install xsane
Plug in your scanner by USB. Attempt to scan by typing scanimage. It won't work, but you need to see the error message.
scanimage
[gt68xx] Couldn't open firmware file (`/usr/share/sane/gt68xx/PS1Dfw.usb'): No such file or directory
scanimage: open of device gt68xx:libusb:004:002 failed: Invalid argument
See that PS1Dfw.usb? You need to get that file from http://meier-geinitz.de/sane/gt68xx-backend/ but be aware that your computer might ask for a different file such as ps1fw.usb or ps1fw.usb. Whichever it is, find it on the page and click it to download.
Assuming it's gone into your Downloads folder, move it to the right place.
sudo mv ~/Downloads/PS1Dfw.usb /usr/share/sane/gt68xx
Now try the scanimage command again. With any luck your scanner will burst into life and a whole load of crazy gobbledegook will splurge into your terminal window. This is the picture your scanner is seeing, trying to be displayed as text! Don't be afraid to Ctrl-C to stop it once you see it working. Or you can just wait for it to finish.
You can also do this to ensure that your scanner is configured correctly:
scanimage -L
device `gt68xx:libusb:004:002' is a Mustek Bearpaw 1200 CU Plus flatbed scanner
Now to actually scan something! Open up The Gimp and click File -> Create -> XSane -> gt68xx:libusb:004:002
It comes up with this super ugly XSane interface, where you can make a preview, choose the scan area, fiddle with the colour settings and DPI settings, and scan an image.

When it's done, it'll come back to The Gimp ready for you to edit the scanned image.
Protip: If you lose one or more of the XSane windows, you can get them back again by going to the Window menu of XSane and ticking on the ones you need.
Posted: July 10th, 2010
Categories:
computer,
geeky,
linux,
unimportant,
useful
Comments:
View Comments.
As of Monday, 5th July, these are the 38 pins currently available on Gowalla, grouped by category. I just made this because it's sometimes hard to see what all the pins are at a glance.
If you're curious about Gowalla, see my other introductory post: Gowalla tips.
Installing Gowalla
Checking in
 |
Wanderer |
Check in at 5 different Spots to receive the Wanderer Pin. |
 |
Sightseer |
Check in at 10 different Spots to receive the Sightseer Pin. |
 |
Ranger |
Check in at 25 different Spots to receive the Ranger Pin. |
 |
Discoverer |
Check in at 50 different Spots to earn the Discoverer Pin. |
 |
Explorer |
Check in at 100 different Spots to receive the Explorer Pin. |
 |
Wayfarer |
Check in at 250 different Spots to receive the Wayfarer Pin. |
 |
Voyager |
Check in at 500 different Spots to receive the Voyager Pin. |
 |
Epic Voyager |
Check in at 1,000 different spots to receive the Epic Voyager Pin! |
(more…)
Posted: July 5th, 2010
Categories:
geeky,
gowalla,
interesting,
unimportant
Comments:
View Comments.
This weekend the world went mad for Tupperware Boxes.
Key output:
Some rather bizarre songs:
My dog's favourite thing is my #tupperwarebox, it's full of treats and nom, she behaves so well when it's around, I think I'll tie it on.
I've got a massive #tupperwarebox it's got a special lid that clicks and locks
Come on and let's rock! Everybody let's rock! Everybody in the whole cell block was dancing to the #tupperwarebox!
How I love my little #tupperwarebox! You can a-store my cheese, you can a-sit on my knees, feels like a picnic right here at home…
A quiz: "Which #tupperwarebox would you be?"
A twitter retweeter bot: @tupperwarebot – the cool thing about this was i learnt how to use Yahoo Pipes and made a pipe that finds relevant tweets and manipulates the stream to become retweets with the hashtag #tupperwarebox
A Justin Bieber in a #tupperwarebox which gained the @tupperwarebot a lot of Justin Bieber fans!

This is actually quite disturbing when i found there is a rumour that Justin Bieber got stuck in a toy box at age 7 and suffers from claustrophobia. But anyway, the fans seem to like it. They appreciate the randomness of it and came up with the hashtag #justininatupperwarebox!
Finally, there is a Facebook group: Tupperware Box! If you are a fan of Tupperware and/or pure random nonsense, please don't hesitate to join! :D
Quite often i find myself wanting to resize a whole directory of images. Rather than opening them all in the gimp, i do it through the command line. I seem to do this often enough that it's worth recording here, for my own reference as well as for anybody else who would find it useful.
First of all, you need imagemagick.
sudo apt-get install imagemagick
Change directory to where the images are and create a subdirectory for the resized versions.
cd ~/Photos/2010/04/05
mkdir resized
My phone likes to put spaces in file names which really confuses things, so i convert them to underscores. You can skip this step if your filenames contain no spaces.
for image in *.jpg; do mv "$image" `echo $image | tr ' ' '_'`; done
Now for the clever bit: i run convert command on the image files, resizing them to 1024px and saving with a quality of 80%.
for image in *.jpg; do convert $image -resize 1024 -quality 80 resized/$image; done
Lovely wonderful linux! :D
One thing to note: it always resizes along the top edge, which may not be the longest edge. If you have a portrait file which is 1536×2048 it comes out at 1024×1365 (not 768×1024 as you might have expected).
The resize option can take a percentage, so if you know all your images are the same size then you could just send a 50% to reduce to half size.
for image in *.jpg; do convert $image -resize 50% -quality 80 resized/$image; done
Imagemagick is super-incredible-awesome so there probably is a way to deal with differently sized images at different orientations. If anybody knows, please add it in the comments! :)
Posted: April 5th, 2010
Categories:
computer,
geeky,
linux,
photos
Comments:
View Comments.
I have recently had the privilege of being accepted as an apprentice to software craftsman and philosopher Enrique Comba Riepenhausen. This is part of Eden Development adopting a craftsmanship approach to software creation.
I am very excited at this new development in my career. It's going to be hard work because i have a lot to learn, but i am pleased to have made the commitment and to know that i have someone who is playing a very active part in my personal and professional development. Funnily enough, the more i learn, the more i realise how little i really know. The first task that i have been set as part of my apprenticeship is really showing me that.
Eden Development has given me a blog to talk about my progress during my apprenticeship. So i have decided that my apprenticeship blog will become the place that i talk about my technical and coding interests, leaving this blog to be more personal. So if you are interested in me from a technical point of view, please follow edendevelopment.co.uk/blogs/aimee.
There are actually now five apprentices at Eden Development. If you are interested in software craftsmanship it is well worth looking at the Eden staff blogs aggregation to read all our thoughts and experiences on our own journeys.
Posted: December 15th, 2009
Categories:
apprenticeship,
geeky,
software crafting,
work
Comments:
View Comments.
The following comes from a funny (and slightly weird) conversation i had on a walk with a colleague this afternoon. This is literally the way we often talk when we go out for our walks around the fields of Barton Farm! One day we're probably going to have a day when we only speak in Ruby!
@heaven = Heaven.instance
@father = God.trinity[0]
@earth = Universe.galaxies.find_by_name("Milky Way").solar_system.planets[2]
@father.open_connection do
@father.current_location.should == @heaven
@father.name.should be_hallowed
kingdom = mock_model(Kingdom)
Kingdom.stub!(:new_for).with(@father).and_return(kingdom)
kingdom.should_receive(:come!).and_return(true)
@earth.should be_like(@heaven)
@earth.current_population.each do |person|
person.should_receive(:bread).daily
@father.should_forgive(person) && person.should_forgive(:others)
@father.should_not lead(person).into(:temptation)
@father.should deliver(person).from(:evil)
end
while true do
[Kingdom, Power, Glory].collect do |klass|
klass.all.should be_attributed_to(@father)
end
end
end
Shame i haven't updated for such a long time. I was unable to log into my blog for a while, and even when i fixed it i couldn't think of anything to write to make a suitable come-back! Hopefully this satisfies! :)
Posted: October 21st, 2009
Categories:
amusing,
geeky
Comments:
View Comments.
Sometimes it's excellent fun to work with somebody to produce a website in a day. With no requirement for ongoing support, just get it up and running, instant gratification. In a way, it says, "Look what we can do when we set our minds to it!"

winchesterwebscene.co.uk
Yesterday, @sydlawrence phoned me to ask if i'd like to help make a new site for the Winchester Web Scene. Without a second thought, i said, "DEFINITELY!" We got together at 3pm today at the Bridge Patisserie. We drank lots of coffee, went on to the Bishop on the Bridge, then went back to Syd's house and ate pizza. We got the whole site designed, coded, integrating with Twitter, Flickr, Google Maps, Gravatar and Campaign Monitor for email subscriptions, with a blog plus comments, events list and RSS feeds … in about 5 hours.
It was nice that two Winchester web companies, Marmalade on Toast and Eden Development were able to combine talent to work on a fun social project together. The two of us had a great time making it!
The site gives a far greater prominence to the Winchester Web Scene than the old Ning site did. Still in its first few hours of existence, the site has already had 71 unique visitors. The future of the Winchester Web Scene is looking very bright!
The next event is a barbeque at the Hyde Tavern on the 6th July from 7pm. If you live near Winchester and are interested in anything to do with the web, you're very welcome to come along! :)
Having just installed Rails on Ubuntu tonight, and reminded myself how utterly horrible the Rails scaffold looks (it's supposed to!) i thought i might have a look at Hobo.
Hobo builds upon Rails, brings in a few plugins, makes it even faster to do things, and looks pretty good right from the start.
(more…)
Posted: June 12th, 2009
Categories:
geeky,
interesting,
ruby on rails
Comments:
View Comments.
I recently installed Ubuntu Jaunty Jackalope and hadn't yet got around to putting Rails on to it.
Installing Ruby and Gems and Rails and getting them all to work nicely together can be a pain, so i'm happy to say i managed to go from nothing to Rails installed and working in 14 minutes this time! Thanks very much to Installing Ruby on Rails on Debian/Ubuntu for most of the tips. Here's how it panned out for me:
(more…)
Posted: June 12th, 2009
Categories:
geeky,
linux,
ruby on rails,
ubuntu
Comments:
View Comments.
Alexander Lang has written a great article about why CouchDB is not compatible with ActiveRecord, and why you should not try to coerce CouchDB into mimicking a relational database. It really is a very different thing altogether: The case of ActiveRecord vs. CouchDB
In my experience of CouchDB i first tried out ActiveCouch because of my familiarity with ActiveRecord. I soon came across problems because it was trying to make CouchDB something that it is not. As i exclaimed at the time, "LOL. ActiveRecord this is not!"
I had far more success with couchrest which is a much closer CouchDB wrapper, enabling CouchDB to be used as it's intended: as a RESTful interface with map/reduce views.

Recently i have been reading Domain-Driven Design by Eric Evans. Through reading it my understanding of Rails – and web programming – has completely turned around. My thinking used to be entirely database-centric. I saw Rails as little more than an easy access into the database. For ages i didn't even realise that you could have models that weren't connected to a database table!
Now my thinking has changed and i consider the primary focus to be the domain model. I think about the classes and the design patterns that apply to them. I consider how they fit together, how they communicate with each other, and the boundaries between the core domain and subdomains. In my mind, the database has gone from being the most important thing to being just a method of persistence for the data in the domain model.
When you think of things this way round you are less likely to get hung up on the differences between ActiveRecord and CouchDB. You work out your domain, design the classes and then think about the most appropriate database platform to support your model.
Update: I've just come across a useful article that provides three methods to achieve a has_many relational structure in CouchDB. CouchDB "Joins" by Christopher Lenz.
Posted: April 10th, 2009
Categories:
books,
couchdb,
geeky,
ruby on rails
Comments:
View Comments.