Category Archives: Technology

Icons For Everybody

Icons from The Noun Project

Public Domain icons from The Noun Project

Have you ever found something really useful online, made a mental note to remember it, and then forgotten all about it by the time you mean to go back to it? Repeatedly? That’s exactly what I’ve done with this fantastic resource called The Noun Project.

Icons are hard to make. It’s not something I’m particularly good at. They have to communicate something clearly, yet simply. vast detail and complexity is the downfall of an icon, which for someone like me, is a struggle.

However, the good news is, not everyone struggles with it! Some people are really good at producing icons. You can buy icons, but when you do that, you need to make sure they match up with all your other icons, etc.

This is where The Noun Project comes in. The website pulls in icons of things (i.e. nouns!) from around the world, making them available for download on the website. Some of the icons are in the public domain, like a number from the United Nations and the US Government. Others have been made freely available by people.

All the icons are available at least with a Creative Commons license. Some require attribution, others give the option to waive attribution in lieu of a small fee. All are available for commercial works.

If ever you use icons for projects, I would definitely recommend giving this site a look.

Samsung Omnia 7

Samsung Omnia 7Those of you who follow me on Twitter will already know that I have dumped my ever-reliable BlackBerry for a Windows Phone 7 device, the Samsung Omnia 7. I’ve had it for just under a week now, so I thought I should post a little review and compare it to my old phone.

My old trust BlackBerry was wonderful. Many people look at the iPhone and then berate RIM for the  BlackBerry, pointing out that it isn’t swish, isn’t fancy, that nothing stands out about it. Those people forget the point of a BlackBerry for the people who use it. Forget the BlackBerry Curve 8520, which is aimed purely at consumers. The BlackBerry is not primarily for the consumer, however it is marketed. The BlackBerry comes into its own when it comes to business use. It has been second-to-none for email, provides great security, provides great call quality (we often forget about that today, don’t we?) and is built like a brick. BlackBerry phones take quite a pounding before they break…if they break.

That said, there are a few disadvantages… not as many apps, very slow to start up when reboots are required, and the phones themselves aren’t particularly cutting edge on the hardware front. Still, outside of the consumer market, reboot times aside, these aren’t major issues. Fundamentally, the best thing about the BlackBerry is the fantastic push email system, along with push notifications for applications like Twitter and Facebook too. But anyway, when looking out for a new phone, I wanted:

  • A phone with a decent camera (or as good as a camera on a phone gets) – sharp pictures, good size, and, if possible, decent video too, for those moments where you just want to capture the moment, but HD video isn’t necessary.
  • Sturdy, with a decent screen. After all, you need it to last and if you need to look at the screen a lot, it may as well be a good one!
  • A decent keyboard, preferably a physical keyboard, but otherwise, a good virtual keyboard
  • Very good email support. This was a must.
  • Calendar support. I am lost without my calendar. It is the only way I know where I’m going and when. I can’t store all that information in my head – it’s too much.
  • Some app support. Twitter was a must. A Bible app a strong priority. Adobe Reader indispensable (I email myself pdfs to read on the move every day), and some kind of support for notes.
  • Oh, and 3G.

My BlackBerry phone did almost all these things. The camera took fairly low-res photos, but took them well, so not a major issue. Twitter was catered for very well. Email, like I said, fantastic. Calendar support there. Physical keyboard. In fact, the only thing missing was, to be honest, 3G, although the phone not supporting BlackBerry OS 6, the web browser was struggling a bit too.

So anyway, I looked for months and found very little, if nothing. I looked at a few Android phones, and they had some very good virtual keyboards, some good apps, reliable, well-reviewed, etc… but they just looked like a Google version of Apple’s iOS, with a better keyboard. And I already own an iPod, so the apps were a red herring really. But to be honest, the reason I couldn’t go with an Android phone was because of the email support. Everyone said it was great for Google Mail, but outside of that, people weren’t so positive about it. I took a cursory look at Symbian…err, amd then punched myself in the face. An iPhone seemed pointless (and to be honest, a little 0ver-rated). I looked at other BlackBerry phones, but none on the market were of much better spec than I already had. And then I saw a friend had bought a Windows Phone 7 device. And I laughed. I pictures Windows Mobile 6.5 – what  a revolting, crap piece of software.

