Rails on GoDaddy

I decided to play with Ruby on Rails a little more and was just reminded of the painful process to get Rails working at GoDaddy.

First, you can have Java or Rails, but not both. But as I posted earlier, Java is near useless at GoDaddy anyway.

So, the key steps to getting your Ruby on Rails app deployed at GoDaddy are:

Setup at GoDaddy:
1. Log in to the GoDaddy Hosting Control Center
2. Make sure Java is disabled (under Language Options). If it is enabled, you can't deploy a Rails application. Change the setting to none (and you'll need to wait 24 hours for your site(s) to be moved to a new server).
3. Log into the CGI control panel and create a Rails application directory.
4. Create a symbolic link to your newly created rails directory.

Local Edits:
1. Freeze your gems: `rake rails:freeze:gems`
2. Edit your dispatch.* files to reference #!/usr/local/bin/ruby

Upload:
1. Upload your rails application to the rails directory.
2. Chmod the dispatch.* files to 755 (in FileZilla, right click and select File Attributes).
3. Wait. GoDaddy won't recognized new .htaccess files for about an hour, so go do something else and come back later.

Test:
1. Test your app. Hopefully it works. If not, good luck. A couple things you can try:
1a. Enable your Error Log in the hosting control panel, wait an hour, try again and view your log file in the CGI control panel.
1b. Download the /log/production.log log file.
2. Change to FastCGI. Update your .htaccess file and change the dispatch.cgi reference to dispatch.fcgi.

I omitted the DB setup. You'll need to create a database using the control panel and update your database.yml file with the appropriate information.

It isn't great, but if you already have GoDaddy hosting, it is workable.

Web Development Tools

Regardless of what language you use to build your web applications, there are a couple common tenants and tools that I feel are useful.

First, I strongly believe in the idea of permanent URLs. I agree with pretty much everything this W3C article says. All your URLs should be permanent, obvious, and technology agnostic. While this isn't strictly a tool, I think it is important for everyone building public websites to at least consider and realize the trade-offs they are making by breaking these guidelines.

Firefox. Yes, you should also test in IE, Safari, etc. but Firefox is a great tool for your primary development. It provides great information out of the box. Plus, there is a great set of plugins that are very useful:

Web Developer - It provides great introspection information, and on the fly CSS editing. The list goes on. This is a must have.

FireBug - A true JavaScript debugger. Breakpoints, watches, etc.

YSlow - A Yahoo add on to FireBug that provides insight on how to improve your page load time.

Live HTTP Headers - Watch the HTTP Header information exchanged between the browser and web server.

Extended Statusbar - Displays information about how fast a page loads and how big it is. I've found this one interesting but not critically useful. Anyone have a better suggestion?

ColorZilla - Allows you to grab color information from images/pages.

Does anyone have any other must have tools?

Thanks LifeHacker

For the second time iTunes Export has been featured on LifeHacker. The first story drove a bit of traffic this second (and more in-depth) mention drove about 60% of my normal monthly page view traffic in a single day.

In fact, when I first looked at the traffic graph I was pretty sure something was wrong because the spike yesterday made the entire rest of the month look like it had no traffic! It was only after I looked at the referrer traffic that I saw the LifeHacker post.

The LifeHacker article also has about 1000 digs at this point, so it will probably drive some incremental traffic for a while.

Anyway, thanks LifeHacker for the mention, and I'm glad that people continue to find the tool useful. I guess it is time to get another release out.

Beckham Arrives

ESPN certainly made a spectacle of Beckham's first game. They started with the MLS AllStar game against Celtic FC where they had Beckham as the half time guest and talked quite a bit about his arrival.

Then, on Saturday, they had the friendly game between the L.A. Galaxy and Chelsea. Beckham is just coming off of an ankle injury would not have played at all if it were not for the hype that was built up around the event. As it was, he just stepped on the field for about 10 minutes and was fairly obviously still hurting.

As a soccer fan, I'm excited to see Beckham and the attention that he brings to soccer. I'm not sure why it was neccessary to interview the Governator and Jennifer Love Hewett during the game though. It was certainly a smart move to have him play in L.A. Still, I'm curios to see how many celebrities show up for his 10th game in the league, let along is 30th.

Whether the excitement is permanent or not, this season the LA Galaxy are selling out games in just about every city they play in, while carrying one of the worst records in the league. If Beckham can make them successful (or just better), and if they can drive enough ticket sales, maybe the MLS will have enough money to sign more high profile players and continue to build attendance and revenue.

However, I find the excitement and spectacle of his arrival amusing. While this certainly isn't the same thing, I recall the attention that Freddy Adu brought to soccer when he started in the MLS (at the age of 14). At the time, I didn't really understand the fascination. While Freddy is a great player, the mass sports media seemed to make him the second coming. While Beckham is a much more established player, the level of expectation around him is absurd. While I hope it isn't the case, my guess is that the attention paid to Beckham will fade away just like Freddy's attention. Hopefully I'm wrong.

