An article about me and my involvement in the Python community (mainly Django) as a Free Software developer, GNU/Linux user and tech conference speaker.
About me
I graduated with a degree in Computer Science from the University of Bologna. My thesis was about Free Software and since then I've been a Free Software advocate.
I've been a GNU/Linux user since 2000 and now I'm a happy user of Ubuntu.
In 2007 I attended my first conference, the Plone Conference, and since then I've attended many other pythonic conferences in Europe.
In 2017 I presented a talk at PyCon Italy and at EuroPython and since then I have been a conference speaker for local and international events, both in Italian and in English.
I've lived and worked in Rome and London, and since 2015 I've been a remote worker located in my hometown of Pescara, Italy.
I love nature and spending my time swimming, snowboarding or hiking, but also traveling with my wife around the world.
I like improving my English skills by reading fiction books or listening audiobooks, watching TV series and movies, listening podcasts and attending local English speaking meetups.
I answer questions at stack overflow, tweet at @pauloxnet and occasionally post at paulox.net.
My journey through programming languages
I started programming with Pascal during high school and then I learned HTML and CSS on my own to develop my first website as my final project for high school.
At university I studied various languages such as C, C++, C#, Java, SQL and Javascript and I used some of them at work in the past.
Since 2006 I've predominantly used Python, and it's without a doubt the language I prefer, although sometimes I still use SQL, Javascript and of course HTML and CSS.
How I started using Python
I started using Python in my first job because we developed websites with Plone and Zope.
I realized how much better Python was for me than other languages I've studied and used before because it's easier to learn. It focuses on code simplicity and readability, it's extensible and fast to write and has a fantastic community.
When I stopped using Plone I continued using Python as my main programming language.
My favorite Python libraries
I work every day with Django and PostgreSQL, so apart from the Django framework itself I think my favorite python library is the Python-PostgreSQL database adapter psycopg2 because it's pretty solid and allows me to work with the database without the Django ORM when I need to do very low level operations or when I want to use all the great features of PostgreSQL.
The choice of Django as web framework
Originally I started working with Plone and the Zope application framework which stores all information in Zope's built-in transactional object database (ZODB).
Then I started using Django when I needed to store data in a relational database like PostgreSQL, and after some research, I realized it was the best choice.
I love its architecture, the ORM, the admin module, the PostgreSQL support, all its ready-to-use modules like GeoDjango, all the 3rd party packages, and particularly the community behind it.
How I got started contributing to Django
I started contributing to the core of Django during the sprint day at DjangoCon Europe 2017 with a pull request that integrated the PostgreSQL crypto extension in its contrib package and then was merged in Django 2.0.
I presented a talk about the Django Full-text search feature at the PyCon Italy 2017 conference and then wrote the article "Full-text search with Django and PostgreSQL" based on this. Later I realized that the Django Full-text search function was not used on the djangoproject.com site.
At EuroPython 2017 I organized a sprint about the search module of the djangoproject.com.
I completed a pull request that replaced Elasticsearch with the PostgreSQL Full-text search function on the official Django website and I continued updating this function with improvements in speed and multilingual support.
I presented a talk about this experience as an example of my contribution to the Django project.
The projects I'm working on
I contribute to the Django project, its website and some related packages.
I'm attending some Django Girls workshops as a coach and I've contributed to its tutorial.
In addition, I'm updating my Django Queries project with code I've used in my talks which lets people try it on their own.
I'm working on a Django project template we use at work to speed up the bootstrap of a project deployed on uWSGI.
I'm updating my Pelican-based technical blog where I post some articles, information about me, my projects and my talks.
I'm updating my YouTube channel with all my recorded talks and my Speaker Deck account with all my talk slides.
I'm also answering as many python-related questions as I can on Stack Overflow, particularly related to Django, Full-text search and PostgreSQL and I wrote the article "Updating a Django queryset with annotation and subquery" based on one of them.
Lessons learned as a Free Software developer
I think Free Software is the one of the best inventions in the last century, and being part of it is very rewarding.
In particular being a Free Software developer has taught me:
- Sharing knowledge (in form of ideas, code, documentation, skills) is the best way to better yourself as a person and a developer
- The best part about Free Software is its community of human beings
- Some things not code-related are very important for improving Free Software and its community, such as choosing a good license, adding contributing guidelines and not forgetting about documentation
Being a tech conference speaker
Being a conference speaker at Free Software related conferences has given me the opportunity to meet a lot of people and become a better person.
I encourage everyone to join meetups, get out in the community and attend conferences and, of course, if we meet at some conference, please say hello.
A thought for all native English-speaking developers
I also want to say to all native English-speaking developers that there a lot of excellent developers who hesitate to contribute to Free Software because of their lack of English knowledge. Personally, I waited a long time before contributing to projects and actively participating in the community and then I forced myself to improve my English skills with a lot of costs in term of time, effort and money.
So I would just like to remind people to be patient and inclusive when it comes to non-native English speakers as we need a bit more time and effort to open an issue, send a pull request, ask questions online and at conferences or simply speak and write about ourselves and our ideas in an interview like this.
This article is based on the answers I sent to Mike Driscoll for an email interview for his blog, The Mouse Vs. The Python, ️published on 11th February 2019, in the article "PyDev of the Week: Paolo Melchiorre".
Original
Originally posted on my blog:
paulox.net/2018/10/01/updating-a-django-queryset-with-annotation-and-subquery/
Top comments (8)
Interesting read.
Regarding the last paragraph "A thought for all native English-speaking developers". Obviously I do not know what you've gone through. In my own experience in the last 20+ years being online and interacting with all kinds of people from different countries I never really observed that lacking proper English skills was ever a mayor issue. Lets be honest, quite often native English people have poor skills in English too. (Or maybe, technical people quite often struggle with the oddities of natural languages.)
One of the things I have always disliked is when people start with "Excuse my poor English". There is absolutely never a reason to apologize that your second, or third, language isn't that great. Most native English speaking people cannot even formulate a sentence in an other language. Sure they can write code in C, Pascal, Java, Python, Ada, Basic, Fortran, Algol, Prolog, Haskel, Brainfuck, ... but they cannot even say "hello" in French, Spanish, German, or Klingon?!
Get down to brass tacks*, and language will less be an issue. (*) This means, get to the facts. Sling the lingo and it will make up for the lacking skills in English.
PS, English is not my native language either.
Hi Michiel, thanks for your appreciation and for your comment.
I wrote this article and other things in the past, so I'm no longer in the "Excuse my poor English" phase, but actually I was there in the past and had to study a lot to no longer be there.
I made a lot of efforts to complete the university and to be a good software developer, but by the age of 30 I realized that I could read English but I couldn't speak or write it, and this was a real obstacle in being appreciated as a software developer, and in contributing in free software.
I started doing a lot of things to learn English: taking courses, reading articles and books, watching series and videos, listening to podcasts and lectures. I started attending regular meetings to speak in English and I changed the language of all my things: pc, telephone, tv, .... I also lived for a few months in London, and spent a lot of time, effort and money doing this.
In the meantime I worked as a software developer, I had side projects, I studied a lot of technical things, I attended some local technical meetings, national and international conferences and I started giving talks.
I am happy to read and listen about the inclusiveness in these years in the field of Free Software and in various technical conferences and I wanted to highlight another thing that can really exclude you from the community, regardless of how good you are technically.
I hope the native English developers can think more about this, and maybe someone can start adding something related in various "Code of Conduct" of communities, conferences and projects, etc ...
So exactly how long did you wait until you thought you could contribute to Django 🤩 ?
I started using Django 1.3 in 2011 and I did my first pull request in the core of Django in 2017, they merged in Django 2.0 during the DjangoCon Europe 2017. They main problem of finalizing my pull request was about english and not the code.
That's a very long wait 😮😮
Maybe i can learn from you 😅
Or maybe you can start contributing now ;-)
It's not easy for beginners to start contributing in big projects
I have already contributed to some small projects before (doing it now too)
But i m finding it hard to move to some big projects 😓🤯
Take your time and ask help to the community.