PHP 102: A Portable Apache+PHP Environment for Debian/Ubuntu

The very first thing you need to do to develop for PHP is to setup a development server with PHP installed, of course. But maybe you're somewhat new to PHP and Apache is a huge, mind numbing universe of options. All you really want is the ability to run PHP and map hostnames to code, right? Almost always that's my goal, anyway.

Well, I've done all the work for you. Congrats! Actually, I did it mostly for myself and I'm sharing it with you! Yay for us!

What You Need
  • A computer with Ubuntu installed and working; I'm using 9.10 as I write this
  • An Internet Connection
We are going to setup a new, portable Apache server instance on Ubuntu 9.10 that listens on all of your computer's IP addresses and maps the hostnames being requested from that computer to directories on your hard disk. This means that you can add websites without restarting or reconfiguring Apache in any way. You just create a new directory and Apache figures it out for you. Brilliant, no?

What do I mean by portable? I mean every configuration file, content and scripts you need to run that entire Apache instance is in one folder that is not part of the operating system. You can copy that folder to any other Ubuntu/Debian box and execute the script to start it without any modifications of any kind. All you need is to install Apache2, PHP5 and some other modules. You aren't even using the init script that Ubuntu provides (because theirs sucks; it even says so in the comments).

Preliminary Setup
You need to install Apache, PHP and xdebug and then configure things. Open a terminal (Applications->Accessories->Terminal) and run these commands in this order:
  • sudo apt-get install php5 libapache2-mod-php5 php5-xdebug # Install Apache/PHP
  • sudo update-rc.d -f apache2 remove # Disable Apache Service
  • sudo /etc/init.d/apache2 stop # Stop Apache Service
  • sudo a2enmod php5 # Enable PHP5
  • sudo a2enmod vhost_alias # Enable Virtualhost Aliasing
Environment Preparation
Now that we have installed, configured and disabled the system-wide Apache instance we need to extract my handy Apache environment and set it up.

Open a terminal (Applications -> Accessories -> Terminal) and run the following commands:
  • # Download the file to your home, extract it to /srv and name it something handy
  • cd
  • wget http://www.webaugur.com/wares/files/apache2-portable-latest.tar.gz
  • pushd /srv
  • sudo tar xvzf ~/apache2-portable-latest.tar.gz
  • sudo mv apache2-portable* development
  • pushd development
  • # Run this script as whichever user account is going to be developing code
  • bin/fixperms
  • # start the service
  • sudo etc/init.d/apache2 start
  • # Next we want to symlink it into the init system so it starts up at boot
  • sudo ln -s /srv/development/etc/init.d/apache2 /etc/rc2.d/S91apache2-development
You should now be able to open http://localhost/ in your browser and see your phpinfo() output.

Adding Content
I have prepopulated a simple test script into www/localhost/public/index.php so you can see if its working right away.

The way it works is very simple. If you point a hostname (either in DNS or in your /etc/hosts file) to any of your computer's IP addresses Apache will serve up content from www/hostname/public. So, lets say you point www.ilikeapache.foo to your computer. You will place your content into www/www.ilikeapache.foo/public for Apache to find it. You can symlink many hostnames to a common directory as needed. You might create a link called www/ilikeapache.foo that points to www.ilikeapache.foo, for example. Thus serving up the same content for both host names. Much less ugly than slaving over hot config files into the wee hours of the morning. Simply amazing if you have hundreds of hosts pointing to one server.

What you Get
Here's where you may get a little lost if you're new to all of this. And I'll show you how to use some of this stuff in future articles. So just hang tight if you're not sure how all of this works.

By default, I have configured full on debugging of every kind. So don't go putting this up on a high traffic site as-is. I've done it and it'll run the box out of RAM and swap in under an hour and come crashing to the ground.

Here's a breakdown of useful directories and files in the default config:
  • var/log/apache2/access_log - Access log with hostname in the first column
  • var/log/apache2/error_log - Regular error log file
  • var/log/php.log - PHP Error Log (tail -f var/log/php.log to see errors in realtime)
  • var/log/xdebug - PHP xdebug stack traces and cachegrind (memory profiling) dumps
  • var/spool/mail/ - All outgoing email is intercepted (using bin/mailtrap as the "sendmail" program) and dropped here, one email per (timestamped) file. Files are stored in a format that can be piped directly into sendmail for real delivery.
  • lib/cgi-bin - If you create this directory it will be a common /cgi-bin for all hostnames on this Apache instance.
  • etc/apache2/include/php5.conf - a symlink that can pointed between debug and production PHP5 config files for quickly moving an instance between production and development.
  • etc/apache2/sites-templates/ - Examples of how to manually configure a hostname in this setup; both for HTTP and HTTPS.
  • etc/apache2/run - PID and lock files for this Apache instance