But then I came across the Samsung Omnia 7. It looked the part It had a Super AMOLED screen (which means it displays really vibrant colour. I saw the interface – very minimalist, and therefore very “me” when it comes to phones. I saw that it syncs with Windows Live and Google, a major bonus. It had a really nice camera, does high quality 720p video and most importantly of all, has very good support for email. And so I took the risk.

I have to say, I love it. It’s fantastic. It’s not perfect, but it’s very, very good. The virtual keyboard is fine – apart from when I’m tired – and I have set it up with all four of my email accounts, setting them to fetch every two hours. The Twitter app is good, though not the best. The Facebook app isn’t great, but to be honest, I don’t use Facebook so much these days. My contacts sync with Windows Live. My calendar syncs with Google. I hope they sync with Outlook somehow… and it has Office Mobile. And OneNote. So all my notes can sit on my phone beautifully.

Windows Phone 7 is by no means a mature platform, but it certainly seems to do well for me, and I do place quite heavy requirements on my phone. The only thing I don’t use my phone for very often is phoning people…

Oh, and the web browser works really well, even if it *is* IE… knew there was a catch somewhere.

(I am constantly amazed that some people still read to the bottom of my posts.)

HTML5 Highlights

If you’ve had much to do with web design recently, you may have heard of HTML5. HTML stands for Hypertext Markup Language and has a lot to do with the structure of web pages on the Internet.I won’t bore you with the technical details – basically, HTML5 is the latest “version” (more accurately specification), and it does have a few cool features. Even if you aren’t interested in the technical bits, it’s worth reading on, there are some interesting links.

So, what’s new in HTML5? Well, many things, but the top three are:

  • Semantic elements. You can now refer to “header”, “footer”, “nav” and “article”, which means you don’t have to wrap them in divs.
  • Video and audio tags. Although this contains many caveats, it should mature well…in time.
  • Canvas. I was sceptical, but I’ve been converted by some very good – if sometimes sketchy – examples.

Semantic Elements

OK, so let’s start with these semantic elements. Basically, in the past, when you wanted to write a header, a footer or a sidebar, or even a post, you had to wrap it in a div tag. This was a bit silly as it is a structural part of a document, just like a heading, and deserved recognition as such. And now they have it, and I’m happy, because my code will look nicer.

Video & Audio Tags

Before HTML4, the best way of showing video in a browser was, to be honest, by using Flash. Flash is good, but it’s closed source and not the easiest format to put video in to, at least compared with native video formats – and embedding is a pain too. The solution in HTML5 is to include native video and audio support. The slight problem with this is that there is no codec that is currently supported by all the major browsers. Therefore, for now at least, Flash is still easier. In time, however, if there does become one universally compatible codec, this will be fantastic. But until then, it’s a lot of effort.

Canvas

Yes, I’ll admit, I was sceptical. But I have to say, I’ve been converted. This is potentially awesome. By using a little Javascript, you can render all kinds of things – natively. Originally, I thought this was basically a web-based version of MS Paint, but then I saw things like this:

  • Canvas Pool – it’s a bit skeleton, but I’m sure it could be polished and run quite nicely – think of it as a proof of concept;
  • Wave – a visual representation of Tweets – click near a bubble and it pops, revealing the Tweet. Nice!
  • Zwibbler – like an online version of xkcd, where you get to write the comic. Ace.
  • The Wilderness Downtown – a music video for Arcade Fire (some band), which incorporates the user’s geographical information in the music video itself. Oh, and you can write your own postcard too! It’s fantastic, and uses multiple browser windows too.

These proof of concepts look great. As this matures, I’m hoping to see some great stuff. If you want to check out any of these sites, you’ll need to use Firefox, Chrome or Safari. Or IE9, possibly.

Coming soon…CSS3. Bet you can’t wait!

Ubuntu 10.10: First Thoughts

mrBen has long been a fan of Ubuntu. He introduced me to it in early 2005, with a very basic looking version of the software, which was, at that point 4.10. It wasn’t particularly jazzy and not everything worked (I remember onboard sound being an issue), but it wasn’t awful, so I kept it on and upgraded it every six months when the new version came out. I used it on and off for a few years, but gradually got tired of fixing problems that came up after upgrades, and so sometime about 18 months ago, I stopped using it, at about the time I started using Windows 7.

Still, I saw this week that Ubuntu 10.10 was officially launched, so I thought I’d take a little look, so here are my thoughts…

Installation / Upgrade

Now, for me, this was more an upgrade than an installation. I did have Ubuntu 9.10 installed, so I had to first upgrade to Ubuntu 10.04 LTS, then on to Ubuntu 10.10 from that. So, in effect, I had to upgrade twice. I did this over two nights, given the time it takes, as I couldn’t use my PC in the meantime. Given previous experiences, I expected to have to fix a few things, but was hoping that at the very least my GRUB bootloader would still work. It did. Phew!

I have to say, the upgrade process was very good. It didn’t ask too many questions, gave a good indication of how long it would take, and above all, it worked. I was very pleased. That I could upgrade twice without any problems was brilliant. Post upgrade, nothing complained that it didn’t work, and my wireless card (which I will come back to) was recognised, when it wasn’t before.

If I do have one criticism, however, it is that when users have choices to make, the choice needs to be explained in simple, understandable terms, like, “if you are unsure, choose x”. By all means let people choose, but give them a default option, as many won’t know which one to choose.

Software

Software is always an important factor. Obviously, there is no Microsoft Office for Ubuntu (I am completely ignoring any software like WINE that may or may not run programs non-natively). There is OpenOffice, which has got much better over the years, and up until the release of Office 2007, had started to look like a decent program. It’s still not a bad program, and it does support Microsoft Office file formats, as well as PDF conversion, but next to Office 2007 and beyond, there is no comparison. Functionality-wise, 95% of users would be fine with OpenOffice, but it doesn’t look nearly as polished, and that is a mark against it. OpenOffice needs some work put in on the front-end and how it is displayed to users.

Browser-wise, Ubuntu does well. Firefox is the most obvious choice, but there is also Chromium, which is the Linux version of the Chrome browser from Google. When the browser comes across codecs that aren’t installed, it looks for them. This is a good thing. Adobe Air also seems to work better now, so applications like Tweetdeck now work much better than before. However, integration into the wider OS doesn’t really work with Tweetdeck, and the default Twitter offering, Gwibber, isn’t a particularly polished application. It is slow to respond and doesn’t have the best menu interface. However, once you can get it set up, it displays nicely, but the slow response time is an issue.

The Ubuntu Software Centre has been around for a while now, and is a very good idea. It looks clean, is organised nicely into sections and is certainly more friendly than Synaptic Package Manager, which is a highway to hell for any new user to Linux. I would say that it is one of the best features to be added over the years as it solves one of the biggest problems to new Linux users – how to install new software. Furthermore, people are more used to these centralised systems now since the creation of Apple’s, RIM’s and Android’s app stores. However – yes, there’s always one – it is slightly hampered by the sheer wealth of applications available to install. This is not a unique problem – it’s a problem in all the mobile app stores too; just how does someone decide which application is best? I think there really needs to be a “best picks” section, possibly supported by partners. Not everyone would agree with this, obviously, but it would make it that little bit easier. New users don’t want to choose between ten different pdf viewers, they just want to read the pdf. So, why not recommend a pdf viewer? Yes, some won’t like the choice, but you know what, some people don’t like GNOME…but it’s not the most important thing.

You then get into your more technical programs. For image editing, there is GIMP, which is a fantastic piece of software. It may not, on a default install, be as good as Adobe’s Photoshop, but it’s still a superb program, and if you hunt around for extra brushes, gradients and the like, it can produce some excellent results. Finding plug-ins is more of a pain, and it is a distant second to Photoshop when it comes to image effects, but it’s good enough that I use it at work over a fully licensed version of Corel PhotoPaint. Which I hate. CorelDraw is pretty good, but CorelPaint is awful.

Talking of CorelDraw, if you’re looking for a vector-based drawing program, you’re looking at Inkscape. To be honest, it’s pretty basic, and not nearly as friendly to use as Windows-based programs. I should also say that my experience of the development team behind Inkscape was…disappointing. I found them to be quite rude and quite uninterested in fixing bugs. But maybe that was just me. Or maybe they just had a bad day, although my experience tells me it was less “bad day” and more “too bad”.

When it comes to managing photos, the classic Linux program – f-spot – has now been replaced by Shotwell. I gather this has been controversial, partly because Shotwell has less features than f-spot. And it does. But you know what? Shotwell is better. Let me explain. Most people don’t want to edit all their photos, They take them, they want to look at them. Not many people go anywhere near editing them. And those who do are unlikely to use f-spot, or Shotwell. They’ll much more likely use GIMP, Picasa or a pay-for application. Thus, features aren’t the issue. The issue is much more to do with organising and displaying photos, and Shotwell does this with a cleaner, more aesthetically-pleasing interface. It’s a very good move.

Talking of change, GAIM – before it was renamed Pidgin – used to be the defautl chat client. This was, quite a while ago now, changed for Empathy. This too was a divisive move. But it was also correct. It has a much cleaner look, is better integrated into the OS, and has less technical options. Which is what most people want. There is one problem, however. It doesn’t have an option to log you in. It expects you to realise you need to open each individual client. Most people won’t realise this – I didn’t. It took me more than a day to work out why I wasn’t logged in. The program needs the ability to automatically log you in and call the external program it uses for each client. Otherwise, it looks like broken software when it isn’t.

Web development – the Filezilla FTP client is available. This is brilliant software. There’s little better out there. For coding, gedit – the standard text editor – does the job. You can add awesome features like syntax highlighting, code validation tag insertion and functions if you know where to find it. But you shouldn’t have to look for it! Someone really should make a package that you can select to add this as a plug-in for edit. It is a very powerful text editor, but few people realise because this feature is so hidden, yet when installed, it is a text editor far better for web development than anything I have installed on Windows. Annoying.

Finally, there is music and sound. The default music player is Rhythmbox. It connects to an online music store, Ubuntu One, as well as Jamendo and Magnatude. It’s not iTunes, but it’s not bad. It connects to my iTunes music on my Windows installation, which is very good, and integrates very nicely into the sound menu in the notification bar when minimised. Can’t argue with that. Saves space too, s a thumbs up on that. I can’t say I held much hope for the movie editing though…it’s never been good in Linux. In fact, it’s always been dreadful. However, I was pleasantly surprised to see that I could throw in some video files and it could play them perfectly, video and audio, and I could add multiple tracks. Excellent. It doesn’t appear to do credits and titles, but the rest of it is on a par with Windows Movie Maker, and in a couple of areas, nudges ahead.

Two more comments on software: 1) DVD playback. It works! This used to be a pain; 2) Fonts. You don’t get many, and this is a problem if you’re into designing, but can I just say, the new Ubuntu font is fantastic! It’s very easy to read, is clean, aesthetically pleasing. Everyone should have it, it looks fab.

