Wednesday, June 22, 2011

Upgrading from CyanogenMod 6.1 to 7

I've been running CyanogenMod 6.1 pretty much since it came out last year. It's served me extremely well and I've had very few problems with it. However, I bought a new 16Gb class 10 SD card a while ago which I wanted to replace for the existing one and have been itching to get me some Gingerbread action since Cyanogen moved up to version 7 a couple of months back.

Several things put me off doing it sooner. I had apps2ext set up (using the command line tool by DarkTremor) and I'd read some reports about compatibility issues between CM7, DT and some versions of ClockworkMod. There was also a suggestion that you couldn't use Titanium Backup to upgrade apps and data from CyanogenMod 6 to 7. Plus the fact that the only reliable source of information on these sort of things is the XDA forums, where most of the relevant threads run to over 100 pages, meant that it was never going to be a very quick process!

(I should point out before I go any further, just for the benefit of anyone reading this who is unfamiliar with the whole custom ROM thing on Android - what I'm talking about here is not the standard method of upgrading an Android phone to a newer version! If you stick to the standard ROM that comes preinstalled on your phone, as 99% of people do, then upgrading is pretty much a one-click affair. Custom ROMs, on the other hand can be a bit trickier to deal with, especially when you start messing around with extra hacks like apps2ext. But I'm a sucker for punishment. Or, more accurately, I'm still using a phone - the HTC Desire - with a relatively small internal storage and I like to have a lot of apps, so the built in apps2sd isn't enough.)

Anyway, after eventually getting to the point where I felt I knew enough to take the plunge, I wrote a bulleted list of things to do, just to make sure I didn't miss anything along the way. It looked something like this:
  • Use Gparted on Linux to format new SD card with 15GB FAT32 and 1GB ext3 partition
  • Make sure all phone apps/data backed up in Titanium 
  • Boot into recovery and do full Nandroid backup to old SD card 
  • Back up old SD to computer (using Linux to include ext3 partition) 
  • Take out old SD card 
  • Download CM7, GApps & DarkTremor to computer 
  • Copy CM7, GApps & DarkTremor to new SD card 
  • Insert new SD card into phone 
  • Boot into recovery and do factory reset/full wipe (but not SD card!) 
  • Install CM7 from SD (still in recovery) 
  • Install GApps from SD 
  • Reboot and sign in to Google 
  • Reboot into recovery 
  • Install DarkTremor 2.7.5.2 
  • Reboot 
  • Open terminal and run DarkTremor commands: su, a2sd cachesd 
  • Reboot 
  • Copy SD card contents (FAT32 partition) from computer to new SD card in phone 
  • Restore apps and data using Titanium
Simple enough right?! That's when the fun started...

Partitioning the new SD card was fairly straightforward. I followed this guide on XDA (ignoring the bit about creating a disk image to run Gparted on Windows as I was using Linux).

Next I backed up all my apps, app data and system data using Titanium Backup (just in case there was a chance I could restore anything from it after I'd upgraded), then rebooted the phone into recovery. (I'm currently using ClockworkMod 2.5.0.7. There's a newer version but reports suggested it didn't work well with DarkTremor so I stuck to the older version..

Once in recovery, I did a nandroid backup (for the uninitiated that's a full system backup saved to the SD card, which, if anything goes wrong, you can use to restore your phone to the exact state it was in previously).

I powered off, took the SD card out of the phone and copied all the files from it onto the computer. Then I downloaded the latest stable version of CyanogenMod 7 (7.0.3) for the HTC Desire, plus the latest recommended Google Apps package, and the latest stable version of DarkTremor. Then I copied these onto the new SD card along with the Titanium Backup folder off the old SD card before inserting it into the phone and booting into recovery.

In recovery, I performed a factory reset to wipe the phone's internal storage. This feels like the point of no return (although it's not really, as I could have always reinserted the old SD card and done a nandroid restore to get everything back to its original state).

After rebooting into recovery again, I flashed CyanogenMod and Google Apps, before rebooting the phone fully.

Everything loaded up fine and I was prompted to enter my Google credentials. Having done so, and without going through the further steps of setting up Google sync etc, I powered off and booted back into recovery where I installed DarkTremor, then rebooted again.

Again everything was fine. I went through the setup process, then opened the Terminal Emulator app and ran the 'a2sd cachesd' command to tell DarkTremor to move apps and dalvik cache to the ext partition of the sd card. Another reboot, and all seemed fine again. I installed the 'Quick System Info' app to keep an eye on storage levels and also Titanium Backup to restore my apps.

However, I started running into issues like apps force closing or the phone randomly rebooting when I tried to install certain apps. I ended up doing a factory reset and starting again, but ran into the same problems. Initially I suspected it was Titanium causing the problems so I just used it to restore the apps rather than apps + app data, but this didn't seem to solve it. Another factory reset and more of the same. This time I thought perhaps it was DarkTremor causing the problems, so I installed an app called S2E (simple2ext) from the Market that does pretty much the same thing as DT (without some of the more advanced features I didn't use anyway) but with a nice simple to use GUI. But again the same problems cropped up. I decided the finger of blame must still be pointing at Titanium so after yet another factory reset I set about resintalling my apps but this time completely from scratch - I simply used the list of backed up apps in Titanium as reference, then installed and configured them manually from scratch.

