Things I Wish I’d Known When I Started Programming

codeI’ve been programming for more than a few years now, but sometimes I like to look back at things I wrote when I was much younger, and reflect on how much I’ve learned since then. Of course, no one expects you to start out knowing everything, but there are a few things I wish I’d known when I started, or that I’d learned a bit sooner than I did. So, just for fun I thought I’d come up with a list of a few of the things I wish I’d known when I started programming.

Use Source Code/Revision Control

Like a lot of young developers, when I first started writing code I didn’t use any sort of source code/revision control system (just zipping up the project files every so often doesn’t count). But once I did, I realized how wrong I’d been – having a complete history of all changes is just sooooooooo helpful, even without any of the other features (branches, merging, etc.).

Now, there is a bit of a learning curve with any revision control system, and when you’re just starting out that learning curve can be a bit steep, especially in addition to all the other stuff you’re learning at the same time – but it is so worth the time and effort. Being able to undo changes, or make different changes to the same code (via branches), and just in general having a nice, detailed history of what you’ve done and what’s changed over time is simply invaluable. This is especially true if you’re part of a multiple programmer team, but it’s also just as true if you’re working by yourself.

For anything beyond 5-minute throw-away projects, use source code revision control!

Write Comments So That You’ll Understand Them Months or Years Later

Writing comments is like writing a log entry that you’ll inevitably need to review much, much, much later – so taking the time to write it clearly is well worth it. Countless times I’ve run across old comments of mine and wondered “what was I thinking?”

Same goes for commit messages – brevity may be the soul of wit, but not when it comes to commit messages! You shouldn’t need to do a diff on a particular commit just to figure out what you did; the commit message should at least give you a general idea.

On the flip side, though, you don’t want to be writing novels in your comments or commit messages, either – so write enough to be understood, but don’t be needlessly wordy, either.

Automate the Build & Deployment

It doesn’t matter how many times you’ve gone through the process of compiling or deploying a build, someday you will forget a step. And it’s also just so nice to be able to kick off a complete build & deploy with a single click and then go grab a cup of coffee or something, instead of having to sit there and go through all the steps manually. So take the time to write a script to automate the process – it doesn’t need to be super-complicated, just something to do the work for you. Believe me, it’s worth it.

No Fix or Change is Ever Too Small to Not Test

Also known as “TEST EVERYTHING,” this one’s a hard rule to stick too, especially for really small things like changing a typo in some text – but you still have to do it. It might seem like a tiny change that couldn’t possibly cause any problems anywhere else – but code is complicated, and complexity breeds bugs in the weirdest ways. Maybe that little text change you made causes a display issue at higher DPI settings, or when using a different font – you won’t know until you test it.

If You Find a Problem, no Matter How Small,  Put it in the Bug Tracker!

When making a fix – even for a small, seemingly insignificant problem – if it’s in production code (or in a released beta build), you’d better be writing up a bug report for it. Just making a comment in your SVN commit log isn’t enough – you need a proper report that can be searched and found and referenced, because someday, maybe years from now, you’ll need to know how or why you made this change.

(I will make an exception here to “fixing a typo” text-only changes, but only just.)

Always Write a Spec (But Don’t Write a Novel)

Just as fixing (seemingly) simple bugs can have unexpected consequences, designing and adding simple features or changes can turn out to be unexpected complicated. Writing a spec – even if it’s just a quick outline on paper or on a whiteboard – can help immensely in heading off these unexpected complexities. (Or, at the very least, you’ll know there are complexities and can design around them.) Good software should always be designed first, then coded – and writing a specification is part of the designing step (if not the entirety of it).

At the same time though you don’t need to write a novel’s worth of specifications, even for complicated changes or features. If the spec is too long (or goes into too much detail) then no one will read it – yourself included. If your spec just has to be that long, then maybe the feature or change you’re planning should be broken down into smaller parts first. Finding the right balance between length & specificity is a skill that takes practice to get right, but it’s one that’s worth learning.

These are just some of the things I wish I’d known when I started programming all those years ago – if you have things you wish you’d known, feel free to share them in the comments!

The Quest for the Perfect Media Player – or, Why I Love my Apple TV

I’ve long struggled to find the perfect media device for my home – something that can bring together the vast collection of digital media that I have saved mainly on my desktop computer.

