Fedora Core 5

I’ve been using RedHat/Fedora distributions of Linux since 1995. I typically keep my home machines running a fairly recent release. I find that it’s easier to upgrade if I don’t procrastinate through too many releases.

On the other hand, I’ve found that upgrading too soon can be risky. I depend on third party repositories for some of the software that I use (e.g. an ntfs driver). It takes between two to four weeks before the software repositories start offering their packages for a new distribution.

If I wait at least a few weeks to upgrade, after the release of the new distribution, and I run into problems, I can usually google to find a solution to the problem. If I’m on the bleeding edge, I don’t get that benefit. Instead, I’m the one posting problems and solutions that other people google.

On Monday, I downloaded the recently released Fedora Core 5 DVD via bittorrent, and decided to upgrade my less-critical Fedora Core 3 machine.

Backup. Even though I’m generally careful, I find that it’s easier to recover from a mistake if I have a complete backup. For this, I used Norton Ghost.

First try: I was impressed by the shiny new graphics in the installer. After several screens of questions and after it analyzed my system to figure out what packages to upgrade, it informed me that I didn’t have enough disk space (I only had 2 Gig of free space). The install aborted and I had to reboot my machine.

Yum cache: I use yum to upgrade my machines, and I happen to know that by default, it leaves a cache of the packages in the /var/cache/yum directory. I deleted the directory, which freed up 2 Gig of space. Shouldn’t the installer do that for me?

Second try: The installer ran without a hitch. It upgraded my system, even though it took a while.

First boot: The boot process hung when it tried to initialize OpenCT smart card terminals, whatever those are. I don’t think I have any. Back in the days when Iinstalled FC3, I had to add “acpi=off” and “pci=noacpi” to the boot loader before FC3 would work on my system. The FC5 upgrade had left those options in place. I deleted the options, and rebooted. This time, the boot process didn’t hang. Wierd. There may not have been a correlation.

First login: The GNOME desktop loaded much more quickly than with FC3. However, several error dialogs appeared. Various resources couldn’t be located, including icons for desktop launchers that I had customized. As I already mentioned, the third party repositories that I use with yum didn’t have FC5 packages available.

Upgrade versus Fresh Install: I find that upgrades are less than ideal, especially when I want to experience the new features of a distribution. Upgrades tend to leave out new features and new packages. Since RedHat has been changing SELinux policices at a rapid rate, an upgrade isn’t likely to leave SELinux in a workable state. A fresh install is better. For a home, desktop system that isn’t a server, it’s probably best to disable SELinux. It will be interesting to see how SELinux fares compared to the now open-source AppArmor that is included with SUSE. AppArmor appears to be easer to use and configure, but SELinux has fewer gaps in security coverage. I tend to think that ease-of-use will win out. In any case, I do use SELinux to protect one of my web servers.

Overtime Considered Harmful

I just read “Overtime Considered Harmful” by Basil Vandegriend. Sometimes, overtime can result in increased productivity and success. However, “Working regular overtime (more than a week or two) has a significant negative impact on a person. Factors such as increased stress, strains on family and personal relationships, less sleep, and less exercise all add up over time to affect an individual’s mental, emotional and physical health. Over time, this can result in increased physical illnesses, lack of motivation, and eventually complete burnout.”

I believe that everyone is different in their capacity to handle overtime. I’ve seen some people that can handle working 60 hours a week for months at a time, with little apparent loss in productivity. Other people can’t handle overtime for more than a few days. Those who work 70 or 80 hours a week to meet a deadline almost always burn out and switch jobs when the death-march ends.

A colleage of mine (I’ll call him Brian) refused to work mandatory overtime in order to meet a deadline. Brian’s coworkers became stressed and tired, and made more mistakes. In contrast, Brian came to work each day refreshed, with a sharp mind. He tackled and solved tough problems, fixed other’s bugs, and smoothed out rough edges. His efforts made it possible for the team to meet their deadline. Without his courage and self discipline, the team would have failed.

We owe it to ourselves, our families, our peers, and our employer to work at a sustainable rate; a rate that will maximize productivity and foster teamwork in the long run; a rate that will allow us to lead happy, balanced lives.

Change the world…

“The effect of our words and acts is tremendous in this world. Every moment of life you are changing to a degree the lives of the whole world…. No good deed, no kind word can be spoken without its effect being felt for good upon all.” — David O. McKay

