One of the posts I've been meaning to do is this one - a more extended version outlining what I spoke about in my five minute lightning talk I did at PyCon 2010 (more general thoughts on the conference later). Of course, meaning to post it - and actually getting a chance to are two different things. So - my goal of the lightning talk was to say thank you to the python community, not only from me, but from the point of view of the company I work for (Nasuni) which recently launched. Thanks can be given back to the community in a variety of ways - money, code, sponsorship, programs, etc.
Sometimes, a simple Thank You can be a good start, and that was my goal. Unfortunately, I also completely deleted my slides (intentionally, what was I thinking?) after my talk was done.
What is Nasuni? We're pretty small - obviously much smaller when starting (5 core engineers). The goal was to build a simple to manage, secure, reliable cloud-storage backed virtual storage appliance. Everyone helped code and design the product. We had to build it fast - when you're a startup on VC money, you've got to be fast - you have finite time. Limited time, money and people.
From a technology standpoint - it simply made sense to put the core data path in C and C++ - you need speed, security, and the compactness C offers you when you're talking speed. Not to mention, this is a device which has a finite amount of space, so keeping it relatively compact is a Good Thing. So the brain and central nervous system are in C - but we're lacking something:
The rest of the person. D'oh. You know, arms and legs and stuff.
Let's look at all of the other stuff we needed:
- tools/glue scripts
- user interface(s)
- other system daemons
- web site
- deployment tools
And that's just the stuff I could think of off the top of my head right now. So, we needed to compliment our super strong core with something pretty flexible, something that could also easily mesh with the core system as well.
When picking the technology; we needed speed of development, a broad ecosystem to build from, and it needed to ramp up and down. It had to be flexible enough that anyone involved in the project could become immediately effective with it.
“Duct tape is like the force. It has a light side, a dark side, and it holds the universe together.”
Python Ramps “up”, and it ramps “down” - it's good for “hard” programmers, and people just trying to get things done. It's simple enough that anyone who has scripted in the past can get something done, and quickly. My motto has slowly become "there is no such thing as bad code - there's just code that works, and code that doesn't". Code that comes out of someone who is just learning, and gets the job done is just as valuable as code that is well thought out and designed.
Python, and it's broad ecosystem. It's the glue, the face, the hands, the legs. It, plus insanely smart engineers let us move quickly, adapt to anything that popped up and put together a kick ass product.
With Python's help, we put together a ready-to-ship simple to manage, secure, reliable cloud-storage backed virtual storage appliance. 8 months! This isn't a web app, or a another web service. This is something just shy of putting actual hardware into a datacenter! We've got python deep in our DNA. (And heck - the president of the company wrote a good chunk of it! How awesome is that?)
The moral of the story, however brief it is - when you need to sell Python to your boss, or that client - or if you're just starting out. Don't sell it with words. Sell it by showing it's effectiveness, it's speed. Just do it - that's what Python is here for. helping you get your job done and succeed.
Python is not meant to be the prettiest, or the fastest-to-run, or the one with the latest feature du-jour. It's there to let you get your job done. That's why I love it, and much of the community around it - it's the pragmatism, how will this let people be effective.
I wanted to take a moment not just to cheerlead - but to also specifically thank the projects and tools out there in the community that helped us get the job done.
- Python (duh)
- The Python standard library: This can not be stressed enough! Despite anything else we use from the ecosystem, the standard library is rich enough that it's a massive time, and life saver. This is why I don't believe that "getting rid of it" makes any sense at all. Python's success is not just a by product of the language itself - the standard library is such a big selling point it can't be stated enough.
- Virtualenv / Virtualenvwrapper
And many, many others (including obviously non-python projects). Thank you, thank you, thank you!
In closing - Thank You!. Without Python, as a language - Python as a community, Django, and so many others - we would not have been able to achieve our goals. There's so much to be proud of as a community, and sometimes we loose sight of it while debating frameworks, this, that or the next thing. Python is the perfect secret weapon for people and companies just trying to get things done
Thank you all - hopefully we can give back as much as we've gotten.