David Lord

Introduction

Hello

I'm David Lord. Among other things, I’m a member of the Python programming community and a Python Software Foundation fellow. I maintain and contribute to a bunch of projects, but I am probably best known as the lead maintainer in the Pallets open source organization - including Flask, Jinja, Click, Werkzeug, ItsDangerous, and MarkupSafe. Somewhere in there, I even manage to have a job and a semblance of a social life as well.

A selfie of me hiking. I'm wearing a backpack and a green Myst shirt. Tall and bent trees cover the background.

I've been saying I’ve wanted to write for years — to the point where I have probably annoyed my friends with how many times I bring it up. It’s always a cycle where I find a reason to finally get started, get stuck overthinking it, and ultimately abandon the project. I want to write, I want to share, and now I'm finally trying it out for real.

But what to write about first? I figured an introduction is always appropriate; why should anyone care about what I have to say if they don’t know who I am? This is how I became the software engineer I am today. It's absurdly abridged, but hopefully it's a little interesting.

Early

I’ve known I wanted to work with computers for a long time. In fact, my mom recently found a school journal that she had saved from 1996 when I was in second grade. The prompt was "What do you want to do when you grow up?" to which I answered, "I want to be a computer wiz!" Within a few months of writing that, I had picked out "Make Your Own Webpage! A Guide for Kids" from the monthly book club and begun my programming journey.

But I think it started even earlier than that. My dad had one of the first ThinkPad laptops that he had received through work. He would be typing away in his office at home, and I'd be sitting next to him playing with Legos and watching. I guess it stuck with me — computers were the cool thing my dad used. A few years later he upgraded and I got to keep the original, with Windows 3.1.

We tinkered around with it to install a sound card and configure "game mode.” I played Gizmos and Gadgets, Glider 4, and JumpStart 3rd Grade. And I even started learning HTML (thank you, Make Your Own Webpage!) A year later, my parents got me Learn to Program Basic, and while I don't remember Basic it was my introduction to programming games.

My biggest influence on learning programming came during the summer after sixth grade. My friends at camp had made a multiplayer game with Game Maker 4. (I made the far less cool decision to design a website about solar power.) Even more exciting than the game itself was that it got featured on Game Maker's website; everyone could play it, and even modify it. (I just realized this was my first introduction to "open source.”) I read the tutorials, docs, and example projects voraciously so I could start building my own. I registered on the Game Maker Forums so I could help other people who were learning as well; I was so proud when I felt confident enough to post in the "Advanced" category.

Reminiscing on this now, I wish I had known anything about backups, let alone version control, back then. Sadly I don't have any of the stuff I built in my early years, only the memories.

College

In high school I started the computer programming club, joined the Rubik's Cube club, and was on the inaugural Robotics Club team. I applied to way too many universities, and eventually chose to attend the University of California, San Diego, where I had been accepted into their highly rated Computer Science & Engineering program up front.

It's hard to recall how many of the classes were actually useful to me, that's a topic for another post, but what sticks out to me more were all extracurriculars. I joined the Ultimate Frisbee team, staying active and meeting friends. I also joined the student council as the documents and website manager, and got a job with the School of Medicine Business Applications Development (although we referred to it as SoM BAD which is easier and way more fun to say) maintaining their databases and wikis.

It wasn’t long before I realized that I was only learning some Java and C in class (and a lot of computer science) It didn't feel like I knew how to do much practical programming, so I started looking for myself, and found Python.

Python

I don't remember exactly how I landed on Python as an option. But part of my decision was made because Python was much easier to read and understand with a quick look than other languages I was considering. I think Python 3.1 had just come out; I didn't even realize a choice between 2 and 3 was a big deal, so I just picked the latest version. I found Dive into Python 3 which was so clearly written, and then I found Django 0.8 with its amazing tutorial. I loved every minute of learning and experimenting with Python and Django. I was hooked, and once I got my first (and still current) job, I started finding opportunities to use it there instead of Java.

Flask

A year and a half into my job, I got the crazy opportunity to work on a project from scratch, on my own, with little direction. "We have this spreadsheet that we use to track devices on our network, can you make it a web page?" I started writing Django models; figuring out what they needed out of the software and growing my sense of back and front end design.

After a couple months of work, it was a huge hit! Its success led to more and more feature requests rolling in. At this point I had reached the limit of what I knew how to do with Django — it was getting in my way more often than it was making it easy to grow. I looked around and came upon Flask only a few years into its existence. I wasn't really plugged into the community then, so I didn't realize quite how popular it and its author were becoming. Mostly I just liked how it felt with its minimal philosophy of enabling further extension, and how easy it was to learn and switch.

(I will definitely write more about Django and Flask in the future. As biased as I am, I don't really advocate for one framework over another. Hopefully that's obvious from my own story, but I was successful and grew with both.)

As I was writing version 2 of my project while learning Flask and Flask-SQLAlchemy, I started getting more involved in the community. I looked up and answered questions on early Stack Overflow. I followed the issue tracker, reading each new issue and PR, and observed how they were handled. This was my real introduction to open source and community contributions. I started helping out on the issue tracker, I read Armin's blog, and learned more about the intricacies of the Python 2 to 3 transition and his ideas on projects.

Flask and the other projects seemed to be in a bit of a slow period at the time. Even back then, the cliche of "when will there be a new release" posts that many maintainers are exhausted of hearing was already strong. I posted a long answer to one detailing everything I had observed about the project, maintainers, and issue tracker. I'm still amazed to read that post today, both with how well I was able to write, and with how relevant it still is.

A few days later on October 8th, 2015, 19 years after that second grade journal, I got an email titled "Flask 1.0" from Armin Ronacher. "I read your recent comments … and want to run some ideas past you." After freaking out a little, I hopped on a quick chat and by the end of it, I had become a maintainer of Flask. I had a lot to learn from there, but that's a topic for several future posts.

Beyond

Over the years since then, I've sunk quite a lot of time into this endeavor — improving the projects, attempting to grow the team and community, making the work sustainable, going to conferences, and meeting so many awesome people in the Python community. On top of my full time job, I also had another full time job maintaining Flask and taking on other open source projects. I was a moderator of the Stack Overflow Python chat, an organizer with San Diego Python, and a maintainer of too many projects. I was recognized for my work with a PSF fellowship. Somehow between all of that I managed to keep a close group of friends, have hobbies, and meet my wonderful partner Alyssa. (Editor’s note: All I get is a brief mention at the very end? I need to renegotiate my contract, clearly.)

Keeping a balance is hard, and it seems like there are always more items to keep track of. There have been lots of ups and downs but overall I'm thankful for where I am, what I do, and the people I know. I don’t want this blog to be solely a technical outlet, I also want to share fun tidbits from my life and I'm looking forward to sharing more of that here.

#personal