Matt Makai (@mattmakai) is a Twilio Developer Evangelist based in San Francisco, CA where he builds open source applications in Python and Swift. Matt spoke at EuroPython on "Full Stack Python" and PyCon about virtualenvs and web app deployments. He created the the underwear library hosted on PyPI and writes Full Stack Python to help fellow developers learn how to build and deploy their WSGI-powered web applications. Matt most recently authored The Full Stack Python Guide to Deployments book, a step-by-step guide for new web developers to learn how to deploy their applications to servers.
Full Stack Python is helpful website for Python readers. I see it as a wiki, some see it as a book. How would you define it and What was the motivation to create the site ?
fullstackpython.com is an open book that is slightly different from a wiki because the main copy can only be edited via pull requests on the source GitHub repository. While anyone can submit patches and new content via pull requests, I typically clean up typos or grammar in the contributions to make sure the site's quality level stays consistent.
How can other developers help contribute to full stack python ?. Which areas do you think needs attention ?
There is a huge need for content on fullstackpython.com in three areas right now:
Data - analysis, visualization, wrangling. There is an initial data page but it's sparse and I'm still learning a lot in this area so it's been difficult for me to flesh out the couple dozen pages I believe will eventually make up the data chapter.
Development environments - there's very little information about IDEs such as PyCharm, WingIDE and editors such as SublimeText and Emacs, simply because I use Vim for all my Python development work (and Xcode for Swift, which I wouldn't recommend for Python). It'd be great to have the community contribute content around the editors they use for their own Python development.
Core Python - there should be pages dedicated to explaining concepts and providing resources for decorators, metaclasses and concurrency since those topics remain confusing to new Python developers. I'll eventually get to these after other subjects but I'm sure there are many developers out there who could write these pages faster than me.
It's also appreciated when people submit issue tickets with broken links and typos to fix. There's quite a bit of content on the site now - over 200 pages when put into a traditional book format, so it can be difficult for me to keep up with absolutely everything on the site without input from the community.
Wearing your Developer evangelist hat, What do you think about the role of communities around tools/libraries/languages ?.
Communities are incredibly important for tools, libraries and languages. Just look at the amazing community Python has and where it's taken the language. Communities allow a language and ecosystem to scale beyond the original team's vision and resources.
Every developer has limited time to spend coding, helping others and giving back to open source projects. But when you add a new, positive developer to an ecosystem that's a win for those that already exist within the community as well as future developers who will eventually join it.
Having deployed Python web application, I can vouch for the fact that it’s not a walk in the park. e.g. say if you are deploying a Go application, it’s a binary with all dependency. Plus a production grade web server that ships in standard library. Compare that to Python and you have like pip, virtualenv, gunicorn, nginx. Did this motivate you to launch http://www.deploypython.com/ ?
Yes, I agree deployments are tricky in any stack. Most companies, past the initial startup phase, have entire teams dedicated to infrastructure, deployments and operations. My motivation for writing this book was two-fold.
First, after developers build a web application they want to get it into the hands of users and get feedback to keep working on it. It's difficult to learn how to do all the required steps with the existing resources that are out there. The Full Stack Python Guide to Deployments makes it a whole lot easier to learn how to deploy Python web apps.
Second, even if you plan to use a platform-as-a-service or have colleague that'll deploy your application for you, it's still incredibly useful to know how some of these concepts such as WSGI servers and web servers work. That way when things go wrong (and things always go wrong at some point), you'll be better equipped to work with others to get the infrastructure fixed and the application back up and running.
Ankur has coded and deployed numerous Python software over the last 10 years, at three venture funded startup and a fortune 10 company. He currently heads Numerate Labs. ImportPython is his side project with Python being his go to programming language.