This solved everything, so in the end I really should have just listened to the advice about not using Titanium to upgrade restore from CM 6 to 7! It was a pain, to be sure, as manually installing and reconfiguring over 100 apps is a big deal, especially when many of them are quite involved like Tasker, Launcher Pro and Titanium Media Sync.

However, several days later with everything back up and running and my normal sleep pattern restored, I was glad I upgraded. Gingerbread is so much nicer than Froyo, both in terms of visual gloss and performance. And CyanogenMod 7 adds a lot of really nice extra features and enhancements too. The only downside I've noticed so far compared to the previous version is that the auto brightness doesn't seem as responsive, but having said that there is a facility in CyanogenMod to customise this so I just need to spend a bit of time tweaking it I guess. Whether I will do or not depends whether I can be bothered between now and the end of August when my contract us up and I can upgrade to a new phone......

Thursday, April 7, 2011

CSS media queries

Media queries from a few sites, just for comparison...

colly.com

@media (min-device-width:1024px) and (max-width:989px),
screen and (max-device-width:480px),
(max-device-width:480px) and (orientation:landscape),
(min-device-width:481px) and (max-device-width:1024px) and (orientation:portrait)


@media (min-device-width:1024px) and (max-width:509px),
(max-device-width:480px) and (orientation:portrait)



hicksdesign.co.uk

@media screen and (max-width: 500px)
@media screen and (max-width: 800px)
@media screen and (min-width: 1024px)
----
/*layouts smaller than 600px, iPhone and mobiles*/
@media handheld and (max-width: 480px), screen and (max-device-width: 480px), screen and (max-width: 600px)


/*layouts larger than 900px*/
@media screen and (min-width: 920px)
@media screen and (min-width: 1350px)
@media screen and (min-width: 1500px)


/*Just iPhone*/
@media only screen and (max-device-width: 480px)


/*iPad styles*/
@media only screen and (min-device-width: 768px) and (max-device-width: 1024px)


alistapart.com/d/responsive-web-design/ex/ex-site-FINAL.html

@media (max-width: 600px)
@media (max-width: 400px)
@media (min-width: 1300px)


simplebits.com

@media screen and (max-width: 800px)
@media screen and (max-width: 650px)


mediaqueri.es

@media screen and (max-width:64em)
@media screen and (max-width:48em)
@media screen and (max-width:20em)
@media screen and (max-width:23em)


hardboiledwebdesign.com

@media only screen
and (min-device-width : 768px)
and (max-device-width : 1024px)
and (orientation : portrait)


@media only screen and (max-width : 480px)


