PyLadies ⚡ lightning talk ⚡ PyOhio

Tonight I’m giving a lightning talk at PyLadiesATL called “Five Things I Learned at PyOhio”, and I wanted to share it here in case you weren’t able to make the meeting, or are curious about what I covered!

PyOhio is an amazing FREE conference that was held this year in Columbus, Ohio at the Ohio Union. The dates were Saturday August 1 and Sunday August 2, with sprints on Friday July 31 and Monday August 3. Thanks to the organizers and sponsors for making this unforgettable experience possible, and to each of the speakers for taking the time to prepare and deliver such thoughtful, helpful talks. Below, I highlight a few of them.

1) Diversity? You Gotta Want It

Stephanie Hippo’s talk “You Gotta Want It: Building Up Women in Computer Science” was possibly the most honest, critical, and at times damning talk I’ve ever heard about a group’s journey towards becoming more inclusive, welcoming, and ultimately, diverse. What I loved about Stephanie’s delivery was how very much she owned the fact that her group hadn’t been welcoming. It reminded me that the first step in recovery is admitting you have a problem. But to even be able to admit that problem, Stephanie had to critically look at the way her group was doing things – starting with the data – and have hard conversations with her colleagues about why things should change.



It’s not enough to simply say that you want things to be different. Like Stephanie’s family’s motto: you gotta want it. When you realise that you don’t like the diversity distribution of a given team/organization/project, admitting you have a problem is only the first step. It must be swiftly followed by a commitment to examining critically how things got the way they did, and a resolution and plan to address the issues structurally. And hey, if you can find time to tell the rest of us how you did it, all the better! Thanks, Stephanie, for your amazing talk and actionable suggestions.

Stephanie wrote up her talk and shared it on Medium. You can also follow her on Twitter.

2) The Pomodoro Technique

I thoroughly enjoyed Ann Schoenenberger’s talk “Learning to Learn Python”. Ann covered the challenges and opportunities confronting the autonomous learner from a personal perspective and from many conversations with other women coming to STEM from non-traditional backgrounds. One of the most helpful takeaways I got from her presentation was the description of the Pomodoro Technique. Now, if you’re a Pomodoro devotee and I’m totally butchering it, I apologize in advance. But the gist of the technique, as I understood it, is to work without distraction for 25 minutes, and chase that work with a 5 minute break. Another 25 minute session can come next, with a 5 minute break after.

Ann shared how budgeting time like this had been really helpful in keeping on her track as she learns Python. And while 50 minutes a day of concentrated study isn’t going to turn you into a programmer overnight, over time – and with discipline – it can be a helpful step towards reaching your goal. I have been employing the Pomodoro technique since I learned it from Ann on a near-daily basis and have seen huge gains in my personal study.

Read Ann’s abstract and follow her on Twitter for more.

3) That cool project? It took a lot of time, and there were plenty of bumps in the road.

Learners suffer from a lot of ailments, and discouragement at slow progress can be right at the top of the list.

But the fact is, complex projects do take a lot of time, even for experienced developers. Doug Hellman’s talk “How I built a power debugger out of the standard library and things I found on the internet” was, as he said, less about the actual code, and more about the process of building his project Smiley. When he got started, he asked himself, where do I start? What do I do first? What do I want to accomplish? And then: well, what do I know? He emphasized that throughout the nearly two-year period of building Smiley, he continually checked in with himself about what he already knew and what he wanted – or needed – to learn to make it happen.

In Allen Downey’s book Think Python, he draws a comparison between the act of debugging and programming itself:

For some people, programming and debugging are the same thing. That is, programming is the process of gradually debugging a program until it does what you want. The idea is that you should start with a program that does something and make small modifications, debugging them as you go, so that you always have a working program.

In Doug’s presentation about building Smiley, I heard all of this. So whether you’re a Python expert building a power debugger out of the standard library and things you found on the internet, or a new coder trying to solve a Codecademy puzzle, follow this same process. Start with what you know, make a list of what you want to learn, and continuously be open to the dynamic process. And, importantly: be patient with yourself!

4) Data Science Resources

Since Atlanta PyLadies said they were really, really, really interested in data science topics, I tried to attend as many of these talks as possible. Michael Becker’s “Data Science: It’s Easy as Pyǃ” was one of the standouts. I wanted to include an image of his resources slide since I thought it might be of interest to our PyLadies.


Here are those links:

5) It’s okay to bring exactly who you are to the experience of writing Python


My dear friend Anna recently asked me for a quote about why I love the Python/Django community for her sure-to-be-amazing upcoming DjangoCon talk. There’s so much to love about this community, but perhaps my favorite thing is that we can bring exactly who we are to the experience of building software together. From a non-traditional background as a cook, I’ve felt nothing but enthusiastic welcome from each of you. And I’ve also seen this diversity modelled in my colleagues, who play e-bassoons – like Lars pictured above – sew quilts, bake cupcakes, bring their families to conferences, and more.

It’s important to me that we don’t just have lives beyond our work, but that we share our lives *within* our work. To me, that makes all the difference.

When I was invited to give my first talk at a Python conference – PyTennessee – I knew that I really wanted to bake cookies and have them available before my talk. When I mentioned this to a friend, she discouraged me, saying that I shouldn’t. She was worried that I wouldn’t be taken seriously, or that it would somehow make me look bad.

I know she meant well, but after thinking on it a moment, I decided that I would bring eight dozen cookies. And not only would I bring them, I’d wear a flouncy Betsey Johnson dress while giving my talk. And you know what? Aside from my outrageous nervousness, it could not have been a better experience! I met amazing people, and we ate cookies and talked Python together. What more could you want?

So, please feel invited to bring exactly who you are to this activity. If the recent #ILookLikeAnEngineer debacle taught us anything, it’s that you can look like an engineer, no matter what you look like or what you do in your spare time! And don’t let anybody tell you differently – especially if cookies are involved.

Bonus Round: PyLadies are Everywhere!


Okay, so this one was mostly just for fun. But I wanted to share this image to illustrate that we PyLadies are all over, and we’re doing good things in our community to help women learn Python.


Python in Atlanta: resources for PyLadies

So, tonight I’m giving a talk at PyLadiesATL about doing Python in Atlanta. My goal is to share information that’s relevant to newcomers and experienced developers about what we currently have going on, so that we might all dream together about what we want.

Since a lot of folks won’t be able to make it, but might benefit from having the info available here, I decided to write up my thoughts. For anyone who has ever asked to pick my brain on doing Python in Atlanta: here ya go. This is what I know. Hope it helps – and: please? Help me out by lending your own suggestions. We’re all in this together, after all!

Our current resources

PyATL – a welcoming Meetup for all

PyATL is Atlanta’s Python Meetup that meets on the second Thursday of every month. It is convened by Doug Hellman, a super awesome guy who works on OpenStack and is a prolific open source contributor. He is well known for his work on virtualenvwrapper, a set of extensions to virtualenv. (Virtualenv is what we use to create isolated Python environments to work on our projects – it’s something you usually encounter very early in your Python-learning journey and end up using all the time). Doug is a great resource for all things Python, so follow him at and say hello at PyATL.

I attended PyATL for the first time in January and had such a great time that I’ve been back every month (except for June, when I was at DjangoCon Europe). I even gave a talk on PyLadies there in May.

Unfortunately, not a lot of women attend the Meetup. The first time I attended, there was only one other woman there, and in subsequent meetups there have never been more than three or four women in a room that sometimes inches towards fifty.

And since people don’t wear “beginner” tags on their shirts, it is easy to assume that everyone there is some kind of Python expert, and is so much further along than you. This can be intimidating if you are a new coder.

This was the case the first time I turned up in January, and I was accordingly nervous. I didn’t really understand the talks. But I did sit at a table with others and forced myself to talk about my interest in and growing experience with Python. Yeah, it was intimidating, and I felt like an imposter, but folks were really nice and I’ve actually become good friends with one of them.

If you’re serious about learning and using Python in Atlanta, you owe it to yourself to give the Meetup a try. Right now, it is our most established regular gathering for Python users in Atlanta. It’s a great way to meet others using the language, hear who’s hiring, and of course, learn from excellent talks.

My favorite thing about PyATL is the high quality of the monthly lectures, and of the speaker-educators who give them. Apart from that very first meeting, there hasn’t been a talk since that I felt went completely over my head, no matter how technical, because the speakers are so good at explaining even complex topics in accessible ways. Newcomers may be pleasantly surprised at just how well they follow along.

Likewise, PyATL is also a welcoming place to get practice speaking. Right now, there is a high demand for women to speak at programming conferences on technical topics. But if you’re not a student, you might not get a lot of opportunities to practice. PyATL can be that opportunity, and wants to be. The organizers are very welcoming to and supportive of new speakers. Some of the folks who are really good speakers are great, Doug told me, in part due to the fact that they’ve been giving talks at PyATL over the years and improving each time.

I used my May lecture at PyATL to prepare for giving two talks at DjangoCon Europe in May and June. It definitely helped me sort out some of my nerves!

If you’d like to get practice soon, opportunities are just around the corner. August is PyLadies month at PyATL, and they’re looking for women who’d like to speak. If you’re interested, please let me know ASAP, as they like to announce the schedule a couple of weeks in advance. You can also ask me about available speaker mentor resources. There are a few local, experienced speakers and Python developers who are available to help you practice and work on your talk.

Similarly, September is “beginners” month at PyATL. The talks will be either by or for beginners, and as always, all are welcome – though it’ll be particularly relevant and helpful for new coders.

PyATL Jam Session – a place to code together

PyATL’s format is lecture: you attend and hear talks by local developers. In contrast, PyATL’s jam session is an informal gathering where PyATL members gather to write Python together. You can choose to bring a hobby project or work with a new friend on something else. If you’ve ever stayed for the “sprints” after a tech conference, the jam session will feel familiar. It’s open to anyone who wants to write Python – all experience levels welcome.

The group is very helpfully convened by JR Rickerson, a local Python and Django expert who writes code every day at his company Red Rivet Studios. JR is a huge supporter of Python in Atlanta and is key to making our Django Girls happen in September as a coach (Django Girls? more on that in a moment).

Information about upcoming Jam sessions can be found at the main PyATL page. The next one is Tuesday, August 4 at 7pm, here at Pindrop. You can learn more and RSVP here.

Conference opportunities: PyTennessee, PyOhio, Curly Braces

Conferences are for new coders and experienced developers alike. You don’t have to have written Python for years to get a lot out of a conference: you can network with other developers, learn about new tools and new ways of approaching old problems, and participate as a volunteer.