For a while, I thought Microsoft’s Windows Media Center Extender idea was going to be the answer. So I bought one (made by Linksys) and tried to use it.

Linksys Windows Media Center Extender

In the end, the Media Center Extender was… just OK. It was a little rough around the edges when used with Windows XP Media Center (the OS it was originally made for), but it got a lot better in Vista and Windows 7.

Still, this little device could only play media that my desktop computer knew about and had saved locally. It couldn’t play YouTube videos (or any other kind of on-line video, such as Netflix or Hulu), and it couldn’t play music I’d purchased through iTunes. It wouldn’t work at all if my PC was turned off, and it had difficulties with certain types of files – sometimes crashing the entire device, or even the Media Center service on my PC!

The final nail in the coffin for this little device though was that Microsoft eventually abandoned the idea, and manufacturers stopped making and supporting them.

It was around this time that I started looking for an alternative. For a long time I thought my only option would be to buy a very small slim PC and just hook that straight up to the TV – but I really didn’t like this idea, for a number of reasons.

As it would be a fully-fledged Windows PC, it would have all the problems of a Windows PC – needing to reboot for updates, needing to have a keyboard and mouse around, driver issues, etc.

Also, it would be rather expensive to buy an entirely new PC just to play back media – after all, the media itself would be stored on a different computer.

I briefly toyed with the idea of using an XBox or XBox 360 to do the same thing – after all, they function as Media Center Extenders as well – but buying a game console just to play back media seemed rather silly to me.

Eventually I narrowed it down to some sort of stand-alone device, specifically, a Roku or an Apple TV.

I decided to try the Roku first, as it was the (slightly) less expensive option – I got a refurbished one for just $75.

Roku 2 XD

The Roku was a neat little device, but I quickly found that it was not going to do what I wanted:

  • It had absolutely NO provision for streaming media from a local source (e.g., my computer), something that was infuriatingly difficult to determine from the online information (it was never made clear if it could or couldn’t).
  • The UI for the device was a bit clunky, sharing that sort of slowness/lagging that the Windows Media Center Extender had – you’d press a button, and there’d be a slight delay before anything happened (especially noticeable if you tried to pause a movie).
  • The remote was a special non-infrared device unique to the Roku, which means I could not use my universal remote with it.

In the end, I returned the Roku after just one day.

At this point, I wondered if I’d ever find something that could do what I wanted, and I seriously expected I’d have to buy a computer just to hook up to my TV. So it was with some trepidation that I walked into my local Apple store and bought an Apple TV (the 3rd generation model).

Apple TV with remote

As with the Roku (and other similar devices), you just plug it into the power and into your TV (and, optionally, into your network – although it has wireless built-in) and you’re good to go.

Right away, I was very pleased with what I saw. If there is one thing Apple knows how to do, it’s design a simple, elegant, useable user interface – and the Apple TV is no exception.

The remote is a bit hard to get used to, as it looks like the scroll wheel from an iPod nano, but it isn’t – it’s just a 4 way controller – but this was a moot point for me, as the Apple TV works beautifully with my universal remote.

The Apple TV does exactly what I wanted it to do – it can play remote media, such as YouTube, Netflix, Hulu, or Flickr, and it can also play music, movies, and pictures from my local computer – all in full 1080p HD quality. And all this for just $99 – what a deal!

Of course that’s not to say the Apple TV doesn’t have its downsides – because it certainly does – but they are at least much more bearable than the downsides of the other options.

The biggest downside (at least for me) with the Apple TV is that in order to stream media from a local PC, you have to use iTunes – that is, you have to leave iTunes open on your computer all the time (or, whenever you want to be able to stream media to your Apple TV). And sometimes, even if iTunes is open, the Apple TV won’t connect to it.

On top of that, iTunes is very picky about what types of files it will play, especially when it comes to videos. If you’re a Windows user and you have a lot of AVI files (as I do), be prepared to have to re-encode all of your videos into MP4 format, because iTunes (and the Apple TV) pretty much will not play anything else.

Also, iTunes is… not that great about letting you organize videos (not surprising, as it was originally designed as a music program, not a video program). It can be done, but it’s slow and awkward – pretty much par for the course when it comes to iTunes, though.

