My Blog Is Moving

This will be the last post on WordPress.com. I’m moving my blog to my TextDrive account. The new URL for the blog is http://ascarter.net/blog. Feedburner links should still work.

When Open Source Is Bad

I run Ubuntu Linux on my machine at work. If I need to create a spreadsheet or word document, I either need to use OpenOffice.org or remote desktop into a Windows machine. Both options are not appealing.

In many cases, open source projects are better than their commercial equivalent. But not always. There are examples in which the result is pointless. OpenOffice.org is the perfect example. Other than being free, it is a useless piece of software. It does absolutely nothing better than Microsoft Office. The advantage is it can run on many platforms and it doesn’t cost any money. But the UI is just as convoluted and inane as Microsoft Office. I swear it practically duplicates Office bugs. No attempt is made to make a better software package. The preference system is more difficult. Document editing is very similar to Word but not quite the same. Chart data can’t be edited without creating a new chart. Since no attempt has been made to come up with their own approach, being a 90% copy makes it a failure.

Evolution is another example. It may be the only software application that is actually worse than Outlook. It is a cheap copy. The vaunted Evolution Exchange Connector is incredibly unreliable. I’ve given up doing anything other than browsing mail read-only. I get quota errors when I haven’t exceeded a quota. Sent mail disappears never to be delivered. I hang on the inbox scrolling through messages.

Why? Are there that many people out there that demand totally free software over any sense of usability? If the clones actually worked, it might make some sense. However, my experience is that both programs run poorly. I have a standard Ubuntu install. I use the ubuntu tested versions of OO and Evolution. Both apps lock up, crash, and are unresponsive. It doesn’t take long to feel like I’m back in Windows with that kind of behavior.

“Edit the source and fix it” right? Well, that’s fine if we are talking about a few bugs. But OO and Evolution are so fundamentally broken, they should be abandoned and never looked upon again. Look at Firefox and Thunderbird as examples. Both perform functions similar to commercial software, yet have their own way. Firefox has dramatically improved the browsing experience. New UI ideas are direct results of Firefox. Thunderbird isn’t as polished but is very different than Outlook. Both work with standards. Both at least attempt to create a UI that isn’t dictated by Microsoft’s previous applications.

In the commercial software space, look at something like Apple’s iWork. It is document editing and presentations rebuilt from the ground up. Pages feels nothing like Word. Keynote is much more streamlined than PowerPoint. Yet both produce compatible files and solve the same needs. Why can’t software like OpenOffice.org take this kind of approach instead?

There are examples where open source isn’t a clone of something else. Firefox and Eclipse are good examples. Gnome is starting to go that way. But too many projects are nothing more than clones. OO, Evolution, and KDE all feel like rejected Microsoft alphas. Open source has no commercial restrictions, no focus groups, no marketing garbage. It should be about solving problems as efficiently as possible. Open source server software is like that. Linux is like that. I wish more of the desktop applications were like that.

Sun Makes a Portable Computer

This is the coolest portable computer ever.

Sun Blackbox

I mean, portable data center. I love it. I’m sure we could use one at Jobster

Two Days and Counting

Only two days to go until the return of the best show on TV: Battlestar Galactica. I just picked up Season 2.5 on DVD and have been watching them as a run up to the season premiere. The ending to last season was very risky. I have some doubts on whether they can pull it off. But thanks to a great trailer for season 3, I can’t wait for it to start. Now if they only would broadcast it in HD…

The REST Way

Part of my job lately has been to look at how our service is architected. We have a mix of Java and Rails applications but these are not exactly what people call web services. We know we want to turn more of our functions into services but in what way?

I had heard of REST but honestly didn’t know that much about it. I had a tiny bit of exposure to SOAP and had heard more than a few war stories about how heavy it is (whatever that means). Enter REST (Representational State Transfer). I knew Amazon Web Services used REST and was generally popular with developers. I expected I would be learning a new protocol. I was wrong.

REST is more of a design pattern. It uses existing capabilities, particular HTTP verbs. It maps CRUD (Create/Read/Update/Delete) to HTTP POST/GET/PUT/DELETE. It also strongly maps to using resources instead of RPC style calls.

Example:

RPC style


http://webservice.example.com/store/getCustomer?id=1

REST style


http://webservice.example.com/store/customer/1

It may not seem like much but once your entire API looks like the second case, it is a big deal. The hard part was accepting this thought process. You must think more carefully how you expose new functionality. Violating the REST principles in just one place sort of makes all that work worthless.

So after spending about 3 weeks getting the REST religion, we have a couple new internal services to show for it. I feel like an evangelist as I try to get our other developers on board. REST brings out some of that same giddy developer irrationality. But I think that this approach makes sense and we’re seeing it in action.