It’s been my experience that organizers of Python and Django conferences work very thoughtfully to select a variety of speakers and talk topics that reflect the diversity of its audience and will reach folks no matter where they are with Python. I found this to be the case when I attended PyTennessee back in February. I attended a particularly good talk on security by Ashwini (@ashfall) and Chris (@radix) that was great for beginners. Even the talks that stretched my current understanding of Python didn’t go completely over my head. Again, as with PyATL, this speaks to the quality of developer-educators we have in our community.

If you’re curious what its like to attend and speak at a conference as a learner, I wrote up my experience at PyTennessee here and at DjangoCon Europe here.

Several Atlantans are heading up to Columbus Ohio to attend PyOhio later this week. After PyOhio, the next regional Python conference will be PyTennessee in Nashville in February. You are highly encouraged to keep an eye on the official PyTennessee Twitter for more info as it becomes available, and to mark your calendars for February 6 – 8, 2016.

And though not strictly about Python (or any particular programming language), Curly Braces Conf is coming up at the end of November, here in Atlanta. It is a free, local, welcoming one-day conference about the intersection of computing with arts and sciences. Anyone is welcome to pitch a ten-minute talk about something they’ve found exciting, surprising, or delightful about programming or computing. Learn more here.

Learn online with fellow PyLadies at PyLadiesRemote

Deepen your involvement with the global PyLadies movement by attending a PyLadiesRemote event or helping out as a TA. PyLadiesRemote is the Remote chapter of PyLadies. While it was founded to reach the needs of those who doesn’t have access to a local PyLadies chapter, the workshops are free and open to anyone. Follow on Twitter to learn what’s next.

If you have more experience with Python, you can help out as a TA. I had a great time TAing Katie Cunningham‘s Intro to Python class. Since then they’ve had intro to JS and Intro to Django with Emma Delescolle – the latter, just this past weekend.

PyLadiesRemote is organized by the amazing Anna who also writes the Django Girls “Your Django Story” series on the official blog. More on that below! She has always been a huge help and inspiration to me and I can’t recommend her work with PyLadiesRemote more highly.

Further your study with PyLady Lynn Root’s Newcoder.io

It’s great to get started learning Python with tutorials at Codeacademy, Learn Python the Hard Way, and Coursera. But once you’ve finished these, you may find yourself looking for more of a challenge. Fellow PyLady Lynn Root’s newcoder.io might be just the ticket. Designed to help you go beyond tutorials into building projects, you’ll really get a change to flex your growing Python skills. Tutorials on data visualization, APIs, web scraping, networks, and GUI can be worked sequentially and grow in difficulty. Bonus: your confidence as a Python developer is certain to grow as you earnestly work through these.

Need a job in Atlanta? – Companies that use Python – that might want to hire you!

MailChimp is one of our Meetup sponsors and provided the food and drink we’re enjoying tonight. MailChimp helps folks send better email by providing efficient and innovative ways to manage contacts, send messages, and track results.

They’re currently seeking moderate to advanced Python uses in a variety of positions. You can see what they have available here.

Pindrop Security provided the space for us to meet tonight, and is already well-known in the Atlanta Python community for fostering goodwill by providing a place for the PyATL jam session to meet. They have extended the opportunity to PyLadiesATL to meet here long-term.

Pindrop provides solutions to protect enterprise call centers and phone users by combining authentication with anti-fraud detection technology to verify legitimate callers while detecting malicious callers. They’re hiring in a variety of Python positions. Go here to see what’s currently available.

I have friends who work at MailChimp and Pindrop and they seem pretty happy with it!

Kabbage is the #1 online provider of loans to small businesses. Its concept is revolutionary: it allows users to draw against their lines of credit, as frequently as once per day, for anything they need to grow their businesses. Unlike traditional lenders, who rely heavily on credit scores for decision-making, Kabbage approves small business loans by looking at real-life data.

Kabbage seems like a pretty wonderful place to work, and they were featured in “Best Places to Work” by the Atlanta Business Chronicle. Check out careers here.

The Weather Channel is a household name, and they’re hiring. Employees of the Weather Channel regularly attend PyATL as active participants and nearly every month they mention that they are hiring. Check current positions here.

Local recruiters for Python jobs: A representative from Choice Technology Group, Sandy, recently attended PyATL and is interested in speaking with folks who are looking for Python jobs. CTG is located on Auburn Avenue and has a referral program. For more info, check their website.

Some thoughts: can I get a job as a developer without a CS degree?

So you’re teaching yourself to code because you’re interested in it, you wake up thinking about what you want to build, you crave collaboration on open-source projects. And maybe you’re perfectly content to build pet projects to make your personal life easier, or build a blog using Django to highlight a non-technical interest, and so on. But there may come a time in your life where you’re interested in getting a full-time job as a developer.

I have personally heard many success stories of people transitioning from non-technical careers or educational backgrounds into coding full-time. It is a lot of work, but if you are passionate, you can make it happen. While these women aren’t necessarily from Atlanta, it’s worth it to check out the “Your Django Story” blog run by my friend Anna of Django Girls. She regularly highlights women from a variety of backgrounds, often non-technical. These are women who taught themselves languages, tools, frameworks, and ended up building careers for themselves doing what they love. There’s a good chance you’ll find it very inspiring!

