Business & Technology Nexus

Dave Stephens on technology and business trends

Paul Graham – ViaWeb Founder

with 3 comments

For those interested in technology and its relationship with entrepreneurship, I'd recommend reading Paul Graham's 2001 article called Beating the Averages. It talks about Paul's experiences starting up a firm that in the end became Yahoo! Stores. He explains why he and his co-founder chose LISP, a programming language that no one uses, and why he viewed that choice as the source of ViaWeb's competitive advantage.

Advertisements

Written by Dave Stephens

06/13/06 6:39 PM at 6:39 pm

Posted in Historical, IT

3 Responses

Subscribe to comments with RSS.

  1. Closures and Macros are the two most powerful features of LISP. With object orientation and Java’s innerclasses (or C#s delegates), we get as much power as closures (quick googling gave http://www.owlnet.rice.edu/~comp212/01-fall/lectures/14/).

    That pretty much leaves the power of Macros. But again, with good object orientation and use of inheritance and polymorphism, a lot of rubber stamp code can be written once and reused heavily.

    While no doubt functional languages are excellent languages, just like everyone who started off with Java in the college has no clue about pointers, anyone who thinks too much in Lisp probably don’t care much about efficiency. The moment one starts caring about efficiency, by deliberately writing functional code to be tail-recursive or using the set! to explicitly indicate she is modifying state, functional code starts showing it’s ugliness.

    There are languages like Kawa (a Java implementation of Scheme), which sort of gives best of both worlds. Libraries that can be written in Scheme but compiled into Java classes. They provide the efficiency and the garbage collection, JIT and other research efforts of Java and the interoperability with Java so that there can be two sets of programmers, those who write the main architectural comonents using a functional language and it’s features, and those who write the rest of the application layer using the popular language.

    However, from experience, once you start profiling such java code, you would see the number of objects being generated by the JVM for giving you the pleasure of writing pure functional code. Ofcourse, performance mileage vary by application and how it’s being deployed. SaaS applications have to be very carefully designed. Otherwise, we know what outages have done recently to salesforce.com

    Also, with energy prices going up, can people just keep thinking they can always add extra hardware to scale? Even if the costs of administration can be controlled by better tools, the cost of CPU churning at the highest rate to clear up lots and lots of objects is going to increase the power bill. This may not be a concern for a personal user application, but think of Google! It’s also the reason the upcoming Intel’s new CPUs are going to pay a lot of attention to power.

    Anyway, given that this blog is more about Procurement and what’s best for it, the key things to remember are

    1. There are very few Paul Grahm’s in the world (weep, weep)
    2. There are more libraries, sample code in other languages.
    3. There are more resources in the outsourcing world, where the hourly rates of Java coders is probably lot cheaper than Lisp
    4. More importantly, for any large enterprise applications, the main cost is not purely in terms of just writing the initial code, but maintaining it. So, while it might be tempting to hire just a handful of extremely smart coders who does the initial coding in Lisp/Scheme, the model starts falling apart during maintenance where the initial coders are long gone and the maintenance has to be done with lesser budget.

    AnonymousCoward

    06/13/06 11:34 PM at 11:34 pm

  2. One has to remember that ViaWeb was manipulating that which manipulates; i.e., they were storing free-form data, building web pages, building javascript, etc., on the fly. Whenever one is in that mode, applicative languages like Lisp have an intrinsic advantage over imperative languages like C and Java. With Lisp, walking data structures (and inserting intelligence in random places) becomes easy. Incredibly easy. Hence Graham’s comment:

    “It must have seemed to our competitors that we had some kind of secret weapon– that we were decoding their Enigma traffic or something. In fact we did have a secret weapon, but it was simpler than they realized. No one was leaking news of their features to us. We were just able to develop software faster than anyone thought possible.”

    All of the above notwithstanding, there are circumstances where Lisp is a very poor choice. Many of us have met Lisp hackers who do their community a disservice by insisting that this is never true. They are “Blub” programmers, too (see Graham’s article for context).

    Eric Strovink

    06/14/06 1:35 PM at 1:35 pm

  3. i’m simply blown away by the quality of the 2 comments above. really great insight- thanks for sharing with the readers & with me.

    Dave Stephens

    06/15/06 7:09 PM at 7:09 pm


Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: