John's Adventures

Archive for the ‘My Own Software’ Category

John’s Background Switcher 3.2 Goes Live!

John’s Background SwitcherAs my good lady will tell you, most of my evenings and weekends over the past couple of months have been taken up working on the next version of John’s Background Switcher and at long last I’ve drawn a line under it and released it. You can download it at the usual place.

I’ve really enjoyed working on this version for several reasons. Firstly – as I mentioned before – I’ve been using FogBugz to its full potential to manage the development process, the specifications, every piece of work I’ve done, emails to and from users with suggestions or problems, and the discussion forum functionality to manage beta testing. FogBugz is a joy to work with, has made my life infinitely easier and the quality of this version of JBS has been helped greatly by it.

I also took the opportunity to redesign the program icon (you can see the full sized Vista version at the start of this article) which was rather fun. I used a program called RealWorld Icon Editor which made it easy to create a full 3D model of the icon and export it to the various formats I needed. If I had more time I’d have designed all the menu icons using it too but since I didn’t I opted to use some of the graphics created by Mark James in his superb silk icon set. And they’re free too! :)

I’ve fixed loads of bugs and added a host of new features along with as many requests as I could do without compromising the simplicity of JBS. I wrote about my favourite new feature – snapshot scrapbooks – the other day but there are plenty more things in there that make it a lot better. I also added two new photo sources in addition to Flickr and Phanfare – namely smugmug and Google Picasa web albums. As an aside, I particularly like smugmug and suspect I’ll start using it to manage my own photos instead of Flickr.

I spent a lot of time speeding things up. For example the number of people using multiple monitors continues to grow, and if you’re using snapshot scrapbook mode you could end up with around 10 pictures on each screen, so 20 or 30 in total. If all these photos haven’t been downloaded already (and therefore cached) then that could take quite a while – so it goes without saying that they need to be downloaded asynchronously and now they are across all modes. High memory consumption was also an issue with the previous version and I’ve put a lot of work in reducing that problem.

I now digitally sign the application itself as well as the uninstaller (in addition to the installer which I signed in the previous version). This may not mean a lot to most people, but Windows Vista prefers digitally signed apps (for one thing) and it also means that you can be sure that when you install JBS it hasn’t been tampered with by evil forces.

I’d like to take the opportunity to thank the people who helped me by beta testing JBS and providing me with lots of bug reports and very useful feedback. I know you’ve got far more interesting things to do than find bugs in JBS but I really appreciate the help. So thanks guys! It’s made my task a hell of a lot easier knowing that a lot of issues I’d never have found are now fixed so everybody else gets the benefit.

Anyway, there’s a host of cool new features in the new version of JBS so go and give it a try. It’s completely free and if you don’t like it, just uninstall it and it’ll remove every trace of itself from your computer. You can’t lose! :)

A Snapshot Scrapbook Of Your Photos

I’m just putting the finishing touches to the new version of John’s Background Switcher (due out in a week or so) and I thought I’d write about one of the cool features I’ve come up with for this version. I’d seen the idea of a photo pile in screen-savers before and thought it would be pretty slick to add it as an option to the mosaic and montage modes the current version supports. A picture paints a thousand words so this is what I came up with:

A Snapshot Scrapbook

I’ll admit right now that I didn’t come up with the name ‘snapshot scrapbook’ – that honour goes to John Topley. I’m rubbish at coming up with catchy names (example: John’s Background Switcher) but luckily John isn’t! Anyway, what it does it use the photos you’ve chosen, creates a bunch of snapshots and throws them onto your desktop background in a sort of pseudo-random fashion. The cool thing is that you can choose these photos from your own computer or from a variety of web photo sharing sites including Flickr, Phanfare, smugmug and picasa web albums.

It’s one of these things that as soon as I got the code working and ran it for real the first thought in my head was “Wow!”. My friend Ian pointed it at a collection of photos of his newborn son and to see the pride on his face as an assortment of photos of his smiling son filled his screen warmed my heart. A snapshot scrapbook is cool, but when it’s of your own photos, photos of your loved ones or photos of your favourite animals (cats for example), it becomes something much more. You can judge for yourself in a week or so when it goes live.