New Phone - Final Decision

So I've been waffling on what phone to buy for a while, and it is time to make a decision. I'm looking for a PDA/SmartPhone, so the major players are Treo 755 (Palm/Sprint), Treo 750 (WM/AT&T), Treo 700wx (WM/Sprint), Mogul (WM/Sprint), and the iPhone.

I have a Sprint Treo 650 now, which I've been very happy with.

I've had some hands on time with the iPhone, and I have to admit it is the best web browsing experience I've ever had on a phone. The zoom and scrolling is great, even if the network is S L O W (if you are not on WI-FI). However, I'm just not sold at this point. The lack of 3rd party apps, the ability to tether (use it as a modem for your laptop), and the weak syncing (no Notes, TODO) are not enough. The media features seem cool, but I'm just not the target audience for that. So while my next phone may very well be an iPhone, this one won't be.

So, that leaves a couple decisions, Palm or WM. Sprint or other.

If I stay with Palm OS, the obvious choice is the Treo 755 with Sprint. Compared to my Treo 650, it offers more memory (64 ->128), the same 320x320 screen, same processor, similar size, although the external antenna is gone, a little lighter, and a much better camera (.3 MP -> 1.3 MP). It also speeds up connectivity with EVDO (Rev 0 though, not Rev A) instead of 1xRTT. All in all, it is a pretty straight forward upgrade with very little real pop. You would certainly expect more changes for the 2.5+ years I've had the Treo 650.

I found this comparison to be very useful for comparing the current Treo models.

If I go WM, the question is really between the Mogul (Sprint), and the 750 (AT&T), or the old school 700WX.

The 700wx really appears to be the 755p with Windows Mobile and an external antenna. Same memory, smaller screen (240x240 instead of 320x320). Not really compelling.

The 750 very much appears to be identical to the 755 hardware, again with the smaller screen (is this a Windows Mobile limitation?).