And there are plenty of women in Atlanta who have taught themselves to code and found great success. One very inspiring story come from the Ruby community: Kylie of RailsGirlsATL is now giving her “Amelia Bedelia Learns to Code” talk all over the US! And while my friend Melissa does have a degree in CS, her commitment to learning Clojure is hugely inspiring (and I not-so-secretly hope we work together to bring ClojureBridge to Atlanta!).

If you’re a woman who taught herself to code and has found success in the industry, please do speak up at our Meetups. We want to hear your story and learn from it. Just as there were probably loads of folks who helped you on your way, we hope you can do something similar for Atlanta’s PyLadies. Remember, we all rise together!

Stay in touch with Atlanta’s tech community on Slack

Have you heard of Slack? Slack is basically a bunch of chat rooms organized by topic. Private groups and direct messaging is also available.

TECH404 is a group of chat channels for Atlanta area developers, designers, marketers, business people, and other professionals involved in technology. It’s a common space where folks talk about technologies they’re using, successes and failures, job opportunities, and use lots of emojis.

You can find me in the #all-the-nerdy-ladies channel created by Pamela Vickers (@pwnela) of RailsGirlsATL. I’ve also heard and the #jobs and #gigs channels can be helpful for those looking.

Other social/networking opportunities across languages and tools

A simple search on Meetup will reveal lots of different types of tech meetups in Atlanta, from Clojure to Women Who Code. I compiled a list of a few of them and when they meet in this post “Geeky in Atlanta.”

So know you know what’s out there… what do you want from PyLadiesATL?

Seriously – in this talk/post, I wanted to give you ideas of existing resources here in Atlanta for starting or continuing your Python journey. I’ve covered our other Meetups, job opportunities, remote learning resources, and some personal advice.

But I also want to hear your dreams for Atlanta’s Python community. What’s missing? How can we make it better? Do you want our Meetup to focus mostly on talks from local developers? Do you want us to run a concurrent track of tutorials or workshop series? Please, let me know!

We have a few ideas to run by you:

Demystifying Computers: they’re Not Magic

“Computers Aren’t Magic” is a series of workshops by local developer Shawn Boyette of Curly Braces Conf. These day-long workshops cover computer hardware, the internet, Linux, and programming. This series will be held as a collaboration with PyLadiesATL, so keep an eye on our Meetup page for more details as they emerge. The first one on hardware was held on March 21, and will be reprised.

Using git and Github

Do you have a Github account? Do you use it? Are you familiar with these words?

Github is a powerful tool for sharing your own open source projects so that others can work on them. It also gives you access to the open source work of others. You use git on the command line in order to make changes and do loads of other things.

I’ve used Git and Github to manage my own projects and to contribute to others’. They’re critical tools for open source contributors, and lots of companies use Github to track their work.

At DjangoCon Europe I attended a workshop by Daniele Prociada called “Don’t Be Afraid to Commit”. It’s a workshop and tutorial for Python/Django developers who want to contribute to projects, but need grounding in the tools required to do so. It takes participants through the complete cycle of 1) identify an issue in a project; 2) writing a patch with documentation; and 3) submitting it, using git on the command line and Github.

If this sounds like something you’d be interested in learning, please let me know! I would use Daniele’s curriculum for this workshop, and it would last about a day (food provided).

Django Girls in Atlanta!

Django Girls is a 501c3 non-profit that empowers women all over the world to host workshops that teach women to fall in love with programming. The curriculum is entirely free and open source and available online. Check the tutorial out here. I am organizing Atlanta’s first instance of Django Girls to be held – fingers crossed & we secure our location! – Friday, September 25 and Saturday, September 26.

If you identify as a woman, know English, and have a laptop, you can apply for the workshop. You don’t need any prior technical knowledge. This class is for absolute beginners.

As a workshop attendee you will:

  • participate in a one-day Django workshop (with installfest the night before) during which you will create your first website
  • meet people from the industry and learn more about programming
  • be fed by us – all meals provided during the workshop

The workshop is free to apply and attend, but we only have space for thirty people, so please follow us on Twitter at @djangogirlsATL for the latest news. The official Atlanta Django Girls website will be up on August 1, and applications will open soon after that.

Do you use Django or Python for work or fun? If so, please be a Django Girls coach! You do NOT have to be a Django expert in order to help out as a coach. You must simply be willing to work through the tutorial with 2 – 3 attendees. If you’re interested in helping coach, please let us know at atlanta (at) djangogirls (dot) org.

We are also looking for sponsors. Sponsors are prominently displayed on the Django Girls Atlanta website. If your company agrees that the IT industry can greatly benefit from bringing more women into technology, and you want to be an active part of helping more women learn to program, please contact us at atlanta (at) djangogirls (dot) org.

What else?

I’m sure you have other ideas – let’s hear ’em! And let’s work together to make Atlanta a Python community worthy of women.


Geeky in Atlanta

So, one of my responsibilities as a co-organizer of PyLadiesATL is determining a new regular date for a our monthly meetings! I reached out to some folks via Twitter to get a sense of Atlanta’s existing social opportunities across a variety languages. I figured why not go ahead and share what I’d learned, in case anyone else is interested?

Numbers below refer to the first, second, third, or fourth instance of a given day in a month. For example, Atlanta’s Clojure meetup, Atl-Clj, meets monthly on the second Tuesday. Let me know if this is unclear, or if there’s a better way of organizing!