Other Practical Thoughts

That’s the main of the review done to be honest – it’s the software that’s the most important thing. There are a couple more thoughts before closing, however. Firstly, boot-up. It takes about the same amount of time to book as Windows 7, maybe marginally slower, but Windows 7 is quick, so it’s not a bad thing. Secondly, the brown is gone. This is good, but the new scheme will need to be a grower. However, I must also say that the wallpapers that come with Ubuntu are much better than the stock Windows wallpapers. They are more diverse, a bit more creative. You feel like you have more choice. Finally, there is the rather good looking computer janitor, that looks for old, redundant files and software packages that are no longer needed – and removes them. With your permission, of course. This is good.

Closing Thoughts

Ubuntu 10.10 is a lot better than I expected, much more polished than it used to be. I still prefer Windows 7, but Ubuntu is showing much more promise than before. It still needs to work the balance of keeping powerful features, but hiding them, in some way, from users who just want to, err…”use” Ubuntu, rather than spend all day tweaking. It’s not an easy balance, but I think it’s getting there. The other thing it needs is more polished software. PiTiVi is showing promise, but needs development. Jokosher (audio editing) looks much better these days; if PiTiVi can follow a route like that (by that, I mean “keep it clean, keep it simple, keep it looking nice, no nasty crashes, but yet still make it powerful”), it’ll be doing well. OpenOffice, whilst being quite good, needs a makeover. And, above all, hardware support…it’s getting there, but it’s still not good enough. Remember the USB wifi stick I mentioned earlier? It works for 10 minutes, then stops working. This is no use. I use wifi, ethernet is no use to me. Problems like this are the biggest barrier to adoption, and they really are the most important issues to sort out. But it’s getting there…