Why Oh Why
Some questions and answers I expect you'll have.
  1. Q: Why do I place content in a hostname/public subdirectory?
    A: You should never put your application code in a public directory. Zend Framework uses the convention of having a directory named "public" that maps URLs into your application code. I use ZF quite a lot and therefore followed this convention.
  2. Q: Can I run more than one instance of Apache like this?
    A: Absolutely, this is why I wrote my own init script. You can have as many Apache instances as you have IP addresses to give them. Modify etc/apache2/sites-available/mass-vhost.conf to Listen on a specific IP address instead of all IPs. You can have one instance on multiple IPs, as well. Just make sure none of the instances are listening on all IPs (or each other's IPs) or you'll have port conflicts.
  3. Q: How do I move my code and apache instance to another server?
    A: Run the setup and preparation steps above on the new host and instead of downloading my copy of the apache-portable just copy your entire directory containing your instance and content from /srv on the current machine to /srv on the new machine.
Troubleshooting and Corrections
If you run into troubles check the var/log/apache2/error_log for relevant problems. If you get completely stumped maybe I missed a step. Feel free to email me with a description of your problem and I'll try to take a look.

I've been using web servers since 1994. I started using NCSA HTTPD and later switched to Apache as it become popular. I was even once part of the first team to port Apache to Windows back in the late 90s. Neat, huh? (No, Windows sucks. It was anything other than neat but it was a challenge.) I've written modules in C and I even modified the indexer module to support XML back when the XML specs were first being drafted (but my changes admittedly weren't generic enough and someone else did a better job later on). I've been using Apache since the beginning and I'm continually amazed at its capabilities.

Labels: , ,


Fake Windows Antivirus Scams

Seems like any time you search for Facebook these days one of the top results sends you to a fake anti-malware website trying to trick you to install actual malware. I suspect it looks pretty convincing to those people using Windows PCs. However, I'm running Ubuntu 9.04 on all of my computers rather than Windows. Ubuntu is a full UNIX-like operating system similar to MacOS X but based on Linux instead of Steve Jobs ego. So these things just look ridiculous to me. My computers look absolutely nothing like a Windows desktop.

Fake Warning
Oh dear, my system must be filled with viruses! NO! Oh, wait, right, maybe they are lying to me.

Fake My Computer Screen

So, the first thing it does is show you something that looks like the Windows My Computer screen. This sticks out like a sore thumb on a non-Windows computer, as you can see. It has information (IP address, your city, etc) plastered about that claims to be personal information. Well, there's nothing personal about the info its showing. It doesn't even bother to try to show you a real view of your own computer. It just makes everything up. Close enough to scare most people, I guess.

Fake Infection Detection
Oh my goodness, it says my computer remains infected despite their best efforts. I had better let them heal my computer. Benny Hinn would be proud. Now, where did I put my electrified microphone and rubber floor mat...

Fake Virus List
Wow, look at all of those things that Windows security detected. Wait, Windows security? On a UNIX system? Umm. I must have let those mushrooms sit in the fridge a little too long. I'm starting to see things.

The Real Threat
Oh, now lookee here. It wants me to run this handy "removal" tool. How very nice of it. My system is offering to run it with Wine, a Windows program loader for UNIX systems.

Don't run programs that you didn't ask for. Don't believe what everyone tells you. Doubly so on the web.

Labels: , , ,



Here I sit, unable to sleep, watching Fantasy Island on Hulu with Boxee. Tattoo was just announcing, "De Plane! De Plane!" Tattoo is trying to convince the boss to give him his fantasy.

I haven't watched live television in about 6 months, I guess. I got a 34" 1080p HDTV around Christmas. So I built a Home Theater PC running Ubuntu 8.10 to use with it. I have a large library of movies and tv shows. So it made sense that I would organize them with the computer. As I was looking for software to do that Boxee was becoming popular. Boxee is definitely beta quality but it is headed in a fantastic direction. I wish it was better able to integrate online content with local content. But its so good there's just no point in watching live tv.

"Let's see some sunshine on that Cherubic face of yours." -- De Boss, De Boss!

Labels: , , , , , ,


Red Hat Enterprise Linux Cluster Suite 5.2 DHCP Problems

Well, I learned another valuable clustering lesson today. Manually assign all of your IP addresses and do not rely on DHCP. I'd still suggest you have the IPs statically assigned on the DHCP server but don't rely on it at all.

Yesterday I rebooted all of the machines in the cluster simultaneously after making some extensive modifications to the iSCSI configuration on them all. (I'm using cluster-ssh to manage them all simultaneously.) All of the machines went down at exactly the same time and came up at exactly the same time. (They are identical hardware with identical software, afterall.)

Today, for whatever reason, when all of the leases expired at roughly the same time they didn't renew quickly enough. I walked out of a meeting this afternoon to all of the cluster nodes reporting "Quorum dissolved" and all services on the cluster were failed.

Labels: , , ,


Red Hat Enterprise Linux Cluster Suite 5.2 Relocate Problems

Gist of it all
So, I've been fighting mind bending failover problems on our new compute cluster at work for the past week. I can summarize the solution to service failover problems in one sentence:
Don't use Red Hat's cluster service scripts, evar.

How it actually works
Apache's script (apache.sh) in RHEL 5.2 sends a TERM signal to Apache, waits N seconds (0 by default for Luci/Ricci, 20 for sys-config-cluster) and then proclaims that Apache has failed to shutdown if its still running. This type of failure is fatal for the cluster service.

How it should work
The standard apache init scripts (/etc/rc.d/init.d/httpd) do the right thing, more or less. The parent process is sent the TERM signal, waits 10 seconds and if its still running sends the KILL signal. That may seem harsh but this is a web server for crying out loud. There's no real chance of data corruption if you KILL the web server. If something goes horribly wrong and Apache needs to move to another machine I'm quite happy with Billy Bob having to retype a form or resume his download. That affects only Billy Bob. Bringing down the service for the entire world, in comparison, seems like a very bad solution.

Red Hat has spent years developing this clustering software. Its fairly good and seems reasonably well written. Its a shame they only spent 5 minutes writing the service scripts. The stock init scripts are infinitely better written but won't work in a clustered environment.

So, my advice, spend 20 minutes and write your own userscript for each service. If a service is important enough to be on a cluster you can afford to spend the time to write your own script to start and stop it. If you don't know how to write shell scripts and you're managing a cluster then do everyone a favor and seek employment at McDonalds.

User scripts for the cluster are simply LSB compliant init scripts. I advise you to not waste much time trying trying to hack the /etc/rc.d/init.d scripts to work within the cluster. You can do so but you'll end up stripping out most of it. You may wish to source the /etc/rc.d/init.d/functions file, though. But you will need to pass the pid filename to every single function you call. (Read the functions script to see which options to pass to each function. daemon, killproc, and status functions are most useful for starting, stopping and checking status respectively.)

Labels: , , ,


Linux & Vista Slow Internet

If you are seeing slow Internet speeds under Linux (2.6.17 or newer) or Windows Vista make sure your router supports RFC 1323. If it does not then this is likely your problem. To fix it, upgrade or replace your router. RFC 1323 is a performance enhancement for TCP/IP networking which LInux and Vista support. Unfortunately, it seriously hurts performance if the network hardware doesn´t support it properly (or at all).

Labels: ,


Web Development Resources

I have been working on a web development resources listing for tools and services I use every day.

It can be found at: http://sites.google.com/a/webaugur.com/web-development

Labels: , , ,


Compaq Presario 2100US & Ubuntu Linux

The Radeon Mobility graphics chipset in Compaq Presario 2100US notebooks seems to have some major quirks with the "ati" X video driver. I've finally managed to find a configuration that works perfectly and enables 3D graphics support. The configuration also works with the Beryl compositor. This is tested with Ubuntu Linux 7.04.

Here is the xorg.conf configuration file I am using.

Labels: , , , , , ,


Insight/GDB debugger for Windows on Linux

I needed a debugger for Windows applications which runs on Linux. After some digging around I've found that the MinGW project is maintaining the Insight debugger from the old Red Hat GNUPro Toolkit. Insight is a graphical front-end for GDB (GNU Debugger). That's exactly what I need. But I need the Windows version and I need it running on Linux.

So I've made a package named mingw32-insight for use with Debian-based Linux distributions. There's a native build of Insight provided by Debian, also. My package is wrapped in such a way that it works with the CodeBlocks::IDE development environment, also. You can find instructions on how to add a Linux to Windows cross-compiler configuration for CodeBlocks in the forums. You can install my mingw32-insight package and skip steps 7, 8, 9, 10 and 11 in the above forum posting. My package does all of that for you. My package also adds "Insight for 32-bit Windows" to your Applications -> Programming menu on the desktop.

Who knows how well this works in general. Its quite possible one could run into problems due to missing features in WINE's implementation of Microsoft Windows. But its better than nothing and exactly what I need.

Labels: , ,


Sun + Ubuntu = Aha!

About 6 months ago I commented in OpenSolaris + Ubuntu = Nexenta:
I think that Sun should take a long hard look at what Nexenta is doing and strongly consider pursuing a similar course [with Solaris]. Debian truly is the way forward. Debian provides a rock upon which all other operating systems can be built.
Perhaps that was a moment of prescience on my part. Or maybe I'm overly optimistic right now... But today Sun seems very friendly with Mark Shuttleworth, the founder of Ubuntu. Sun CEO Jonathan Schwartz and Mark Shuttleworth were on stage together at JavaONE and announced a number of important things. ZDNet reported this comment by Jonathan Schwartz,
The odds are quite good that we will be aggressively supporting the work that Ubuntu is doing...In the hardware we ship, I don't want to be Solaris only, because then I will just define my market to be smaller than the opportunity. I think you should expect to see more of the relationship, and stay tuned.
A curious project titled Nexenta was created in Canonical's Launchpad by Mark Shuttleworth a while back... Maybe it's nothing... Maybe it's something...

It's been my impression for quite a while that the Ubuntu June 2006 LTS (aka Dapper Drake) release would support the Sun Niagara hardware platform. There are mentions here or there from people working on it. Launchpad shows that SPARC support is implemented in some fashion in Ubuntu. I don't think the intention would be hum-drum SPARC support. Enthusiasm for Linux on Sun SPARC seems to have been pretty dead for the last 3-4 years. Not that it wouldn't be welcomed by many SPARC computer owners. In the past, Intel and AMD have been so much cheaper and better supported by Linux. Installing Linux on SPARC is about as painful as installing Solaris on Intel. The hardware driver support is abysmal in either case. Niagara is a different beast, though. Especially if Sun intends to help promote Ubuntu on Niagara. Niagara and Ubuntu could become a very compelling combination indeed.

But, wait, I said Linux tends to have lousy support for Sun SPARC hardware. But Nexenta is Ubuntu with a Solaris kernel... Hey, what if...Ubuntu could use the Solaris kernel and hardware drivers on SPARC (and thus Niagara). Oooh, now there's a mind bender. Keep your eyes peeled for that one... If my radar is truly working then that's exactly the sort of thing I'd expect to see. Maybe not for another release or two but certainly well before the next Ubuntu LTS (long term support) cycle begins.

Labels: , ,


Special Characters on Linux and UNIX Systems: The Compose Key

Have you ever wanted to spell jalapeño correctly but don't know how? Maybe you'd like to spell dæmon a little differently? What you want is the Compose Key!

The right hand meta key is often set as the Compose key. The meta keys often have a "Windows" logo on PC keyboards. UNIX system keyboards (e.g. Fujitsu Happy Hacking Keyboard) have a diamond symbol on the meta keys. Sun Type 5 keyboards also have a separate Compose key to the right of the right meta key. Compose works with all X11 applications.

MacOS X uses the right Alt/Option key as its Compose key for X11 applications. Non-X11 applications use dead key combinations unique to MacOS X and its predecessor NeXT. (See: Apple Technical Note 2056)

Output Keys

# ++ number sign

[ (( left bracket

] )) right bracket

} )- left brace

{ -( right brace

« << left guillemot

» >> right guillemot

| vl vertical line "bar"

¸ ,, cedilla

¨ "" diaeresis

¡ !! inverted exclamation point
¿ ?? inverted question mark

¢ c/ US cents

£ l- UK pounds sterling

¥ y= Japanese Yen

¤ xo currency

§ s! section

p! paragraph

© CO copyright

® RO registered trademark

non-breaking space (space space)
· .^ middle dot, centered period
± +- plus-minus

¬ -, not sign

-- minus/hyphen

÷ -: division

× xx multiplication

¹ ^1 1 superior

² ^2 2 superior

³ ^3 3 superior

° 0^ degrees

µ /u mu (Greek letter, Micro, 10^-6)
¯ -^ macron

ª a_ feminine ordinal

º o_ masculine ordinal

ç c, c cedilla

Ç C, C cedilla

đ d- lower case eth

Đ D- upper case eth

ß ss sharp s

þ th lower case thorn

Þ TH upper case thorn

œ oe oe


æ ae ae


ø o/ o oblique

Ø O/ O oblique

à a` a grave

À A` A grave

ò o` o grave

Ò O` O grave

è e` e grave

È E` E grave

ù u` u grave

Ù U` U grave

ì i` i grave

Ì I` I grave

á a' a acute

Á A' A acute

ó o' o acute

Ó O' O acute

é e' e acute

É E' E acute

ú u' u acute

Ú U' U acute

í i' i acute

Í I' I acute

ý y' y acute

Ý Y' Y acute

â a^ a circumflex

 A^ A circumflex

ô o^ o circumflex

Ô O^ O circumflex

ê e^ e circumflex

Ê E^ E circumflex

û u^ u circumflex

Û U^ U circumflex

î i^ i circumflex

Î I^ I circumflex

ã a~ a tilde

à A~ A tilde

õ o~ o tilde

Õ O~ O tilde

ũ u~ u tilde

Ũ U~ U tilde

ñ n~ n tilde

Ñ N~ N tilde

ä a" a diaeresis

Ä A" A diaeresis

ö o" o diaeresis

Ö O" O diaeresis

ë e" e diaeresis

Ë E" E diaeresis

ü u" u diaeresis

Ü U" U diaeresis

ï i" i diaeresis

Ï I" I diaeresis

ÿ y" y diaeresis

Ÿ Y" Y diaeresis

å a* a ring

Å A* A ring

ů u* u ring

Ů U* U ring

Labels: , , ,


Fear Not the Viruses, Trojans, Worms

Anti-virus software and Anti-spyware software vendors frequently issue so-called press releases which proclaim imminent doom to all computers in the entire universe if people don't pay them lots of money. The so-called press releases proclaim, "Pledge allegance to XYZ Brand Antivirus Pro 9 and your computers will be completely invincible!"

Nearly every Microsoft Windows based computer I have ever encountered is filled with malware (viruses, trojans, worms, spyware, and other undesirable software). Especially those Windows computers with anti-virus software installed on them. Anti-virus software often proclaims "Your Computer is Now Clean" at the conclusion of its run. But upon closer inspection it is almost always wrong. Often it takes 4 or 5 separate programs from different vendors to remove all of the malware. There are very few exceptions to this. And most exceptions are because of the people using and maintaining those computers: not anti-virus software.

The other day I read about an oh-so-terrible "virus threat" to Macintosh Computers that will leave Macintosh owners "shellshocked". So the story goes, no instance of malware has ever caused significant damage to more than a few Macintosh computers. The anti-virus software vendors would have you believe that Macintosh computers aren't worth attacking...yet. They claim, "Any day all Macintosh computers in the world will be obliterated...unless everyone purchases XYZ Brand Anti-virus." Of course the anti-virus vendors are going to tell everyone to buy anti-virus software. That's their job.

Any reasonable person knows malware exists for Macintosh, Linux, and UNIX systems. The reason malware doesn't spread very widely on Mac, Linux and UNIX systems is because software applications on those systems are very diverse, well designed, updated immediately after a flaw is discovered and the users of those systems are attentive to potential threats. Users of Mac, Linux and UNIX systems aren't brainwashed into thinking that they are invincible by anti-virus corporations whose only concern is the bottom line. It is infinitely more likely that an actual person will infiltrate a Mac, Linux, and UNIX system because of a bad password or loose lips than malware would successfully attack it.

True computer security only comes with properly written software and well-informed computer users. No amount of anti-virus software will ever protect a computer system from attack by malicious people who wants access. However, properly written (operating system, email, web, instant messenger, office, etc) applications and sufficiently skeptical users will protect a computer system every time.

I would argue that anti-virus software leads to complacency. People who use antivirus software tell you, "I'm protected! I have XYZ Brand Anti-virus! They promised me a pony if I subscribed!" You might even find yourself explaining to them that their anti-virus software isn't even running or their subscription has never been renewed. Worse, those people fail to recognize real security threats because they are under the false impression that anti-virus software protects them. The true believers in antivirus feverishly update their software many times a day and verbally attack anyone who suggest it is a waste of time. Often the anti-virus users themselves run and spread viruses and trojan programs which they have acquired via instant messages, emails, and random websites. Their infected messages are followed with "I ran XYZ Brand Antivirus on it so I know it's clean!"

Anyone who knowingly uses a computer without antivirus software will do so with a healthy amount of skepticism. And they will be all the better for it.

Am I saying to stop using anti-virus software? No, not really. Use it if you want. Do you need anti-virus software? No, of course you don't. But it can be a useful supplement to your security. Anti-virus is not a substitute for making good decisions about where you get your software and how you use it. I am saying that if you implicitly trust anti-virus software to protect your computers then you are selling yourself short.

Stop using poorly written software and start using common sense.

A good starting point is to order free copies of Ubuntu Linux for you, your family and friends.

Labels: , ,


Linux Wifi

Atheros Super-G I finally bought a new wifi card for my laptop. I needed one that would work with the Ubuntu Linux operating system, obviously. I did not want a card that relied on Windows XP drivers because the Windows drivers only offer limited features. For example, Windows XP wifi drivers can't automatically discover nearby access points by themselves. So I found some information at tuxmobil.org which suggested most Atheros-based wifi cards work perfectly with Linux systems. While browsing the aisles at Best Buy I noticed that the Atheros-based wifi cards prominently state "Atheros" on the box in a huge logo.

Network Manager running on Ubuntu Linux

I purchased a Netgear WG511T. I inserted the card, installed NetworkManager and ran "nm-applet" which, as you can see to the right, added a handy signal meter and wifi network list to my my menu bar. Very cool. It conveniently stores the wifi network keys in my keyring along with all of my other system passwords. If I plug in an Ethernet cable it automatically switches to the "Wired Network" and disables wifi.



OpenSolaris + Ubuntu = Nexenta

For years I've always bought the latest Sun Solaris operating system release hoping it would be better than the last. It doesn't even seem to gradually get better. It seems like every improvement they make is offset by some other part which has become worse.

So, they finally decided to infuse some new blood into the system by releasing most of the system, as OpenSolaris, under their CDDL open source license. CDDL is not exactly a very good open source license, mind you. But does qualify as open source nonetheless. I can assure you that I won't be abandoning my Linux systems for OpenSolaris. But I am very glad to see Solaris finally being improved in a way that makes sense.

Aside from the OpenSolaris project itself there is a recent spin-off called Nexenta. Nexenta seems to me to be the perfect solution to the problems with Solaris. Nexenta is based on Ubuntu Linux but they have replaced the Linux kernel with the OpenSolaris kernel. Ubuntu Linux is derived from the Debian Universal Operating System. Debian is based on the GNU system. Debian doesn't mandate any specific kernel or applications although it currently favors Linux. Instead Debian is built around the idea of alternatives. You can swap out components to fit your business or personal needs around this basic GNU system. As such, Debian currently provides Linux, FreeBSD, NetBSD, and GNU Hurd kernels and roughly 18,000 applications to run on them. If Nexenta succeeds then Debian would provide a fully functional OpenSolaris kernel in a future release. Nexenta has simply built packages for the OpenSolaris kernel and system utilities which integrate into the Debian OS.

I think that Sun should take a long hard look at what Nexenta is doing and strongly consider pursuing a similar course. Debian truly is the way forward. Debian provides a rock upon which all other operating systems can be built.

This is idea of building a GNU system on top of Solaris is nothing new, really. Indeed, before Linux, much of GNU itself was built on SunOS and Solaris. But now the whole process can be legal and formalized into outside projects. Since the late 1980s nearly everyone who purchased a Sun system would go through a several day long ritual of augmenting/replacing the Sun software with GNU software. To the extent that Sun eventually started including much of GNU on companion CDs. Many of the GNU utilities are superior to Sun's own software. Sun has areas where they excel. However, they are but a few people in a vast sea of developers working on this sort of software. Most of the Solaris applications have become outdated as they focused on niche areas. Meanwhile, the rest of the world has continued developing, refining and often replacing those applications with better versions.

Sun has promised great things by moving their desktop away from CDE (Common Desktop Environment) on to the newer GNOME. Solaris 10 included GNOME as its default work environment. Or, at least enough of GNOME to make you scream, "What were they thinking when they did this!" Sun neglected to port many important features from CDE to GNOME. Worse, GNOME on Solaris 10 had nearly all of the good GNOME software replaced with lousy Sun Java software that barely even functioned at all. You might wait several minutes for a simple note pad or calculator to load as all of the Java infrastructure bootstrapped itself behind the scenes. The reason they did this, I've heard them claim, is to delay porting those programs to Solaris and/or their SPARC CPU. They wanted to get the infrastructure correct before they attempted to port the applications.

But I think that misses the point. They shouldn't have to port thousands of applications to Solaris. Nearly all of these applications are written according to POSIX, Single UNIX Specification, and Linux Standard Base. These are ISO standards, like it or not. Solaris should be changed to support those standards and then all of the applications will work mostly unmodified. You might need little tweaks here or there. And if those are common tweaks across many applications then a library can be built to abstract the differences.

And this is exactly the sort of environment Debian provides. The net result is that, with few exceptions, you can run the same program from the same Debian package on any system regardless of which kernel is in use. There is no porting required at all because all of the various kernels have binary-compatible programming interfaces. In effect one program runs everywhere.

I do wish Sun could find some way to release Solaris under the GPL license but perhaps that will come with time. It's not as simple as one might think to release something under GPL. They probably don't even have sufficient legal rights to the code to make that leap. However, perhaps with time, problematic code can be replaced. Maybe it never will. Getting the ideas behind the code out into the public mind is a great start.

Labels: ,


Avoid Illegally copied software

New York Times Q&A brings up a good question. How do I know if I'm buying an illegal copy of Microsoft Windows with my new computer? (A pirated copy as some monopolists like to call it.)

Well, to be sure there are no pirates (or other vermin) inside your computer I'd suggest that the very first thing you do is to remove Microsoft Windows from the computer. Instead there are a number of Free Software operating systems available such as those based on GNU and Linux. In fact, you can download Ubuntu Linux at no charge. And Ubuntu Ship-It will even mail you complimentary CDs at no charge and they even pay the postage. Seriously, this isn't a trick. Once you have Ubuntu installed you have access to over 17,000 Linux applications at no charge. No ads, no gimmicks, no hassle, nothing but software.

But if you decide that you want to place yourself at the mercy of a twice-convicted monopolist then you can use their convenient Windows Genuine Advantage to turn yourself in...err, I mean validate your copy of Microsoft Windows.

Labels: ,


Windows and MacOS users: Discover Free Software

OK, now that I have your attention... I ask you to do one thing. Watch all 13 episodes of the Go Open televisions series. The series showcases the true value of Free Software and Open Source software. They show many instances of how and why Free Software and Open Source are changing the rules of the software market. Why they are about much more than getting better, faster, less expensive technology. How they are developed and by whom.

Even if you refuse to try using Linux and other such software you should at least try to understand the alternatives to Microsoft's monopoly-based software market. You'd be doing yourself a huge favor. The real value of Free Software and Open Source isn't the money you'll be saving or the viruses you'd be thwarting. Free Software is about the freedom to do anything whatsoever you want with your technology without having some distant third party standing in your way at every step.

The entire television series is released under the Creative Commons Attribution, Non-commercial, No-derivatives license. Meaning, you can freely pass unaltered copies along to anyone. There are download instructions for Go Open on their website. In summary: Download and install Sun Java if you don't have it already. Download the Azureus BitTorrent client. And then open the first and second torrent files with Azureus. They are about 1300 MB combined. It should take about a hour on a broadband connection but could easily take much longer.

Also, I highly suggest you download and install the VLC media player to watch these videos. It seems like most other players have trouble playing the MPEG-4 video and AAC audio combination. The video may play fine in Quicktime on MacOS (and maybe Windows).

Labels: ,


Where does Linux and Free Software matter most?

Linux and Free Software matters most in places which can't afford buy into the notion of secret proprietary systems. Places that have to maintain their own equipment or need completely transparent systems. People who don't have 24/7 access to Indian-based technical support centers (who hang up on you when you ask real questions). Especially if their only means of communications is what's broken. These people are just not very likely to buy into technology they can't fix or improve themselves. Most of these places won't have utility lines or cellular phone service any time this century if they ever do.

But, really, why should they? There's no longer any technical reason to have such antiquated nonsense. Power can be cheaply produced on location these days. Even in the US it isn't uncommon for individual farms to produce their own electricity just because they have animal and plant waste products that can be converted to electricity fairly cheaply. Who needs wires when radio signals can travel very long distances carrying huge amounts of information. You can direct that information into central locations which then feed it out via fiber optic trunk lines to the rest of the world.

So, don't be surprised if your laptop finds 5 wifi networks while lost and wandering through deserts of Africa. On each of those wifi networks you're likely to find Linux servers and dozens of Linux laptops powered by various forms of locally generated electricity. It's quite likely you'll even be able to phone for help using a regional Linux-based VoIP PBX running Asterisk.

In fact, Inveneo has started outfitting remote villages in Uganda with 802.11 wifi and a regional Asterisk PBX. The wifi networks link the villages together and to the Internet. On that wifi network they have an Asterisk PBX and VoIP phones at each village that allow villagers to phone other villages for free as well as dial out to the rest of the world using VoIP. They can also send email and they have Internet access. The system is powered by solar panels, pedal-powered generators and battery.



On Mac and Linux on Intel

MacOS X isn't going to harm Linux now that they support Intel processors. It's like claiming that a good Orange harms the value of Bananas. MacOS X is not Linux. And that's a good enough reason for most Linux users to avoid it. Linux licensing does matter to many people. I'm surprised all the time about how huge proprietary companies are waking up to the real value of GPL code. Most Linux distributions are a vast ocean of GPL software. MacOS X has a few ponds of GPL software.

So, why is Linux going to remain relevant for a very long time?
  1. Linux supports hundreds of processor architectures including PowerPC. I'd venture to guess that there are as many or more PowerPC machines running Linux than all versions of MacOS combined.
  2. Until Apple allows MacOS X to run on unmodified PCs then MacOS X Intel remains a curiosity. Rosetta means won't matter to Apple customers except that the Intel machines will be much faster. When Dell is selling MacOS X on Dell PCs then I'll be impressed.
  3. MacOS X is Proprietary Software. MacOS X is not Free Software. MacOS X isn't even Open Source. MacOS X is a "based on open source" OS. You may be able to access and legally reuse or improve some bits of the source code. But you don't have any of the source code for the interesting parts like the desktop environment. Apple is better about licensing than many companies, though.
  4. Linux is Free Software. Most of the components of MacOS X are not Free Software. A Free Software license provides Linux with tremendous value over nearly all other operating systems. Under a Free Software license the source code is liberated from the tyranny of it's original authors. The only significant power the original authors of GPL code have is the power to sue you if you don't provide the source code for any derivative works. Anyone can use Free Software . And anyone can redistribute or make derivative works of the software as long as they obey the license. You can't legally take your MacOS X disk, copy it, and give it to 100 friends. You can, and are encouraged to, do that with most Linux distributions.
  5. MacOS X runs on exactly two computer architectures: PowerPC and x86. Linux runs on most computer architectures. Linux runs on exotic cluster computers the size of small towns down to computers as small as a wristwatch. MacOS X runs on proprietary Apple-built desktop, laptop, and small server computers.
  6. Linux and Free Software allows engineers and developers to collaborate freely at all levels. If they want to share source code for some new idea then they can share it on the spur of a moment. They won't have to go to a third party and plead their case or renegotiate contracts. If they need something deep in the system to be changed or fixed then they can do it themselves without necessarily relying on some third party vendor to provide the fix.



Swish-e for Windows

So, I've got Swish-e codebase in Swish-e CVS building for Windows completely on Linux including the SWISH::API for Perl. There are a few reasons for me wanting to dump MSVC and cross-compile everything from Linux:
  1. Convenience: it's completely automated and I can provide the Perl and C API with daily snapshot builds.
  2. I don't use Windows. I hate MSVC. And combining the two makes my blood boil.
  3. We use libtool with our autoconf build. Building a DLL using libtool is utterly trivial. MSVC seems to require a master's degree in technical frobnication to build a working DLL.
  4. I don't want to rely on proprietary tools for any part of the build process.
  5. Most importantly, as of the next release (2.4.4) we will need to provide a DLL on Windows to make it easier to comply with the new Swish-e licensing.
About the new licensing... Swish-e has officially changed the license to GPL with Exception from the former LGPL license. The reasons for the change are many. For one, Swish-e relies on some GPL code and that taints the LGPL license. It would have been pretty easy to replace that dependency and stick with LGPL. Suffice to say, we have technical and philosophical reasons why we want to see the code under GPL. The website and documentation has reflected that fact for a very long time. We simply hadn't made the effort to sweep through the source code and correct the license statements. (Thanks Peter for taking the time to do that!)

Contributors of some significant batches of code (Swish-d Cluster, SwishCtl, etc) have stated that they would not have been able to contribute code back to the community had Swish-e not been under GPL. We don't want to prevent people from using Swish-e. Some of us just don't want a proprietary program being deeply integrated with Swish-e. For instance, there is one Swish-e ActiveX control which relies on an expensive, proprietary library. Those users are stuck with their ancient version of Swish-e because they can't drop in a newer version. We would like Open Source software such as PHP and Python to be able to link to libswish-e. Indeed, even the swish_php code written by Jose is under the GPL-incompatible PHP open source license. (Open Source != Free Software: GPL taints most open source licenses.) So we invoked the "linking over controlled interfaces" exception to GPL that allows any program (proprietary, open source, etc) to link to Swish-e but only if that program uses the documented interfaces (libswish-e). We have our GPL and everyone has access to the search interfaces.

I built this the other day to test release on Linux:

That build of swish-e.exe is linked to libswish-e-2.dll or whatever it's named. I think I'll add an optional development section to the installer for swish-e.h and libswish-e.dll.a and whatever else might be handy. (Suggestions are welcome.) The MSVC folks will probably be left to fend for themselves from now on. I'll see if I can make it easier for them to generate a DLL import library.

Why don't I like MSVC? MSVC creates tons of busy work and needless distractions. Visual Studio can be handy for debugging but they removed Makefile support in MSVC 6. So you can choose to be trapped inside of their horrible manually-operated GUI for all eternity or you can abandon their debugger and manually write Makefiles. And since the last few releases of GCC, GDB, binutils, etc work almost flawlessly with Windows I see no point in ever bothering again with MSVC. What's more, with GCC you can do useful things like cross-compile Windows executables from Linux and cross-compile Linux executables from Windows. Pick just about any two computer systems in existence and you can cross-compile between them.

It took me 45 minutes just to test the perl stuff the other day. Maybe 3 minutes of actual testing and I wasted the rest of the time rebooting Windows. When I hold down backspace or press a key combo at just the right moment Windows goes into a tight loop and consumes 100% CPU until I kill it. Seems like something to do with IRQs and memory allocation. It's almost as if VMware is triggering events too fast for Windows to keep up. If I increase /dev/shm to 2 GB and instruct the vm to use it for temp space (instead of /tmp on a hard disk) then it doesn't lock up quite so often. I think more RAM would help more than anything.

Labels: , ,


Inexpensive Linux Machines subsidized by Earthlink...

You know, normally I dislike the idea of bundling Internet Service with a computer. But, maybe it could be a good thing for people with limited funds. Earthlink is offering deep discounts on Microtel desktop Linux and laptop Linux computers.

The subsidized systems always seemed pointless with MSN and AOL in the past. You had to sign up for like 3 years and then the lousy computer you got still cost a fortune and probably didn't even last 3 years. After about 2 months the person realized exactly why the Internet service was subsidizing computers, the service sucked.

These low end Linux machines are so cheap that just about anyone could stretch their money one month or two and afford the thing. One year isn't a terribly long time to be stuck with their service. The Microtel computers are what I'd consider fairly lousy quality but for $70 they're way more than adequate for most people. Earthlink's Internet service seems to be quite reliable and inexpensive. All in all, it should be a winning combination.

Apparently you will have to buy a monitor if you don't have one. But a used monitor is extremely cheap these days. Find a thrift shop, Goodwill, computer shop that sells used stuff, etc. Used 15 and 17 inch CRT monitors are going for $20-$30 every day. I recently bought a 19 inch CRT monitor for $50 that has minimal wear on the CRT.

How can you tell if the CRT on a computer monitor is worn out? Plug in the monitor and turn it on. You don't even need a computer plugged in unless it is a monitor that immediately goes into a power saving mode. I have an ancient laptop I use just to light up old monitors. Crank both the brightness and contrast up to 100%. At 100% brightness the the screen should turn whitish-gray if the CRT is not worn out. (Any color other than whitish-gray is bad. Brown is bad. Any shade of red, green, blue, cyan, magenta, yellow mean the CRT is probably shorted. Black means either the CRT is worn out or some internal adjustment is out of whack.) For normal usage set the contrast to 100% and adjust the brightness down from 100% just to the point where black turns black. A good CRT should run around 70%-90% on the brightness depending on how much it has been used.



Beware The Linux Tourists

"And I gave that guy directions even though I didn't know the way. Because that's the kind of guy I am this week." --Homer Simpson

Do a web search for Linux desktop systems and you're likely to find opinions from many thousands of magazine-style authors. How do you know which ones to trust? Well, I would suggest that the ones who actually rely on a Linux desktop system will have the most relevant answers to your questions. Sadly, most of these magazine-style authors are just tourists who project their experience using Windows or Macintosh on to one of the many Linux distributions.

Tourists find it trendy or hip or lucrative to claim they run Linux. It makes them look sophisticated to their non-Linux-using peers. But their idea of running Linux is installing a new distro every week, frobnicating the control panels for a few hours, and taking thousands of screenshots of every window to prove they were there. When I say someone is using Linux I mean they don't go running [dual-booting] to Windows or Mac when they don't immediately know how to accomplish a task. When I say "Linux user" I generally mean they don't even own a Windows or Mac system.

So, how do you spot a Linux Tourist? It isn't too hard if you know the signs. Here are some common phrases to help you spot Linux Tourists:
  1. dual boot or multi boot
  2. (almost, will be, not) ready for the desktop
  3. (I, we, you, people, they) will use Linux
  4. switch to Linux
  5. I'm running (insert latest distro featured on TechTV) Linux this week.
  6. when it can run Windows programs (better, at all, that I lust for)
  7. too complicated
1) Dual booting to another OS is too tempting if you truly want to switch to Linux. 2) Linux has been ready for "the desktop" since at least 1998 when I started using it exclusively. Maybe it's not ready for your desktop because you're not willing, or sufficiently compelled, to give up your old OS and software. 3) Tens of millions of people, or more, use Linux all day every day. Whoever "they" are don't matter to anyone but the corporate Linux pushers. 4) Switching to Linux would imply that people don't already use Linux. Experience tells me otherwise. 5) Isn't it a bit difficult to get any work done if you're changing out your OS every week? 6) I think Windows will be more popular when it can run Linux programs. 7) Everything is too complicated when you are unwilling to learn.

