Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Don't use Scheme in your startup. Nor any other Lisp, probably.

Don't use Scheme in your startup. Nor any other Lisp, probably.

My experience with using the Scheme programming language in my startup, with business partner Daniel Terhorst. A talk given at the balisp (Bay Area Lispers) meetup on April 28, 2012. http://www.meetup.com/balisp/events/61690582/

Ethan Herdrick

April 28, 2012
Tweet

Other Decks in Programming

Transcript

  1. “Don’t use Scheme in your startup. And probably not any

    other Lisp either.” - Ethan Herdrick
  2. • 2007: Two guys who were pretty new to Scheme

    and loved it • Wanted to take the world by storm • Made a demo of a new web technology we had figured out • Startup!
  3. Biographicon • We failed • Cross between Wikipedia and Facebook

    • Beautiful visual design by our friend Devin Hunt. Thanks Devin! • Didn’t do much but was extremely easy to use - which took a lot of work • http://en.wikipedia.org/wiki/Biographicon
  4. This slide hurts more • Scheme didn’t kill us -

    we killed us • Same stupid things a lot of startups do • Launched too late - we polished the product • This is really dumb • We ‘knew’ you shouldn’t do this • Much internal strife about this • Didn’t abandon Biographicon product fast enough
  5. But Scheme didn’t help • We probably could have hacked

    up the product with Rails in less than half the time • In a startup’s early stages you should be piling up technical debt as fast as you can because most features and products will be thrown away. Even copy/paste is good. Imperative code helps for this, type fussiness hurts. Scheme doesn’t like imperative stuff as much and its libraries are surprisingly fussy about types.
  6. So why did we choose Scheme? • We figured Scheme

    would give us a special advantage due to...
  7. “Rapid prototyping” • Lisps were said to be the best

    for rapid prototyping • No. This is out-of-date advice. I recommend Python, Ruby, others for this. • Better yet, choose something domain specific if possible: Rails, R, MATLAB, etc
  8. “Lisp is concise” • Not Common Lisp or Scheme, anymore.

    Look for language shoot-outs like this: • http://norvig.com/spell-correct.html • New lisps like Clojure and Arc do very well here. Hope for the future!
  9. Not problems with Scheme • Reliability: PLT Scheme and Kawa

    Scheme were great here • Performance: People remarked on how fast our web app was even when a story about us hit the front page of Digg • Recruiting: Who knows? We failed before hiring anyone. But probably not too bad.
  10. Search-driven programming • Get an error? Copy and paste the

    error into Google. In milliseconds you have the answer to what you did wrong • SDP is very fast and flow-friendly • Once you get proficient at this you realize that programming is a pretty social and collective activity • The sooner you surrender to the programmer hive-mind the better
  11. But your platform needs a big community • A big

    community has a ton of mistakes documented in Google-searchable space • No matter what you dumb thing you did with Ruby on Rails, there is someone on StackOverflow who already did it and posted a good answer about how to fix it.
  12. Lisps lose very badly here • Mainly because there is

    a small community, small corpus of mistakes • Also newer languages tend to neglect this • Newbies often intimidated and don’t post • Lambdas don’t make for great error messages (but Python isn’t bad here) • Kawa Scheme very bad here
  13. But ex-Lispers can win! • Because we know the right

    words to describe things that programming languages do! • To know a Lisp is not to be provincial
  14. • Gerald Sussman “...every sorcerer will tell you is that

    if you know the name of the spirit then you will have power of that spirit” • In SDP this is even more true • google ‘python variadic’ or ‘ruby lambda’ or ‘lua closure’ and you get smart results quickly
  15. Try a new language! • But your early instincts about

    it will probably be right • You see a lot of excited blog posts about people picking up a Lisp and saying, “Wow, this is really cool, but it takes me a lot longer to do things. I’m sure that’ll change soon because I heard Lisp is the best!”
  16. • I don’t think it was like that in the

    80s. I think people went from C or whatever to Lisp and immediately said “Wow, this is so much faster and easier.” • It could be like that again with some new Lisp but it isn’t currently. • Lisp: probably the best paradigm with the most potential. If you are starting a new language, by all means make it a Lisp. But history has given us a bunch of languages which are better for SDP today.
  17. Start a startup! • But don’t try to make it

    cool • People often said to us, “Scheme? Cool!” We liked that. Later we realized we should have hoped for them to say, “What you are doing is a boring corporate sellout.”.
  18. You can’t serve two masters • Startup success is an

    extremely demanding master • Loyalty to abstract concepts will hold you back. Identity makes you dumb. http:// www.paulgraham.com/identity.html