Yaesu FT-60R

I received my ameture radio license a couple of weeks ago. My callsign is KE7GQG, and I just purchased a Yaesu FT-60R radio. I’m still learning how to use it, and it makes me appreciate the technology packed into tiny cell phones. I tend to under appreciate the amazing technology we enjoy.

Trying out WordPress

I’ve decided to give WordPress a spin. I’m using the Clasikue theme, which is more minimalistic than the default. I prefer layout that isn’t a fixed width on the web browser — I like it when webpages resize when i resize the browser window.

Audio journals, foreign language and MMS streams

For my last birthday, my wife bought me an iAudio 5 digital mp3 player. It also plays ogg vorbis and WMA files. It has an FM radio, and will record from a built-in microphone. I’ve placed a few albums from my personal collection on it, but I don’t listen to them much. I’ve found that I use it to record audio journals, since I’m too busy to write much of one at home anymore. I learned Dutch when I served an LDS mission in the Netherlands 12 years ago. I like to keep my language skills somewhat fresh, so I subscribe to the Liahona in Dutch, a magazine from the LDS church. Reading Dutch and listening to audible Dutch aren’t the same thing.

Twice a year, the LDS church broadcasts “General Conference” to its members througout the world. The broadcast is translated into several languages, including Dutch. I went to the website where the audio recordings are kept, and downloaded them (using SDP from http://get.to/sdp), and placed the resulting WMA files on my iAudio 5, and listen to native Dutch speakers translation of the conference.

Sidenote: It’s not easy to download the WMA audio recordings from the lds.org website because they’re made available using Microsoft Media Server (MMS) protocol. This means that people usually have to be in front of their computer to listen to the music as it is streamed from the server. Fortunately, some programmers have figured out how the MMS protocol works, and they’ve written clients to download the stream into a WMA file, place it on a portable player, and enjoy the program. SDP is a free client that can download the MMS streams. It’s available from http://get.to/sdp.

Update: Read The Grumpy Editor’s guide to audio stream grabbers. The article covers streamripper, mplayer, wget, ogg123 and arecord.

Subversion and file properties

It’s nice to have proper line-endings on various operating systems when files are retrieved from a Subversion repository. It doesn’t happen automatically unless users configure their client-side settings. You can download a sample config file that shows how I do it. When properties need to be set on files already submitted, it’s nice to have an automated way to do it. I wrote a script, svn-propset.sh, to set the properties. Maybe someone else has done this too.

Run time linker and library symbols

Did you know that almost all programs are incomplete until you start them? When programmers compile a program, it is only partially complete. When you start a program, the operating system looks at the program and runs another program to make it complete — called a run time linker. In the case of modern Linux, it’s usually /lib/ld-linux.so.2. Read the manpage on ‘ld.so‘ for more information.

  • You can find out what libraries your program uses with ldd /path/to/program. You can also run it as follows (assuming you’re using bash/ksh/zsh): LD_DEBUG=files program
  • Find out what symbols a program uses and from which shared libraries: LD_DEBUG=bindings program
  • Have you ever wanted to find out what shared library contains the code or definition for a function or symbol? David Wheeler shows how you can find it: nm -o /lib/* /usr/lib/*/* | grep symbol_name Then look for the capital “T”. Read the Program Library HOWTO by David Wheeler.

Linux versus Solaris

Here are some reasons why I like Linux better than Solaris:

  • Easier to use. Linux is pre-configured with user-friendly defaults compared to Solaris 10.
  • Better desktop support. In Fedora Core, or in SUSE, I can insert a USB flash drive, and it automatically appears on my desktop. Not so with Solaris 10.
  • Default shell is bash. Much better than vanilla ‘sh’.
  • Good aliases including ‘ll’
  • Good default command-line prompt.
  • Fantastic GNU command line and console programs
    • tar -zxvf whatever.tar.gz
    • find … -print 0 | xargs -0 …
    • vim
  • Root’s shell is bash, and the home directory is /root instead of /
  • Linux configuration utilities are more plentiful and easier to use.
  • Gnome is far better on Linux. The Sun “Java Desktop” (Gnome renamed), is an improvement over CDE, but is not even close to mainstream Linux distributions in terms of ease of use and features.
  • More knowledge “in the wild” for Linux than for Solaris. Easier to find support for Linux using Google.

Solaris is my favorite commercial UNIX. I prefer it over AIX, HP-UX, etc.