Hi, my name is Dave and I am a Linux desktop user. Which Linux distro(s) do I use? Red Hat (and Fedora) Linux since 1997. Ubuntu Linux on my desktop systems since shortly after Warty Warthog released.

Labels: ,


Borland Kylix + UTF-8 Fonts = Boom

Borland Kylix Open Edition doesn't seem to like UTF-8 environments. Specifically, it doesn't work well at all by default on Ubuntu Linux. However, it is easily worked around. You simply need to change the language when you run Kylix. For example, can start Borland Delphi on Ubuntu Linux by running it with the command line:
$ LANG=en_US.ISO8859-1 startdelphi

Also, you will need libxaw.so.6. On Ubuntu that is in the libxaw6 package.



Task oriented computing

Task Oriented Computing

  1. Turn on the computer.
  2. Add color to great-grandfather's photo.
  3. Create a new document and write an essay.
  4. Search the web for chili recipes.

Brand Oriented Computing

  1. Boot Windows.
  2. Photoshop great-grandfather's photo.
  3. Open MS Word and write an essay.
  4. Google for chili recipes.

Brand Name Madness

People seem to become emotionally attached to brand names. I find this fascinating. In software, it seems to have the effect of paralyzing these people when they are confronted with an unfamiliar brand. Some people will simply refuse to use any other brand just on the principal that it isn't the one they normally use.