Website Design: A Few Quick Links

I realise you have been denied my wisdom for a while. This is an unfortunate, but not unexpected, occurrence. I can only apologise and promise to try and make up for it in the coming weeks.

I have been looking, for a number of months, at the general design of websites and trends in website design – what works, what doesn’t, the ‘in’ things to try. You may have noticed my site redesign earlier in the year – that was really just a case of me playing around with a few things. It didn’t ever get finished; eventually, I may get round to finishing the job. The most amusing thing about it has to be the green, one of my least favourite colours, but there you go…

Anyway, I’ve been working over the last few weeks on the new BUSY website, which isn’t yet finished, but has made some great progress this week. I’m definitely coming round to the idea that less is definitely more – that space is a virtue rather than cluttering people’s screens up with everything you can fit in. Social media integration is interesting – the ability to retweet an article on Twitter is a common staple on many sites, and Twitter is a great medium for sharing links. Some websites try and integrate Facebook into their sites by allowing people to ‘like’ their articles, or comment on them by logging in via Facebook, but neither of these approaches seems to have taken off. I also haven’t really seen AJAX taking off very much either. It’s obvious on some big sites, like Twitter and Facebook, but outside of that, there is very little implementation of AJAX, aside from the odd AJAX-enabled comments box.

As sites become more interactive, potentially pulling information from third parties more and more, the issue on clean coding becomes more and more an issue, especially when using iframes, as you have no control over the external code. Even with things like WordPress plug-ins, going through the code, checking it and integrating it into your site can be very time consuming – and then they upgrade…

I have been very impressed with this redesign from the point of browser compatibility. I work to make sure that a website is compatible with Internet Explorer 8 (IE8) , as well as the latest versions of Safari, Chrome and Firefox. With this redesign, there was only one slight problem with IE8, but this was solved by one explicit declaration in my CSS file. This is fantastic – in the past, it’s been a dog’s dinner to get them all to work. IE8 doesn’t support rounded corners (a CSS3 feature), but this is the only difference between the display of the website in any of the browsers.

So anyway, if you are interested in web design, here are a few links to look at on the design and structure of websites:

  • Your HTML Source – by Ross Shannon. Covers the basics, covers them fantastically well, concisely, clearly, no jargon. An absolute gem of a website.
  • Design Meltdown – by Patrick McNeil. It’s fantastic, full of links to other sites, and he’s even published a couple of beautiful books on trends in web design. He doesn’t tell you how to do it, but he points you to people with fantastic ideas, and that’s all you need sometimes!
  • CSS Play – by a guy called Stu Nicholls. Not the prettiest site you’ll see, but has some wonderful CSS tips – the ones on styling forms are very good.

And now, here are some links to some of the tools I use when putting the actual websites together:

  • WordPress – Quite frankly, there’s not much WordPress can’t do. It’s often seen as a “blogging” system. It’s WAY more than that. It’s simple and scalable, but if you scratch underneath the surface, it’s incredibly powerful too.
  • GIMP – It’s an image manipulation programme really, but you can use it to make backgrounds for websites too.
  • Notepad2 – This is where I write and edit my code. I’ve never come across a better editor.
  • Filezilla – The best FTP client out there.

I should also add, I always use Linux hosting with cPanel. I’ve never used anything else, probably couldn’t either. As for hosting, I use Valcato.

Ubuntu 8.10 vs. Fedora 10

I have used Linux regularly for about four years. I that time, I have, for the most part, used Ubuntu Linux, but I have on many occasions tried other flavours of Linux, including Fedora. So, how do the latest editions of Ubuntu and Fedora compare?

It is fair to say that Ubuntu generally has the edge on Fedora in my experience. I have tried Fedora Core 4 and Fedora Core 6 before, with little success, Fedora Core 4 suffered from dependency problems when installing programs, and Fedora Core 6 just wouldn’t install. I also tried Fedora 9, which ran very nicely from a Live CD, but didn’t install properly.

On the other hand, I have used every version of Ubuntu since the first, 4.10 (Warty Warhog). It is fair to say that I have generally been impressed with it – no installation problems at all. The early versions I used – 4.10 (Warty), 5.04 (Hoary) and 5.10 (Breezy) were solid, but unspectacular.

This changed with Dapper Drake, (6.06, LTS), the first long-term support release. It was accompanied with a much more integrated feel, and generally just worked out of the box, with few changes required. All the releases since then have carried on building upon this release, none of them being spectacular, but all solidly pushing forward. So, how would Fedora 10 and Ubuntu 8.10 fare?

The fairest test is to run a clean install of both. For both, I used a Live CD, with my desktop PC, which is a 2.8 Ghz Intel Processor with HT technology (the most over-rated technology of the last 5 years, if you ask me), 512Mb RAM and a 128Mb nVidia GeForce 6600GT. So, not slow, but not about to set the world on fire either. Hardware support shouldn’t be an issue.

I tried Fedora 10 first. It booted without a problem, and quite quickly. It has quite a slick desktop, but I really wanted an installed system, so I installed the OS to the hard drive straight away. Everything was fine, and I re-booted. Now, in the past, Fedora has forgotten to add itself to the bootloader when installing, which is a fairly major error, but there were no major problems like that this time.

I selected Fedora 10 from the GRUB menu and watched as Fedora booted. It then came to a screen where I could finish the setup of my system. Error. My mouse didn’t work. My keyboard didn’t work. I tried using USB and PS/2, but neither worked. I was stuck.

I tried installing the whole system again (the Live CD recognises the keyboard and mouse without any problem), and booting again, but the problem re-appeared. Given my previous bad experiences with the Fedora installer, I cut my losses and gave up.

Next, I tried the Ubuntu 8.10 installer. I had previously upgraded an install from 8.04 to 8.10, but this test is for a clean install – and clean installs are generally better anyway. I booted the Live CD – no problems. I ran the installer – no problems. The graphical installer is very slick, and the partitioning tool that Ubuntu uses is very impressive – Ubuntu manages to make partioning a joy, whereas Fedora has, in my experience, made it a very complicated affair, despite using the same base package. Anyway, I answered a few questions, the whole thing installed and it asked me to reboot.

At this point, I would like to mention something. When Fedora finishes installing, it just gives you a button to press to reboot. This is fine, but it leaves the CD is the drive, and if you don’t take it out, you can end up booting from CD again when you reboot. Ubuntu automatically rejects the CD from the drive, tells you to remove it from the drive and to then press the “enter” key, thus eliminating this annoyance. It’s a very small matter, but it saves a lot of hassle. Big thumbs up to Ubuntu on that one.

I then rebooted and logged in. No problems. The desktop is very slick. The background wallpaper looks fabulous. I was quickly prompted to install my updates, which I always like. The user panel at the top of the screen has been integrated fantastically to enable you to lock the screen, log out and reboot with the minimum of hassle. You can even start a guest session within your own session, giving someone else access to your computer, but without giving them the ability to log you out or accidentally shut your computer down. It even saves where your music was in the middle of playing and starts playing it back instantly when you end the session to go back to your previous session.

There are many more neat touches that impress. Pidgin integrates fanastically into the user applet to set your availability status. The codec finder works wonderfully so you don’t have to worry about having to download the correct codec yourself. You can even buy licenced codecs if you want.

