Blog

  • Why Linux Won't Rule The Desktop Any Time Soon (1 of 2)

    tux.jpgBefore the hate mail roles in, let me say that I’m a huge advocate of open standards and general use of F/OSS. I love Linux and use it almost exclusively for all my server side applications. I’ve used Linux on desktop systems for many years, have developed with it, had jobs supporting it, built custom distributions with it, and hacked on more systems than I can remember. All this, but I still switched to OS X for desktop use several years ago and the thought of switching back makes me nauseated. This is not meant to be a criticism of any single distribution or technology, but why the culture around Linux will not yield a massive exodus of “typical” Windows users any time soon.

    It’s 2007, and decries have been made many times over the last 15 years that “Linux Is Ready For The Desktop”. Well, it’s 2007, and no, it’s not ready for the desktop; at least not for the masses. The people which tend to run desktop Linux systems these days satisfy two of these three criteria:

    1. Have more time than money.
    2. Are looking to run server processes.
    3. Have a natural competency for all things technical and enjoy fixing things.

    If you fit two of these categories there’s a good chance I’d recommend Linux, and I’ll be the first to help with the installation. But since the common user is not looking to run a web server on their desktop, and surely not a 12-hour non-stop let’s-fix-all-my-device-drivers session, I don’t recommend it often to non-geeks. I’ve given presentations to businesses on why they should migrate their old Windows servers to Linux, but have not once recommended my parents do so on their old home machine.

    Why? Two things: usability and support. Today we’ll tackle the first half.

    Usability

    Many interfaces are built purely for function, not usability.

    As a culture of programmers, it’s somewhat expected that we’re producing interfaces with obtuse options, confusing layouts and poorly worded text. Would you like to “Set the SCSI IMMED flag“, or perhaps some “ISO9660 options“? Sure, why not.

    Lot’s of tiny parts make for a horrible user experience.

    The Unix principle that the system be compromised of many small pieces of functionality assembled into a larger system may work at the system level, but not for everyday desktop applications. Obscure or horribly named products makes users more confused.

    Linux users love reconfiguration/options far more than ordinary users.

    As a result, many distributions ship with redundant tools, and if not, someone on the other half of the planet creates another distribution with slightly different packages. While the freedom to do so is priceless, the practical value of many spin-off distributions is next to zilch. We, the community of F/OSS advocates, need to more heavily emphasize convention over configuration and use forking only if absolutely necessary.

    The entire experience is not consistent and fluid.

    Without a single vendor driving development of the * major * desktop * applications, integration between all the pieces just isn’t happening well. Forcing the user to go through installation of optional packages and perform technical manual configuration is a major turn off.

    Some “frond-end” applications just scrape the output of the command-line version.

    This is a horribly error prone way to integrate with a lower-level piece of software since there isn’t a static way of finding issues. Please stop doing this. It makes things break across upgrades, and just adds more weight to the “just wipe the disk and start from scratch” camp (which I happen to be part of).

    Let the flames begin, and don’t foget to stick around for part 2!

  • Fixing "wrong number of arguments" Error w/Rails 1.2.3 Upgrade

    If you’ve just upgraded your Rails gem from 1.2.2 to 1.2.3 and are getting the following error on database hits..
    wrong number of arguments (1 for 0)
    /opt/local/lib/ruby/gems/1.8/gems/activerecord-1.15.2/lib/active_record/vendor/mysql.rb:566:in `initialize’

    ..note that updating RAILS_GEM_VERSION in environment.rb appears to be required. Running a 1.2.2 application on 1.2.3 (even when 1.2.2 and all dependencies installed) will yield this error. Whatever.

  • For Geeks w/Allergies: The Air Purifier To Buy

    I am deathly allergic to the blooms of the Sweet Acacia tree, which happens to be a popular choice of landscapers in Phoenix. I can physical sense the presence of Sweet Acacia from a good 20 meters, and the mere thought gives me a Pavlovian response. The blooms are my kryptonite.

    My allergies hit so hard this year that I decided to invest in a quality air purification unit. I’ve had several inexpensive HEPA-type units over the years, but none that have made a significant difference to my nose. I am very attracted to the filterless design of the Sharper Image Ionic Breeze, but various accounts show that not enough air moves through it, and it’s measured effectiveness at removing allergens is comparatively small. The nicest, hospital-quality units still use filters, so you’re likely to have to live with paying for filter replacements if you want a nicer air cleaner.

    I purchased the Friedrich C-90B (click for picture). It’s a combination of a powerful fan, reusable pre-filter, replaceable activated carbon filter, and a large washable ionizing section. While not cheap (mine was $425 USD here, though the price has since increased), it moves a significant amount of air for a household model, does both electrostatic precipitation and conventional filtering, and produces relatively little ozone. It’s also large, hideously ugly and must be placed unobstructed on both ends for optimal air flow, but I’m more than willing to pay that price to be able to breath again. Now why the heck didn’t I buy a decent model years ago? If you have bad allergies, seriously consider ordering one. I’ve found it well worth it.

  • Shell Magic: Globally Find/Replace Text Using RegExps Within Many Files

    Here’s one of my favorite Perl-based one-liners which I whip out when I need to find a bunch of files and replace text based on regular expressions at the command line.

    find . -iname ‘*.js’ -exec perl -pi.bak -e ‘s/2006/2007/g’ {} \;

    This example first finds all JavaScript files (using a case-insensitive file extension) in the current directory. Each file is then parsed. If the string “2006” is found within the file, it is backed up to a file of the same name with a “.bak” extension, after which all occurances of “2006” are replaced with “2007”. w00t!

  • Convince Your Manager You Need A Wiki

    self-portrait-poster-2.pngSometimes the pointy-haired manager just doesn’t “get” the wiki concept. Here’s something to email him/her..

    The business benefit of a wiki is two-fold. First, project members and team have a single, common platform for managing documents which is easy to reference (in email, IMs etc), cross-platform, accessible, and perhaps most importantly, searchable. Second, it gives the business instant transparency into project state. By standardizing on a wiki as a place for status reports, minutes, project plans, design documents etc., both business and development has a shared, direct place to go for information, reducing expensive request/response cycles incurred when the business requests information.

  • Please Stop Saying "Google Simple"

    It should be generally assumed that designs should be as simple as possible. So if you’re working directly with a competent designer, you need not say so. If your designer does not hold this as a core working principle, get a new one.

    Client: “We’d like you to design a next-generation car dashboard for our new line of luxury vehicles. The car will feature all the latest gizmos: GPS, iPod integration, satellite radio, automatic environmental controls, you name it. And the interface needs to be simple. Google simple.”

    Me: “Ok.. here’s what we’ll do. We’ll remove the wheel, pedals, and all conventional buttons and displays. Instead, we’ll mount an LCD to the dash, and display a single text input box. Voice recognition will fill in this box for the driver, and when (s)he says “Search”, the car computer will return the first 5 million commands (s)he most likely meant. The driver can then touch the command which they meant and have it execute. Alternatively, the driver can say “I’m feeling lucky!” to have the car automatically execute the most likely desired command, such as “Turn right”, or “OMG STOP NOW BEFORE WE DRIVE OFF THAT CLIFF!!!” If the driver survives long enough, they’ll get to enjoy the lumbar support and tunes from their iPod.”

    Client: “…”

    Me: “We can call it ‘Sue-gle’.”

  • Why Outlook Sucks: Part 2 of 900,000

    Note: Yes, this is still on an older version of Outlook because that’s what I’ve had to use. Please feel free to contribute to this series in your own blog via trackback/ping, and I’ll post links en mass to the front page when I get enough!

    Let’s delete a folder to which messages are directed via a rule.

    error.jpg

    Outlook does some dependency checking and found that deleting the folder will hork a rule. Good. Unfortunately we get a disgruntled little dialog box entitled “Rules in Error”. (Shouldn’t this be “Error in Rule”?) The use of a table I surmise would be to support display of a laundry list of errors, but since there’s only one in this case and the table won’t wrap the error text, we get to scroll all the way over to the right. Not that it really matters, because I don’t have a choice on how to proceed. The “Close” button gives me no indication as to what will happen when I click it.

    I never have this issue in Mail.app, because when I delete a folder related to a rule, the rule automatically becomes disabled and folder reference unselected. Here’s what a simple rule looks like after you delete a folder to which it directs email.

    rule.png

    No annoying dialog, and I can easily rewire the rule since it wasn’t deleted. Also, if I create a new folder with the same name, the folder automatically gets wired into the old rule. Makes sense!

  • Advice For The Telecommuter

    If your laptop has a fan on the bottom, don’t use it when you’re naked.

    Update: Stop looking at me like that. It’s never happened. Honest. 🙂

  • Why Outlook Sucks: Part 1 of 900,000

    Let’s find an email from Toni regarding her party next weekend. There appears to be a search box in the toolbar.
    full.jpg
    Wait.. that seems to be only for contacts. Nevermind.

    menu.jpg

    There’s a find button to the left which brings up a toolbar, but it appears to search only the Inbox. Unfortunately I have a bazillion folders and rules and have no idea where the message is located, so I’ll go over to the “Options” menu (of all places) and start an “Advanced Find”.

    advanced2.jpg
    Uh.. ok. I have no idea why I need “More Choices” or “Advanced”, and apparently I’m still searching only the Inbox. Let’s “Browse”..

    select.jpg

    Now that we’ve systematically selected every possible place the email could be–which could apparently be in my Calendar or Contacts–we can click OK and go back to the “Advanced Find” dialog and click ‘From..’

    sub.jpg

    Great.. the engineers decided to reuse the same old contact finder dialog. There are a lot of people with a ‘Toni’ in their name, so we’d better embark on a separate sub-find quest to identify the correct contact record. Make sure you click ‘Find Now’ and not ‘New Search’ when you’re done.

    res.jpg

    When we come back from a coffee break, we see Outlook proudly presenting a result set, sorted by date, most recent first. That’d be great, except that if I’d received it recently, I probably wouldn’t need to use an ‘Advanced Find’ to locate it, would I? The results are also displayed within the dialog for some reason instead of the main window, so I guess I’ll have to keep this up on my second LCD, which I’ll now repurpose as the “Dedicated Advanced Search Dialog Monitor”. Whatever.

    Just for shiggles, let find an email in Apple’s Mail.app.
    picture-1.jpg
    Holy freaking crap. I typed in ‘toni party’, and it gave me emails from Toni about her party, sorted by likely relevance. It was immediately clear how to search and the results took less than a second to display, despite the fact the PC is apparently faster spec-wise and I have magnitudes more email on my MacBook Pro. Huh.

    Update: Part 2 of 900,000