Take paper towers, for instance. Really, what is the difference between generic and brand name paper towels? As far as I can tell the price is the only significant difference. Maybe the really expensive ones are slightly fluffier with some pictures on them. But think about it for a moment. They will be used for mere seconds and then become trash. Yet many people will absolutely refuse to use any other brand but the one they always buy.

If so many people weren't like this I'd think it was some sort of mental dysfunction. Maybe it's localized mass insanity.



Ubuntu Spatial

Ubuntu Spatial file manager mode sucks. If it isn't good enough to convince upstream GNOME to include it then it shouldn't be in Ubuntu.

The only reason I'm using Ubuntu at all is because of GNOME and Debian. I want GNOME to be GNOME and I want to use Debian software. If Mark Shuttleworth wants GNOME to be different I think everyone would appreciate him working with the GNOME developers to change it. This sort of stunt makes me reluctant to continue spending my free time and money advertising Ubuntu for his company.

Mark Shuttleworth should consider putting Matthew Thomas in charge of Ubuntu usability and start with fixing the problems in Ubuntu and GNOME he has described. I agree with nearly every point he makes. I especially agree that the menus belong on the menubar like with MacOS even if it means non-GNOME programs look different. And all of these changes need to be made right this very minute and not in October a few days before the next release. And major changes need to be immediately taken upstream and the details hashed out. If upstream GNOME doesn't want them as default that's wonderfully fine. But upstream GNOME should at least accept the changes.

It's a pretty solid design principal that you don't inflict a major change at your whim two days before a major release. Especially not undocumented changes which have unknown, untested implications for every single person using Ubuntu. This little change has introduced dozens of bugs and inconsistencies. As Matthew Thomas pointed out it doesn't even work much of the time. Worse, there's no obvious way for someone to revert to the documented behavior.

This is just like them changing the main menus in the last release. That ended up being a good change albeit poorly thought out at the time. Only when the new menus went upstream were they refined and documented to everyone's satisfaction. It seems like Mark sees injecting changes as some way to "brand" GNOME for Ubuntu or something. Well, it sucks. Really it does. I went to considerable effort to switch to Ubuntu because I wanted a non-hackish system. Now I have to patch every single system I install just to get it to work according to the GNOME documentation.



Mobile Mini Numeric Keypad

I was perusing Big Lots electronics section the other day and came across a bunch of $8 USB gizmos made by Sakar. One that caught my eye was the Mobile Mini Numeric Keypad. It's a small USB numeric keypad meant for a laptop, of course. I'm using it on my desktop since my keyboard has no numeric keypad.

Sometimes I would like to use a calculator or spreadsheet without hunting and pecking through the number row. Well, this little USB gizmo even improves on the PC-style numeric keypad a bit. It provides escape and backspace keys in place of numlock and the lower half of the oversized addition key. In the GNOME Calculator, escape acts as clear-all and backspace acts as clear-entry. I would assume other calculators work similarly. Very slick little detail. Since they are $8 in Big Lots I'm guessing they didn't have as much of an impact on the market.

As for my regular keyboard, I use a Happy Hacking Lite2 keyboard. It's not entirely unlike the old Apple IIgs keyboard but without a numeric pad. I use this particular keyboard because it is one of few affordable PC-compatible keyboards with a UNIX oriented keyboard layout and, at one time, a Dvorak Simplified Keyboard layout kit. Specifically, the Lite2 mimics the layout of the Sun Microsystems Type 5 keyboard (other types). Over other Happy Hacking models, the Lite2 adds the old, familiar inverted-T style arrow keys found on the Sun Type 5. The other models have no arrow keys at all. That seemed a bit too spartan for my taste.

I know, what's with the weird little keyboard? Well, PC keyboards are geared essentially toward DOS circa 1980 or so. That's awkward on Linux and UNIX systems. PC keyboards have tons of extra keys and are missing several important X modifier keys. (Compose, Alt-Gr, Meta, Super, Hyper, etc) This keyboard provides markings for some of the missing X modifier keys and removes quite literally all of the secondary keys. And it has no caps-lock. I truly despise the caps lock key. Where you would find a caps lock key on the Type 5 it has a Function key that you chord with another to access less common keys. Function+1 is F1, Function+2 is F2, Function+Up Arrow is Page Up, Function + Left Arrow is Home, and so on.

I wanted Dvorak layout simply because I spend most of each day using my keyboard. A few weeks into a large programming project many years ago I started becoming fatigued after typing for more than a few minutes. If I forced myself it would become quite painful to type. So I experimented with Dvorak and it seems to almost completely eliminate irritation and fatigue for me. The chording feature of the Happy Hacking also means I never have to strain my wrist reaching way across the keyboard to press some odd key like F1. I don't even have to leave the home keys.



Does Price Matter?

Microsoft is famous for saying that software end-user-license costs don't matter at all in the grand scheme of things. Well, let's just ponder how much money we are talking about here...

1 Windows 2003 Premium Small Business Server, 20 clients

Description Quantity Cost Total
Dell PowerEdge SC420 Small Biz 1 $349.00 $349.00
Windows 2003 SBS Premium License 1 $1299.00 $1299.00
10 Client Access Licenses 2 $898.00 $1796.00

Total Cost $3444.00

20 Windows XP Professional workstations

Description Quantity Cost Total
Dell Precision 370 Workstation 20 $715.00 $14300.00
Windows XP Professional License 20 $379.00 $7580.00

Total Cost $21880.00

The Complete Windows System

Well, for $25,324 you have a basic Windows system. 50% of the total cost goes toward the various (41) Windows licenses you need to run the system. You have no end-user software. You also have no technical support beyond the hardware support Dell might provide.

At this point 20 people can share files or print if you had some software capable of creating/reading files or printing. Basically, it allows you to do almost nothing at this point. You have a matching set of $25,324 doorstops. (Well, you could play a killer game of pinball or solitaire!) If you need office applications you'll have to obtain an additional $14,000 worth of Microsoft Office licenses for the workstations. Not to mention the tens of thousands of dollars for whatever else you need just to begin to have a system capable of doing work. Don't forget that you'll need to spend another $10,000 or so on subscriptions for virus scanners, spyware removal, and elaborate server-side trojan/virus removal systems. To say nothing of having to either pay someone to walk around to each workstation and install security updates each week or buy a remote management system for several tens of thousands of dollars.

1 Red Hat Enterprise Linux ES Server, unlimited client access

Description Quantity Cost Total
Dell PowerEdge SC420 Small Biz 1 $349.00 $349.00
Red Hat Enterprise Linux ES RHN/Support 1 $349.00 $349.00
Client Access License (None!) 0 $0.00 $0.00

Total Cost $698.00

20 Red Hat Enterprise Linux WS workstations

Description Quantity Cost Total
Dell Precision 370n Workstation 20 $709.00 $14180.00
Red Hat Enterprise Linux WS RHN/Support 20 $0.00 $0.00

Total Cost $14180.00

The Complete Red Hat Enterprise system

So, for $14,878 you have a complete Red Hat Enterprise environment. You have no money in licenses and no draconian end-user-license agreements. There is no cost for the first year of technical support and RHN subscriptions with Red Hat Enterprise Linux Workstation. Over the course of 3 years the total cost of the system goes up to $21,516; accounting for $2,329 per year for 20 workstation and 1 server network subscriptions. The server provides email, web, database, Java web services, and so on. You have 20 workstations which include a full compliment of office applications, development tools, a full spectrum of desktop applications, and expert technical support and remote management for one year. You can immediately get to work with this system. If you have questions you can call Red Hat and talk to an actual human without per-minute charges.

The Red Hat Network (RHN) support fees are yearly. But I'd argue that the subscription fees are much less of a cost than the time RHN saves you from manually instructing each computer to install your approved security updates. You aren't legally required to maintain a subscription in order to use RHEL; but let's assume you're going to keep the subscriptions active because RHN is a useful service. RHN provides you access to technical support services, CD ISO images of the latest versions of Red Hat operating systems, updates tailored to your specific computers, and remote management interfaces which span not just individual machines but entire classes of machines in your company.

Please Note

I'd like to take special care to point out that with Red Hat Enterprise you are paying them solely for technical support and remote management services. There are no end-user-license fees like with the Windows system. With the Windows system each of those 41 license fees you pay are for nothing more than the privilege to use Microsoft software; this removes some of the fear of having your doors busted down by federal marshalls because you might accidentally have one too many copies of Excel installed. If you need technical support for Windows you'll have to buy extremely expensive support contract or pay per minute charges on the Microsoft 900 technical support number.

(Note: none of this information is definitive. It's taken simply by viewing Dell's online catalog. I could have made a mistake. If so, let me know so I can correct it. Always check this stuff out for yourself. Dell prices change from day to day. The prices I mention are the lowest price I could get by customizing the system on the day I wrote this blog entry. Any trademarks mentioned belong to their respective owners.)

Labels: ,


When will Linux be the best?

Loaded questions similar to "When will Linux be the best?" and statements like "Linux will be the best when it does X exactly like Y." really irritate me. First, it presumes that exactly one thing can be the best for everything. Second, the author of such a question always points to Windows, MacOS, or another OS the author favors as the current example of best. But that's not really my point at all.

My Point
My point is that Linux is the only system in the short history of computers that has even had the potential to be usable for everything. And I think most of that credit goes to the GNU GPL license which affords some amazing opportunities. It has brought together the engineers of bitter rivals, with their employer's blessing, to co-author common specialized systems based on Linux. The GPL requires them to pass along their Linux modifications which moves the basic technology forward for everyone. These projects would've been dozens of completely disconnected and incompatible trade-secret projects just 5 years ago. Linux gives everyone a common base which they can build upon. It also means that when their project finishes their contributed technology may continue to improve on its own. They don't have to hire someone else to do it for them. They don't have to license it from anyone. The only binding legal agreements they have to make are between each other and the end users of the technology they develop. They don't have to go through some week long approval process of their employer to share every tidbit of software code or information about it with each other. The GNU GPL license handles all of those negotiations for them. They can walk into a room and immediately start doing real work with each other.

Over a short period of time these interactions have pushed Linux in all directions. Linux itself can now be made to run well on nearly any device which has something resembling a CPU and memory. This means that in most cases the same exact programs without modification can be used on devices as diverse as a small wristwatch or a building-sized supercomputer. We no longer need to start from scratch and recreate the same types of programs over and over for every new computer design. The same programs run everywhere. This frees up an enormous amount of time for developers to create new technology. In the proprietary software model we are doomed forever to keep recreating the same old technology in order to even use the new technology. Up until proprietary software we would build new technology upon the knowledge gained from the past. Proprietary software simply has us building the past over and over again.

With Linux there are no more secrets in the OS. And this is a wonderful thing. Its better for everyone involved: engineers, developers, technicians, OEMs, resellers, customers. Take the case of a cell phone. Instead of having dozens of incompatible, proprietary operating systems all phones could share one common OS. This means one could use the same exact programs on all cell phones and not just one model from one company that was only made for 3 months in 2004. This also means that 17 different companies don't have to waste resources creating their own custom phonebook program. Instead they can just buy one off-the-shelf and drop it into their phone at the factory. For example, in the very near future maybe you won't have to spend those 3 days manually retyping your phone book entries using tiny buttons when switching to a newer phone. Just lay the phones next to each other and use Bluetooth to transfer your phonebook database from one phone to the other.

The Old
UNIX proper is long dead. UNIX is dead because every UNIX vendor added proprietary features into only their own version of UNIX. The proprietary nature of each system drove everyone into the ground at full speed because over time they were so different that software from one vendor could no longer be used on another vendor's system. Those who have moved away from proprietary UNIX are almost certain to never return. Nearly every major proprietary UNIX OS vendor (IBM, HP, SGI, etc) has spent the last 5 years or more stripping out useful technology they added into their proprietary UNIX derivative and reworking it for inclusion in the common Linux base. This is what should have happened with UNIX and indeed AT&T tried to implement this idea and failed probably because AT&T was seen as a direct competitor to other OS vendors. Linux is vendor neutral and it seems that vendors are much more comfortable with this situation. At least everyone benefits this way instead of just one competitor.

The only real holdout is Sun with Solaris. And they do have an advanced OS with a couple features found nowhere else, for now. But to be bluntly honest, using Solaris is a horrendous end-user experience compared to Linux. To be sure, it makes a nice high performance server. But as an end-user system it is terrible. USB doesn't work whatsoever that I've ever seen. The new hardware configuration in Solaris is quite easily the worst ever devised being very tedious and technically oriented. Solaris provides stunningly ancient versions of all the expected UNIX utilities. And the desktop utilities are an strange mixture of 3 or 4 totally different toolkits which look and work in different and sometimes conflicting ways. (Yes, Linux systems do provide programs using many different toolkits. But the major base distributions standardize on utilities using one or another toolkit to provide consistency.)

The BSD family is very good but it has never managed to soar into greatness. Every time a particular branch becomes popular someone steals it (and often its developers) away from the community project to add a bunch of neat, advanced stuff in a new, proprietary "based-on BSD" system. (SGI, Sun, NeXT/Apple, the list goes on for pages.)

Windows is religiously proprietary and as such it is doomed to eventually collapse under its own secrecy. There is simply no way that Windows can survive unless people are willing to accept that computers will never truly progress technologically. With Windows you are forever stuck with some minor variation on exactly what you have now. Windows is too dependent on the design of the PC and the PC is terribly outdated. The PC only has survived this long because of Windows. Imagine if today everyone was using AmigaOS on a slightly more advanced Commodore-style computer. And honestly, PCs aren't even that advanced with Windows. The computers that Windows runs on are permanently frozen somewhere in the early 1980s. And for most Windows users that's fine because they don't really know any better. This is not because Microsoft hasn't tried to break the shackles of the PC. But they have given up trying very hard. Why even bother to change their ways when what they have now is still making them insane sums of money. Well, the only reason is that changing now would spare them in the future. But the future doesn't matter as much as quarterly profit in this crazy little world.

MacOS X is one of those systems that kinda gets it. But they seem to have made the typical BSD mistake. In a sense, they "stole" away a popular, technically advanced BSD system (FreeBSD) and some core developers from the community and then made it their own. They added their own improvements and such to it. And they continue to pull in new features from FreeBSD every so often. For various reasons, perhaps the FreeBSD leadership itself, Apple did not choose to work directly within the FreeBSD community and build that up as their base OS. So now we have two somewhat incompatible systems, FreeBSD and Darwin, instead of a stronger FreeBSD. MacOS X itself further adds an entirely proprietary desktop environment on top of that. Which I suppose is fine since they decided to add provisions for FreeBSD programs to run on it. It's a lousy BSD, really. But it is a decent UNIX system with a very attractive and modern desktop environment running on cutting edge computer hardware. One can easily see why it is almost as popular as Linux.

Labels: ,


Yahoo! Mail from the GNOME Desktop

