2017-02-13

This week we welcome Łukasz Langa (@llanga) as our PyDev of the Week! Łukasz is the author of PEP 443 — Single-dispatch generic functions. He also authors an interesting blog, although it’s not just a programming blog. You can see what Łukasz has been up to over on Github. Let’s take a few moments to get to know him better!

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

My first name is Łukasz which is an endless source of Unicode joy. I am a committer to Python since 2010, started out as a maintainer for configparser, nowadays working on the type hinting side of things. I like analog synthesizers, bicycles, and the Fallout game series. In my free time I’m helping Facebook embrace Python 3.

Why did you start using Python?

This is a bit embarrassing. It was Autumn 2004, I was studying Computing Science at Poznan University of Technology in Poland. I had trouble with some courses I took, namely Linear Algebra. A friend showed me some scripts he wrote in Ruby and some linear algebra library to check his results when solving homework assignments. I badly needed some reassurance so I got excited about this. Sadly, for some reason Ruby refused to install on my Windows XP box at the time.

As a test was scheduled for the very next day, I started looking for alternatives. I literally typed “ruby alternative” in Google and found Python that way. This installed cleanly and I quickly found a functional linalg library replacement. I can’t remember what it was anymore, this was before NumPy was a thing! Either way, I got hooked.

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

I’ve done a lot of programming in Java back when Java 5 was the latest and greatest. It was a pretty simple language which is both a good thing (you could get up to speed pretty quickly) and a terrible thing (design patterns were a must). I liked the comprehensive documentation, I liked being able to “build once, run everywhere”. To this day I have some applications I wrote 12 years ago with some early version of NetBeans on a Windows box. I can still build them perfectly fine on the latest macOS with ant and run them with no changes. With GUI and sounds. That’s pretty neat.

There’s also C that I invested a few years of my life in but ultimately don’t use much anymore except when interfacing with Python. I tend to romanticize it a little, but when forced to actually work with it, I’m amazed at how tedious simple operations are. It really *is* a low-level language.

I’ve also done some work with JavaScript and Hack (the typed and async-aware PHP variant running on HHVM). While the latter was surprisingly pleasant to work with, I never became friends with JavaScript. I find it somewhat unfortunate it became the language of the Web now. As for other languages, I haven’t done anything more than tutorials with Go and Swift but I did enjoy the latter quite a bit. I think I’ll be working with it more in the future.

What projects are you working on now?

As part of my day job, I’m introducing type annotations to several large codebases. It’s pretty early but we’re making good progress. This enables me to contribute back to Python, too. These days I spend most time maintaining typeshed, our collection of external type annotations for the standard library and third-party libraries.

Since I’m also taking care of Python code linting at work, I semi-regularly fix things in pyflakes, flake8, and friends. I maintain two flake8 plugins myself (flake8-bugbear and flake8-pyi), you should use them <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f609.png" alt="

Show more