Tuesday, December 19, 2006

The Man Who Sold The World

Was Thomas Edison the world's first patent troll, or at least the most famous? Fortune's Business Innovation Insider displays a list of the "nine things Edison never actually invented." In case you were wondering, yes, Edison did sue rivals to enforce his patents.
Just for fun, compare the lives of Edison and his great rival Nikola Tesla. Edison was everything that Tesla was not. In particular, financially successful. However Tesla really was a great inventor. Without Tesla's polyphase alternating current power distribution technology, the world would not have developed the widespread use of electric power.
Which is not to say that Edison did not contribute anything...but his contributions were more developmental than inventive in nature.

Patently Absurd

Paul Kedrosky comments on the latest travesty in the abusive system that we use here in the US for "protecting" intellectual property related to computer software.
As someone who gets paid by creating IP, I am supposed to support the US patent system, right? But I cannot help but think, what if the attitude of the early innovators in software had been like that of the current industry? How would have kids like me grown up hacking the Apple ][ using the published source code of its ROM? How would the Mac or Windows been created without mimicking the various OSes that went before it? How would innovation have occurred at all, let alone at the pace at which we have grown?
I look at my career, and it only exists thanks to standing on the shoulders of the giants. Where will we tell the next generation of dead programmers to stand? If we do not cultivate the minds and collective knowledge of our industry, the future programmers may be standing in an unemployment line.
Patents are intended to protect the public good, not merely to enrich individuals. If we do not reform the patent system for software, and quickly, we run the risk of massive consolidation in intellectual capital. Without the entrepreneurism and sharing of ideas that have made the software industry an engine of economic growth, the future of the US will be much poorer as a result.

Thursday, December 14, 2006

Merb Is The Word

I have been playing around with Merb, which is a very cool project from Ezra Zygmuntowicz. Merb combines the Mongrel web server with a lightweight Ruby web framework. It has way less stuff in it than Rails, but is somewhat more than Camping.
Where this all started, was that I was looking for some way to use Mongrel to create a new REST web service for a client. This service has no UI, and basically just needs to front end a Ruby DSL that I have been working on. Another need was that I had to have something that can easily handle multithreading. Rails will block on a single thread, and also I do not need all of the Rails AJAXy goodness. So Rails seemed like a bit too much, and Camping not quite enough.
It was at this point that I discovered Merb. Merb handles threading very simply, by dispatching each new request to a new controller created on a new thread. It also has a very clean and simple support for rendering of HTML, JavaScript, and XML views. In my case, I only really cared about returning XML, so Merb seemed ideal for my needs on this project.
Starting a new Merb project requires some hand copying of files. There is a sample application included, which helps see some of what Merb can do, as well as showing how to setup your own project. At this point, Merb is very early in its lifecycle, so if you want to use it, prepare for a hands-on experience. The Merb code is very simple and clear, however, so it is not hard to see what is going on under the hood.
One of the main problems that Merb was designed to solve is better handling of long running server processes. One example of this is uploading files to your web server. Rails will block on each file upload until the upload is completed, which is a recipe for poor performance (read server unresponsive) if you will have a lot of requests to upload big files. The Merb sample app shows how to use Merb to deal with file uploads. And since Merb supports ActiveRecord, you could easily integrate a Rails app with a small Merb app or two to handle some performance bottlenecks.
Merb is much newer than Rails or Camping, but despite it not being even quite half-baked yet, the parts that are finished are delicious! Looks like it will be a really nice option for an alternative/adjunct to Rails. Now someone just needs to create a generator that lets you start a new Merb project...and some documentation/tutorials.

Monday, December 11, 2006

Resistance To Change

Obie Fernandez comments on Seth Godin's observation that he would be a lousy pilot. Maybe this explains why I do not have a pilot's license...
Obie notes that "innovators catch the most grief from management". But why would this be the case, when management is so eager to capitalize on said innovations? Perhaps a look at anthropology can help. A few years ago I watched a fantastic program on the Discovery Channel called "Walking With Cavemen." As one review of the DVD on Amazon states, "Using real actors and actresses, amazing make-up and special effects, Professor Winston takes us through the lives and times of our remote caveman ancestors." The part that impressed me the most was a example of why Neanderthal was eventually replaced by Homo sapiens, although the two lived side by side for thousands of years.
Homo sapiens was able to learn from experience, and change behavior based on new observations. The example used in the show was that by seeing a group of scavenger birds flying in a circle in the distance, and then noting that a dead animal was in the same location where the birds had been flying, a group of homo sapiens was able to find food the next time they saw birds flying in a circle. A group of Neaderthal was unble to make the connection, and starved to death.
Consequently, homo sapiens was able to survive climate changes that caused Neanderthal to become extinct. Simply enough, our capacity to change and adapt, which is our greatest survival trait as a species, is what most people actually resist the most.

Friday, December 08, 2006

That Ruby Is So Hot Right Now...

I was just reading the latest stats from the TIOBE Programming Community Index. What is this index? They say themselves that it "gives an indication of the popularity of programming languages." Yes, I know what Mark Twain had to say about stats, but I still love reading them! Anyhow, the latest and greatest December 2006 stats are fascinating as usual.
Ruby is still surging in popularity, in fact it has had the biggest rise in popularity over the last year of any language in the top 20. I know that Python/Django enthusiasts have been dissing Ruby heavily of late, but I refuse to get drawn in to any such nonsense. Any language that people actually use has good things going for it at something, or no one would use it at all. Especially any language that is reasonably popular.
Besides, dead programmers are eager to learn new languages. I myself am fluent in 7 of the top 20 languages, and able to fake my way thru a few others. And I'm sure that there are others out there who know more of the languages in this list than I do.
But my love affair with Ruby continues, and it sure looks like I am not the only one!

Friday, December 01, 2006

RubySSPI Gets Thru The Firewall

One of the biggest problem that Guerilla Rubyists have had getting our favorite language into the big companies that pay our bills, has been the corporate firewall. Using corporate Windows machines, behind corporate firewalls that use NTLM authentication to the corporate domain, has meant "no Ruby programmatic access to resources on the other side of the firewall." In other words, no RubyGems! Having to try to download every Gem (and every Gem that the Gem you want to install depends on) for a local install it at the very least a big pain in the behind. I have been feeling this pain for a couple of years now!

Recently Justin Bailey released a Gem called RubySSPI that patches the Net::HTTP class to support NTLM authentication. I was excited! I manually downloaded and installed it...but it did not work for me. Others had successfully used it, however, so I did not give up so easily.

I have been working with Justin Bailey to help him figure out why it was not working in our typical huge corporate environment, and we have achieved success! I was just able to download a Gem in the "normal" way. I'm sure he will uploading an updated version of the Gem soon...Thank you, Justin!