Saturday, September 13, 2008

Ubuntu 8.10 Inreped Ibex: Part 1

Alright, I know it's technically Saturday and I said I would have this up on Friday but I ran into some technical difficulties. The update is installing on my test computer as we speak. The problem is that I started the upgrade _Thursday_ night. So far several packages have failed to upgrade properly as well, including update manager. However this is an _alpha_ release (alpha 5) so I expect these problems and won't hold it against them. They will be duly reported.

Well point is that I have nothing really to say tonight. I wish I did. But I don't. Only thing I can really throw in there is that it would be nice if the bandwidth on the Ibex repositories were higher. Upgrading my laptop to 8.04 from 7.10 took roughly four hours total. The massive download _alone_ for Ibex took over 14 hours. Not ok in my book.

More to come as I finally get to rev up the system and take a look around.

Until then.

Thursday, September 11, 2008

Inroducing BrowserBox WM

The BrowserBox window manager project has now started. This aims to be a lightweight desktop environment with integrated net capabilities. Some of the planned features include:

- Desktop integration with Google Gadgets
- Desktop configurable with html, javascript, and ruby on rails
- Configuration tools for the desktop for those with less programming skills or none at all
- Desktop integration with the Gecko web browser engine

The basic idea behind it all is to allow for seamless integration between the world wide web and dynamic content on the desktop.

The project is based on the blackbox window manager and is currently in the planning stages and will being development shortly.

This project is currently looking for volunteers to help!
Positions available include:

- C++ Programmers: Must be competent with C++ and have some GUI design knowledge
- Perl Programmers: Must be able to write automated configuration scripts
- Web Designers: Must be able to work well with HTML or XHTML and Java
- Graphic Designers: To design default themes and logos

If you are interested in volunteering for the project please e-mail me at hpypenguin [at] users [dot] sourceforge [dot] net for more information or with details of your experience.

Wednesday, September 10, 2008

First Look at Ubuntu 8.10: Intrepid Ibex

Well I had planned on this being the first article I wrote about the forthcoming Ubuntu release but I'm afraid that at this time I can not do that. The upgrade will not properly work on the test desktop I selected. The problem, according to the feedback from update manager, is an inability to correctly modify the repositories prior to the actual upgrade taking place.

When I have time I will look further into the issue and see if there is already a workaround known and if not what I can do to create one.

Until then I have selected another test desktop which will take a full install of Ibex from CD. However, I will not consider these results to be reliable in terms of upgrading as we're talking about different processes being used at this point.

To highlight some on the features of the new version I will be using ext4 with LVM and both Gnome 2.2.3 and KDE 4.1. I've never been a fan of KDE but I suppose it deserves a place in the reviews as many people do like it and use it with Ubuntu on a regular basis.

Bugs found during this test will be listed here and be submitted to the development team.

The desktop that will be used has a Pentium 4 at 2.6Ghz and 2GB DDR400 RAM along with a 30GB and a 60GB IDE Hard Drive. Testing will begin this Friday the 12th and will continue for five days with posts being made at least once a day on the status and results.

Sorry for the delay.

Ah, before I forget the version will be Alpha 5.

Until then.

Tuesday, September 9, 2008

Five Window Managers You Should Try

1.) FVWM -
A lightweight highly customizable window manager for the minimalist in all of us. It can be tweaked and turned into just about anything you want it to be. Although I found one of it's forks, FVWM-Crystal, to be more to my liking, there's no denying that this is the base that makes Crystal such a joy to use.

2.) IceWM -
My personal favorite and the window manager that runs my infamous development oriented laptop from the recent How-tos. Easy to configure and easy to use. This manager is compliant enough with gnome (and even have an official gnome support version) that I was able to run a bunch of gnome apps and even the gnome menu bar within it without a hitch. Lightest memory footprint I've recorded occupying only 3.9% of my laptops 512MB RAM at the most. Anyone looking for sheer performance and a remarkably easy setup would do well to look at this. Check out the IceWM Configuration How-to on this site for tips if you need help.

3.) Enlightenment -
I didn't like it but what do I know. One of the more popular lightweight environments availible. While I had a multitude of problems with it sheer number of users alone justifies at least taking a look. It's a real hit and miss on this one. You either love it or hate it. I will say that it can be made to look exceptionally nice when the effort is put in.

4.) Fluxbox -
The ultimate in simplicity. Designed to be as usable as possible, any sort of attractiveness seems to be an after thought. Which as far as I'm concerned is a good thing. When testing this window manager I was pleased with the results but I suffered from extreme configuration issues. My laptop wouldn't do much with it even after fetching the latest version off the website. I'm still not entirely sure what the problem was. So I had to run it on one of my testing desktops. As a result the test results are somewhat tough to analyze as that desktop has far more processing power then my laptop does. Suffice to say it was pleasant enough and I'm confident that when and if I work those issues out that it will run well on the laptop too.

5.) Wm2 -
If all you really want is frames around your X programs, that's about all you're gonna find here. That is it's one and only selling point. There's a narrow niche for this window manager but a real one. If you hate extras of any kind this is the one for you.

There you have it. If you think I left one or two off let me know!

Until then.

Sunday, September 7, 2008

Configuring IceWM: Basics

When I started using IceWM I found little in the way of straight forward tutorials for configuring it. The documentation available from the website is suitable for most cases but certainly lacking in some regards. So I'm going to present some tips on configuring this handy window manager as easily as possible.

First things first. I would recommend against using IceConf. This program is a gui that gives you some options and will automatically generate config files for you. I advise against it because the options it lists are not comprehensive, not very well explained and the files it generates may leave off certain features enabled by default that you may wish to keep but not know how to implement yourself. Foremost of which is the right-click menu. This menu goes away after using IceConf and when I started tweaking and configuring my window manager I didn't know how to get it back. Nor was the preferences file generated by the program commented well enough to let me know what I needed to change to fix it.

Now that that's out of the way let's get started. These directions are for Debian based systems and file paths as well as some commands may be different on other distributions. First make a new directory in your home folder called '.icewm'. Now copy the contents of '/usr/share/icewm/' into the new directory '.icewm'. These are the default config files for the window manager. Editing the ones in your home folder not only means that you will have backups and that on a multi-user station you won't be messing with other people's settings. At some point you may want to add a file called 'startup' but we'll get to that later.

The first file you probably want to edit is called 'preferences'. It can be easily modified using your favorite text editor by simply uncommenting and/or changing the boolean operator of a given function. The file is well commented and functions are well explained in most cases. If you don't know and can't figure out what something does you have two choices. To be on the safe side don't touch it and assume it doesn't matter much anyways or if your willing to take a bit of a risk mess with it and see what happens. I strongly encourage the latter. After all you can always change it back and you have backups handy just in case, may as well have some fun. Besides almost all of the options in the file have to do with things like color, size and style. It's doubtful that you're going to break anything by changing these values.

The next file is called 'keys'. This allows you to change the key bindings within the environment. Again it's pretty self explanatory. Modifiers available include Alt, Ctrl, Shift, Meta, Super, and Hyper. To add a key binding on a new line type

key "$key1+$key2+key3.." $command

where $key(n) are the keys to use for the bindings and $command is the command with options to execute. The keys to use must be surrounded by double quotes. The command should not be quoted. I find this to be the most useful section to configure. Since I have IceWM on a laptop and the mouse is awful this allows me to bypass using it completely if I so choose (and I do, because I hate the built in mouse on laptops, all of them)

The last file you're most likely going to want to edit is called 'menu'. This file controls what is displayed in your start menu. This is also pretty darn easy to edit. Notice a theme here? It's really quite simple to make tons of changes. To add a program to the menu find the section you would like it to go under and on a new line but staying inside the {} brackets type:

prog "$Name" $Icon $Command

where $Name is the name you would like to appear in the menu, $Icon is the path to the icon to be used (or in in lieu of using an icon type '-' without the quotes of course) and $Command is the command with options to execute. To add a menu or sub menu type:

