This week’s PyDev is Luciano Ramalho, the author for the upcoming O’Reilly book, Fluent Python. He was kind enough to spend a few minutes speaking with me. Let’s see what he has to say.
Can you tell us a little about yourself (hobbies, education, etc):
I became CTO of Brasil Online (BOL), the first large-scale news portal in Brazil in 1995 without a degree. I taught myself programming with a calculator (a TI-58) when microcomputers were rare and very expensive in Brasil (late 1970’s). I started a few different majors (Math, Economics, Philosophy) but as computers became more common my career as a programmer took off and I repeatedly dropped out from the university. Later in the first Web wave I founded a company specializing in building custom CMSs for news organizations. The company was a casualty of the Web bubble burst, and then I finally went back to the university and earned a degree in Library and Information Sciences, because I had become intrigued by information architecture while building large portals, and LIS is where the foundations of information architecture lie.
As a hobby, I help run Garoa Hacker Clube, a hackerspace in Brazil. I am also a collector and inventor of board games, and a student of the I Ching. I am not much of a biker, but I love to ride my bicycle around my city, São Paulo — the west side, where I live, is nice and mostly flat.
Why did you start using Python?
At BOL we experimented with several languages for server-side web programming, but we mostly used Perl, a little bit of PHP/FI and even some Java before Java-EE existed (that was 1995-1996). I was not happy with any of those choices so when I left to create my company I did a lot of research and discovered Python. That was 1998. By the end of that year I had deployed my first news portal with Python, and I was hooked. I used Zope as the framework.
What other programming languages do you know and which is your favorite?
I’ve always liked to try out new languages, but Python fits my brain so well that after I started using it I haven’t looked around as much as I did before. Prior to Python, Perl was my favorite language, and before that I was a huge fan of Turbo Pascal. I spent many hours playing with Smalltalk, I loved it, but I never built anything real with it. After I started with Python the languages I’ve studied most are Ruby and LISP (Scheme and Common Lisp). I also try to keep informed about Java. Recently I became very interested in Clojure, Go and Elixir, but after I started writing my book Fluent Python I am 100% focused on Python again. After I finish the book in 2015 I plan to dive seriously into one of these last three.
What projects are you working on now?
Right now I am working 100% of the time on Fluent Python (http://shop.oreilly.com/product/0636920032519.do). It’s my first book, I am thoroughly enjoying writing it. Working with my editor at O’Reilly, Meghan Blanchette, and the all-star tech review team has been a privilege. I am using Atlas, O’Reilly’s book publishing platform, which is based on AsciiDoc, git, DocBook and a lot of other parts very well integrated. I blogged about the process here: http://www.python.pro.br/ramblog/with-oreilly/
Before I realized I needed 100% dedication to write, I was working on Pingo (http://pingo.io), a Python library for multi-device GPIO programming, supporting the Raspberry Pi, pcDuino, UDOO and Arduinos (via USB remote control). I’ll go back to it when I finish the book, but it’s not abandoned. Lucas Vido, another core developer of Pingo is working on it in his spare time.
Which Python libraries are your favorite (core or 3rd party)?
I love requests, Flask, Pyramid and lxml. They are all a pleasure to use, Pythonic and robust — sources of inspiration as we develop Pingo. Tkinter has a reputation for being old and clunky but it’s incredibly powerful and recently made possible to build good looking GUIs. Take a look at the Canvas object in Tkinter: it’s like a Lego for doing object-oriented UIs for diagramming or vector-based drawing. Very powerful and high level. Finally, having used Twisted and Tornado professionally, wishing there was a blend of their best features, I think async.io is the start of a very important phase in the history of Python: proper support for modern asynchronous programming with generators.
What made you decide to write a book about Python?
I’ve been using Python since 1998 and teaching it since 1999, so the idea of writing a book about it has been with me for a long time. I am doing it now because I managed to put together all the necessary parts: a deal with a publisher I admire, the financial resources to be able to focus on writing, a set of well-honed examples covering many aspects of the language. These examples were developed as part of my job at Python.pro.br, a training company I co-own with Renzo Nuccittelli. Since we founded Python.pro.br in 2012 I build a critical mass of examples, explanations and diagrams that was asking to be organized in book form.
If you’d like to see the kind of diagrams, explanations and examples I use to teach Python, here are some samples:
- Python tuples: immutable but potentially changing (a post for the O’Reilly Radar blog)
- Encapsulation with descriptors (slides of a talk presented at PyCon US 2013 and OSCON 2014)
- Iteration & Generators: the Python Way (slides of a talk presented at PyCon US 2013 and OSCON 2013)
Of course, the ultimate collection of my teachings is the book 😉
Who is the target audience?
I am writing Fluent Python for people who have a working knowledge of Python but want to make the most of Python 3 at its best, as a modern, consistent, elegant and very productive Object Oriented language. As I write I think of:
- programmers thrown into the deep end of Python projects as the language becomes mainstream
- programmers who learned Python superficially — perhaps in some academic discipline — but want to use it professionally
- programmers who have spent a lot of time on legacy codebases supporting Python 2 who want to learn the modern idioms of Python 3 (many of which are also available in Python 2.7)
Is there anything else you’d like to say?
As a FLOSS advocate, I’ve been to my share of community events organized around different languages, databases, platforms, frameworks etc. I am honored to be a part of the Python community, where we enjoy a great combination of friendliness, professionalism, solidarity and harmony.
Previous PyDevs of the Week