That said, the Apple TV is a nice little media device, and it also has a few neat tricks up its sleeve – for example, if you turn on AirPlay, you can use your Apple TV as a remote set of speakers, so you can stream something from iTunes or your iPod Touch/iPhone directly to your Apple TV. Since I hooked up my home stereo (via optical cable) to the Apple TV, this means I can now fulfill part of my childhood dream to have music playing throughout my home.

You can also use “AirPlay Mirroring” to mirror your iPhone’s screen to your TV through the Apple TV – although you do need to be using at least an iPhone 4S for this to work, otherwise you’ll only be able to display some things (videos and photos). If you have a Mac and the latest version of OS X, you can use this to make your TV a remote second monitor – which is a pretty neat trick, if you ask me! (Sadly, there is no ability to do this from Linux or Windows, although for Windows there is a 3rd party program that can kind-of make it work, although there is some very serious lag to the display.)

Still, of all the media playback devices I’ve found and tried, the Apple TV is the best balance of function, form, and price… so much so that after a few months with it, I went out and bought a 2nd one for my bedroom TV!

These days, every new TV or DVD (sorry, Blu-Ray) player seems to have some sort of media playback options built in – but oftentimes these are afterthoughts, poorly executed and with horrible UI that is never updated or improved. The Apple TV, at least, is purpose-built for what it does, and has a typically Apple-ish polished UI that actually is updated (and even if it isn’t, it’s so well done to begin with – it’s like the iPod; if you get the basics right the first time, you don’t need to keep “fixing” it).

The Apple TV’s combination of (almost) perfect function, small size, good UI, and low price, make it the perfect choice for home entertainment – or, at least they do for me, anyway. If you’re looking for a media device, you might want to give the Apple TV a try… you might just be surprised.

Windows 8 – When Worlds Collide

I got my hands on the release version of Windows 8 the other day, and gave it a spin. What is this new version of Windows really like? Let’s find out!

So, I was able to get my hands on the final release version of Windows 8 the other day (thanks to the TechNet subscription I get through work), and in order to give it a proper look-see, I decided to install it on my computer using my real hardware, but also use a virtual hard drive. This would save me from the troubles of dual-booting (and potentially screwing up my existing Windows 7 installation), while still letting me run on “real” hardware (unlike a virtual machine).

Fortunately this was really easy (this guide from Scott Hanselman is how I did it), and it allowed me to not only give Windows 8 a proper test drive, but to do so using my dual-monitor setup.

It is worth nothing that I was not going into this blind – I’d taken a look at the Windows 8 Consumer Preview before, both in a virtual machine and on my netbook. (I had to give up on the netbook because Windows 8’s new UI requires a higher vertical resolution than my little old 10″ screen can provide).

Windows 8 – First Impressions

The setup is very familiar – the same basic “installing Windows” experience we’ve had since Vista, I believe. But it goes by very smoothly, with all the questions up-front, and it doesn’t take forever (which is always nice). In fact, the actual initial “installation” went by surprisingly fast – although after a reboot there’s still more “setting up” to be done. Still, a good start.

windows 8 boot loaderSince I was dual booting (sort-of), Windows 8 detected this and installed a very nice boot loader/OS-chooser thing. It’s graphical, which is neat, and very well designed – simple and to the point. However, this screen doesn’t appear right away – it seems like Windows 8 pre-loads itself, and only later does it show you this screen. This means that you have to wait a while before you can choose your OS. Presumably this is done because Windows 8 is set as the default OS so it just starts pre-loading it, assuming that 90% of the time you’re just going to boot into that.

Interestingly, if you change the default OS, the boot loader/OS-chooser changes as well. I changed mine back to Windows 7 as the default, and after I did, it showed the more traditional text-based Windows 7 OS chooser, which appears immediately after the BIOS POST stuff is done. So, apparently you only get this neat screen if you keep Windows 8 as your default OS.

The rest of the setup was pretty simple – enter your email address as your login and it’ll use your Microsoft account (if you have one). One of the potentially neat features of Windows 8 is how your user account is now sort of online, so if you switch computers some of your settings will come with you. I only have the one computer, so I wasn’t able to try this out, but it has some potential. Also, since your Windows login is tied to an online account (and thus, to your email address), recovering your password if you forget it is a bit easier than it ever used to be on a PC before. So that’s nice.