On Microsoft Windows, Yahoo Companion allows you to send email from any program or website using Yahoo! Mail. This is not the case on Linux systems. Only the Yahoo! Toolbar for Firefox works on Linux. So, I wrote a simple Yahoo! Mail mailto: script for the GNOME Desktop on Linux. Save this script into the bin folder in your home. (You may want to create a bin folder for stuff like this if you don't have one.) This script only works with the GNOME Desktop but could easily be modified by manually setting the BROWSER variable in the script.

Next, it is very important that you right click the ymail script, select Properties, open the Permissions tab, and then check all of the Owner boxes but specifically the one marked Execute.

An important note: you must login to Yahoo! before trying to send to any email addresses. Seems to be a minor quirk in their web mail. The Yahoo! Toolbar for Firefox should automatically do this for you, though.

Finally, to change your mail application to use this script open System->Preferences menu then select Preferred Applications. You will want to enter the full name of where you placed the ymail script. And don't forget the space and %s after it as this passes the email address along to the script. Here is an example of what it should look like:



Anything is something if everything is whatever

Every criticism I've ever seen written about Linux can be summarized in one of two ways:
  1. Linux is useless and technically inferior to my favorite OS. All hail the hypnotoad!
  2. Whatever is key if Linux is to something. Whatever will be the driving force behind adoption of something. And only something can provide Linux with the needed momentum to become whatever to whoever wants something. A fundamental paradigm shift is underway which could mean whatever is something to someone who something wasn't important whenever.
What if...Linux isn't about being everything to everyone? What if...Linux doesn't care about pleasing outsiders? What if...Linux isn't about being better than other software? Maybe...all those things are simply side effects of a healthy community.

What is the single most important feature of GNU and Linux over all other operating systems? A thriving community of developers and users who interact with each other as peers freely exchanging information and ideas. This is what Eric Raymond calls the bazaar. This type of peer-to-peer collaboration truly didn't exist in computer software before Linus Torvalds introduced it with Linux. This sort of environment can only develop in a free and open society of sufficient size.

Until you've been in the bazaar you can't understand the power it wields. Those outside are doomed to stand there forever pointing and making snide remarks about how it will never work. All the while they don't realize that it's been working all along. And since they aren't in the bazaar their needs will never be met. A few wander in but don't realize that merely standing in the middle of the bazaar doesn't make them part of it.

Those who stand idly by will find themselves ignored. The first reaction of many newcomers is to barge in and demand satisfaction. To their dismay they are consigned to blacklists and never spoken with again.

To be sure, other operating systems have their communities. The proprietary operating systems simply don't afford users the ability to interact with developers on a meaningful level. And the developers of other "open source" operating systems dominate their users and keep information tightly controlled. Then there's that fruit-flavored operating system which combines both proprietary and open source software in a way that keeps people from wanting to get involved.

What's the difference? Apathy. The Linux community encourages users and developers to work toward solutions to specific problems. Users of operating systems that follow proprietary and (cathedral-like) closed development models are largely content to sit on their hands hoping someone will eventually fix all of their problems for them. Never do they consider that no one knows about nor cares about their problems. There are two ways to get a problem fixed: fix it yourself or make someone else care enough about the problem to fix it. (e.g. pay them to fix it, ask them nicely to fix it, etc)



Beware of Software Gifts

The Paranoid Survive

Does anyone remember the Trojans? I implore you, stop implicitly trusting software development corporations. Believe nothing you see on TV, radio, in print or otherwise without verifying it is accurate. You aren't paranoid enough and they are out to get you any way they can.

Be very skeptical of third party endorsements of software. If A says that B's software is great then don't believe A no matter how reputable A might be. For example, Windows software is almost always distributed in proprietary form. Thus A has no way to know what B's software really does without lengthy lab tests.

Always obtain software directly from the author or using a method the author endorses. Obtaining software from unofficial sources may expose your computer to all manner of serious threats. For example, downloading software from so-called "warez" websites is extremely dangerous and will almost certainly end with your computer being attacked. To say nothing of the wrath you may draw from the author and their army of flying monkeys lawyers.

Peer Pressure

A friend of yours says to you, "Hey, I installed this really cool program and it doesn't cost anything! Go try it!" What is your normal response to that statement?
  1. Reply, "Hey that is neat!" and blindly install it.
  2. Reply, "I'll look into it." and glance through the end user license agreement then install it.
  3. Reply, "I'll look into it." and search Google for more information and install it only if it doesn't immediately look harmful.
  4. Look at the features, search Google, read the end user license agreement and privacy policy thoroughly and then only install if it has acceptable terms and is immediately useful.
  5. Reply, "No thanks." and don't install it.
  6. Hide under the desk in fear.
If you are someone who ever does 1 or 2 then you need to just stop the insanity. 3 is very risky because the program may be very new. 4 is perhaps reasonable. 5 is probably the best option for any program you see described as cool, neat, or new. 6 is what people do with their Windows computers after they've installed a "cool, it doesn't cost anything" program.

What's the Real Cost?

All software costs someone something. You really need to make yourself aware of how the software you use is being developed and who's paying for that software development. End user licenses, privacy policies, and other agreements should explain any questionable policies at least in passing. Beware of words like "bug" or "track" or "personal data" when reading these agreements. If they have to tell you they aren't sending "personal data" then they may be stretching the definition of "personal data." For example, many privacy policies will boast how they don't send "personally identifiable data." However, that is subject to their interpretation of the word "identifiable."

Some Specific Examples

What types of software am I talking about? Well, anything you don't need. A few examples of programs whose end user license agreement and privacy policy agreements you should read very thoroughly several times are WeatherBug, iDownload iSearch, Smiley Central, Stop Sign, Bonzi Buddy, Date Manager, Gator, WebSearch Toolbar, anything that claims you can win something, any program that promises to give you coupons, or anything calling itself a toolbar. Maybe the agreements for those programs are acceptable to you and maybe they are not. I certainly would never agree to their terms of use. In fact, I don't agree to the terms of use for most software.

Read all Agreements

Before you install anything on your computer I would urge you to thoroughly read the license agreements and privacy policies. Then search Google to see if you can learn about anything they might leave out or make unclear in their agreements. What you find about some programs or the companies which produce those programs may make you hide under the bed.

Beware of End User Agreements

I would suggest that you remain suspicious of any program (or website) which has an end user license agreement. End user licenses restrict how you are permitted to use a particular program; particularly "retail" programs you have purchased but nearly all proprietary programs have end user agreements. The extent and scope of those agreements may shock and surprise you. Obviously, most proprietary software is going to have an end user license agreement because they want to control how you use that software. Read any agreements as if your livelihood depends on it. Because it probably does. Failing to follow end user license restrictions, especially if you are a business, is very likely to land the SIIA or Business Software Alliance (aka The Software Police), software company lawyers, the FBI and/or some not-so-friendly federal marshals at your door.

Just Say No

Finally, don't be afraid to click "no" or "I don't agree" when a program (or website) asks you to accept their terms. I generally refuse to use accept any end user license agreement and I thoroughly scrutinize privacy policies. As such, I'm unable to use Microsoft Windows or most of the proprietary software that goes along with it. There are plenty of Free Software and Open Source Software (aka FOSS) alternatives which do not place any restrictions on their usage. You can use FOSS applications any way you choose and you can freely give a complete copy, including any modifications, to anyone who wants.

Labels: ,


Myths and Realities

Linux Reality Outstrips Linux Myth is well worth a read. It's much shorter and surely more interesting than what I've written here.

The article highlights a popular Linux "myth" as a sign that we've reached a tipping point in the public awareness of computer technology. There's this fascinating myth circulating among people who are unfamiliar with Linux. The myth is making the public aware that Microsoft and Windows are not their only choice in a grass-roots way. I've heard this myth first-hand numerous times from all sorts of people. The myth pits Linux against Microsoft in an epic battle that started long ago in a land far away. It goes on to explain how Linux aims to defeat big old Microsoft and save the world from buggy computer software. Those may be nice side effects but they have nothing to do with any motivations behind Linux. It does make an interesting story. A consequence of this myth is that people are able to consider alternatives. Once people consider that there are alternatives they may also consider that Windows is not even a good alternative.

Incidentally, you can buy a DVD copy of the great documentary Revolution OS detailing the real story behind Linux, GNU, Open Source, and Free Software. The extras and cut-scenes on the DVD are well worth watching.

The reality is that stagnation for much of the last 15 years defeats Microsoft. Sure, you can point to hundreds of little things that may be better now. But mostly we are talking about changing window decorations and replacing confusing option dialogs with wizards and cartoons. Among the most anticipated new features are workarounds like anti-spyware, anti-virus, and such for problems that shouldn't exist in the first place. That's especially sad since Microsoft has such a great research division. Meanwhile, UNIX and Linux have progressed forward in technical capability at a steady clip.

History Repeating History Repeating Itself
Since long before Linux became popular, Microsoft core desktop offerings have consisted of the same basic set of programs with the same basic features. Those programs are Windows, Word, Excel, Access, Visual C++, Visual Basic, and a few others. Their server offerings haven't changed much either. The most notable change between versions of each program is that the newer version almost always creates documents in a format older programs can't read or write. And for your convenience the newer program will happily translate all of your old documents into a format only the newer program can read. After nearly 2 decades of constant development one would think that the stability and compatibility of these programs would be drastically improved. Yet they are still chasing after the same old ghosts and providing the same basic features.

Why is Microsoft frozen in place? That is really quite obvious from the perspective of an outsider. They have found something people will pay insane sums of money to use and they don't want to screw up the cashflow. The only thing preventing them from improving Windows is their belief that the existing body of proprietary Windows software must be supported at all cost. There are large subsystems in Windows which deal with nothing but cataloguing and emulating the bugs found in previous versions of Windows. You might think that sounds insane and I think you'd be correct. However, Microsoft really can't force broken Windows programs to be fixed because Microsoft fiercely promotes the idea of proprietary software; that is, software which cannot be modified or repaired by anyone but the program's original developer. Windows provides what Microsoft calls "Shim Technology" to make a specific proprietary program work as if it was running on the outdated or broken version of Windows used to develop it. Windows needs to know about each specific program that a user might want to run and then provide a set of "shims" to make that program more or less work. A huge set of shims comes with each new version of Windows allowing old programs to remain more or less functional.

Contrast and Compare
A deeply concerning problem for Microsoft should be that the Windows environments and interfaces encourage programs to be deeply tied into the Intel x86 architecture. It isn't feasible to rebuild most native Windows programs for use on another architecture or OS. Microsoft has more recently created the .Net and C# programming environment to encourage developers to write proprietary programs that are not dependent on the x86 processor. However, by my count there are more Linux and UNIX systems running .Net software than Windows. .Net is still so uncommon that most developers of retail software simply don't use it.

A typical presumption when writing a UNIX or Linux program is that you have no clue which computer architectures might run your program. Indeed, you don't even know which operating systems might run your program. Consequently, UNIX and Linux programmers tend to write very portable programs that require only a trivial rebuild to support a new CPU or OS. UNIX and Linux development tools have always encouraged programmers to write portable programs. To further promote writing portable software services like SourceForge and even computer manufactures themselves provide free remote access to development systems. SourceForge has many different computer architectures and operating systems available for Free and Open Source Software developers to use as a test bed.

Another issue with writing Linux and UNIX programs is that most computer architectures don't allow programmers to make serious mistakes. For various reasons and excuses, Intel x86 processors allow a whole host of serious programming mistakes to occur without detection. Worms, memory errors, data corruption, and entire classes of problems Windows-x86 users experience every day simply aren't allowed to occur on other architectures. If a program makes a mistake most computer architectures will instantly abort that program. Then why doesn't Windows support these other architectures? Well, Windows NT did support several of them until around 1999 when Microsoft finally conceded that almost no one wanted Windows on those architectures. Almost no Windows programs existed for those architectures. And porting a mildly buggy Windows-x86 program to a bug-hostile architecture is often more trouble than writing a new, portable program from scratch.

Alternate Realities
Let's consider Mozilla Firefox, a popular Free and Open Source Software web browser, running on the Debian "universal" operating system. Debian can run Mozilla Firefox on Alpha, ARM, HP PA, Intel x86, Intel Itanium, Motorola 68000, MIPS, MIPSEL, Power (Apple & IBM), IBM s/390, and Sun Sparc computer architectures. Debian can run the same program on at least 10 completely incompatible computer architectures without modification. About half of those architectures are strictly 64-bit.

The standard Debian system includes 10,000 programs like Firefox. There are hundreds of thousands of programs like this available from SourceForge. There are over 1 million people helping develop Free and Open Source Software at SourceForge. And I'm barely scratching the surface. There are many other services similar to SourceForge. Many and probably most developers use none of these services and work by themselves or with a close group of friends.

Now consider that Debian provides a choice of 4 different kernels: Linux, FreeBSD, NetBSD, and GNU HURD. This isn't an install-time choice, either. You can quickly switch between the different kernels on an already installed system. Linux supports a huge variety of peripheral hardware and architectures, NetBSD runs equally well on many architectures, FreeBSD provides robust server technologies on popular architectures, and HURD is...well I'm not sure what HURD is good for.

Some Perspective
Natively running the same program without modification on dozens of incompatible architectures under dozens of competing operating systems must seem like complete fantasy to some software developers. And if that's fantasy then easily replacing the system kernel with a different, incompatible kernel must seem completely inconceivable. Believing that one kernel is the best for every purpose seems a bit shortsighted. Not entirely unlike tying your software to a single computer architecture that you don't manufacture...

Labels: ,


Media Fundango

Well, iFilm.com has suddenly started working right with Firefox & Real Player 10 on Linux. No more crazy "You need RealONE player" prompts. Yay! So, I think they have vindicated themselves for now.

Sadly, wthr.com still sucks and will likely remain so for a long time. I've been told their media doesn't even play on the latest version of Windows Mobile edition on PocketPC. It displays the same "You need Internet Explorer 6 and Windows XP" message. You'd think that with the huge areas of Indianapolis covered by WiFi wireless Internet access they'd want people to be able to watch the news while they eat breakfast, lunch or whatever. Alas, I think they just don't get it at all.

For the last few days Firefox (a recent unstable snapshot from Ubuntu Hoary Hedgehog) has been refusing to view or save certain types of multimedia. Mostly things like Real .ram playlists. I found that throwing away mimeTypes.rdf in my profile fixed the problem. Of course, it also meant I had to tell it which programs open which types of files. But that's fine by me. The defaults are mostly right since, I think, it asks GNOME what programs support a particular type of file. The only thing I had to change was totem to realplayer for streaming Real Media. Totem is fine for most media formats but I think Real Player 10 generally does a better job of playing Real Media.

I installed the latest Real Player 10 release today since there was a security issue of some sort with older versions. I figured out how to make a Debian package out of it, also. I cheated and used Linspire's "src" package as an example. But I stripped out all of the KDE mimelnk files since they conflicted with existing KDE packages. I left just the launchers and icons specified by freedesktop.org standards.



Ignorant Media Providers

I'm really irritated with streaming video sites like ifilm.com and even the local wthr.com website. I run Linux. I don't run Windows. Their websites berate me and insult my intelligence because of this. One can only speculate why they would do such a thing when the technology exists to make their website and streaming video work effortlessly.

My advice to WTHR.com and iFilm.com: Fire whoever is running your websites. Or at least smack them upside the head with a cluebat.

WTHR.com throws up a red warning message telling me that my operating system and/or browser are not supported. At that very moment the video window opens and the video they say I can't watch starts playing in all of its craptacular Windows Media Video garbled glory. Then it further demands that I install Internet Explorer 6. Tell me, why shouldn't I just go to CNN instead? CNN opted to not insult me. Instead they support Real Player which runs natively on Linux and supports Mozilla Firefox. And further CNN doesn't just assume that my browser won't work. They don't even try to stop me from making a seemingly stupid choice like selecting Windows Media Video format.

iFilm.com tells me that I need to install Real ONE player and totally locks me out of their website. Why in the world would I want to install an old, buggy Real ONE player? I have Real Player 10 Gold for Linux installed. If I tell Firefox to pretend that it is Internet Explorer 6 on Windows then iFilm lets me watch the videos fine using none other than Real Player 10 Gold for Linux. I will suffer without iFilm, thank you. Why? I don't want them to get the impression that the entire world runs IE. Maybe one day they'll look at the number of Firefox or Linux users who simply leave their website at the "Go away we don't want your money" popup.

After telling Firefox on Linux to pretend to be Internet Explorer 6 on Windows I was presented with a perfectly working video interface with quite high quality video. The buttons are a bit cramped because they make some bad assumptions but it is still perfectly usable. (Note: you can't see the actual video in the screen capture due to Real Player's overlay):



makensis on Ubuntu

On July 08 2004 I made a native Linux build of the makensis command from the Nullsoft Scriptable Install System (NSIS). NSIS is a popular programming tool which allows you to create installers (i.e. setup.exe) for Windows software by writing simple scripts. Since my computers run Linux I build Windows software using a GCC cross-compiler based on MinGW. So, I needed NSIS to run on Linux and create a Windows setup.exe. It turned out that NSIS can be run on Linux and I documented the process I used to build a Linux version of makensis.

Lately I have been migrating my computers from Fedora Core to Ubuntu Linux. So I have repackaged makensis as a Debian package for Ubuntu Linux along with a GPG signature. (Incidentally, does anyone know how to sign a Debian package so it can be verified? Never works and installing debsign-verify prevents everything from installing.)

Lintian complains about some things because of the way I had to package it. This version of makensis acts like a Windows program. As such, it wants its executable name to be makensis.exe and requires all of its config files to be in the same directory as makensis.exe. So, I wrote a /usr/bin/makensis shell script and placed the real files into /usr/lib/makensis.

I'm not sure if there's a way to make Lintian happy without modifying the makensis code. Then again, maybe those problems are solved in a newer version. I don't really want to update to a newer version right now because makensis often changes its script language between versions.

To make the package a little more user friendly I followed some of Lintian's advice. I created a makensis(1) man page by running halibut --man=makensis.1 usage.but in the Docs/src directory. I tweaked the output from halibut according to the Man Page HOWTO. And I copied the HTML documentation into /usr/share/doc/nsis.



No more patches...

Here's an amusing Novell Linux advertisement that makes light of the abandonment of Windows NT 4 by Microsoft.

This highlights the defining difference between Windows and Linux. With Linux, a particular company isn't selling you the limited, revokable right to use their systems. The company is selling you their services to maintain and repair your systems. That's right folks, Linux is as much your system as it is theirs. Maybe those support services even cost more than a bucket full of Windows licenses. But there's no expiration date on when you need a problem solved. If there is a problem then the people you are paying should fix it. And, with Linux, if they don't fix it to your satisfaction you can grab the phone book and find someone else who will. Or you can even fix the problem yourself if you have the skills.

With an "abandoned" version of Windows your only recourse is to spend a fortune to upgrade every piece of hardware and software you own and then hope the problem has been solved. And if it hasn't been solved then you may be allowed to file a problem report on the newer version. But for the average business a problem report filed with Microsoft comes explicitly without any expectation that the problem will ever be fixed. And sometimes when it is fixed you'll find it is only provided with an upgrade to a new version.



Son of Slowaris

So Sun claims they will be releasing (portions of) Solaris under an Open Source license. Good for them. However, I predict that they will be unable to release enough of the code under an Open Source license to provide a usable system in the near term. In a few years they might be able to build up a usable system.

What I'm saying is that whatever eventually comes out of OpenSolaris isn't going to be Solaris. And that isn't a bad thing. Although I believe that those developer hours are wasted when they could be spent improving Linux. Linux has vast industry support and is missing a very small number of features found in Solaris. Holding on to their lofty dreams of domination will push them into obsolescence along with Solaris itself.

Linux and GNU are about freedom of choice, vendor independence, and creating the universal operating system. I hope people don't confuse those points with publishing source code and providing unique tools to make developer and administrator lives easier. Open access to source code is vitally important but not if it means you are forever trapped in one vendor's environment.

Labels: ,


Evolution, Beagle being ported to Windows

Novell has hired Tor Lillqvist to help with porting some of their software to Windows. Tor has always been tremendously knowledgable and helpful and I really hope that works out well for him. He's helped me on more than one occassion when I had questions porting software to Windows.

Novell will be starting a project to port several GNOME applications to Windows including the Beagle desktop search tool and the Novell Evolution Groupware Suite. This, I think, is a great thing. Windows users will be able to migrate from Outlook to a functional equivalent which provides messaging, scheduling, task management support for Microsoft Exchange, Novell Groupwise, IMAP, POP, LDAP, Usenet News, and other protocols. Beagle integrates with Evolution, GAIM Instant Messenger, and other GNOME applications to provide integrated desktop search capabilities.
Comment on SlashDot, "By porting all these commonly used OSS apps to Windows, it helps commoditize the OS itself. This is however a double edged sword. It makes migration to Linux from Windows easier, but also reduces the incentives (excellent Linux-only software) to make the move."
Firstly, Linux is the reason to switch to Linux. You get all these wonderful applications without any of the baggage from other operating systems. It is a fresh start. A clean slate. Linux is a chance to start your computer life, or start it over, without the extra blood pressure and stress of other systems. The OS should be largely irrelevant to the operation of the software running on it and it should certainly seem that way to you. If you are a Windows user and ever think to yourself "Why does Windows do that?" or "Why does the computer always do that when I do this?" then you are being betrayed by Windows. You shouldn't even notice that Windows exists. But the reality is that every time you let down your guard Windows smacks you in the face.

Secondly, I hear the "double edged sword" argument often. Early on, GNU was developed largely on SunOS because that's really all they had. The GNU folks realized that Sun had a fairly nice kernel but many of the user tools were, in my and others opinion, just absolutely horrible. And I think the failings of that OS taught the early GNU developers to strive for something better. You hear a very consistent response when you ask people about using SunOS in the early 90s or even Solaris today. It goes like this, "The very first thing we do when we get a brand new Sun Box is to spend 2 days installing GNU." As a testament to that fact, for several years Sun has been selling all of their systems with GNU, and often also Linux, preinstalled. GNU didn't just clone the UNIX System and its commands. They built completely new tools that worked in entirely new ways. But they never forgot what worked from the old system and they usually made it so the newer, better programs could drop right in place of the old programs.

I guess I'm saying that if you know why Windows, UNIX, a particular application or whatever sucks then you can use that knowledge to avoid the same mistakes. But if you blind yourself completely to the experience then you may become preoccupied with something that others know is a dismal failure. (For example, KDE Control Center truly is a dismal failure not because of bad design but because of the millions of useless settings in it. Sadly, they didn't get the memo because their mailbox is welded shut.) Much wasted time could be spent elsewhere if you learn from others mistakes.