Pulseaudio now seems to work fantastically. I can play music in Rhythmbox and watch videos in Firefox without then having to kill pulseaudio in a terminal afterwards. Olive – the GTK frontend to bzr, has now evolved into a much friendlier program. The only slight disappointment is that OpenOffice 3 isn’t included by default, although it is easy enough to add. Overall, very impressive. So, what’s the verdict?

Software: Ubuntu 8/10, Fedora 9/10. They have virtually identical programs, but Fedora includes OpenOffice 3, so it shades this area.

Desktop Integration: Ubuntu 9/10, Fedora 7/10. Fedora’s looks good, but Ubuntu’s integration of user sessions, Pidgin and hardware drivers puts it out ahead.

Speed: Ubuntu 8/10, Fedora 8/10. Both are nifty, even on a machine that’s starting to struggle slightly for raw power in an age where RAM is key.

Installer: Ubuntu 10/10, Fedora 6/10. Fedora’s installer is quite slow, whereas Ubuntu’s is fast, asks very few questions and has the best partition editor I’ve seen anywhere, ever. I’d use it over proprietary software any day.

Overall: Strictly speaking, Ubuntu 35/40, Fedora 30/40. However, I think I have to disqualify Fedora and give it a big fat 0/40.

It might seem harsh, but at the end of the day, my Fedora installation isn’t useable – and not for the first time. It’s not like I’m using cutting edge hardware. The keyboard is a fricking Cheery Linux keyboard for goodness sake! There’s clearly a problem with the Fedora installer somewhere. And yes, I know I could spend hours on the Fedora forums trying to find an answer, but I shouldn’t have to – not when every other Linux distro has no such problems. Linux Format may have had Fedora 10 down as beating Ubuntu 8.10, but there’s no such judgement here. Ubuntu wins an easy knockout.

CPU Frequency Scaling In Ubuntu 8.04

Please note: this was a first draft and may be different in Ubuntu today. Please comment or contact me if you have any questions, and if there is any demand, I may look at updating this guide.

I hope you have a nice cup of tea at hand. This is one long post, but oh, is it good! If you’re not interested in CPU frequency scaling, then firstly, why not, and secondly, this probably isn’t for you…

I am writing this guide to scaling CPU speeds not because there isn’t any documentation out there already – there is, although it can be hard to find – and not because I am a technical genius – I know a fair bit, I guess, but I’m no Einstein. No, I’m writing this because it’s something that I wanted to do but had to look in a number of places in order to find out how to do it. Furthermore, some of the documentation that I found was a little muddled and probably not easy enough for some people to follow. Thus, I am going to try and explain how to scale CPU speeds in Ubuntu’s latest release, 8.04 (Hardy Heron). If you’re not using Ubuntu 8.04, you may need to change a few things, but this guide should still be helpful as long as you are using a 2.6 kernel.

Before we start, a little disclaimer. Some of this guide will have you executing powerful commands and you could accidentally wreck your system. If you do this, it’s not my fault. I’m not forcing you to do this, nor am I there to make sure you do it correctly. If you wreck your system, you’ve likely done something wrong. If so, you’re best off going somewhere like the Ubuntu Forums for help, not here. If, however, you follow this guide and it just doesn’t work, feel free to leave a comment or contact me and I can see if I can help this work for you, and perhaps update the guide. Like I said, I’m no expert, but I have, after some study, made CPU scaling work very nicely on both my laptop and my desktop, which are very different machines.

So, before we actually start doing anything, what exactly is CPU speed scaling, or as it is more technically known, CPU frequency scaling? It’s quite simple really. A CPU is a central processing unit – it processes everything as computer does. The faster the processor, the quicker it can executer commands – although it can, of course, be constrained by other elements of your hardware, like insufficient RAM. CPUs have a speed rating – my laptop has a Core2Duo T7300 rated at 2.00Ghz, so basically, it has 2 CPU cores, and they run at 2.00Ghz. My rather ageing desktop has a Pentium 4 HT processor running rated at 2.8Ghz, meaning it has 1 core, running at 2.8Ghz. However, whilst this is what these processors are rated at, this does not mean to say that the processors must run at this speed. Far from it. My laptop CPU can also run at 1.6Ghz,  1.2Ghz and 800Mhz. My desktop CPU can run at all sorts of speeds down to 350Mhz. This is known as speed stepping. Please note, this is not the same as overclocking (or underclocking)!  I will explain later about how overclocking fits in with speed stepping. One final note before moving on to the “why” – CPUs do not have to run at a set speed – they can dynamically change speeds. This can be very useful, as will be explained next…

