PyDev of the Week: Mirko Galimberti

This week we welcome Mirko Galimberti (@M1sl6) as our PyDev of the Week! Mirko is a core developer of Kivy, a cross-platform GUI framework for Python that targets iOS and Android, but works on Linux, Mac, and Windows too.

Mirko also has a website, which is a great way to see what he is up to. You can find Mirko’s code contributions over on GitHub too!

 Mirko Galimberti

Let’s spend some time getting to know Mirko better!

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

Before being a Software Developer, I have been (not so secretly) tech-addicted, especially when it came to computers.

I had my first tech bag at age of 11 (nothing so fancy and expensive) but was a nice set of hardware and software tools to fix the most common computers issues.

Later, during my early high-school years, even if only C++ and Java were an option during classes, I started learning PHP + JS + HTML5 + CSS3 for a project that I started with a schoolfellow, that’s where I first approached web development.

As my homepage says, now I’m a Full Stack Developer based in Italy. When I’m not in front of my laptop screen, you can find me traveling and piloting a drone for aerial photography. I love to listen to EDM music while stuck in traffic or during open-air festivals.

Why did you start using Python?

Accidentally,  before being a Pythonist I was super-devoted to PHP ????.

In 2014 I had to work on a brand new project, and during a meeting the consultant who was working alongside me, due to the nature of the project, proposed me to rely on Python and PostgreSQL.

In a 4 hours crash course, he introduced me to Python and web2py framework. I immediately loved the intrinsic clean code approach of Python and the vast libraries ecosystem.

That code I started to wrote just after the crash course is still in production, and in a 6 months timeframe Python became my first choice for Web Development.

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

As a Full Stack I had the chance to write code in different languages, considering that I have to adapt to different technologies. I had the chance to write in Python, Vanilla Javascript, TypeScript, PHP, Java, Objective-C, Swift, c, c++, C#, … (and many more)

Lately, I mainly code in Python, Vanilla Javascript, Objective-C, and Java.

What’s my favorite? Obviously Python ????

What projects are you working on now?

During the week I do web development (mainly using py4web, the webpy reboot) and app development (obviously using Kivy).

Lately, I’ve been focusing on a vast Smart Home ecosystem, where most of the code is written in Python (except the device firmware).

Instead, during my spare time, I love to keep Kivy Framework updated and mantained.

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

Core: unittest.mock (I still have a lot to learn from this beast, and increasing the code coverage of Kivy looks like a good way to learn something about it)

3rd party: Apart Kivy? pydal is surely one that helps me to save some precious time during the web development workflow when using databases.

How did you end up as a contributor for Kivy?

I started in 2018 by just fixing some minor bugs, or adding missing features, that I encountered using Kivy as a user.

In early 2020, I needed something in order to distract myself during weekends, and doing Open Source for Kivy seemed a nice idea.

2020 is over, but giving back something to the Open Source community that helps me have a reduced time-to-production is something I just can’t stop.

In 2021 I joined the Core Developers team, and I try to do my best to keep Kivy up-to-date and grow the community.

What are your top three favorite features of Kivy?

  • Cross-platform: In small teams, reducing the platform-specific code means that you can implement features faster, test them even faster, and squash the bugs 1x, not 2x, 3x, 4x … I’m able to develop the App on my macOS system, test it, and then distribute the same code for iOS, Android, macOS, Linux, and Windows.
  • Have a full-featured set of extensible prebuilt UIX widgets: Even if that specific widget that you’re looking for is not present, there’s a high chance that you’ll find something that you can extend easily. As an example, for the Smart Home App that I’m developing, I was able to build in just a few lines of Python and KVlang a custom widget that mimics a real roll-up shutter, substituting an unattractive slider, that was creating some friction in the UX.
  • MVP friendly and Scalable: Kivy is startup-friendly. You can create an MVP from scratch in a few weeks, with a small team, and scale it without trashing everything

Is there anything else you’d like to say?

Maybe we can talk about how did I find out about Kivy? Well, still accidentally ????.

I had a  Python cli based tool developed during an R&D sprint that later needed a GUI.

Being cross-platform (both desktops and mobile) was mandatory and after a quick research, Kivy seemed an obvious choice.

Thanks for doing the interview, Mirko!