Hardboiled CSS3 Media Queries
(http://stuffandnonsense.co.uk/blog/about/hardboiled_css3_media_queries)

/* Smartphones (portrait and landscape) ----------- */
@media only screen
and (min-device-width : 320px)
and (max-device-width : 480px)


/* Smartphones (landscape) ----------- */
@media only screen
and (min-width : 321px)


/* Smartphones (portrait) ----------- */
@media only screen
and (max-width : 320px)


/* iPads (portrait and landscape) ----------- */
@media only screen
and (min-device-width : 768px)
and (max-device-width : 1024px)


/* iPads (landscape) ----------- */
@media only screen
and (min-device-width : 768px)
and (max-device-width : 1024px)
and (orientation : landscape)


/* iPads (portrait) ----------- */
@media only screen
and (min-device-width : 768px)
and (max-device-width : 1024px)
and (orientation : portrait)


/* Desktops and laptops ----------- */
@media only screen
and (min-width : 1224px)


/* Large screens ----------- */
@media only screen
and (min-width : 1824px)


/* iPhone 4 ----------- */
@media
only screen and (-webkit-min-device-pixel-ratio : 1.5),
only screen and (min-device-pixel-ratio : 1.5)


yiibu.com

media="screen, handheld"
media="only screen and (min-width: 320px) and (max-width: 640px)"
media="only screen and (min-width: 640px)"


stunningcss3.com/code/bakery

@media screen and (min-width: 1200px)
@media screen and (max-width: 760px)
@media screen and (max-width: 550px)
@media screen and (max-width: 400px)
@media screen and (-webkit-min-device-pixel-ratio: 2) and (max-width: 480px)

Friday, August 6, 2010

Add a desktop shortcut to a BBC radio station (Windows)

    • Open BBC iPlayer in Google Chrome.
    • Click on the 'Radio' tab.
    • Under 'Radio Stations' click a station.
    • Click 'Listen Live'. The player will open in a popup window.
    • Right click on the title bar of the popup window and select 'Show as tab'. The player window will change to a standard Chrome window with tab and toolbars.
    • Click on the page menu (the page icon to the right of the address bar) and select 'Create Application Shortcuts'.
    • Tick 'Desktop' (or wherever you want the shortcut to be placed).
    • Click 'Create'.

    Now test the newly created shortcut by clicking it. It should open the radio player in a new Chrome 'application' window and start playing automatically.

    You can resize the application window to fit the player, and next time you open it it should remember this window size.

    You can change the icon from the rather fuzzy BBC icon it has by default to something a bit nicer:

    • Create a 32px x 32px image.
    • Save it as a .ico file (I use the ICO Photoshop plugin but there are free/online tools that'll let you do this).
    • Right click on the radio player shortcut and select 'Properties'
    • Click the 'Change icon' button.
    • Find the new icon you created and click 'Apply'.

    Friday, July 16, 2010

    Rooting my HTC Desire

    Well, that was easy!

    Actually I've been trying to do it for weeks, but each time I've run into problems with drivers on Windows, not behaving properly, and the phone not being recognised.

    Then I came across the latest one-click root procedure from unrEVOked today and thought this looks more like it. There are actually two methods, detailed here and here - I started with the Windows version but again ran into trouble with the drivers. So I decided to try the Linux route (root?!).

    My wife has Ubuntu 10.04 installed on her netbook so I guessed I didn't need to mess around with live CDs and all that.

    Here's what I did:

    • Go to http://unrevoked.com/recovery/ and click 'Download for Linux'
    • Save the package somewhere (Downloads folder)
    • Go to the folder where the downloaded package is and unpack it.
    • Open a console application
    • Navigate to the download location (cd Downloads)
    • Type 'sudo ./reflash' to launch it as super user
    • Plug the phone in to the computer (select charge only)
    • Go into settings > applications > development and tick 'Enable USB debugging'
    • Wait for the phone to be rooted - it takes 30 seconds or so. When it's done it'll reboot.

    Simple as that!


    It doesn't wipe any data, settings or apps - in fact the only way of telling whether it has worked is that you'll see a new app in the app launcher called 'Superuser Persmissions' (which just shows a blank screen if you open it, by the way).


    To double check I downloaded Titanium some apps from the market that require root permissions, and they work!


    So now I have a rooted HTC Desire. Next step is to install a custom ROM. I'll keep you posted!



    Friday, June 18, 2010

    Less heat more light please

    I posted something on Twitter a few days ago that, while some may think it hypocritical coming from someone who has had their fair share of fanboy moments, is actually the truth.

    It stems from this whole iPhone vs. Android thing that has been going on in our office ever since I got my Android phone a few months ago, and which, I have to confess was at least in part of my own making (although even if I'd said nothing I don't doubt there would have been some people who would still have kicked up a fuss).

    But it goes beyond phones and highlights something that has been bugging me for a while now. It's this whole thing of slagging off, either directly or indirectly, people, products, companies, ideas, etc. that don't tally up with your own particular views, preferences or lifestyle choices.

    It's nothing new, and it can be found across every part of society, but it seems to have been implicitly sanctioned among techie circles as if its somehow ok to be derogatory if you're talking about technology. Just look at the vehemence with which people will not only defend their particular brand of phone or computer or games console, but also belittle and ridicule the competition as if it was so completely ridiculous that anyone could possibly have a different opinion or make a different choice. And of course, what is implied is that the people who have made those different choices and hold those different opinions are therefore somehow a bit retarded or stupid or deluded or whatever!

    Competition is good and healthy and necessary, don't get me wrong, that's not what I'm arguing against. Nor am I suggesting that people shouldn't hold opinions or defend their choices. But what I am saying is that when that spills over into arrogance, pride, or antagonism, it turns sour and has a detrimental effect all round.

    Not only is it unpleasant, I think it is actually damaging for the whole industry if these sorts of things take a hold. Far better that people learn to see the good and appreciate the best across the board. My choices are my choices. My opinions are my opinions. Other people are not only entitled to their choices and opinions, they are also just as right about them as I am about mine. That's because most of what lies behind those choices and opinions is purely subjective - what I prefer, rather than what is objectively better. People can - and do - argue at great length over whether this or that technology is better than another, but often the reality is not that one is better, it's simply that they are different. 'Better' depends on your frame of reference.

    Anyway, what I am trying to say, in a very roundabout and garbled way, is: lets all just learn to get along. Let's look for the positives rather than the negatives. Let's realise that everyone has got something worthwhile to bring to the table. No-one has it all, no-one is the winner. All common-sense stuff really once you step away from the heat of it all and look at things objectively.

    Thursday, June 10, 2010

    The great iPhone vs Android debate

    I've been feeling the need to write this blog entry for some time. I don't blog about much these days - Twitter is so much easier; but trying to say what I want to say in 140 characters is not quite possible.

    Let me be clear - I don't hate Apple and I don't think iPhones are rubbish. Yes, there are things I dislike about Apple's way of doing things, but equally they do a lot of things very, very well - the iPhone is a good example of this.

    However, since getting my Android phone I have encountered an awful lot of myths about Android, both implicit and explicit, among iPhone users, and I feel compelled to try and dispel/counter them as best I can.

    I guess the fact that I am the only person amongst my work colleagues with an Android phone while the vast majority have iPhones, iPods and Macs of various descriptions means there is an inevitable bias towards Apple products, along with the fact that I've always been the sort of person to side with the underdog rather than jump on the bandwagon, tends to get me more worked up than I might otherwise be in a different environment, but nevertheless, I want to try and keep a level head and be reasonable and balanced in what I say.

    There are a number of perceptions of Android (the operating system itself and Android phones more generally) that crop up repeatedly:

    Android is geeky
    Of course, there's nothing wrong with being geeky. But quite where this idea comes from I'm not sure. Well, I have an idea. It's partly the name 'Android' which obviously has a rather techy, geeky, Trekky kind of sound to it - clearly that means nothing, but it may have contributed to the perception to some extent. Partly its the fact that Android is open source and therefore has quite a techy community around it, coupled with the fact that early versions of the OS were still fairly 'beta' compared to the iPhone which came onto the market as a fully finished, packaged product. The situation today is quite different. Yes, Android is still open source, and there is still a large techy community around it, but the OS is no longer anything like beta and can hold its own against the iPhone OS any day, if not surpassing it in some areas. Also, the early adopters of Android did tend to be the geekier types - simply because of the open source, beta thing. But that doesn't mean it's geared towards geeks, or that it is better suited to geeks. Yes, geeky types may well find Android more appealing because of the fact they can play around with the code etc in a way they can't with the iPhone, but that isn't a reflection on the OS as a whole.

    iPhones just work
    The implication of course is that Android phones require more time and effort to set up, configure and generally use. I can say quite categorically that my HTC Desire couldn't have been simper to set up, configure and start using. I took it out the box, pressed the power button, it asked me to enter my Google, Twitter, Facebook and Flickr usernames and passwords, and that was that, done, ready to go. There was literally nothing else to do.

    Now obviously there are plenty of options and settings if you really want to get stuck in and customise the phone. Although to be honest, even as someone who quite enjoys that sort of thing, I've not found the need to as everything works so well already. But I like the fact that the options are there should I decide I want to change something - they're there but don't get in the way, which is key. I sometimes hear the argument that giving people too many options is a bad thing. It's only bad if you force them on the user and confuse them. With Android, the options are there, but if you're not into that sort of thing you can completely ignore them and get on with your life - in fact you don't even need to know they're there.

    There are more apps for the iPhone
    True, but there are also over 50,000 apps for Android. There are plenty of pointless apps for iPhone just as there are for Android. Most worthwhile apps are available for both, and in fact Android has some notable apps that are not and probably never will be available for iPhone (Google Nav for example).

    More apps doesn't therefore necessarily equate to better, and anyway, as Android grows in market share the number of apps is increasing exponentially.

    More people use iPhones than Android
    The gap is closing fast, actually. But regardless, this in itself means very little. Android was launched later than iPhone, and has taken some time to get to the point where it is mature enough for operators and phone manufacturers to embrace it. Things are changing apace now though, with new Android phones being announced almost weekly. There are also moves to use the Android OS in other applications like cars and household appliances.

    No-one cares about 'openness'
    One of the things touted by some Android users over iPhone is the fact that its an 'open' system - open source, not controlled tightly by Google in the way iPhone is by Apple. Anyone can develop apps for Android without having to get them approved. This IS a good thing in many ways (although there are obviously advantages with the iPhone approach as well). It's true that on the face of it, the Jo Public doesn't care whether the OS is open source or not, so its not an argument one way or the other really.

    Multitasking is bad
    iPhone 4 will have multitasking so this is a bit of an old one now. However, there are still myths about this - Steve Jobs even misquoted Larry Page recently saying that some apps can cause battery drain because they don't work well with multitasking. This has been taken by many pro-Apple bloggers to be an admission that multitasking in Android is somehow not up to par, but in fact it was simply an acknowledgement that there are some sub-par apps out there that haven't been built to play nicely with the multitasking environment. That's certainly no indictment of multitasking, but only of those apps.

    The reality is that multitasking in Android works absolutely fine. It isn't complicated or geeky in any way shape or form - just as its not on a desktop computer.


    I've not covered all the arguments here by any means and this isn't meant to be exhaustive or a proper side by side comparison or anything like that - just addressing some of the common arguments against Android. Doubtless this will generate a veritable storm of comments on Twitter!

    One last thing... does it matter? No! There are far more important things to worry about in life.

    Friday, April 9, 2010

    First 2 weeks with the HTC Desire

    So, 2 weeks with my new Android-powered HTC Desire. What's the verdict? Well, if you follow me on Twitter you'll already know that I'm quite taken with it, to put it mildly!

    For the iPhone lovers reading this, yes I know I rant and rave about it and constantly go on about how its so much better than the iPhone. To be honest, my hands-on experience with iPhones is limited to the occasional play in an Apple store or phone shop (neither of which I spend much time in if I can help it!) and odd occasions when I've borrowed one off a work colleague to try something out briefly. So I can't honestly compare the two side by side, at least not from personal experience. Plenty of other people have already done that and reached their own conclusions. I can however tell you about my experience of Android as an operating system, the HTC Desire as an Android-powered handset (and one of the newest and best at that), and the Sense UI (HTC's tweaked version of the Android interface and core apps.

    I honestly can't fault anything - handset, OS, UI or apps. It surpasses my highest hopes and expectations by a long way, which is surprising considering the amount of time (6 months or more) I spent reading, researching, asking questions and generally procrastinating about what phone to go for. I was tempted by the Nexus One but decided in the end that the Desire had the edge. But this isn't a comparison between the N1 and Desire any more than its a comparison between the iPhone and Android (and besides, I've never used an N1 anyway).

    The handset itself is really nice. I particularly like the soft-touch back which helps with gripping the phone. The overall build quality, finish and attention to detail is great. The only minor gripe I would have is that when taking the back off / putting it back on again to access the battery, SIM and SD card (which I've only done once mind you) I was a bit worried about breaking it, particularly the plastic clips that attach it to the body of the phone. This is a common thing with many handsets - even when everything else is beautifully designed and engineered, accessing the battery is still a bit of a primitive affair using a thumbnail and brute force!

    The optical trackball is a nice touch although I've only needed to use it a couple of times. The 4 physical buttons along the bottom front edge are extremely useful (Home, Menu, Back, Search) and really make navigating around very easy.

    I was particularly impressed with how quick and easy the phone was to set up when I initially took it out the box and switched it on. All I had to do was enter my Google, Facebook, Twitter and Flickr account details (all optional of course apart from the Google account, but it just so happens that I use all 4) and that was it! Everything just worked - no messing around with settings or anything. There was a quick start guide in the box, which I didn't need apart from just checking the order in which to plug things in and switch it on the first time in case there was anything I needed to take note of (there wasn't). The full user manual is on the SD card in PDF format but I've not needed it - everything is as about as intuitive and straightforward as it could possibly get.

    The interface is extremely slick, and looks amazing on the 480x800 AMOLED screen (this is one thing all the iPhone users who have seen it have immediately commented on!). HTC have added some very useful features to the Android core apps, including built-integration between your contacts (phone/Google), Facebook, Twitter and Flickr. HTC's 'FriendStream' app/widget is a useful if no-frills way of keeping track of friends activity via the various social networks (although I tend to flit between using that and standalone apps for each service). The integration between these services in the People app (contacts) is very nice indeed, with the ability to 'link' contacts across your social networks and address book, which in turn automatically pulls in their profile picture and status updates. And of course, your address book is automatically synced with Google Contacts. (You can sync multiple Google accounts including Apps accounts, but I've not bothered syncing my work contacts as I already have the ones I need in the main Google contact list anyway.)

    Having 7 home screens to add apps, widgets and shortcuts to at first seemed like overkill - how would I be able ot fill them all up? But believe me, its easy. For a start there a number of very useful widgets such as HTC's FriendStream (which shows status updates from Facebook, Twitter and Flickr), Bookmarks (a list - or thumbnails - of your internet bookmarks), music players, calendars, clocks, weather etc etc etc.

    And of course, apps. The Android Market is accessible directly from the phone and contains something like 30,000 apps and growing rapidly (over 9,000 apps were added last month alone!). Most apps are free but there are paid apps as well (most of which have a free version too), although very few cost more than £1 or £2. (You get a refund too if you uninstall, which is nice!)

    Admittedly, there are more apps for iPhone at the moment - this is to be expected given the fact that its been around for longer than Android. However, most predictions see the Android Market catching up within the next year. A slight drawback of not having the all-seeing eye controlling exactly what apps are allowed, means that anyone can write and submit an app to the Market. This means that there is a lot of crap. And Google do need to put some work into making the market more easily searchable (ie. filtering by certain criteria etc.) but even as it stands, it's pretty easy to find what you want. And most things are very well catered for. Most of the big iPhone apps have an Android equivalent, either created by the same people or an equivalent alternative. I have yet to come across anything I need to do on my phone that isn't catered for by a decent app.

    Multi-tasking is a big plus. I frequently jump around from one app to another with the Desire's 1Ghz processor and 576Mb of RAM it's seamless and super-fast. Not that I'd recommend listening to Spotify while playing a first-person racing game mind you - I've tried and while the game was fine, the music did start to stutter a bit.

    The camera (5MP with auto-focus, face recognition, touch-screen-to-focus, digital zoom, and flash) is pretty good - much better than any other phone cameras I've used - the quality is perfectly adequate for viewing on a computer screen without it looking like its come from a phone. You can upload directly to Flickr, Facebook, Twitter, Picasa, or send via email or bluetooth direct from the photos app - which links directly into the camera, so you can have a photo on the web within 30 seconds of taking it. It also does HD video although I've not tried it yet, but the reviews all say its good.

    That's enough for now I think. I was going to save this and come back to it later, but I think if I do that I might not get round to it, so I'll just post this as is, accepting that I've not covered half of what there is to talk about.

    Monday, January 11, 2010

    Pimp my Firefox

    Well, my week in Chrome was nice, but as I posted on Friday, it just didn't quite live up to what I wanted from a web browser. Yes, the statistics certainly seem to show Chrome as the winner in the performance stakes at least, but if you take into account other factors like the level of extension support, customisability, memory usage, etc. the results could look pretty different and, as I concluded in my previous post, it's these very things that have led me to revert back to using Firefox, at least for now.

    So, being the inveterate extension-junkie that I am, here's an update on my latest browser configuration.

    (I should point out that even though I have a lot of extensions installed, I'm quite particular about them. For a start, they must be stable, have good reviews and ratings and a good track record of usage. Secondly, I only install extensions that provide some specific functionality that I particularly need or want.I'm not into just downloading things for fun; I'm looking to make my web browser look and work the way I want it to. And finally, I'm always mindful of the need to constantly keep an eye on what I have installed, get rid of it if I don't make much use of it or it doesn't work properly, switch to something else if another extension does it better, and regularly update everything. I realise there's a performance hit with having a lot of extra stuff installed, so I'm always trying to keep a balance between browser enhancement and speed.)

    Currently installed extensions:

    Adblock Plus
    Speeds up browsing and makes pages cleaner by blocking ads from loading and displaying.

    AFOM
    Automatically recovers memory leakage to make Firefox run faster

    AVG Safe Search
    This gets installed automatically with AVG antivirus. Some people find it annoying, and while it can be removed (using a hack, admittedly) I find it reassuring to have that extra level of security.

    ColorZilla
    As a web developer I find this one of the most useful extensions. An unobtrusive statusbar icon gives you an eyedropper to select (and copy) any colour off web pages, along with the option (highly configurable) of displaying various bits of info such as element name, size, DOM path etc to the element you're hovering over in the statusbar.

    CookieSafe
    Lots of options to configure how Firefox handles cookies. Personally I disable all cookies by default, then only allow the sites I trust and visit regularly. If I make a one-off visit to a site and need cookies, I can enable them temporarily just for that visit or session.

    Download Statusbar
    Replaces the downloads window with a neat, configurable statusbar.

    Firebug
    Loads of web developer tools. I've added the 'Inspect element' icon (spectacles) to my toolbar for quick checking of information relating to page elements.

    Gmail Manager
    Until recently I was using GMail Notifier, but this one just seems a little nicer with a few more features.

    goo.gl lite
    Adds a toolbar button that, when clicked, automatically copies a shortened version of the URL (using Google's new URL shortening service) to the clipboard. Essential if you're using a Twitter client that doesn't have URL shortening built in (which would obviously be ideal, but you can't win them all!)

    Google Gears
    Required in Firefox for various Google applications/features.

    Greasemonkey
    I don't make a huge amount of use of this at the moment except for Flickr - there are a bunch of really nice userscripts that make browsing and using Flickr so much better (Flickr Multi Group Sender, Flickr Auto Page, Flcirk Group Pool Admin - Warn + Delete, Flickr Tag Autocomplete, Flcirk Filter Hearts, FlickrZoom2)

    Hide Menubar
    Until recently I was using Personal Menu, but that just has far too many options and is unnecessarily complex. This extension achieves exactly what I need so much more simply - auto-hides the menu bar and lets you temporarily display it by pressing Alt. I've also customised Friefox's toolbars so everything else is displayed on a single toolbar - nav buttons, followed by location bar (which doubles as a search bar with the aid of keyword searches and a config tweak - see http://kb.mozillazine.org/Location_Bar_search), followed by a few extra icons (goo.gl lite, Web Developer and Firebug inspect element buttons), followed by the bookmarks toolbar (which I limit to one or two items I need quick and frequent access to (To save space I've deleted the title if they've got a decent favicon. If I need more than one or two items here I'll put them inside a folder so there's just a single folder icon on the toolbar itself)).


    Html Validator
    Essential for web developers - a statusbar icon shows the validation status of every web page, including local ones, and clicking it opens the source code with the validation report.

    JSView
    Provides quick access to javascript files used by the current page.

    KeyScrambler
    See my last post - its a nice extra layer of security but I'm in two minds about it, as it is a bit laggy.

    Locationbar Limit
    Lets you show more items in the location bar dropdown, so saving scrolling if you're searching through a lot of results.

    Locationbar2
    Emulates a feature built in to Chrome, where the domain of the current page is highligheted, and URL segments are selectable.

    MeasureIt
    Statusbar icon which, when clicked, allows you to drag out a rectangular box/ruler over any area of the current page, showing the dimensions.

    NoScript
    I use this in a similar way to CookieSafe - set all scripts as blocked by default, then only allow scripts on sites I trust and visit regularly, then just temporarily for other sites. You have fine-grained script control so if you don't want to allow scripts for a particular advertising service included in a page you don't need to.

    OpenBook
    Enhances Firefox's built-in bookmark management by allowing customization of the 'Add bookmark' dialogue, such as automatically opening the bookmark tree, etc.

    Organize Status Bar
    Essential if you have as many extensions as me!!! Lets you organize what icons are displayed and where.

    Resizeable Textarea
    Forces all textareas to be resizeable.

    Speed Dial
    Create a new tab/start page showing thumbnail links to all your favourite sites. You can have multiple tabs as well if you like (I have one for 'Work' and one for 'Personal'). Loads of customisation options.

    Unsorted Bookmarks Folder Menu
    Adds a link to Firefox's 'Unsorted Bookmarks' folder in the  bookmarks menu. Simples!

    Vacuum Places Improved
    Optimizes Firefox's places.sqlite database - really makes a big difference to browser speed if your history file is quite large.

    Web Developer
    Absolutely essential for web developers. End of.

    Xmarks
    Bookmark backup/sync. A million times better than Google Bookamarks.

    Yoono
    I've only just discovered this so it's still 'on trial' but it's an integrated social networking sidebar for Firefox. Seems pretty good at the moment and I think I prefer this to loading a separate app like Digsby when I've got the browser opan all day anyway.

    Finally, here's a screenshot of how my browser looks:


    Friday, January 8, 2010

    Google Chrome - week 1

    Well, it's been just over a week since I decided to try using Google Chrome as my main web browser. How have I found it? Will I stick with it?

    To be honest still I'm torn between Chrome and Firefox. There are pros and cons to both. Here's  a quick list of where each browser scores, from a fairly non-technical perspective (i.e. I'm sure there all sorts of things 'under the hood' that could affect the comparison but which I don't know enough about):

    Chrome

    • Significantly faster startup time
    • Separate processes for each tab and extension (if one crashes you can carry on using the browser)
    • Memory is periodically 'cleaned' to prevent memory usage constantly creeping up (although it uses more memory overall)
    • Looks nicer!
    • Web search integrated into address bar (although FF similar, though not quite so good, with search keywords)
    • Searching browsing history searches page content, not just titles
    • Generally, Google apps (which I use a lot of - who doesn't?) work better with Google browser
    Firefox
    • Uses less memory overall (although memory leaks do tend to mean it increases over time)
    • Several key extensions not available for Chrome (yet), e.g. Web Developer, Colorzilla, NoScript, CookieSafe
    • Better bookmark management (e.g. tags)
    • Sorting options for history
    • Right-click to view images/background images (have to open developer console in Chrome)
    • Toolbars are customizable (particularly important with extensions - Chrome's extensions all get added into the main toolbar and move around randomly! Plus FF has the added advantage in this respect of a status bar for extension icons etc.)
    • As a colleague pointed out yesterday, from a web development and browser compatibility point of view, Firefox is the most widely used browser (if you treat each major version of IE as different browsers) so it makes more sense to use it as your primarily browser when developing sites.
    So, the jury is split! I expect Chrome to catch up with Firefox in many of these areas, although having said that, I know that the Firefox developers are already looking into many of the things where Chrome has taken the lead, such as separate processes, better search integration, etc. for future versions, so nothing is a foregone conclusion!

    Tuesday, January 5, 2010

    Google Chrome extensions

    This week I finally made the big switchover from Firefox to using Google Chrome as my web browser of choice. I'd tried several times before, but the lack of extension support in Chrome put me off as I'm a bit of an extension junkie, as those of you who know me will testify!

    However, with extensions now supported in the Beta version of Chrome and soon to be in the main release version too, I decided to make a serious attempt at switching over. I was already convinced about the browser itself - it wins hands down on the speed and stability stakes, compared to Firefox which, while it started out so well, has just got slower and clunkier as time has gone on (partly a result of all those extensions, but by comparison Chrome hasn't seemed to be affected too noticeably yet).

    Admittedly, Chrome's extension gallery is still in its infancy. There are a number of things that are not yet catered for and many of the existing extensions are still in the early stages of development and quite buggy. However, there seems to be just about enough to work with and obviously over time things will improve.

    I started out by making a list of all the addons I've got installed in Firefox and then searched for equivalent Chrome extensions.

    Here's the list as it stands at the moment:

    Firefox
    Chrome
    Adblock Plus
    AdBlock
    AFOM Addon
    -
    Not needed in Chrome as memory leaks are not such an issue
    AVG Safe Search
    WOT
    However, Chrome's built-in security features make the need for this less urgent.
    Colorzilla
    -
    One of my most-used FF extensions. However, the various functions are fairly well covered by Pendule and Chrome's built-in developer tools.
    CookieSafe
    -
    This is one that I'd really like to see ported over to Chrome as soon as possible (I'd do it myself if I knew how!). In FF I disabled all cookies and then just enabled them on a per-site basis only when absolutely required, and temporarily unless for trusted sites I visited regularly.
    Download Statusbar
    -
    No need for this as Chrome already shows download status in a fairly unobtrusive way.
    Fasterfox Lite
    -
    Chrome is already a lot faster so no need for this at the moment.
    Firebug
    Firebug Lite
    However, Chrome's built-in developer tools provide all the Firebug-like functionality I need at the moment.
    GMail Notifier
    Google Mail Checker Plus
    The Chrome extension is actually much nicer than the FF one, although still has a few bugs.
    Greasemonkey
    -
    It is possible to enable userscripts in Chrome, but as the only Greasemonkey scripts I used in FF were for Flickr, I've managed to find Chrome extensions for Flickr that do most of what I want anyway. Still, a standard way to add userscripts would be handy.
    Html Validator
    -
    There are several validators for Chrome, including HTML Validator, but none currently works with locally hosted pages, like the FF one, which is a shame.
    JSView
    -
    I never used this all that much anyway, but occasionally it was handy for quick access to scripts. The lack of an equivalent for Chrome is not a big deal though.
    KeyScrambler
    KeyScrambler Pro
    Although I do like the added layer of security this provided, I did often find it a bit slow meaning I'd sometimes find myself typing garbled text into the browser. You can use the Pro version of KeyScrambler which works with a whole host of desktop applications, but I'm not about to fork out for it at the moment,
    NoScript
    -
    Like CookieSafe, this is another one I'd really like to see ported to Chrome. FlashBlock provides some of the functionality (blocks Flash and Silverlight) but not all.
    OpenBook
    -
    Chrome's bookmarks don't seem to have a tagging mechanism so this is fairly redundant. It would be nice to see more bookmark features in Chrome though.
    Organize Statusbar
    -
    A must if like me you had so many extensions installed. Chrome doesn't have a status bar, but it would be extremely useful to have some way of customising and managing extension icons in the toolbar and address bar as currently there's no way to arrange them and they swap order for no reason every time you open the browser!
    Personal Menu
    -
    See above. Thankfully Chrome has a much more minimal interface which minimises the need to mess around with the built-in menus etc.
    Profile Switcher
    -
    I'm not sure if Chrome even supports profiles yet. This was handy at home with my wife and I using the same browser. However, as I've just bought her a netbook this won't be a problem in the future!!
    Resizeable Textarea
    Always Resize
    Chrome supports resizing textareas by default anyway, but this extension makes even locked textareas resizeable.
    Speed Dial
    Speed Dial
    Not quite as feature-rich as the FF one yet, but nonetheless does the job.
    Split Browser
    -
    Never made too much use of this anyway, but Chrome's nifty ability to drag a tab out into a new window makes this less necessary anyway.
    Unsorted Bookmarks Folder Menu
    -
    Not needed due to the different way Chrome handles bookmarks. It was a bit of a hack for Firefox anyway!
    Vacuum Places Improved
    -
    FF got slower and slower the more pages were stored in it's history. However, even after importing my browsing history from FF into Chrome, it's still incredibly fast, so no need for this.
    Web Developer
    -
    Number one on the wishlist of FF extensions for Chrome. Chris Pederick is apparently looking into the possibility but its a complex extension so could take a while even if he does decide to give it a crack! However, Chrome's built-in developer tools do cover a lot of the more useful functions, and Pendule has a few more, so its not the end of the world.
    XMarks Bookmark Sync
    XMarks Bookmark Sync

    In addition, I've found a number of additional Chrome extensions that are proving (or look) useful, either in covering some of the fucntionality of one or more of my old Firefox extensions, or providing other functionality:

    Fittr Flickr
    Facebook To-Go with Instant Notifications
    RSS subscription extension
    Flickr Gallery Plus!
    Chromed Bird
    Google Calendar Popout
    AutoPager Chrome
    Slideshow
    Google Apps Shortcuts

    Saturday, October 31, 2009

    Speeding up Firefox

    If you use Firefox and have found it slow starting up or laggy typing into the address bar, install the oddly named 'Vacuum Places Improved' add-on from https://addons.mozilla.org/en-US/firefox/addon/13878.

    It adds a little icon to the status bar allowing you to defragment Firefox's places.sqlite database file with a single click- that's the file that holds all the information about your browsing history etc.

    I've installed it in FF on all the computers I use and noticed a considerable improvement. On my laptop the places.sqlite file was initially 25Mb and after 'vacuuming' its 15Mb. On my desktop, Firefox had almost ground to a halt, often taking over a minute to start up, and when you clicked into the address bar it took around 10 seconds before you could actually type anything! After 'vacuuming', FF starts up in 10 seconds and typing into the address bar is fine.

    I highly recommend this if you use Firefox and notice any performance issues. Obviously its not going to solve memory leak (FF's other big problem) but it's a big help nonetheless.

    Just to explain - the extension doesn't delete anything, it just optimises the file that holds all the data so that that data can be found more quickly.

    You can set the statusbar icon to be hidden and only reappear a certain number of days from the last 'vacuum' to remind you to run it, or it can set to automatically run every x number of days.

    Thursday, October 8, 2009

    Changing the document root in XAMPP

    I know this has been covered many times before but I've found myself Googling for this info a number of times now and thought if I wrote it here then at least I'd know where to look next time!

    After installing XAMPP on Windows, the document root, by default, is set to C:/xampp/htdocs (that is, if you installed xampp into the root of the C: drive).

    In this particular case I wanted to change the root directory to the sites directory in my Dropbox (C:/Documents and Settings/[username]/My Documents/My Dropbox/sites/)

    To do this, open xampp/apache/conf/httpd.conf and edit the 'DocumentRoot' setting (line 188 in the version I have) to the required path (as above). Several lines below where it says "This should be changed to whatever you set DocumentRoot to" (line 215) change the Directory path to the same thing.

    Open xampp/php/php.ini and edit the 'doc_root' setting (line 804) to be the same path as above.

    Save both files and restart apache. This should do the trick.

    UPDATE: As pointed out in the comments, I'd forgotten about my MySQL data. To move the MySQL data into Dropbox:

    Open xampp/mysql/bin/my.ini and:
    - under [mysqld]:
    - change datadir (line 30) to the full path to the mysql data directory on Dropbox.
    - change log_error (line 45) to the same path as above PLUS '/mysql.err'.
    - change general_log_file (line 48) to the same path as above PLUS '/mysql.log'.
    - change slow_query_log_file (line 50) to the same path as above PLUS '/mysql-slow.log'.
    - below where it says "Uncomment the following if you are using InnoDB tables"
    - change innodb_data_home_dir (line 137) to the same path as above.
    - change innodb_log_group_home_dir (line 139) to the same path as above.

    Move contents of xampp/mysql/data into the new mysql data directory in Dropbox.