So why might you actually want to speed step your CPU? You might want to save power. This would be a good way to do that. You may not need all the processing power your CPU has, and thus not want to use it unnecessarily. Neither of these are particularly likely reasons, but there are two more likely reasons for speed stepping. Firstly, if you have a problem with overheating, turning the processor’s speed down will reduce the effect of overheating. Secondly, you may be using a laptop and trying to save power to extend battery life. Speed stepping can, when used correctly, save power and extend battery life. Considering laptops can often overheat because of their compact nature and people’s lack of care for them, the reduced heat could potentially prolong the life of the laptop too, whilst still leaving you with processing power when required. So, enough of the background, let’s get on with actually implementing speed stepping on our Ubuntu system!

The first thing we need to do is make sure that we have a couple of packages installed. One of these is “powernowd”, and the other is “cpufrequtils”. To see if these two packages are installed, go to System → Administration → Synaptic Package Manager and type in the package names.

Once you have made sure that these two packages are installed, go to Applications → Accessories → Terminal. In the terminal, type:

/sys/devices/system/cpu/

Then press the “tab” button twice. If you have two processors, or a multi-core processor, you should see “cpu0″ and “cpu1″. If you have more than two cores or processors, you will see more (one for each that you have); if you have just the one processor with one core, you should just see “cpu0″. If you still have the command on the line, type “cpu0/cpufreq”. Hopefully, it should find a cpufreq/directory. If it does, press the “tab” button twice again. A whole list of new options should be available, such as “scaling_driver”, “scaling_governor”, “scaling_max_freq”, “cpu_max_freq”, etc… I have 13 options on my system. We will use these later to probe the processor and to change our speed step settings.

Now, you need to copy and paste the following command into the terminal and press “enter”:

ls /lib/modules/$(uname -r)/kernel/drivers/cpufreq/ \
/lib/modules/$(uname -r)/kernel\
/arch/x86/kernel/cpu/cpufreq/

Please note: if you are using an earlier version of Ubuntu, you may need to replace the “x86″ in the last line with “i386″. If you get an error message in the output from the above text, try replacing the text. Unfortunately, I don’t know when that changed in the kernel – I just know it did. Anyway, what we’re interested in is the output. The first output lists the available speed step drivers we can use to speed step the CPU. The second output lists the governors, which I will talk about later. The first list will consist of drivers such as “acpi-cpufreq.ko”, “speedstep-centrino.ko”, “p4-clockmod.ko” and “powernow-k8.ko”. Hopefully, one of these drivers is the one we need – we just need to find out which one. With some logical thinking, and by paying attention to the terminal’s output, we can actually do this quite easily. The format we need to use is the following:

sudo modprobe driver

Please note, although the drivers in the previous output had the extension “.ko”, we do not add that extension in the modprobe! So, if we are trying to add the p4-clockmod driver, we enter the following:

sudo modprobe p4-clockmod

If I accidentally add the “.ko” extension, I will get the following error:

FATAL: Module p4_clockmod.ko not found.

So the next question is, how do we know if we have loaded the correct driver? If we load the correct driver, there will be no output from the terminal. If we load the incorrect driver, however, we will see a message that says something along the lines of “Device not found”. And so, having evaded simple errors, we come to the million-dollar question: which driver is the right driver?

Good question! The simply answer is, “I don’t know”! However, with some logical thinking, we can get somewhere. The best driver to try first is “acpi-cpufreq” as it is the most likely to work. This is the driver I use for my Core2Duo. If you have an nforce2 chipset, try “cpufreq-nforce2″. If you have a Centrino processor, try “speedstep-centrino”. If you have p4, like my desktop, try “p4-clockmod”. If you have an AMD processor, try one of the “powernow-6/7/8″ drivers (use the number that’s most appropriate, if you know which one that is).

But what if you don’t know what kind of processor you have? That’s not a position I’m familiar with, but I can still help you. For more information about your processor, type in the following command in the terminal:

cat /proc/cpuinfo

This will tell you lots of information you don’t need, and a little that’s helpful. Take a look at “vendor_id” and “model name” – these two labels will tell you what you need to know about your processor. Also look at “cpu Mhz” – this tells you the speed your processor is currently running at. Please note: it does not display the speed it is supposed to run at, or can run at, but the speed that it is currently running at.

Anyway, once you have successfully loaded a driver, you need set the speed or set a governor to automatically govern the speed. These are two very different things. Setting the speed is, in effect, manually throttling the CPU – especially effective if you’re trying to stop the CPU from overheating. Setting a governor is a dynamic way of changing the speed of the CPU in accordance with the amount of power it needs at a given time – more effective for saving power on laptops. Decide which of these methods you want to take – for now – as they take different approaches (although we will be able to alter both later).

First, I’m going to go through how to manually set the speed of the CPU to a set level. Before we can set the level, however, we need to know what speeds the CPU is capable of running at. We do this by executing the following command:
$cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
This command will output a series of numbers, separated by spaces. These are the speeds (in hertz, Hz), that the CPU is capable of running at. On my laptop, the CPU can run at 2Ghz, 1.6Ghz, 1.2Ghz and 0.8Ghz. Make sure you count the number of 0′s! Decide which of the available frequencies you want to run the CPU at, and then execute it with the following command:

sudo cpufreq-selector -f value

Remember, 1Ghz == 1000000! The “-f” argument simply tells the program to set the frequency. You can select a particular CPU by using “-c” followed by the CPU number. That’s it, if you were just wanting to set a new, constant CPU frequency! And, just to check the new frequency has been applied, we can issue the following command:

cpufreq-info

This will output a fair amount of information, one piece of which will be “current CPU frequency Is…” If, however, you want *just* the current CPU frequency, you can issue a more long-winded command that will just output the frequency in hertz (Hz):

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

If, however, you are wanting to set a governor, it’s a little more long-winded, but not complicated. First, we want to go to the cpufreq/ driectory:

cd /sys/devices/system/cpu/cpu0/cpufreq/

Now that we’re here, we want to see which governor is currently set:

cat scaling_governor

The output will almost certainly be “userspace”, which basically means that the CPU has been set to a particular, constant speed. If you’re reading this, I’m assuming that speed is full speed! Anyway, what we want to do next is to find out the scaling_governors we are able to set, which we query using the following command:

cat scaling_available_governors

The output will hopefully be “ondemand”, “userspace”, “conservative”, “powersave” and “performance”. “Userspace” allows the user to set the CPU frequency manually, “powersave” runs the CPU at the lowest frequency, “performance” sets it to the maximum frequency. “Ondemand” and “conservative” are very similar – they both set the CPU frequency quite low where possible, and then raise the frequency as necessary to run commands. The difference, however, is that the “conservative” governor gradually steps up the speed, whereas the “ondemand” governor is capable of jumping straight to the fastest frequency step. Depending upon what you are doing, either of the two methods could save more or less power than the other, and it is probably in part down to personal taste. So, now you’re an expert in the options, pick one and execute it in the terminal! I’m going to execute the “ondemand” governor.

sudo sh -c “echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor”

The “sh -c” bit is telling bash to run the command in a shell. This is needed because the command is run as a superuser. You can run the command as root, but I really wouldn’t advise it when you can do it like this. Because the command has to be run through a shell, the actual command has to be run within quotation marks. Anyway, once this has been successfully run, your system will be running the “ondemand” governor! But you can’t see that yet, and you want to be able to see that this is working, right? Yes, you do. Read on. We’re almost there!

Apologies to all non-GNOME users out there, but the following section is applicable to GNOME (but there’s more after this section to interest you!). I don’t use KDE or any other desktop, so I can’t help you when it comes to a graphical utility for CPU frequency and governors outside of GNOME. However, if you do use the GNOME desktop, there is an applet for the GNOME panel that can help us. However, first of all, we need to reconfigure the “gnome-applets” package so as to give it superuser privileges. We do this using the following command:

sudo dpkg-reconfigure gnome-applets

You will be asked a question, to which you need to answer “yes”. Then, right-click on the GNOME panel, click “add to panel” and select “CPU Frequency Scaling Monitor”. Once you have placed it in the panel, you can left-click on the applet and select either a frequency, or a scaling governor. We’re done!

However, for your piece of mind, I have added a few notes on the bottom here to explain a few other things. Take a quick look here if you experience any difficulties.
The command “cat cpuinfo_cur_freq” and “cat scaling_cur_freq” output the same information, but the former requires superuser privileges whereas the latter doesn’t. The commands “cat cpuinfo_max_freq” and “cat scaling_max_freq”, and “cat_cpuinfo_min_freq” and “cat scaling_min_freq” give the same relative output, but in this case, none of the commands require superuser privileges. No, I don’t know why either!

If you want to find out which driver you are currently using, use the command “cat scaling_driver”. To check the current governor, use the command “cat scaling_governor”. To check how long your computer has been in each CPU frequency state, execute the command “cat stats/time_in_state”.

You can artificially set a minimum and maximum CPU frequency state using these commands too. To check the current maximum state, execute the command “cat scaling_max_freq”, and for the minimum, execute “cat scaling_min_freq”. If you wanted to set the minimum frequency to 1.2Ghz, you would execute the following command:

sudo sh -c “echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq”

And to set the maximum frequency at, say, 1.6Ghz, you would execute the following command:

sudo sh -c “echo 1600000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq”

Easy! I don’t know what happens if you accidentally set the maximum frequency to a lower value than the minimum – you’ll probably get an error message though.
As far as I am aware, that is everything and this tour through CPU frequency scaling is complete! If you use this and it works, please leave a comment to let me know. If you tried and it didn’t, leave a comment and let me know. If you don’t understand, or you find a mistake, leave a comment and let me know! If you’re still reading, you’re a committed reader. Leave a comment and let me know. Maybe I’ll buy you a drink sometime!