Our PyLadiesATL Meetup page will be updated when we’ve picked our new date. Links to Meetup pages, where applicable, included below.

1: AllTheNerdyLadies.com monthly social hour

1: PyATL Jam Session monthly meeting
2: Atl-Clj, Atlanta’s Clojure Meetup, monthly meeting
3: WomenWhoCode Atlanta monthly meeting

2: ATLRUG: Atlanta Ruby Users Group, monthly meeting
4: Rails Girls Atlanta monthly meeting

2: PyATL: Atlanta Python Programmers monthly meeting

No meetups on these days!

Please let me know if there’s anything that should be added. Thanks so much in advance!


the trouble with to-do

Do you ever find yourself writing a to-do list, and in the top line, instead of writing something to do, you write something you’ve already done… just for the satisfaction of immediately making a mark beside it?

I do this a bit more often than I would like.

I did it this morning, in fact.

To the right, you see my (actual, today) to-do list. I write it like a letter, with the date at the top, in a beautiful book. To the left is something I started today in response to feeling overwhelmed by all that seemed ahead of me. Not a list of to-do, but a list of things done.

As a learner, I often feel as though I am in a transitory period. I’m in one place, and I’d like to be in another. The process of getting there is one of growth, change, and transition. It’s also often painful.

This liminal space – unsatisfied with the here, and certainly not yet there – can feel very vulnerable. Perhaps you’re impatient for signs of progress, tempted to give up when they come too slowly, or not at all. Or maybe you feel that the road ahead is too long, the journey too arduous: there’s just too much to learn and do, so why try? For an extra dose of demoralization, try comparing yourself to others who have already accomplished what you’re still trying out. Is it even more insidious? Do you lack confidence in your innate abilities, your potential to learn, your stamina, or find it hard to ask for help?

As someone learning to code, I have felt all of these feelings a dozen times or more. I become dispirited and feel disempowered: there’s too much to do, I’m too behind, I’ll never catch up, I’m not good enough.

And yet I’ve noticed that part of what informs this hopelessness is not taking stock of the small, incremental steps I’ve taken towards my goal. I focus so much on the to-do, that I fail to acknowledge what has already been done.

It sounds trite, acknowledging that a journey of a thousand miles is made up of steps. But for some reason, it’s all too easy to lose sight of those steps.

By writing my dones today, I bring awareness back to the ways I am moving towards my goals, even when progress seems achingly slow, or depression and anxiety creep in and tell me I’ll never make it. This blog post is another sign of that, an embattled cry against those forces.

I hope that if you’re struggling with a project, you’ll take comfort in these words, and perhaps even a few moments to write down all that you have (already) accomplished today. A few deep breaths and cup of tea can help, too.

When you return to your work – and you will – I hope you return with new energy, clarity, and hope.

Looking for more inspiration? I highly recommend checking out my friend Anna’s blog. She’s got a few great posts up right now: Understanding Computer Words: What Is A Decorator?, Coding Made Me a Better Problem Solver, and My Favorite Python Learning Resources.

Also on the learning journey? Your best read today will certainly be Aubrey Howell’s post at Keen IO’s blog: “Don’t Let Anyone Tell You That You Can’t Be A Developer.” Seriously.



PyTennessee was last weekend and it was amazing! I was privileged to meet so many incredibly bright, kind people, hear great talks, and was honored to give a talk of my own. Below I share highlights from the weekend and a round-up of all the conference resources I’ve collected thus far: links to talks, slides, video, etc. Hope you enjoy and find this useful!

First things first:


The venue was gorgeous. The food was delicious. The hotel was cozy, clean, and convenient. Conference check-in was easy and quick. The “red shirts” volunteers were helpful and kind and always there when you needed ’em. Organizer Jason, his delightful wife Denise, and his lead volunteer coordinator William put together an incredible event. Thank you.


Friday night EventBrite treated the PyLadies to dinner and conversation at their Nashville HQ. Lynn Root gave an inspiring, heartfelt version of this talk entitled “I’m faking it.” If you didn’t get to hear her speak, I highly recommend reading the post.

Probably the funniest slide from PyTennesee weekend. From Ian‘s “Cutting Off the Internet: Testing Applications that Use Requests” Saturday afternoon.

Also hilarious (and fascinating, informative, and generally fun): Kyle Kelley’s keynote on Docker for Ephemeral Workloads. His slides are here.


Chris and Ashwini gave a thoroughly engaging, beginner-friendly talk: Introduction to HTTPS: A Comedy of Errors. Love how expressive Chris is! Here are the slides.

Folks really loved Chris‘ talk “Purely Functional programming in Python“, but I was at Becky‘s so I missed it. Thankfully he shared slides. Hopefully someone will eventually see fit to record him giving this one – looks like a lot of fun!

Bill Israel
gave a thoughtful, accessible talk entitled “Function Decorators: How Do You Even“. His slides are here.

It was a privilege to hear Becky talk about her passion for languages as she persuaded us all “Why Your Next API Should Be Designed By a Linguist“. I love it when people bring their whole selves to Python. Her talk was recorded, but has not been posted… yet!

Photo (and creation!) by Kevin Cox, @VintageBinary

Photo (and creation!) by Kevin Cox, @VintageBinary