Once things booted up, I was greeted with this setup:

windows 8 on dual monitors

Windows 8 dual monitor screen capture

As you can see, the new Windows 8 UI is on the main screen, while you can see the old Windows desktop peeking through on my 2nd monitor.

At this point we’re going to need to address something – during development, this new UI style was code-named “Metro.” But just a few weeks ago, Microsoft announced that this is not going to be the final name for it – but they haven’t given us what the final name is going to be yet. So, in the interest of brevity, whenever you see “Metro” in this post, just read it as “the UI formerly known as Metro” or whatever pleases your fancy. Perhaps when they finally announce the real name I’ll come back and change it here.

ANYWAY – the new Metro UI, based on tiles, is your new Start page. If you’ve used Office 2010, you’ve seen something like this before – it’s what is called “Backstage View” in Office 2010 – and it’s what happens when you click the “File” menu/tab in most Office 2010 apps.

Windows 8 start page

Of course, it’s a bit more complex than that, but this is a good way to think of it to begin with. The tiles are interactive, and you can drag & drop them all over the place as you’d expect. The tiles “flow” from one column to the next, in a left-to-right order, meaning that you can’t leave any gaps on the column to the left – it automatically fills with tiles from the next column over. At least, it did for the first 2 columns. The 3rd  and 4th columns seem to be all on their own, and this is presumably likewise with subsequent columns on additional screens (which would appear to the right, and not down, as you might think – more on that odd convention later).

Native Metro apps can have double-width rectangular tiles, while the tiles that represent shortcuts to regular Windows programs will only have the square tiles.

mouse help icon
You’re going to see a lot of useless icons like this.

Since this new Start page/view replaces the old Start menu, this is where you will find every icon/shortcut on your computer. That is to say, if you had an icon anywhere on your Start menu, it will be a tile here on this new Start page instead.

UPDATE: As it turns out, the new Start page actually is more like your “most recently used” items list, as opposed to “All Programs.” Only some shortcuts show up here by default to start with. The rest can be found under “All Apps,” which shows them all in one giant grid as I described here (but with slightly smaller icons).

This is a bit of a design flaw if you ask me – there’s not really any way to organize tiles other than by putting them in columns and spreading them across different pages (the Start page scrolls horizontally). There are no folders or sub-folders like you might be used to from the old Start menu. And if you install any old-style programs, your Start page will inevitably become cluttered with useless shortcuts that you never use.

While it’s easy enough to delete these, it is a bit awkward. And since the tiles on the Start screen are bigger than icons on the old Start menu, this sort of clutter is much more noticeable.

The Traditional Windows Desktop is Still Here

desktop tile shortcutFortunately, it is super-easy to switch to the traditional Windows desktop. On my computer in particular the desktop was still visible on my 2nd monitor (the Metro start page only covers one screen), and there’s a handy (and large!) shortcut for it right on the Start page.

Once you’ve switched to the traditional desktop, you don’t ever have to see the Metro UI again, unless you click where the Start menu button used to be, or press the Windows button on your keyboard.

As for how things work in the traditional desktop, well… they work just like you’d expect them to. It’s just the same desktop we’ve always had, but better. If these were the only changes in Windows 8, you’d be seeing nothing but praise.

It’s great that the taskbar now appears on all of your monitors (instead of just one), and the “ribbon” type UI in Explorer is kind of neat. Also, the new file copy dialogs are pretty sweet, with the extra info they can give you, as well as the better prompts that appear when you copy files with the same name.

In general, the traditional desktop UI is a bit more… well, square-ish, for lack of a better word. There is a bit of metro-ish UI inspiration here and there, and I sometimes feel like going back to a sharp-edged square UI is a step backwards (remember when having curved edges to a window was a big deal?), but otherwise is it just fine, no real surprises to speak of.

The UI Formerly Known as Metro

OK, I know you’ve probably been waiting for this part – so let’s talk about Metro.

The whole Metro UI is obviously very much inspired by the concept of touch – you see references to it everywhere.

windows 8's touch mentality
How do I “tap” with a mouse?