The Mogul is at least interesting. It has Windows Mobile 6 (all the Treos have 5, although the 750 is upgradeable). 240x320 screen, 2.0 MP camera, Built in WIFI, and its dimensions appear to be smaller than the Treos ( 4.3" x 2.3" x 0.7" vs. 4.4" x 2.3" x .84" (755p)). It also provide EVDO Rev A (upgradeable at least), which allows voice and data access simultaneously. I had some quick hands on experience at my local Sprint store (they didn't have them stocked but one of the Sprint Employees had on). My first impressions were how less 'tuned' the OS was for quick (one handed) usability. For example, dialing contacts... on the Treo you can type the first letter of the first name and first letter of the last name (eg. ed -> Eric Daugherty) to pull up a contact quickly. WM does not work this way (out of the box at least). Other simple navigation issues seemed a little clunky, although the scroll wheel did seem to be the key for easy one handed navigation (a huge plus in my book). I've also read about some issues with the Bluetooth stack in the Mogul, although I would hope that could get cleaned up with a software update.

From a pure hardware perspective, it appears the Mogul is the best bet. So the question boils down to this, do I want to stick with Palm (an OS on its last legs, soon(?) to be replaced by a Linux version), or make the move to Windows Mobile.

The answer? I don't find any of these phones to be compelling enough to buy and lock myself into a contract for. I think the iPhone has real potential to be interesting, and I really was impressed at how useful the browser was (for everything expect speed). If Apple opens it up to real third party apps, and releases a 3G version I want to be free to jump on board. For now, I'll take the money and buy a Bluetooth GPS receiver or something that I'll be able to use on my next phone as well.

CUPS Purchased by Apple

An interesting story came out recently that Apple has 'purchased' CUPS.org. Since CUPS is an Open Source project, this may seem slightly surprising.

It appears that Apple has hired the primary developer and he has reassigned the copyright for the code to Apple.

From the commentary I've read, it appears that this is a purely defensive move by Apple to prohibit CUPS from moving to the GPLv3 license (it is GPLv2 now). Apple uses CUPS in OS X to configure print sharing. There are some significant changes in GPLv3 regarding treatment of patents, and as I commented in my previous post, this is causing headaches for several companies. I have not dug into all the implications of GPLv3 yet, but this is a space to watch.

Microsoft and Novell and Software Pattents

So I've personally sworn off of Software Patents. The stated goal of a patent system is to foster innovation. The concept being that if a person or entity can be guaranteed a limited monopoly on their innovations, they are more likely to invest the time/money to innovate.

I get this, and I think it makes sense, or at least it does for certain markets. However, the online world is one where interoperability is key. In fact, the major feature of the internet is a common set of standards that are used to communicate between different operating systems, clients, and tools. One reason we can't 'fix' email SPAM is that the world has agreed on a standard (SMTP) and implemented it over and over again. HTTP, FTP, etc. These have been around forever, have been implemented tons of times, and these open and agreed upon standards have enabled the amazing growth we've seen.

I had a recent discussion with a friend familiar with Samba and SMB/CIFS. While I am not an expert on the topic, the general goal of Samba appears to be to facilitate the ability for Open Source software to be able to interoperate with windows clients and servers by reverse engineering the client and server code written by Microsoft. This is a classic example of an effort that may violate Microsoft's Software Patents, but provides greater interoperability for people who want (or need to) to run mixed environments. It also allows them to avoid paying licensing fees to Microsoft.

While I will conceded that based on our current laws and regulations, the Samba folks may be violating Microsoft's Software Patents, I would vigorously argue that the system is wrong. There is no real need to have these patents, and the goal of protecting innovation is simply not a valuable return for the immense costs necessary to maintain and enforce them.

What I find more than slightly amusing is the current situation Microsoft faces regarding Software Patents. As the Cory Doctrow's post explains (certainly not a Microsoft fan, so take it for what it is worth), and the underlying Groklaw post explains, the changes for the GPL 3 license and Microsoft's previous dealings with Novell may have put Microsoft in a position where they now must license their Software Patents to all Linux users. Now, this is very much NOT an open and shut case, but the fact that no one is really confident about the situation is a concern by itself.

While I do find this amusing, I actually sympathize for Microsoft and see this as yet another example of the absurdity of the system we are now in. If Microsoft, with its cadre of lawyers can be trapped in a situation like this, than how can Joe on the street have any hope of leveraging this system to protect his innovation? How can anyone claim this system is helpful to anyone but the massive players (IBM, Microsoft, etc), and that simply isn't what America is (should be?) about.

Now, there is a big difference between a software patent and copyright. I firmly support the existing copyright law. It should not be legal to steal, or decompile and reuse, software that is not explicitly licensed to allow that.

Why people love Google and mistrust Microsoft

A friend of mine asked me this weekend why people have such different opinions of Microsoft and Google. After all, both are near monopolies, and both have a lot of information about YOU.

It is a good question to examine, and while Google has received some criticisms, the overall attitude towards them seems to be much more positive than Microsoft.

While I'm sure there are a lot of reasons that can be cited, I personally find two very compelling reasons:

1. Most people don't pay Google any money.
2. Google is pretty open with integration and reuse, Microsoft is (somewhat) aggressively closed.

1.
Google makes a lot of money, but it primarily comes from advertisers. The general public as a whole simply receives a 'free' service from Google. Search, Email, Maps (web and 3D), RSS Readers, Document and Spreadsheet applications, etc. The list goes on. All 'free'. It's hard to get too uptight about someone who is providing you a 'free' service. (Yes, 'free' is in parenthesis. You 'pay' by viewing and clicking on ads, but most people are already used to that, and they are pretty unobtrusive).

In fact, in addition to being 'free', Google actually pays people. It is very easy to setup AdWords advertisements on a website (I should know, check out my opens source pages). While the revenue may not be competitive with targeted web advertising, for 15 minutes of effort you can at least make back your hosting charges.

Contrast this with Microsoft. You must pay for (nearly) all of its software. And it forces you to download software to verify that you've actually paid for it. Even if you have paid for it, Microsoft may still refuse to update your machine (As many as 20% false positives? Even if it is 1/2 that, that is a major pain).

2.
Google is pretty open about people leveraging, reusing, integrating, and extending their services. Even some things that are pretty blatantly misusing their services (GMail Drive) are tolerated. Let alone all the Mashups that exist for Google Maps, facilitated by their open API that is free for up to 50,000 requests per day per. You can embed Google search into your site, etc.

If you are a developer, you can use the web framework (GWT) Google developed for its web applications for free. They also release several other open source tools, such as Guice, which I blogged about before. The list goes on...

Now, you can certainly claim that I'm not being fair to Microsoft here. They do have some open source release, and their Live Search Virtual Earth has an API too right? Sure. They even offer a free version of Visual Studio, which of course was a topic of a previous post. The problem is, Microsoft is just playing a different game.

Microsoft makes money from licenses. When you enable features in the free version of Visual Studio, they see that (rightly?) as an attack on their revenue. When you reverse-engineer their file sharing protocols, or file formats, you are attacking their revenue. I understand their point, but that doesn't change people's perceptions.

When you do nearly anything with Google, you are driving more eyeballs to their service offerings. To Google, eyeballs = revenue. To Microsoft, too much of what people want to do is seen as an attack that they must defend against. So while Google is out there encouraging people to do just about anything, Microsoft is playing defense. It isn't hard to understand how that results in the current perceptions.

How does Microsoft fix this? Well, that'll have to be the topic of a future post.

Google moves (further) into the Enterprise

Google announced their acquisition of Postini today. I won't rehash the deal here, but I thought