Legos all weekend with Lamp Post Group! Lamp Post was PyTennessee’s champion sponsor, not only providing funds to make the conference happen, but making an additional donation of $500 to PyLadies! I’m certain I’m not the only person who got goosebumps when Lucky made the announcement before Lynn’s keynote Sunday evening. It was a total treat to spend time building and chatting with Lamp Post Group’s Lucky and Ben.


Dear Ian, thank you for your long arms, Sincerely, me & my love of selfies. With Ian and the loveliest lovely Anna.


Anna’s talk Django Girls: A Success Story! She has inspired me to host a Django Girls workshop in Atlanta! She shared her slides here. And you’re already following her on Twitter, right?

I’m sure you’ve already heard about my adoration for Anna, but I’ll share again, here: she was a huge inspiration for my talk and has been instrumental in my Python learning journey. She is inspiring, kind, and an amazing mentor. I’m so glad she’s in my life!

Photo by Aubrey Howell (@simplyaubs)

Photo by Aubrey Howell (@simplyaubs)

Ed Finkler’s talk “Stronger Than Fear: Mental Health in the Developer Community“. I’m so thrilled to share that you can watch it here! The slides are here. Ed’s talk is particularly meaningful to me because, as I shared during my talk, I also struggle with depression and anxiety. I am glad PyTennessee was the kind of conference where we could bring our very real struggles into the room in a tender, compassionate, and constructive way.

Meeting James Dozier and learning that my talk was an inspiration for his new blogging project, Think Code Make! He was also inspired by Aubrey Howell’s (hilarious/amazing) talk “Shitty Code Leads to Pretty Code: Reconciling Development with Reality“. I was SO BUMMED to miss it, but thankfully they were able to record. I’ll post the link here when it is ready! It’ll be one to watch, y’all, for sure.

Meeting Elizabeth Wickes and learning about her Guided Self-Study Lesson Plan for Python. She has put a LOT of thought and effort into teaching Python to folks from non-technical backgrounds and would make a great future speaker (hint hint, conference organizers!).


Lynn‘s keynote Sunday evening. It was great to hear more about her journey and how Spotify uses Python and open-source tools. Plus, she keeps us smilin’.

PyTennessee resource round-up

Since I wasn’t able to attend every talk, I made a list of resources gathered from Twitter for future reference. Let me know if there are others, and I’ll add them!

Resources for fellow Atlantan Daniel Rocco‘s talk “Clean and Green: Pragmatic Architecture Patterns” are here! Includes links to the screecast, slides, and clean architecture resources. I’m glad I got to hear his talk at PyATL, cuz he was up against me at PyTN!

How to really get git” by Susan Tan: slides here!

A. Jesse Jiryu Davis gave an inspiring talk called “Dodge Disasters and March to Triumph as a Mentor“. I’m so glad he shared a written version of his talk here!

Analyzing Data with Python” / “Twitter Network Analysis with NetworkX” by Sarah Guido!

Slides and a post for Michael Herman‘s talk “Docker In Action: fitter, happier and more productive“. Oh, and while we’re at it, some helpful resources and tutorials from the RealPython.com team.

Matt O’Donnell‘s slides for “Behavior Driven Development with PyQT“.

A little bit of video of the intensely charming K Lars Lohn during his talk “The Well Tempered API”: Baroque Cooperative Multitasking

Here’s a great blog post from Jamie Phillips about his PyTennessee weekend.

I also made a Twitter list of some of the folks I heard/saw/met at PyTennessee. I’m sure it’s incomplete, though – please let me know if there are others who should be added!

Finally, I had a great time sharing my own story – and cookies! – Sunday afternoon.

Thanks to everybody who came out to listen, eat cookies, ask questions, and just generally be supportive. I enjoyed connecting with all of you!

For those who are curious, my next post to Coding with Knives will be a written version of my talk. Stay tuned!


LPTHW: Exercise 4: Variables and Names and Knives

And we’re back!

I had to take a couple weeks’ break from Coding with Knives and other creative projects because I’ve been dealing with some things in my personal life that have demanded just about all of my available energy. Awesome friends and deliberate self-care means I’m slowly getting back to a place of relative normalcy, but like all things, it’s a process… and there are bumps in the road, plenty of ’em. The key is to stay present and keep moving forward.

LPTHW’s exercise four introduces variables. In this exercise, we print simple phrases with variables inserted:


Zed also has us run Python from the terminal as a calculator, using variable names to do calculations.


Really just not a big deal at all.

So what else is not a big deal – at least, once you have the right stuff? Chopping things. That’s right, today I’m talking my namesake: cutting boards and knives.

First, cutting boards. What are you currently using? The countertop? Decorative glass? The plate you intend to serve your food on?

Over the years, I’ve seen all of the above – and each time, I shuddered. If YOU answered YES to any of the above, you should not feel ashamed or judged, but you should stop cutting things immediately, run to a store with a home goods department, and purchase a set of bamboo cutting boards.

I love bamboo because it’s renewable, cheap, sturdy, and easy to clean. Bamboo is also incredibly strong! I have been using the same suite of bamboo cutting boards for years with a very sharp chef’s knife and they are in fantastic condition. As an added bonus, I’ve found that bamboo does not seem to retain as valiantly as my solid wood cutting board the odorousness of things like garlic, onion, and ginger. This is helpful when you use these ingredients frequently.

Please note that while my cutting boards have seen all manner of plant matter, from kohlrabi to wakame, I do not handle raw meat in my kitchen (or ever) so I can’t speak to that experience.