Having spent a good deal of time doing tech support for people, I can tell you right now that the Metro UI is going to confuse a LOT of people. There is a heck of a lot to get used to here, especially if you are using it on a PC without a touch screen (as most people will be).

Another thing that is inevitably going to trip a lot of people up is that Metro apps do not have a close button, and in many cases they don’t even have a “back” button, either. There literally is no way to “exit” the application in the traditional sense; and this is by design.

Metro apps are completely suspended when they are in the background, meaning they do not use any CPU time, so there technically is no reason to ever close them. This is much like how on iOS once you open an app, it is still “open” in the background when you switch to other apps, and remains open until you do a hard-shutdown of the device (or press & hold the “home” button to show running apps, then touch & hold the app’s icon to make them shake and have a red “x”, which is how you can actually force them to close).

(There are ways to close Metro apps, obviously, but they are not at all intuitive – probably because they are meant to not be necessary in normal use.)

This… takes some getting used to. I admit I found myself in a Metro settings screen and wanted to go “back” out… but couldn’t find any way to do so. For example, look at the picture below and see if you can figure out what you need to do to get out of this window.

Windows 8 metro PC settings page
How would you exit from this screen?

If you guessed “move your mouse to the upper-left corner and hover there for a second, then click the thumbnail which will appear,” you’re either psychic or you’ve used Windows 8 before.

Which brings me nicely to my next topic, which is task-switching in Metro.

Task Switching Just Got… Harder?

In the traditionial desktop, you had the taskbar, which was docked to the bottom of the screen. In Metro, you’ve got… something not unlike a taskbar set to auto-hide and locked to the left-hand side of the screen (each screen if you have multiple monitors). To access it, you hover your mouse in the upper-left corner, which will show (after a moment’s delay) a thumbnail of the last Metro app you were in. You will also see a tiny bit of the edge of thumbnails of any other Metro apps that are open (as well as a thumbnail for the traditional desktop) going down along the left hand side of the screen. Moving your mouse down over these slim edges will cause them to pop fully out, at which point it really starts to resemble the taskbar, just with thumbnails and on the left side of the screen.

This isn’t so bad, as far as it goes, but it does take some extra work to switch apps. (Using keyboard shortcuts still works as before, however.) If you were someone who set your taskbar to auto-hide, this might not bother you as much, but it is still cumbersome to use, especially if you’re used to the default taskbar behavior (which was to be visible all the time). I think this is the “make it tablet friendly” mentality showing through again – on a tablet, you don’t want precious screen space taken up with non-active UI elements like a taskbar. But for a PC with a mouse and a big screen (or multiple screens) it is just annoying.

Finally, there’s a big UI “fail” in the form of the “charms bar.” This is the bar that appears on the right side of the screen if you hover your mouse on that side of the screen, or if you hover your mouse in the upper right corner.

This charms bar has a search button and the settings button, among a few other things. It’s not a bad thing by itself, but the given that:

  •  This bar is always on the right side of the screen
  •  The metro UI is only ever on one monitor

This means that if you have multiple monitors, and have a screen to the right of the screen where the Metro UI is, then this “charms bar” is infuriatingly difficult to bring up, because your mouse keeps “sliding” past the edge of the screen and onto the next monitor!!

The whole idea of using the corners of the screen as “hotspots” like this comes from Fitts’s Law, and that’s all fine and good… but when you have multiple monitors, Fitt’s Law doesn’t apply to the side of the screen between two monitors, because it’s not really the “edge” of the screen anymore!

UPDATE: As it turns out, this isn’t quite as bad as I originally thought, because you can also use the corners of any additional monitors as well. In my setup, this meant that I could use the top-right corner of my 2nd monitor (where Fitts’s Law did apply), in addition to the top-right corner of my primary monitor. That said, getting all the way over to the far side of a multi-monitor setup is a lot of mouse movement.

Horizontal vs. Vertical Scrolling

This is a bit of a pet peeve with me, but… In the new Metro start page, and in all Metro apps, there is NO vertical scrolling. Instead, things scroll left to right (horizontally). Which kind of makes sense for a tablet because the natural thing to do is swipe left and right… but it just feels wrong.

Considering that basically every PC in existence has a mouse with a scroll wheel on it – a wheel that scrolls UP and DOWN – the fact that they decided to make the default scrolling in Metro be RIGHT to LEFT is just utterly incomprehensible to me.