From a coding perspective it was quite an interesting challenge actually creating the snapshot scrapbook. If you want it to look random then it’s no use actually laying them out truly randomly – more often than not you end up with half the photos directly on top of each other which looks rubbish. Then there’s the spacing. You want them to be pretty close to each other, sometimes overlapping, but not by too much – and you want them close to the edge of the screen, but not too close. Next you want them at different angles, but not too much of an angle (you don’t want half of them upside down) or all at the same angle. Then there’s how many photos to put on the screen – different people have different resolutions so it has to look right on every possible computer. It’s all a bit hand wavey really but I managed to create an algorithm that seems to do the job nicely. As is usually the case with algorithms, once it’s written it’s only a few lines of code and looks pretty simple – although it was rather tricky to write (you’ll have to trust me on that one)!

My Very Own Digital Signature

One of the effects of User Account Control on Windows Vista is that whenever you run a software installer you are asked to confirm if you really want to run it and if you agree, you are either elevated to the mighty powers of an Administrator or you’re asked to enter the credentials of one. The idea behind this is to make sure that you don’t accidentally install something dodgy or some evil software doesn’t manage to install itself without you knowing about it.

It can be quite annoying although it is a useful measure against spyware and malware. However, when launching my installer for John’s Background Switcher I would get this rather scary dialog:

Unidentified Publisher Warning

Windows Vista cares a lot more about digital signatures than previous versions of Windows. To obtain a digital certificate to sign your software you have to go through an authorisation process to verifiably identify your company or yourself. If you’re a malware author you’re not likely to get a digital certificate because it costs money, you’d have to identify yourself to an issuing authority and as soon as you’re reported for making malware your certificate would be revoked. So if the installer you run is digitally signed with a valid certificate Windows Vista can be pretty sure it’s not likely to be evil software that’ll take over your computer. In this case it presents a much prettier dialog that’s far less likely to scare any normal user into cancelling. And there’s no orange in sight.

For this reason (and because I thought it would be cool) I decided to stump up a bit of cash and buy my own digital certificate in my name (since I don’t have my own company). After sending a copy of my passport to the issuing authority I can now sign any software I create so that it’s uniquely identified as coming from me. So now when you run my installer you’re shown this:

JBS Installer Signed Warning

It’s a far friendlier dialog and I hope that people being presented with it are much less suspicious that my software has some evil, ulterior motive. Also, if someone tampers with my installer, the signature will become invalid and Windows will complain.

It’s a bit of a pain having to pay for a digital certificate to stop Windows from scaring off potential users but I guess that’s thanks to all those dodgy malware authors out there exploiting the formerly trusting nature of Windows. Grrrr.

John’s Background Switcher 3 Released

I’ve had the weight of John’s Background Switcher 3 on my shoulders for the last 6 months or so and I’m glad to finally say it’s done, it’s out there and now I can have a rest from it all! In my opinion it’s vastly superior to all previous versions and has some really cool features including being able to create montage images and choose from lots of photos sources on Flickr, Phanfare, Yahoo! or your local computer. I’ve put a great deal of thought into each feature and it’s implementation and never compromised my initial design goal which was to “keep it simple”.

Make your wallpaper interesting!With John's Background Switcher

One of the things people probably don’t realise when you develop software in your free time is just how much work it is and how much it can take over your life. JBS consists of over 30,000 lines of code and for version 3 I completed over 130 pieces of work ranging from 5 minute bug fixes to multi-day new features. Since I have a day job and a private life, I’m only left with evenings and weekends doing this work which means it’s slow progress compared to working full time on it. It has meant many late nights staring at a computer screen having spent all day at work doing exactly the same thing.

I’m not complaining though – I really enjoy working on it and love getting emails from people saying how great they think JBS is and how much they’re enjoying using it. I don’t charge money for using it because it’s a labour of love and to try to make money out of it would sour the experience somewhat for me. Also, I use the software myself so at the end of the day I’m really writing it for me and can therefore make it exactly the way I want it!

A few weeks ago I still had a long list of things I wanted to put in JBS 3 but I was starting to realise that without a release date in mind I’d potentially be working on it forever. I also knew that the number of people uninstalling JBS 2.5 who filled out the uninstall feedback form that comes up were asking for features I’d already implemented in 3.0. So I decided I wanted to release 3.0 by the first week of April and cut features accordingly from my list.

With this goal in mind I worked a few late nights and weekends to get it done – I even dedicated a full 4-day bank holiday weekend to it! I updated the documentation and tentatively put the final version up live waiting for things to go wrong. JBS checks for a new version every 4 days (unless you turn that option off) which is handy as it means that rather than everyone updating at the same time, it takes a few days for it to happen. This means if some critical bug suddenly turns up I can fix it and put up a new version before too many people have downloaded it. I had to do this twice with 2.5 and expected to do the same this time. Except it hasn’t happened.