Moving onto knives!

There’s a reason you see the same knife in all of my pictures:

Chiffonading collard greens

Chiffonading collard greens

Slicing into spaghetti squash

Slicing into spaghetti squash

Dicing roasted peppers

Dicing roasted peppers

This is because for 98% of tasks – cutting, slicing, dicing, and mincing – I use the same high-quality chef’s knife: a 185mm Super Series MAC SA-70 Utility Knife.

MAC Knife SA-70, Utility Knife, 185mm blade

A chef’s knife is by nature a multi-purpose tool, intended to help you accomplish a variety of tasks in the kitchen. It’s absolutely worth investing in one and paying to have a professional sharpen it. (Yes, I’m in the camp that suggests you don’t sharpen your own knives – deal.) I use MAC knives because once upon a time my friend Matt let me borrow his to prepare multi-course meals for two hundred people and I fell in love. I received my own as a gift in 2010 and have been using it almost daily since. Here’s a link to see the series and another to consider purchasing.

The MAC Knife is not inexpensive, and I’m convinced that anyone who cooks regularly should make the sacrifice of $100 or so for a decent tool. But if, for whatever reason, you are not able to spend that kind of money right now, I suggest a suitable alternative: the IKEA 365+ GNISTRA Vegetable Knife.

IKEA Gnistra Vegetable KnifeCompared to my svelte MAC knife, it is a bit heavier and clunkier, but make no mistake: this $15 bargain is a versatile knife that takes well to professional sharpening. And it’s better made than you might expect. The first time I had a professional sharpen my knives, he of course oohed and aahed over the MAC. But when I pulled out the IKEA knife, he admitted that it was much better quality than he anticipated.

So there you have it! Cutting boards and knives: essential. Make it happen!


LPTHW: Exercise 1: A good first program and roasting vegetables

Howdy folks. Today I’m writing to you from Dr. Bombay’s Underwater Tea Party (real name) where I just finished Exercise 1: A good first program.

To be honest, this is the fourth time I’ve worked through this exercise. I started in early 2012 and have had several stops and starts with LPTHW since. (But this time it’s stickin’.)

I was surprised when I actually made some mistakes! I realised I’d used the GUI to create a “Learn-Python” folder in my home directory but I hadn’t cd’ed into it before trying to run my “good first program”. But when I tried to cd into it, it wouldn’t let me! A-ha: “cd learn-python” won’t work, because Python is case-sensitive. Little slip-ups, but important to the learning process.


It feels weird to call ex1.py a “program” because all I’m doing is printing some lines. In the extra credit Zed has us comment out our working using #, but that’s really the extent of this chapter. I feel like a “program” should do something more exciting.

While we’re here, let’s chat about something similarly basic in the kitchen: roasting vegetables.* It’s easy and something you should feel empowered to do.


You can roast eggplant.


You can roast peppers.


You can even roast whole pans of stuff.

There are too many blog posts on the internet about roasting red peppers, heads of garlic, acorn squash, etc. I don’t intend to add to the bulk by making a simple concept fussy, or insisting that every vegetable deserves its own special treatment. Sure, you can do that if you’d like — and sometimes it’s appropriate. (Feel free to Google if you’re curious.) But for your average just-got-home-from-work, wanna-be-doing-something-else, need-vegetables eater, what I am about to explain is more than sufficient.

Roasting is not complicated. The most you’ll have to think about, really, is how long you want to roast a given food. By this I mean: tender foods (like eggplant, summer squash, very young fennel) will need less roasting time. Firmer foods (potatoes, winter squashes) will need a little more. If you’re just roasting a sheet pan of acorn squash, it’s going to take somewhat longer than a sheet of asparagus. Acorn squash takes about an hour. Asparagus takes about 25 minutes.

But here’s the thing! You can actually roast firmer foods with more tender ones, as long as you cut them into smaller pieces so they’ll cook faster. See the example above: those are fairly small potato pieces (they’re also an especially tender variety, hence my choice).

Cutting pieces of food uniformly is a basic cooking skill you should practice. Chefs don’t just do it because it looks good. It also ensures that your food cooks more evenly.

So! Roasting!

Here’s how I do it:

  1. Prep vegetables. (Clean, core, chop uniformly, etc.)
  2. Pre-heat oven to 400 degrees Fahrenheit.
  3. Gather all vegetables in your largest bowl. Drizzle generously with olive oil and sprinkle with salt and pepper.
  4. Spread the vegetables out onto a heavy-duty rimmed baking sheet (jellyroll pan).
    1. Note: you will not need to grease your pan because you have already generous coated all of the veggies with oil.
  5. Roast for 35 – 45 minutes total, removing them from the oven every 15 minutes to stir (or in the case of large pieces, turn over).
    1. I recommend using the thinnest metal spatula you have to scrape up all the roasty goodness.
    2. Larger pieces (like halves of peppers) can be negotiated with tongs.
    3. Tender foods will take less time.
    4. Firmer foods will take more. Adjust as needed.

I like to play around with a combination of olive oil, soy sauce, maple syrup, and dijon mustard for potato-and-onion-based roasts. Try it!

*We are not having a conversation about how eggplants and peppers are technically fruits.


Free libraries and free software

Today’s post doesn’t have anything to do with Learn Python The Hard Way, but I thought it was worth sharing all the same.