Labels: ,


Spatial or Not: GNOME vs. Windows

I'd like to illustrate just one of many reasons I love the "spatial" desktop in GNOME (and MacOS for that matter). I have touched on this before in my Modern Desktop Linux and UNIX Systems article. You can't really organize things in a "natural" way with a browser-based desktop like Windows or KDE. It seems artificial and cumbersome to me if every folder is always the same size, same shape, in the same place on the screen, and neatly compartmentalized into ugly little squares.

Generally I want folders to either stay where and how I left them or to show me only the newest items. With a spatial desktop I can have both auto-sorted and manually arranged folders. With a browser-based desktop I would be forced to live largely without the ability to leave things how I left them. Most file browsers regard "manually arranged" as a suggestion and not a divine right. Now, I admit that it does take time to organize things how you want them. I think because of this Windows refugees sometimes don't immediately see the benefit and jump to the conclusion that spatial orientation is like the old "Open Folders in a New Window" mode introduced and abandoned in Windows 95. Some complain about "all those extra windows opening up" when they encounter a spatial desktop for the first time.

I, for one, take comfort in the knowledge that my folders stay the way leave them, auto-sorted or not. I no longer find myself aimlessly clicking through folder after folder trying to find a single file among a sea of tiny nearly identical icons with only very small text labels to guide me. Windows and similar desktops force the user to read through similar looking file lists one after another to hunt for a single file. While GNOME allows my brain to navigate on auto-pilot using only familiar looking landmarks. When I reach my destination I see a landscape that looks exactly like I last left it. I don't have to wonder if I'm in the right place.

GNOME on Linux view of a folder:

Explorer on Windows view of a folder:

As I opened the folder on a Windows system I remembered that Windows relies on cryptic three letter extensions tacked on to the file name to determine the type of file. So Windows doesn't even know that my photos are photos. But I suppose for this demonstration that doesn't much matter since everything is always trapped inside a perfect little 128 pixel square and locked in a prison-like gridwork. When it does manage to recognize a photo Windows provides a tiny thumbnail preview. But the preview only works on writable folders and clutters up those folders with ugly Thumbs.db files.

Labels: ,


Inexpensive Linux Laptop from Walmart

Along the lines of my previous post stating that I hope Walmart will lead the Linux retail charge... Walmart is now selling an inexpensive Laptop preloaded with Linux. For $498 you can get a laptop with a 1 GHz VIA processor, 128 MB RAM, 30 GB hard disk, built-in CD-ROM and 4 USB 2.0 ports running Linspire Linux 4.5. Linspire 4.5 comes with a 3 month trial subscription to their Click 'n Run software library. Linspire is based on Debian; you can install Debian software packages even if you choose not to subscribe to Click 'n Run. Ubuntu Linux, also based on Debian, might be a good alternative operating system for this laptop.



Regarding: Open Letter to a Digital World

Opinion: Open Letter to a Digital World

Well, it made me feel all warm and fuzzy inside anyway. But I haven't used Windows at all for over 6 years and I guess I understand what he's talking about. The first PC I bought in 1996 was running Windows. From December 1998 to present I have used Linux exclusively on all of my computers. There have been entire years where I've not touched Windows systems. From that perspective I find using current Windows systems quite a shockingly bad experience.

(in)Security (in)Sanity
These past two months, in particular, friends and family have been asking me to help them salvage their Windows PCs. I seem to be viewed as "the computer" expert or perhaps a last resort. I've had more experience than I would wish upon my worst enemy "cleaning" trojans, viruses, etc from these systems. And, like the author of the article, it really shocks me just how bad Windows has become. As bad as you might think Windows is I'm here to tell you that it is much worse. If you think your Windows system is clean and safe I'm willing to bet that it is not. No combination of antivirus and spyware/adware removal tools I could find would protect any system other than Windows XP with Service Pack 2. XP SP2 is only marginally less problematic and the fixes in SP2 seem largely short-term. Windows 9x appears to be impossible to protect without total abandonment and removal of Microsoft software. All Windows systems prior to XP SP2 will soon follow because Microsoft will no longer provide security updates to them. This is clearly a forced upgrade strategy and I can't really blame Microsoft because upgrading is the best strategy. Those who won't upgrade probably don't bother to install security updates anyway. (Windows 2003 Server probably fairs the best of all Windows systems but its security policies prevent many Windows desktop programs from functioning properly or at all.)

I've heard many reasons for why someone thinks they can't use Linux. A few have some merit. Many reasons given are excuses to justify the decision to stick with Windows. Fear of the unknown keeps many people frozen in place.

One reason a company might stay with Windows is that some run software they or a consultant has designed to rely on Microsoft technology. They have no business case for rewriting the software so they stay with Windows. When the business logic changes they might consider writing the replacement to run on Linux. But in some cases even these people are switching to Linux desktops. One can setup a single Windows Server system with Windows Terminal Services to run Windows applications. Microsoft's Remote Desktop Protocol, used by Windows Terminal Services, is fully supported by rdesktop on Linux providing stereo sound and true color video. If one is already paying for Windows Server and its user licenses then using Terminal Services means you can eliminate the extra (~$179/yr per CPU in XP contracts) cost of running Windows on each workstation. It cuts Windows upgrades, security, and support down to a single server machine. It also means that every user's desktop is available on any physical workstation. If their workstation catches fire they can walk across the room and pick up right where they left off without missing a keystroke.

Another reason is that a company might have in-house people who are actually qualified to maintain and administer Windows systems. And that can certainly work if the operating system and all software are kept current. But I think it is a frighteningly rare situation. And even experienced admins can easily get into a situation where they are spread too thin to deal with every incident.

But most of the reasons seem to revolve around empty assumptions like "there's no software." I suspect that belief comes from the fact that many Windows vendors don't openly support Linux. Debian Stable includes 9,157 applications. Many Linux systems are based on Debian. Source Forge hosts over 53,000 Free and Open Source applications that can run natively on Linux. That doesn't count proprietary applications from Linux software vendors. And it certainly doesn't count Java applications, Microsoft .Net applications, nor Windows applications that can be run on Linux. That doesn't even count most of the Free and Open Source applications available for Linux.

Maybe there are more Windows applications. Maybe they are better quality. Maybe. I don't know and I don't think anyone could possibly know. It is largely conjecture. Linux has been around longer than 32-bit Windows. UNIX systems have been 32-bit longer than any Windows systems, or really any mainstream consumer systems, have existed. Most 32-bit and 64-bit UNIX systems software can easily be made to run on Linux. In recent years there's been a lot of work on building alternatives to popular Windows software. And I think that gets a lot of the focus when people say no software exists for Linux. They look at only the programs which clone Windows software and then they proceed to grade it on how closely it resembles the Windows software it has cloned. I think that's a very narrow minded perspective. And I think this comes from people who have invested their time in learning what they call "tricks" instead of learning how to use the computer systems and software itself. When faced with a similar but slightly different program they freak because their bag of tricks no longer work.

But Really
Software support really isn't the issue for most people who do talk of using Linux desktops. It may be the cover story but it's not the issue. It's the complete lack of experience with using anything but Windows. Linux isn't Windows, it has never been designed with Windows in mind, it will never be like Windows, and most Linux users and developers consider that a good thing. This generates fear among people who have invested in learning Windows. Those coming to Linux without any deep ingrained Windows knowledge are unlikely to have any such issues.

On Inexpensive PCs
I believe that Steve Ballmer's $100 PC isn't far away. But I don't think it will be running Windows and I don't think it will be a PC. There's a growing market for inexpensive computers running inexpensive software. I hope that retailers like Walmart will lead the charge in coming years. Here's to hoping other major retailers stop cowering in the corner and test the waters with their own inexpensive Linux computers. The only way to make Linux popular with the masses is for retailers to sell good quality systems in physical brick and mortar stores.

My point there is that if a retailer bundles a reliable, inexpensive computer with a good assortment of decent software then people aren't going to care what OS it runs. Most people don't even know what an OS is. Most people I know blame "the computer" when something doesn't work instead of blaming Windows. Many have no clue what an operating system is, why they need one, how to install software, that they can install software, or they don't even know what software is. Many even think that if something didn't come with the computer they have to buy a new computer to add it. Nearly every Windows home PC I have seen is still in the factory configuration with the factory software. Many still show the "Welcome to Windows" tutorial screen at bootup. At the most, they might have installed AOL or MSN simply because someone walked them through installing it over the phone. And I strongly suspect these machines are in the factory config because people are afraid to install anything or even use the computer. They've probably had more than one occassion where the system blew up and their hardware vendor has instructed them to insert "The Big Red Disk" to reset it to factory defaults without explaining the consequences. After doing that once or twice would you ever entrust the computer to your precious family photos or financial records?

Labels: ,


Firefox 1.0

Firefox 1.0 Released

A few people asked me to let them know when Firefox 1.0 was released... Well, it released on Tuesday and the Mozilla websites have finally settled down.

Get Firefox!

Firefox 1.0 Press Coverage:

Firefox Add-ons and Extensions

Turns out that many web-based companies have been quietly developing, or helping develop, extensions for Firefox. Firefox extensions add new features to the browser and they generally aren't specific to a particular operating system. Most extensions work with Windows, Macintosh OS X, Linux, and other systems.

Google has created a custom Home Page that displays random tips:

Firefox extensions for some popular services:

Many more extensions are available from:

Live Bookmarks

Firefox also supports "Live Bookmarks" for syndicating Blog and News feeds into your bookmarks as a folder. For example, this means you can go to IndyStar.com and click the orange "RSS" logo to create a "Live Bookmarks" menu that always shows the latest IndyStar headlines.

You may view a short video showing how to use Firefox Live Bookmarks I have recorded.

Del.icio.us Social Bookmarks Manager allows you to create and share Live Bookmarks with friends, family, yourself or the world. It also puts you in touch with other like-minded people by allowing you to see a list of users who have common bookmarks.