The apparent obsession with touch & tablet design in Windows 8 makes me imagine that there was someone at Microsoft screaming at the Windows team, saying, “tablets are going to be the next big thing! We have to work on tablets!!”

…Which, considering the news about Microsoft Surface, doesn’t actually seem that far-fetched.

Final Thoughts

I wanted to like Windows 8 – and I guess I do. It has some differences to be sure, but what new OS doesn’t?

It is going to be a support nightmare. This is not an incremental change – this is significant departure from the conventions of desktop computing that we have all gotten used to over many, many years. Bringing these tablet-style conventions to a desktop OS is, frankly, more than a little jarring. I do not envy the people who will have to support large numbers of office workers when they switch to Windows 8.

There is going to be the inevitable resistance from people who don’t like change of any kind. People like what they know, and Windows 8 changes a lot of things (for better or for worse).

That said, is Windows 8 done well? Is it well executed?

In my opinion, the answer would be… no, not really.

Taken apart, the Metro UI and the traditional desktop are done very well. By itself, the Metro UI would have made a fascinating new OS, which would have gotten a lot of praise and been tried out by lots of curious people. But when you try to mash these two worlds together – the world of the touch screen device, and the world of the mouse-driven desktop PC – you end up with something that is just not as good as either part alone.

Now, is Windows 8 “stay away” worthy, like some said with Windows Vista (or its spiritual predecessor, Windows Me)? No, I don’t think so. It has its oddities, but the desktop is still there, and as I’ve said, it’s easy enough to just treat the Metro UI as a glorified “backstage view” start menu. The other benefits and improvements to the underlying OS and the desktop side of things are well worth it.

All in all I’d say give it a go if you have the chance, but I wouldn’t rush it.

Update: I finally went ahead and upgraded my computer to Windows 8 “for real,” and after using it for a bit, I’ve posted my more in-depth thoughts. Give it a read!

Update 2: After using Windows 8 for even longer, I’ve posted some more thoughts.

Bringing back the classic “netbook remix” in Ubuntu 11.10 (Oneiric Ocelot)

How to bring back the old-style “netbook remix” user interface in Ubuntu 11.10 Oneiric Ocelot.

I’ve talked before about how to bring the netbook remix user interface back to Ubuntu 11.04 (Natty Narwhal), but since 11.10 (Oneiric Ocelot) came out, Unity has become even more the default – so much so, that you can’t even get back to the classic GNOME desktop (which you need to set up the old netbook remix UI).

I’ve been using the new Unity UI on my netbook since this update, and it’s… OK. It’s better than it was in 11.04, for sure, but it’s still not quite what I’d want for a netbook. (The bigger icons in the netbook remix still win when it comes to ease of clicking.)

Fortunately, there IS (in theory) a way to bring back the netbook remix, although it takes a bit of work.

First, you need to bring back the classic GNOME desktop. To do this, open a terminal and issue this command:

sudo apt-get install gnome-session-fallback

Once you’ve done that, you should be able to follow the steps outlined in my original article. Be aware that this time you’ll need to follow the links to manually download the packages for maximus, the go-home applet, the netbook-launcher, and the window-picker applet. And you may need to install some additional packages as well to get it to work – just watch whatever the Ubuntu Software Center’s UI tells you is required as a dependency, and then go get that.

For those who are too lazy to go to my previous article to get the links to the required packages, here they are:

I hope that this works – I’ve been able to restore the GNOME session, but haven’t taken the time to re-download all the packages required. For me personally, I’m giving Unity a try (since the netbook remix is no longer technically supported). But if this works for you, then more power to you.

Bringing back the classic “netbook remix” interface in Ubuntu 11.04 “Natty Narwhal”

How to bring back the classic netbook interface of the old “Ubuntu Netbook Remix” (UNR) in the latest version of Ubuntu.

The other day I saw the news that the latest version of Ubuntu 11.04 “Natty Narwhal” had been released. So, like any self-respecting geek, I updated my netbook (which runs Ubuntu).

The upgrade was smooth and easy, but one thing I noticed right away after rebooting was that nothing looked the same.