It’s about my love for free software.

Today I got an itch to make some beats. I’ve been spending a lot of time in the gym lately and I’m never without my MDR-V6s. I know, I know — it’s terribly uncool to be dancing on the treadmill with giant headphones on. (But they’re the best, y’all!) My gym mix is ever-changing and all about energy. This morning I enjoyed some new Trust, old Skrillex, way too much Nikki Minaj, a few songs I heard on RuPaul’s Drag Race, and always, my girl Speakerfoxxx. I love a heavy, driving beat to keep my moving forward and push myself to the limit. (Go girl, go girl, go girl.)

So, I thought — why not try my hand at it? It’s probably really hard, I thought — but I might have some fun.

Because I’m all about free software, all I had to do was open up my terminal and issue one simple command:

get-itOh, apt-get. You are so very delightful.

In about a minute, it appeared. My heart fluttered and my face broke out into an irrepressible smile. At the risk of sounding silly, I shared on Twitter: “gosh, i love free software. sudo apt-get install x gives me the same feeling as walking into the library as a kid: the world is mine.”


But that was exactly it. When I was a kid, the library was my favorite place. I exhausted the school’s collection and begged for trips to local branches. I was a little local library connoisseur, calling them by their full, proper names, and even noting the county system — yes, I was a nerdy kid!

I craved the promise that the library held: the world could be mine. Who knows what I might find in the stacks, between the pages?

That feeling rushed me when I installed LMMS. And it could have been anything. The other night, I couldn’t figure out how to do something, so I googled and found that I needed to install something very small. Though it didn’t work and I had to make another choice, it felt profoundly empowering to be able to even try. It’s thrilling to know that the work of some of the world’s brightest, most generous and principled developers is always out there for me to discover when I need it, just like the great works of literature that lined the shelves of my childhood libraries.

And LMMS? Well, I’m now the proud creator of a fifteen-second track that is actually pretty enjoyable, perfect for a first attempt.

Thanks, FOSS.


Bash for beginners / most common conversions

Recently I took off to Chattanooga to spend the day drinking coffee, playing cards, eating good food, and… learning Bash? Yep. Turns out craft coffeehouse Brash provides the perfect backdrop for making flashcards (henceforward known as bashcards) and gettin’ down the basics.

Featuring Android: Netrunner. I slay as Andromeda.

a few of the bashcards

I’d already worked through the Command Line Crash Course‘s terminal-based exercises, but I wanted some practice drilling. Thankfully my beau was willing on the long, slow drive back from Chattanooga. I didn’t have too much trouble, since I recognized many of the terms from my first attempt at Learning Python the Hard Way. Only xargs made me go argh! I definitely feel like I have a good enough handle on the basics to move on to the first chapter, so I’ll cover it in my next post.

For today’s cooking tip, I want to share a few cooking conversions and measurements that I use all the time. Like Bash above, just memorizing these will make your life so much easier. Say you’re making a salad dressing and it calls for all kinds of “tablespoon this”, “teaspoon that”… and you want to triple the recipe for a party. Are you really gonna stand there and carefully measure out 9 tablespoons of sticky tahini, when you could just do a generous 1/2 cup* and call it a day?

Here are the measurements I use all the time:

Dash = 1/16 of a teaspoon. This is nothin’. This like a dustin’. When you see a dash of something, consider that it’s basically an optional ingredient. …Just kidding. …sorta.

Pinch = 1/8 of a teaspoon. This is quite a bit more than nothin’, so don’t discount it. It’s okay to literally pinch a bit of the spice and toss it in (to your mise en place, remember?), but if you want to measure it out, that’s okay too. (If you’re working with cayenne or another pungent spice you might actually prefer to measure it.)

One teaspoon = 1/3 of a tablespoon.
Two teaspoons = 2/3s of a tablespoon.
Three teaspoons = 1 tablespoon.

It’s so helpful to know the above when you’re reading a recipe that says “5 teaspoons” (seriously, I hate that). If you see “5 teaspoons”, just think 1 tablespoon plus 2 teaspoons (or, if you’ve got some experience at eyeballing, a 2/3s-filled tablespoon).

Two tablespoons = 1/8 cup.
Four tablespoons = 1/4 cup.
Eight tablespoons = 1/2 cup.
Sixteen tablespoons = 1 cup.

When I see a recipe that calls for four tablespoons I know they need an editor. Quarter cup y’all!

Your 1/3 cup measure go missing? No big deal. Just measure out 1/4 cup plus 4 teaspoons (or 1/4 cup plus 1 tablespoon plus 1 teaspoon). Note: the internet believes that 1/3 cup equals five tablespoons. This is not true, but it works for most purposes. 1/3 cup is actually slightly over five tablespoons (hence the +1 tsp above).

Doubling a soup? Memorize these:

Pint = two cups
Quart = two pints (4 cups)
Gallon = four quarts (16 cups)

So there you have it: a beginner’s guide to some of the most common and helpful cooking conversions. While I highly recommend that you memorize the above, you can use Google if necessary. Just specify what you’re looking to convert (i.e., “How many ounces in a pint”) and Google will help you out.

googleGoogling: not just for learning Python!

*technically 9 tablespoons = 1/2 cup + 1 tablespoon, but I’ve been in this gig long enough that I’m lazy. I do “scant” for just under a given amount and “generous” for just over.