menu "$Name" folder {
$prog1 line
$prog2 line
$prog(n) line

where $Name is the name of the menu and $prog(1, 2, n) are the lines for the programs you would like to appear in that menu as described above. Menus can be nested inside other menus too. Anything that appears within the {} brackets of a menu will appear under that menu and that goes for separate menus as well. Here's an example taken from my menu file:

menu "Development" folder {
menu "Math and Science" folder {
prog "Octave" octave octave-2.9.12
prog "Maxima" maxima maxima
prog "R" R R
prog "SciLab" scilab scilab
menu "IDEs" folder {
prog "Geany" geany geany
prog "Eclipse" eclipse eclipse
menu "Help and Documentation" folder {
prog "DHelp" dhelp dhelp
prog "DWWW" dwww dwww

If you can't tell from the example this creates a menu called 'Development' that then has three submenus; 'Math and Science', 'IDEs' and 'Help and Documentation'. The quotes around the names of the programs and menus are not strictly necessary unless there is a space in the name. They are included for consistency.

The last file I'm going to cover here is called 'toolbar'. It is edited in the exact same way as the 'menu'. The difference here is that changes applied to this file appear on the toolbar itself rather than in the menu.

Well that wraps it up for today. At some point I'll cover some more advanced configuration methods for IceWM including using the startup file and building themes. Until then.

How to Turn an Older Tablet Notebook Into a Functional Machine: Part 3 Choosing a Window Manager or Desktop

This is part 3 in a series about making some solid use of an older tablet laptop. In part 1 we talked about performing an install over the network and in part 2 we went over configuring wireless and installing some basic packages with a few command line tips for good measure. Now we're going to discuss choosing a window manager or desktop for the system.

Many people will never need a desktop environment. Actually the laptop used for this test went without one for some time after it was setup because I simply had no need to use one. However, as luck would have it some of the programs I wanted to use had to run in x. They were all either IDEs or document viewers for viewing pdf and ps files and there were very few of them. Since only a few programs needed x to run and the laptop isn't exactly top spec I saw no need to go for one of the larger desktop environments like Gnome or KDE. Even Xfce, I decided, was too much when all I wanted to do was run some nicely featured coding environments and view pdf files. The choice was made to use a window manager instead.

A window manager is kind of like a desktop but far more rudimentary. Many of them are still quite capable of looking nice and performing all the tasks you could possibly need them too. They are as a rule harder to configure then the major desktops but more extensible. They are also generally faster and consume less resources, in terms of both memory and storage space.

Choosing a window manager is a very personal choice. Go with whatever works for you and suits your needs. I tried quite a few before I settled on one to use and you probably will too. Check out for a nice site with information and links to various window manager and desktop sites.

The first window manager I tried (from here on noted as simply wm) was Enlightenment. I chose it because I had heard of it. That was my own motivation for using that as a starting point. Suffice to say I did not enjoy it. At all. It did what I needed it to do, I just didn't like the feel.

The next one I tried was Fluxbox. I should mention here that I started with the version from the repository first. Only if I liked it did I then get the most recent version and configure anything. The version of Fluxbox I got from the repository was useless. Literally. Without configuration I was left with a blank blue screen and a task bar with a clock. No key binding, no way to access programs or a terminal, no nothing. I only wanted a wm so I could run the five programs I had that required one. I wasn't looking to spend a ton of time setting up my wm when I was barely going to use it. Fluxbox was off the list.

The third one I tried was Fvwm-Crystal. Here we had a nice little system going on. I decided I liked it enough to download the newest version and patch it and was left with a nice looking functional desktop. It was already set up with a decent configuration and was easy to edit further. This one got to stay on the list but I wasn't done trying things.

The last one I tried was IceWM. The version from the repository was decent enough so I installed the latest over it. Bingo. I was hooked. Configuration was not as simple as for Fvwm-Crystal but it was still quite easy. Notably the key bindings. A simple configuration file allowed me to set a key binding for everything I wanted to use. No need to navigate or even setup the menus. A Ctrl-alt-e and I launch Eclipse. A Ctrl-t and I get a terminal. Ctrl-alt-h launches dhelp to provide me documentation. This was the one. I even took the few minutes to give it a nice looking theme (blue heart) and a decent background image (using habak). I also set up a pair of terminals that stick to the desktop and are completely transparent to let me monitor the system with 'top' or launch any other program I may need without having yet another window on the screen. All said and done IceWM only occupies 3.4% of my memory and .8% of my cpu at the most. Which leaves things running plenty fast.

Fvwm-Crystal would have been a viable option for me as well. I simply found IceWM to be more to my liking. In terms of technical merits I found them to be roughly even. It was mere preference that led to the final decision.

Making sure that your wm launches when you startx is easy enough. Create a file called .xinitd in your home directory and using your favorite editor add the following.

exec icewm

Or whatever the command is for your wm of choice. It is commonly the wm's name but it may be something else so be sure to reference the documentation that came with it. For instance for Fluxbox the command is 'startfluxbox'. Either way be sure that the first word is exec. That's all you need to do.

Now when you boot your computer you will still be dealing with the command line but you can pop open the wm at any time to use those gtk and qt programs you love so much. Many of these wms are highly customizable and will allow you to build more extensive menus in the event that you want to use a desktop more often then not.

And there you have it. We started with a four year old tablet pc that had no operating system, no bootable media, and not much in the way of performance available and gave it a new life as a mobile development platform. Of course it could be used for many other purposes as well. Including just a regular old laptop, but turning it into this was more fun and taught me a lot along the way. Notably in the way of dealing with problems unique to laptops like battery power and unusual hardware.

We've covered network installation, configuring wireless, some basic packages to install, a few command line tips, and choosing a window manager that runs well on the resources available. I hope you took at least as much from this experiment as I did. Soon to come will be a wireless installation attempt and some tips and tricks on configuring IceWM. Until then.

How to Turn an Older Tablet Notebook Into a Functional Machine: Part 2 Configuring Wireless and Choosing Programs

This is the second part of the mini-series of how-tos on making good use of an older laptop. See Part 1 for information about installing Ubuntu on a laptop with no bootable media options using a network connection.

Now that you have a command line interface and a full blown operating system it's time to get things working the way you want them to. I designed this laptop to be a mobile development platform so all of the choices I made were not just skewed to my personal preferences but also to that end. If you're going to use your laptop for something else your decisions in this regard may vary substantially.

The first thing to do is enable wireless networking. After all, what good is a portable computer if you have to plug in to access the internet. Luckily activating your wireless connection from the command line is fairly straight forward. For the duration of this article a $ is your user name's prompt and a # is the root prompt.

First thing I like to do in Ubuntu before performing admin takes is to sudo into root. This saves a lot of time and potential frustration if you forget to type 'sudo' before a lengthy command that requires it. One of the biggest complaints I hear from more advanced users is the lack of a root account in Ubuntu and the need to sudo into everything. Well this isn't actually the case. There are two easy ways to access the root prompt in Ubuntu. One that uses global settings:

$ sudo su root

And one that preserves any locally set variables you may have:

$ sudo su -l root

Either of these commands will bring you to a root prompt that you can then exit from by typing 'exit' or hitting Ctl-d.

Now that your in a root prompt you can configure your network interfaces without having to sudo every time. If you know the essid of the wireless network you need to access you can skip the steps involving iwlist and go straight to iwconfig. Otherwise type:

# iwlist scanning | more

The pipe to more is optional but if there are a lot of networks in range it can be a good idea. Find the one you want to use and note the essid and if it needs an access key or not. Then type:

# iwconfig $eth essid $essid key $key

Where $eth is your wireless interface, discoverable by typing simply iwconfig and viewing the output, $essid is the essid of the network your attempting to connect to and $key is the network access key if required. If the key is in hex you can type it in as is but if it's a passphrase start the key with 's:'. Now when you type 'iwconfig' you should see the choices you made visible for your interface but no ip address. To connect and get an ip assigned via dhcp type:

# dhclient $eth

Where again $eth is your wireless interface. This will broadcast a dhcp request via port 67 to the ap for the essid you specified. One it's complete your internet is up and running.

The next thing to do is install some appropriate applications. I'm going to refrain from discussing window managers or desktops here and save that for part 3. Remember that this laptop was designed to provide essentials for programming and development and not much else.

It should be telling, however, that the first program I install on any new system is Nethack. I just really love to play Nethack. It's also the way I take breaks when things aren't going as planned and I need to relax for a few minutes. For this reason I actually consider it a tool. It's my 'keep phil from breaking the computer' tool. After Nethack there are a few essentials that almost any system ought to have. One of those being an editor. I'm not going to open the can of worms that is the endless debate between vi and emacs. Suffice to say that I use and installed both. For packages whose name you already know and that you know can be found in the Ubuntu repositories you can simply type:

# apt-get install $package

Where $package is the package you want. This will fetch the package from the repositories and install it for you. Otherwise you can launch aptitude by typing 'aptitude' and search for what you want.

Some may ask why I'm bother to go over something as simple as how to install packages if the first part of this how-to required successfully performing a network installation, far from a simple task, and the answer is simply; because you never know. Someone who has little or no command line experience can still figure out how to do a net-boot but may not know how to work with Linux with nothing but a command line handy. It happens. I've seen it.

Some other packages I ensure are installed are gcc, g++, gcj, gfortran, g77, bsh, clisp and associated libraries, a variety of major and minor modes for emacs, octave, maxima, clamav, ruby, perl, python and supporting documentation for all of the above. To break that down a bit:

gcc - The Gnu C Compiler, a true must have for any Linux programmer
g++ - The Gnu C++ Compiler
gcj - The Gnu Java Compiler
gfortran - The Gnu Fortran Compiler
g77 - The gnu Fortran 77 Compiler (I like Gnu compilers what can I say)
bsh - Bean Shell, a java scripting shell
clisp - Common Lisp, an amazingly handy programming language
octave - Octave 2.9.x (The version I'm currently using), a math and science scripting program
maxima - Another math scripting program
clamav - Clam Anti-Virus, just cause your using Linux doesn't mean you shouldn't be careful
ruby, perl, and python - Handy scripted languages used mostly for admin purposes (by me anyways)

That is of course just a sample of what wound up on my system. I just consider these some of the bare minimum packages that should be installed on a system whose purpose is to develop programs. The math and science scripting programs are included as they can serve a valuable place in working out and implementing complex algorithms. Both can be included in C programs. I also tend to leave a lot of leeway for alternate languages to be available even if I don't use them often or at all. For instance I have never and may never use Java but I have some tools to make it available in case I do decide to use it.

Another big thing in my book is ample documentation. It can take up a lot of additional space but I think it's well worth it. Especially for libraries and programs I'm not familiar with. I generally install elinks and dhelp to help organize the documentation that I have on the system. I may also install the docs for programs or libraries that I don't yet have installed to see if they would be a good match.

A complete list of packages installed on my test system would be extensive and far too long for this article. I install quite a bit of source code to reference as well. To me analyzing the way somebody else solves a problem can help me through a slump.

Now for a small section on navigating the command line is your not used to it. I will assume that you're familiar with the basic commands such as; ls, pwd, ps, cp, rm, etc.

There are two ways that I handle using multiple apps at one time. The first is to Ctl-z to put an application to sleep and then '%$app' where $app is the application put to sleep, to bring it back up. The second is to run multiple virtual terminals at a time to allow for rapid switching between active programs without having to put one in the background. I often due this to reference documentation while using a new program or library. Ctl-Alt-F* where * is 1 - 8 allow you to switch between virtual terminals. On a cautionary note I have found that some window managers don't like it if you switch out of them using this method. At least on my laptop, they would refuse to resume properly forcing me to restart x from the command line. So be prepared.

Install and activate laptop-mode-tools. There is no readily available battery monitor on the command line by default. Having your battery run out at a crucial time can be devastating (See Part 1 of this How to). With no way to perform a rescue boot except over the network you really don't want to cause problems for your filesystem. Fixing it can and will be a pain though not terribly difficult if you know what you're doing.

Never underestimate the awesome power of grep for finding what you need. A simple ls -a | grep $string where $string is what your looking for can work wonders. Try not to leave the string too vague though or it won't help much. I also tend to avoid using the -R (recursive) function of ls as it can give me too many useless results.

So there you have it. Some basic setup to get you going. In the next part we'll take a look at choosing a window manager or desktop to suit this machine's needs and all the problems that come with it.

Saturday, September 6, 2008

How to Turn an Older Tablet Notebook Into a Functional Machine: Part 1 Initial Boot and Installation

The laptop used for this testing is one fickle beast. Most of these techniques should work on any given system that may be causing you problems but, fair warning, some issues are hardware specific and will need to be tweaked, mostly in minor ways.

The laptop used is a Toshiba Portege M205-s810 with 512MB DDR133 RAM, a 1.5Ghz Intel M CPU and a 60GB hard drive. The system is four years old, has no optical or floppy drive, a broken bios that makes booting from USB next to impossible and no installed operating system (courtesy a series of terrible mistakes I made some time ago, long story but more on that some other time).

The first step was choosing a distribution. I initially wanted to go with Debian as this is the system that I'm most familiar with. Almost every distro that runs in my house is Debian based, the one exception being a Compaq Presario 8600 from 1996 with 24MB of RAM that uses a Slackware based system. After perusing through the Debian web site and various tutorials while I got my bearing I decided that Debian would not be a good match for the system I wanted to build. The reason was a simple one. Before this little experiment I had never so much as attempted to install an OS over the network and I wanted to keep things as simple as possible. OpenSuse would have been a viable option if not for hardware detection issues due to the tablet element of this PC. All said and done I chose Ubuntu to use as the base system. You can get a pre-made package for installing Ubuntu over the network from the official website. (NOTE: Network installations are broken under Hardy so Gutsy must be used for the time being)

Now it came time for the network boot process. There is a handy guide to doing this on the Ubuntu support site. Two guides actually. The caveat here is that not every process is going to work for your setup or your system. The quick guide offered by the official site recommended temporarily shutting down the firewall. Something I would advise against under most circumstances.

This step of the process occupied more of my time then anything else. The endless tweaking of config files, trying a variety of tftp daemons and carefully building firewall rules to cooperate with the installation was maddening. All said and done I spent over 18 hours total working these issues out. It didn't help that my home network is built to be as secure as possible and I didn't spend much time ensuring that adding machines temporarily for this sort of thing would be easy went I set everything up. The lesson here is to think long and hard about the choices you make when building a home network. You may want to spend the extra time to build the scripts necessary to make such changes as painless as possible instead of dealing with it later.

Of course to do this you're going to need a server. As it's only a tftp transfer almost any old server will do so long as it has an NIC and the right tools installed. The tools I used to make this work were dnsmasq and atftp, both of which and be found in the Ubuntu repositories and installed with a simple apt-get from the command line.

The alternate method to how I performed the install requires an ftp or http server as well and a slightly more capable machine as it will need to serve the install program the rest of the files it needs. Again in the name of keeping things simple I chose to perform the install over the internet and cut out that process.

I'm not going to go into detail on making the network boot work because very comprehensive instructions can already be found on the Ubuntu support website. I see no need to repeat them here. I will just say that you need to make sure your firewall rules are properly handled or your in for a world of hurt. I would advise assigning the rules regarding this process by mac address rather then ip for security reasons.

Now, assuming you've succeeded in getting the laptop to boot from your server you should be staring at an installation screen. This is where the first major configuration choices came into play for me. As this laptop was destined to provide a mobile development work station, I did not want it bogged down with a heavy desktop like Gnome or KDE. I even passed on using XFCE as I decided that it was still too memory and space intensive for my liking. Removing the default desktop Gnome after installation is easy but bothersome. Skip this unnecessary hassle and type:

# cli

(where # is the prompt) at the installation prompt to install a command line only system. This will save a good amount of space by not installing Gnome and all it's bloat and simplify the later process of customizing your distribution to your needs and wants. (In all fairness to the good people of the Gnome development team, I use it as my primary desktop on all but two computers I own. It has it's place and my wife and I both love it. Just not on computers that I need to be as fast as possible with limited resources to that end)

Other options are available at this command line including a rescue mode and a shell. If you plan on using your wireless network and have WEP or WPA enabled you will need to enter the shell and load the appropriate modules for 802.11x support. The modules do not come included with the network installation package but can either be added before hand or introduced via USB drive now that the computer will actually read it. I'll admit that rather then go through this ordeal I stuck to installing via Ethernet but at some point I will attempt to do a wireless install and get back to ya'll on how that goes.

The install is mostly automated but several steps can be manipulated by hand if you so choose. It will make an attempt at auto configuring your network connection via DHCP or allow you to enter the information manually. If you attempt a wireless install at this point it will inform you that WEP/WPA support is not enabled. It will work if you turn off encryption on your network but I would advise against that for obvious reasons.

NOTE: I know it sounds stupid but make sure that any removable media is removed before starting the installation process. On my first go around I forgot to remove my USB stick and wound up with GRUB thinking that my USB drive should be the hd0. Not hard to fix but a royal pain. Sometimes it's the simple things that get you.

The installation averaged around 20 minutes to complete on my network and hardware. Yes I said averaged. To ensure that my setup was sound and not just some fluke I attempted and completed the installation a total of five times and also successfully performed one rescue boot. (The rescue boot was not part of the test. I had a kernel oops and a corrupt file system when the four year old battery in my laptop decided to die without warning during package installations)

Once the system reboots you will have a functional command line only Ubuntu system on which to build. Part 2 will talk about setting up wireless and choosing come applications as well as some basic cli tricks that save me a ton of time during set up of fresh systems.

LINKS (In case you missed them in the article) - The Official Ubuntu Website - Network Install Tutorial 1 - Network Install Tutorial 2