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/
• 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
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
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.
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
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!
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.
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
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.
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
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
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!”
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.
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.”.