If JBS crashes it gives you the option to send in a crash report and that gets directly fed into my defect tracking software. I can then figure out what caused the problem, get the frequency of crashes and decide if I need to roll out a new version. Thus far I haven’t had a single crash report for version 3. I know it works as during beta testing I had many crashes crop up but frankly I’m amazed I’ve not heard anything live. I’ve also not had anyone emailing me about problems which again is very surprising. Hopefully I’m not just experiencing the calm before the storm!

A great deal of credit must go to the people mad enough to have joined in the beta testing of JBS. I can’t thank them enough as I’d quite often be releasing new betas every day or so and to have people other than me testing them out and giving me feedback is priceless. When you test your own software you tend to look at it through rose tinted spectacles and only test it in the way you designed it. Other people will naturally use it in a completely different way and do things you wouldn’t think of and this sort of testing massively cuts down on the number of potential problems you’ll hit. So thanks to you all! :-)

Anyway, if you’re on a Windows computer and you’re sick of your boring, static background, then you owe it to yourself to go and install John’s Background Switcher! Oh, the release notes are here. Now, I’m going to go and relax away from a computer screen for quite some time!

I Also Convert Images

Just to prove I don’t spend my spare time only working on John’s Background Switcher, I’ve just released a new version of the cleverly named John’s Image Converter. It’s a simple, one-dialog application that’s sole purpose in life is to resize pictures – which can be quite handy if you want to resize a large photo for use on the net and you’re too impatient for Photoshop, Windows Paint or whatever else to fire up.

John's Image Converter

New in version 1.1 is improved image quality (I’m reusing some of the code from JBS to this end) and the ability to rotate the picture as you convert (you can see from the thumbnail if it needs rotating or not). For me it’s a handy little tool as it saves me a lot of hassle and time. Next I’ll add folder conversion and maybe some sort of cropping…

John’s Background Switcher 2.5 Released

After what seems like quite a long time, I've finally finished up the latest version of John's Background Switcher. Over the past few months I've implemented 98 features, enhancements and bug fixes. At last I'm greeted by this picture in my bug tracking software:

John's Background Switcher 2.5 - All Done!

Of course, there's plenty still on The List, but I had to draw the line somewhere, put out a new version and have a break before embarking on the mighty road to 3.0.

All along I've wanted to keep JBS a simple application and avoid the sort of feature-creep that often turns neat, snappy applications into unwieldy monsters that are nearly impossible for the beginner to figure out. It's been a constant battle to put in cool new features without compromising simplicity and ease of use. While it may not look a whole lot different to previous versions I can assure you that a lot of design work's gone into making the user interface stay intuitive while adding a lot of new pieces of functionality. Oh yeah, and I sort of cheated by adding a 'More Settings' dialog that contains a boat load of customisations as requested by the people who use it.

I must thank the people who were crazy enough to help beta test this version and provide me with a hell of a lot of valuable feedback. While I couldn't get everything asked for in to this version, they're all on The List and will get there eventually. Thanks again! :-)

If I were to pick my favourite 3 new features in this version I'd choose these:

  • Mosaic mode – instead of setting a single picture as your background, it goes and downloads a selection of thumbnails and generates a mosaic and sets that as your background – very cool.
  • Explore from the last 7 days – you can now select from the most interesting photos uploaded to Flickr from the last 7 days – excellent pictures guaranteed.
  • Send to del.icio.us – if you see a cool photo on your background from Flickr, you can quickly add it to your del.icio.us bookmarks for later viewing!

The full release notes are here, and the download page is here. Have fun! Now, I'm off for a well-deserved cup of coffee…

Update: Well, a couple of annoying bugs appeared (why do they never show up in testing?) so I thought I'd quickly release a new version with those fixes in. You can do a 'Check For Updates Now' and follow the instructions or just go to the download page and get the installer. D'Oh!

Aren’t Mosaics Lovely?

I'm rapidly approaching the finish line for John's Background Switcher 2.5 and am getting quite pleased with what I've done. Progress had initially been slow as I just didn't have enough free time to dedicate to it but lately I've been on a roll. One of the cool things I've just implemented is Mosaic mode. I've seen this feature around and decided to put it into JBS. In short, it lets you automatically create backgrounds on your PC using whatever search criteria you like from Flickr like this (which is interesting photos from the last 7 days):

A Flickr Mosaic from John's Background Switcher

Instead of downloading one photo and setting it as your background, it downloads a load of thumbnails from Flickr and builds up a mosaic image. Other implementations of this sort of functionality I've seen are pretty inefficient as they download one thumbnail at a time, thereby taking an eternity to build the picture. So I've spent a good bit of effort making it fast and smart to the point where it takes around 45 seconds to generate the picture you see above and makes as few calls to Flickr's servers as possible.

It's fun writing clever multithreaded, caching thumbnail downloading code, but it's much more fun to use the resulting mosaic functionality to build up a picture of cat portraits or guinea pigs! In a couple of weeks you'll be able to do it too!

John Likes ABBA – 20 Years Too Late!

I remember ABBA. Judith Wilson used to live along the road from us when I was a kid and when I was over at hers one day when she brought out an ABBA record. I’d never heard of them at that point and don’t really remember if she played the record or just looked at it (come on, it was 20 years ago!). But they clearly didn’t make an impression as I never made a point of listening to them again.

Sure, they were on the TV loads over the years, at discos, weddings, films and so on – it’s impossible to escape from them even now. I just didn’t pay much attention. So last year when I was doing some redecorating I picked up the ABBA Gold CD from my girlfriend’s collection (it was closest to hand), put it on and was hooked. I never realised what a great band they were! And even more surprising was that I already knew all the words and could sing along immediately. I instantly understood why someone once wrote a PhD on the music of ABBA (I saw a program on the BBC about it years ago).

I’ve been working hard on the next version of John’s Background Switcher (which is in beta, contact me if you want to join in the testing) and fired up Media Player. I wasn’t sure what to listen to so just picked the first on the list – which was 2 Unlimited. Since that was terrible, I chose the next which was of course ABBA – and once again I’m reminded how good they are! Excellent coding music borne out by some of the work I’ve spent the weekend doing – including the much requested anti-pants filter. One of my colleagues was doing a PowerPoint presentation and my background switcher had decided to select a photo of a pair of pants on a moor as his wallpaper, much to his embarrassment! So as of the next version you can put in a list of tags and no photos containing any of those tags will be chosen – so no more photos of random children on your desktop!

Now, if I could just get ABBA to reform and record some new material – I know all their songs already…

Traffic Spike

Yesterday my beloved John’s Background Switcher got picked up by one of the big techie news sites – digg.com – the net result of which was that I had more visitors to my site in a day than I’ve had over the last 5 months combined! And more importantly well over 2000 downloads of the installer. I don’t know how many people are actually using it – I don’t go in for all that usage tracking spyware type stuff – but it’s safe to say that my user base has increased significantly (I normally get around 10 downloads a day).

My traffic spike

I’ve been blown away by the amount of positive feedback from people out there! Reading comments like “This is probably the coolest tool I’ve found in the last couple years aside from Flickr” after I’ve poured in a lot of hours and late nights (just ask my girlfriend) makes it all worth while. I write software for a living and I can honestly say that creating JBS and giving it away for free is infinitely more rewarding.

What’s also been interesting is that only 4 crashes have been reported [so far] – I’d expected more with such a high increase in users. If the software crashes it gives you the option to send me a crash report which details the last few method calls so I can work out what happened. It’s completely anonymous although sometimes I wish it wasn’t – it would be handy to email the person and ask them what they were doing at the time – but anonymity rules. I’m close to releasing the next version which has given me the chance to fix the lot (which are all .NET issues – I thought .NET was supposed to run consistently across all machines?!).

As always, any and all suggestions are most welcome – just go to my Support Forum. While I come up with a fair number of the features, the people who’ve been using it up until now have suggested most of them and while I can’t do everything on the list – I do my best! So thanks to all those who took the time to try it out and suggest how I could make it better (oh yeah, and especially to Ian who suggested the whole Flickr thing in the first place!).

Now, if I can just get this much interest in my photography;)

John’s Background Switcher 2.1 Released

I’ve been busy over the last month or so improving my wallpaper switching utility paying particular attention to adding more Flickr functionality. I’ve fixed a few bugs (including some problems with corporate firewalls), added lots more ways to get cool photos from Flickr, added proper multi-monitor support, improved the way pictures are resized, added an option to save all photos downloaded from Flickr to a folder and done a whole load of other cool things too. You can read the full release notes here if you wish.

If it were me, I’d just go and download John’s Background Switcher 2.1 now, you owe it to your computer to decorate it with amazing pictures!