Firefox 1.0 works perfectly with most, even complex, websites. For example, those of us on Road Runner High Speed Online can now access their online services using Firefox without any lack of functionality. CNN Headline News video plays, AP videos play, music videos play, sound prompts work, web-based email works, sports, weather, and everything else works. Not just on Windows but also on MacOS X and Linux.

It is true that a very few websites are heavily tied into Internet Explorer, Windows and proprietary Windows media formats. The only way to change that is to send each non-functional website a polite but stern email or comment asking for cross-platform Mozilla Firefox support. Remind them that they are losing business, however minimal, because they do not support Mozilla Firefox. Tell them of competitors websites that do support Mozilla Firefox. Often the operators of such websites are not well informed by their web developers. Often it is simply because the developer isn't sufficiently skilled to develop cross platform multimedia and wants to hide the fact; they instead insist that cross platform multimedia is not possible and proceed to blindly lock out any browser and OS except Internet Explorer on Windows.

Labels: ,


Windows and Devices...

Why do I feel the sudden urge to slam my head into the desk every time I try to deal with Windows?

I've been trying to get Windows 2000 to play nice with my HP Colorado 5 GB Travan drive. It is a standard IDE Travan QIC drive I installed into a USB 2.0 IDE drive box. Seems reasonable that this should work, no? Why do I need Windows? Well, as with most things Windows the data on the tapes are almost certainly in a proprietary format. So I'll surely need to read them using the same Windows program that created them.

So, I wondered if the drive worked at all. I've not used it in many years and then I only used it with tar (the standard UNIX Tape Archiver program). The HP Colorado user manual claims my tape drive originally came with Yosemite TapeWare for both Windows and Linux. This drive came from a computer show with only a user-manual rubber-banded to the drive. So I went to the HP website, found TapeWare and then installed it on Fedora Core 2. I ran the TapeWare Administration GUI, it auto-detected the make and model of my tape drive, and the drive works without a hitch. The entire process took maybe 5 minutes.

So, since the tape drive worked so effortlessly under Linux I thought I'd see what Windows had to say... For testing purposes I have Windows 2000 on a Virtual Machine running under Linux... I started up the Windows 2000 VM and once it had finished booting I told it to attach the tape drive. Windows 2000 instantly says I attached a "HP Colorado 5GB USB Device." Great, that's precisely what I attached. So I run through the wizard and it says it found no drivers (Floppy, CD-ROM, Windows update, nothing). Fine, I downloaded the HP drivers from HP.com. It sees the drivers but indicates they are not for my drive. So after 30 minutes I concluded it won't allow me to use any of the drivers provided by HP. Almost certainly because none are specifically for a USB tape drive.

Why does Windows need a driver disk? It is a Travan tape drive. Windows knows it is a Travan tape drive. By definition, all Travan tape drives from any manufacturer are essentially identical. Linux has one driver for all Travan tape drives regardless of how they are attached. Further, Linux auto-detects and silently configures the device without the need for input from me.

What is the point of even having a USB IDE drive box on a Windows system if nearly every device you might want to attach is going require special drivers that don't exist? It seems to me like this negates the whole point of the external drive box.

Oh well, we'll see how things go once I have the tapes in question. Hopefully I can devise some way to read the data from them.

Labels: ,


Utopia Rocks

I have to say that the current state of Project Utopia is truly outstanding. I desperately hope that the current Project Utopia components make it into Fedora Core 3.

Project Utopia, for those in the dark, is an umbrella term for a collaborative project that aims to integrate the GNOME Desktop Environment with the Linux kernel's (and other kernels such as Solaris and BSD) ability to automatically manage user-oriented hardware.

  • I insert a blank CD-R and Blank CD-R Disc appears on my desktop with a CD-R icon. I'm able to open the Blank CD-R Disc, drag files into it, and then burn it to the blank CD-R.
  • Upon insertion of a DVD movie the DVD appears on my desktop with a DVD Movie icon and GNOME plays the movie full screen.
  • Upon insertion of the Compact Flash card from my digital camera into the computer's card slot the label of the flash card "Photographs" appears on my desktop with a compact flash icon.
  • If I attach a digital camera to my computer GNOME can automatically import photos from the camera into a photo album.
These are just the test cases, really. So much more is possible with Utopia. I can't wait until everything takes advantage of it fully.

Screenshot of Examples:



GNOME Menus and Start Here

Ideas (Vaporspeak?)

  1. Do away with start-here: (done?)
  2. Place launchers for applications: and favorites: in computer:
  3. Create a favorites menu applet similar to the menubar.
  4. Fix the bugs in the favorites: handler such as the broken trash can.
  5. If feasible, replace the "main menu" with an applet that can embed into a panel.
  6. Record all application launches in the run dialog MRU. (Everyone realizes they can drag launchers from the run dialog, right?)
  7. Create a MRU menu applet which generates itself from the run dialog MRU. This applet would look like the new main menu applet.
  8. Fedora's default "main menu" could then be a drawer with the main menu and mru applets embedded.
  9. For extra credit, modify drawers to support "text beside icon" (and fix them so they don't run off the edges of the screen), implement the favorites menu like the proposed mru and main menu applets, and this would replace both the menubar and main menu hacks with a normal drawer that embeds favorites menu, main menu, and mru menu.
Here is a favorites menu mockup. Surprise, it looks similar to the one that was removed a few years ago. And a menus and drawers mockup.


Once upon a time there was a favorites menu that displayed the favorites: location. You could drag an item from applications: into favorites: and it would appear on the favorites menu. It was nice and simple and worked. So someone removed it, if I recall, because we could edit the main menu directly. And then someone broke/disabled the ability to edit the main menu. So users started creating panel drawers and putting their launchers in the drawers. And then (in FC1) GNOME 2.4 drawers never worked. So finally nothing but the desktop worked. So, users were left dragging launchers to their desktops creating a giant mess. Sadly, I have dozens of application launchers on my desktop. So, now we need a way to get to the desktop quickly and thus was created a show/hide desktop action.

I would add that there's no apparent way to edit launcher from nautilus. Unless of course the user somehow knows to associate desktop items with gnome-desktop-item-edit. Shouldn't this be a property page?


The applications: location could be replaced with the "better application browser" we hear about from time to time. It would have to be really good, though. Something of the magnitude of difference between the old and new file selector. Replacing it with a slightly better version or making a change that requires every application to be patched to use it may be unwise.

The concept of start-here: seemed pretty sound. But it is so underused, unimplemented, unexplained, etc that keeping it would probably do harm to any improvements that might be made on it. The reflex action of throwing it away may have overcome any future usefulness. It is perceived as useless because, well, right now it is useless.

I hate MRU application menus (ala Windows XP). Hate. Hate. Hate. I think the run dialog makes a better MRU. Many people may love MRU menus. Great. Make it possible to turn off somewhere, somehow. The last thing I want is my main menus randomly changing around based on what it thinks I want to do. Or make it a separate applet unto itself.

I don't mind the main menu as it stands. It is massive and clunky and ugly. But it provides quick access to approximately everything that is installed if you know where to look.

Rather than try to convince people someone just needs to just do something and show how it could work. One wouldn't have to fix the existing main menu to create something useful. I think most of this could be implemented outside the existing mechanisms. At the least, I think having the favorites menu back would be great. So long as someone doesn't rip out the favorites: location while we're not looking.



DON'T PANIC: Fedora List Etiquette

You know, I'm not as hard core as some on the fedora list about mailing list etiquette. But when someone publicly corrects you for making a simple mistake you shouldn't freak out. The people who are most willing to help you will instantly put your name in their permanent ignore list. Cursing and blaming and yelling and such are just not acceptable in a public forum. Especially a list that gets up to a thousand messages per day.

In one such reply, the fellow just asked that the poster try not to break threading. It's the only way anyone can make sense of the shear volume of the list. He was simply trying to help the poster understand how to communicate with those most able to help. He could've said nothing and left the poster ignorant to the problem. Instead he stuck his neck out on the chopping block and made a suggestion to help the poster elicit more repsonses to his questions.

Do some very helpful list members appear to "dish out crap" at times? Absolutely. You may do the same after receiving 80,000 emails. Most of which have already been answered previously in the fedora list archives. Many threads could have been cut down to 2-3 replies instead of dozens had the poster taken care when composing his original request.

The responder of one thread was trying to explain that one concise question is the best way to get one concise answer. The poster's original message stated "some sort of error" and did not post the precise error message nor any details about where he saw this error. How could anyone intelligently answer such a question? The responder requested a clarification. This is reasonable. He could have been aggressive and request that the poster think through his questions more thoroughly before posting. Alas, he remained conservative and just asked for the text of the error message.

The poster claims that the entire ordeal of dealing with fedora list has made his day horrible. I submit that his cursing, name calling, and personal attacks has made everyone's day horrible.

A reasonable person might expect others to take just a few moments of their own, personal time to compose their requests for help in a form that can be answered in a minimum of replies. Time you don't spend composing a help request is time you are wasting for others. Most knowledgeable people refuse to waste their time on poorly formed help requests. There are others who need help and understand the value of good questions.

Seriously, Eric Raymond's How to Ask Questions the Smart Way is extremely helpful if you truly want good answers.

By the way, seriously, no one cares what operating system or distribution you use. This isn't some religion or penguin worshipping cult where we try to brainwash you into thinking we are perfect. Collectively, we don't care if 5 thousand or 5 billion people use the operating system distribution we prefer. This is just a bunch of people who use Fedora Core and either like to help others or need help themselves. We all realize that using a new operating system is a bit scary, confusing, and often frustrating. But demanding answers and threatening to abandon the distribution only gets you added to the ignore list of those who can help. It reinforces a notion that you have no real intention to make any effort to learn anything. And if you aren't willing to learn then please expect that no one is willing to teach.



SWISH-E Daily Builds

SWISH-E Daily Windows Builds are being made again. Sorry for letting them go for so long. I'm really glad to find that makensis now runs natively under Linux. WINE has had a number of little nagging problems under Fedora Core. Currently I can't seem to get the ttydrv (Windows GDI Graphical) driver to function; meaning I can't really schedule Windows applications to run in text-only mode from cron (UNIX system task scheduler).

I may start building daily Fedora RPMs for SWISH-E. I don't have a ton of disk space on my web host. However I would like to make daily builds available to get it out there for testing. That hinges on a few things such as getting the Fedora.us build system working on one of my computers. I have a spare machine I could put online just for doing automated builds. That may be ideal.

Also, I'd like to get stable releases of SWISH-E into Fedora Extras. That will be some serious work due to the Fedora.us packaging guidelines and the shear volume of Perl modules the SWISH-E helper scripts support/require. I think it is worth doing, though. There are a growing number of people using SWISH-E and I'd like to make their lives a bit easier if possible. Should I support Red Hat Linux 9? I really don't know how many people are using it compared to Fedora Core or Red Hat Enterprise.

Labels: , ,


eMoviX would be awesome for Home Movies and such. Why didn't I notice this before? K3B supports creating eMoviX CDs right in the "New Project" menu. This would be great for any situation where you don't want to talk friends/relatives through installing Windows CODECs. Insert CD/DVD, restart computer, watch videos. And it seems to work well with computers I'd never have expected to work.


- posted by Augur @ 22:15 [Permanent link]

Running makensis natively on Linux

NullSoft Scriptable Install System (NSIS) allows programmers to easily build automated installation programs for Windows. Many Windows programs use NSIS to install themselves.

If you cross-compile your Windows executables from a Linux host then you may be interested in running makensis natively. For a long time I ran the Windows makensis under WINE. However WINE is a bit cumbersome to run from a cron job because it normally requires X (the graphical display subsystem used on UNIX Systems).

Today I noticed that makensis will now mostly compile natively on POSIX compliant operating systems (such as Linux). By mostly I mean that some components require a Windows compiler (such as MinGW) even though the main executable builds natively under Linux.

What you need:

  • WINE installed and working.
  • MinGW installed as a cross compiler.
  • GCC installed as a native Linux compiler.
  • The latest CVS version of NSIS
    cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nsis login
    # There is no password, just press enter.
    cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nsis co NSIS

How to do it:

  1. cd NSIS
  2. create a shell script named Source/exehead/bin2h
  3. chmod a+x Source/exehead/bin2h
  4. cd Source/exehead
  5. cross-make
  6. cd ..
  7. make makensis
  8. cd ..
  9. cp -a . /usr/local/lib/makensis
  10. rm -Rf /usr/local/lib/makensis/Source
  11. create a shell script named /usr/local/bin/makensis to run your native version.
  12. chmod a+x /usr/local/bin/makensis

Now you can run makensis natively on Linux...

$ makensis

MakeNSIS v2.01 - Copyright 1999-2004 Nullsoft, Inc.

You may download my native NSIS build for Linux made on 2004-07-08 under Fedora Core 2.