The thing is, Ubuntu has committed to using the new “Unity” interface for Ubuntu, and they have also folded the netbook remix stuff into the main “Ubuntu” release. What this means is that, starting with 11.04:

  • Ubuntu uses “Unity” by default, even on netbooks
  • There is no longer a separate “netbook remix” for Ubuntu

Now, don’t get me wrong – I appreciate the “Unity” interface, and I like the idea and the execution of it is pretty great… but I disagree with the idea that this is the perfect interface for netbooks.

First off, the “Unity” interface is rather graphically intensive – it has some neat 3-D effects as you mouse over the bar – and this just really kind of bogs down a netbook. Now, maybe newer netbooks have more powerful graphics cards, but I always think of Linux as being great for older computers too, and the “Unity” interface just doesn’t cut it on older hardware.

Now, you can always switch back to the Ubuntu Classic UI (by using the Logon Screen app, or by just choosing at the login screen itself), but even that is a bit of a compromise, especially for netbooks. The netbook UI was optimized for small screens, where every inch of screen space was valuable.

ubuntu classic desktop
The "Classic" desktop isn't that great for small netbook screens

So, I set about trying to find how to bring back that classic “netbook” look that previous versions of Ubuntu Netbook Remix (UNR) had. After some experimentation with a virtual machine (and, in the extreme, trying out some other Linux distros to see if they were more netbook-friendly) I found the way to do it.

Before we begin, I suggest that you switch to the classic UI before beginning – that way you won’t need to worry about fiddling with the “Unity” launcher bar thing.

There are 4 packages you need to have before you begin, so fire up the Synaptic package manager (or a terminal if that’s your thing) and make sure these packages are installed:

These 4 packages are what basically make up the older “Netbook Remix” edition of Ubuntu.

Ubuntu package manager - showing "netbook-launcher-efl" package
Selecting the "netbook-launcher-efl" package for installation

The first thing to do is to go to your startup applications in Ubuntu and add netbook-launcher-efl and maximus to your startup applications.

Ubuntu preferences menu - startup applications
Selecting the "Starup Applications" app from the "Preferences" menu
ubuntu startup program - add netbook-launcher-efl
Adding the Netbook Launcher to startup
ubuntu startup program - add maximus
Adding Maximus to startup
Ubuntu Startup Applications Preferences
Startup Applications

Next, add the window-picker-applet and go-home-applet to the top panel in Ubuntu. You may also want to remove some of the other panel items that are up there currently, and then re-size and re-position the panels so they look like the old netbook remix. If you have a panel at the bottom of the screen, remove that as well.

ubuntu - add to panel
Adding an applet to the panel
ubuntu - delete this panel
Deleting the lower panel

Finally, reboot the system and voilà! The look of the old Ubuntu Netbook Remix is back!

ubuntu - netbook look and feel
Ubuntu Netbook Look and Feel Restored!
ubuntu - netbook look - with windows open
Maximus and the window picker app keep things organized on small screens

I really like the netbook interface – I think it’s the best fit for netbooks, especially not-very-powerful ones like mine. The maximus package keeps windows from having a title bar (it gets merged into the panel at the top, where the window-picker-applet takes care of showing you the app’s name and giving you a close button) and of course keeps windows maximized all the time (which is the only way you’d ever want them to be on a netbook’s small screen). Plus, the netbook launcher is just great for launching the few programs you use on a netbook. The icons are huge and easy to click when using a little touchpad, and the graphics are smooth but not overdone.

Screenshot of Ubuntu on a Netbook
Ubuntu with these netbook changes on my little netbook

It’s worth mentioning that during my experimentation, I tried out a few other options, including some different distributions that claimed to be good for netbooks. One distribution I found called “EasyPeasy” was based on Ubuntu and was basically the classic “Netbook Remix” that I remember. However, it seems to lag behind Ubuntu in terms of releases – it was still using Firefox 3 for example. Still, if you’re just getting a new netbook, you might want to try EasyPeasy from the start, as it comes “out of the box” with the netbook look & feel.

However, if you want to stick with the Ubuntu you know and love, these steps will bring back that classic Ubuntu Netbook Remix interface, just the way you remember it.

(Update: if you’re using Ubuntu 11.10 Oneiric Ocelot, I’ve got some extra steps for you here that should do the trick.)