Being the pessimist that I am, I now want to know why REST is wrong. Nothing is free and I’m sure there is a bunch of gotchas waiting with this as well.

United 93

This past weekend, I watched the film United 93. I debated whether I wanted to watch this movie or not. I intentionally have avoided shows and movies about 9/11. Networks like CNN and Fox News have made a living off sensationalization, fear, and unethical reporting. Hollywood doesn’t seem like it would be much better. But I had heard that this movie was different. So I watched it.

It was amazing. The approach is a near real-time look at what happend to flight 93 from both the perspective of the passengers and the air traffic controllers. Watching this movie feels unlike anything else I’ve seen. So much of it is showing what is routine to anyone who has ever been in an airport. Knowing what is going to happen gives you this feeling of dread the entire movie. The most appropriate word is heartbreaking.

Watching the movie, you realize that everyone was trying to do their job. You feel both anger and sympathy as the aircraft controllers fail to make sense of an unimaginable situation. Given that many of the actual air traffic controllers appeared in the film, I have to believe that it is accurate. It is shocking to see both the military and ATC be rendered powerless. They do not realize the plane hit the World Trade Center until they see it on TV. All these people had information that might have reduced the damage done. But no one could communicate with each other. If not for the courage of the passengers on United 93, the White House would have been hit.

Along with the film is a one hour documentary on 5 or 6 of the families of the victims portrayed in the film. It was surprisingly effective in putting context on the movie and how it was made. It actually made me feel better about watching the movie knowing that the families were heavily involved and that they approved it.

I’m not sure what role a film like this should play. It does not give us justification for what happened. It does nothing to give us confidence in our leadership. I suppose it provides some comfort in the testament of the human spirit when faced with certain defeat. If anything, it should serve as a snapshot of what happened that terrible day.

JRuby, Java, and Sun

Charles Oliver Nutter is one of the key people working on JRuby. He announced that he has been hired by Sun to work on JRuby fulltime. I think this is fantastic news. I’m very intrigued by the possibilities of creating harmony between Ruby and Java. We use a healthy mix of J2EE and Ruby on Rails at Jobster. So far, we haven’t had the need to cross boundaries between Ruby and Java but I can see that in our future.

Beyond the vote of confidence in JRuby, I think this is a good move for Sun. One of the best features about the Microsoft .Net platform is the language independence. Sun putting this into Java 6 is an “about time” move. It is a good evolution of the JVM. I think it also shows that Sun is both serious about the scripting interface and scared to death of Ruby on Rails eating into J2EE. I know I would be if I were them.

iTunes and the Living Room

Apple rolled out new iPods and a movie store today. These are nice and are an incremental step. I was hoping for widescreen iPod (so I can ditch my PSP) and HD resolutions. No on both of those. The thing that has me most interested is the iTV device. It’s the extension I’ve been wanting for some time. I use a Core Solo Mac Mini right now but it frankly isn’t a good fit for the living room. Initially, I think the iTV will be very close to what I want. The form factor is right. The streaming of content I may already have in iTunes is good. The price is a bit high for what it will do. Is TV about to fundamentally change? I like the idea of real on-demand TV – download it instead of scheduling a TV to record it when the TV gods decide I can watch it. As much as I love the Apple service though, I am uncomfortable with having a single source. The day must be coming where distribution will open up.

Decline of WWDC

This year was my first WWDC. I don’t have the history that Matt Neuberg has with the event. But his blog post captured the event exactly. The content in the sessions was great. The experience was not.

Readable Path for Terminal

When working in terminal, I’d like my prompt to look like:


[user@host:.../cocoa/apple/examples]$

I like to know a couple levels above where I am without it taking over the entire screen width. This function will let you show the last 3 levels or the whole path if less. It also shows ~ for your home path. Here is the code to get this to work in your .profile/.bashrc/whatever:


# Prompt that replace console title and uses breadcrumbs
export PS1='\[\e]2;\u@\H \w\a\][\u@\h:`breadcrumbs "$PWD" 3`]\$ '

# Function that returns the last n path components of the specified path after
# replacing $HOME with ~.  Call like:
#     breadcrumbs path n
function breadcrumbs
{
    echo $1 | sed "s|^$HOME|~|" | awk -v n=$2 '{
        # Split the path into components
        count = split($0, components, "/");

        # If there are less than n components, just print the whole path
        if (count <= n) {
            print $0
        } else {
            # Else print the last n components
            if (count > n) {
            	printf ".../"
            }

            for (i = count - n + 1; i < count; i++) {
                printf "%s/", components[i]
            }

            printf "%s", components[i]
        }
    }'
}