This week we welcome Rodrigo Girão Serrã (@mathsppblog) as our PyDev of the Week! Rodrigo is the author of Pydon'ts - Write elegant code, a free Python book. Rodrigo also has a BootCamp, a cheatsheet and more on Gumroad. You should also check out Rodrigo's blog!


Let's take a few moments to get to know Rodrigo better!

Can you tell us a little about yourself (hobbies, education, etc):

My name is Rodrigo Girão Serrão, and I am from Portugal: a small country with great weather, lots of beaches, right at the Western tip of Europe, and home to “pastéis de nata”, fado, and Cristiano Ronaldo (among other things!).

My formal education is in mathematics: I have a MSc degree in applied mathematics, and I specialised in numerical analysis in college, because that was the branch of maths where I could get more programming done.

I have been fond of mathematics since I was 2 years old (I have anecdotal proof!) because I always loved challenging myself to solve different problems, and I picked up programming because it helped me solve more problems.

One of my major hobbies is creating content around programming (and Python, specifically), on Twitter – where I'm @mathsppblog – and on my blog,

Other things I do include fostering the human relationships I have with my friends and loved ones, reading fantasy books, watching silly comedy movies, and eating chocolate!

You said you have anecdotal proof of being fond of mathematics since you were 2. Can you share it with us?

One day, I was 2, I was scribbling on a piece of paper. Of course, I was scribbling nonsense, because I didn't know how to write, but my mother asked me “Rodrigo, are you writing your name?”. I replied, “No, I'm writing numbers!”.

I find that to be an amusing story, but the truth is that, ever since I can remember, I've always had fun solving maths problems and I was always good at it... even though I didn't know my “times tables” by heart!

Why did you start using Python?

The answer is plain and simple, and rather uninteresting: “because a friend of mine told me to”.

Maybe more interesting to answer why I kept using Python, and why I still use it, after 9 years of writing Python code. (For the record, I started using Python around September/October of 2012.)

The truth is, why I kept using Python is a more interesting question because I really don't know how to answer it... Before Python, I had dabbled in quite a few programming languages; and while I really enjoyed the act of programming, no programming language got me hooked, and so I kept moving on to the next language.

When I got to Python, things changed... While I remained curious about other programming languages, I always came back to Python for this project, or that script, or whatever thing I wanted to write.

What other programming languages do you know and which is your favorite?

I started programming after I asked the question “what, really, is a website?” and people told me that it was a "text file" in a "server".

At the time, the only text files I knew were Word documents and I had no idea what a server was, so the answer made no sense. How did I fix that?

I googled for more information, and discovered HTML and CSS. That's where I started.

I quickly got tired of it and googled for “programming tutorial”, and the top result was for Visual Basic, so that's what I learned next.

Then, I think I learned some JavaScript and some C, and then I started learning Python.

Meanwhile, I have also learned and used other languages like Pascal, Java, C++, Haskell, APL, Mathematica, and Matlab. I have varying degrees of proficiency in each, Python being the one I'm most comfortable with.

If I am to exclude Python from the list, my favourite languages are APL and Haskell. I really like APL (only started learning it in the beginning of 2020) because it is so different from everything else I knew, and because it taught me a great deal about programming – in fact, one of the things I like about APL is that it helped me improve my Python code; I'm thinking of giving a talk about this –, and I like Haskell because I really appreciate the purity and the elegance of functional programming... It reminds me a bit of maths, in a way.

What projects are you working on now?

As far as (Python) code is concerned, I'm picking up the maintenance of a Python/APL tool called Py'n'APL for work, and it has been an interesting challenge. Py'n'APL is an interface between Python and APL that was written some years ago, and I have to pick it up, update its code, and maintain it.
I am also dying to go back to my RGSPL project, an APL interpreter I'm writing for fun. It has been evolving veeeery sloooowly, but I want to keep working on it.

Which Python libraries are your favorite (core or 3rd party)?

I spend a lot of time studying the core Python language and its standard library, and I have become a huge fan of many standard modules, of which I'll name three: itertools, collections, and functools.

Being aware of the things you can find there, and learning how to use them, will make you a much more effective Python programmer.

Outside of the standard library, there is more_itertools (an extension of itertools), and two amazing libraries by Will McGugan: rich and textual. I have been looking for an excuse to use textual, and I just found one as I was writing this answer. Maybe, by the time you are reading this interview, I may have shared something on my blog about it.

How did you decide to become a content creator?

I did not really "decide" to become a content creator, it just happened more or less organically.

When I started college I already had a couple of interesting programming projects I had done (all basic things, though) and I wanted a way to document those things I had done.

I figured I could start a blog where I would write a couple of paragraphs about each project, so that I had a way of going back to the project and seeing what I had done, but also sharing it with the occasional person that showed interest.

When I started the blog, I couldn't hold myself back and I started writing other articles explaining some maths concepts, tutorials for programming projects, or challenges for others to solve.

Writing for my blog just became something I'd always come back to, even if not consistently.

Then, by the end of 2020, I got the idea of writing my Pydon'ts series of articles, a series of articles on how to make proper use of features of the core Python language.
One day, I met Sundeep on Reddit, and I saw he self-published a lot of programming books, and I decided to do the same with my Pydon'ts book.

This led me to Gumroad, the platform where I sell my products, which also has a vibrant community of other creators. By participating in that community, I realised I could build an audience on Twitter, and in the Summer of 2021 I started investing time on Twitter, writing about Python. Going to Twitter was one of the best things I ever did, because I learn a lot from others, and because I met a lot of interesting folks, like you, for example.

That's what got me to where I am at; we'll see what happens next!

What challenges have you had as a content creator and how did you overcome them?

The biggest challenge I (frequently) face as a content creator is keeping myself motivated.

At my core – and I am being as honest as humanly possible –, I love sharing knowledge. That's why I always helped my classmates, tutored, led workshops, started blogging, etc.

However, to "be a content creator", I have to invest time daily. Most of the time, I want to do that, but there are periods where I am feeling more tired, or less inspired, for example.

I have been developing strategies to cope with that, so that I can still produce quality content for everyone, even when I'm not feeling like it.

Is there anything else you’d like to say?

 I would like to thank you for having me, and encourage anyone reading this to reach out to me on Twitter through a DM, so we can chat a bit. I really appreciate meeting new folks that use Python, or are interested in learning Python.

Thanks for doing the interview, Rodrigo!