On Learning Python: Pixie Killing, Imposter Syndrome

Adventures with Python continued this past month with the Chicago Python Mentorship Program. I’m pleased to announce significant progress with two projects that have been the focus of my participation, both the inventory control script for my work and a meeting cost calculator for Federal employees. However, the biggest gains in the past month manifest not in lines of code, but rather feeling for the first time that, I can do this.

Over cookies and coffee with Ray Berg, Braintree Developer and Mentorship Coordinator, we carefully unpacked two concepts that have been key to my participation as a mentee: pixie killing and the imposter syndrome. In my last post, I referenced my fascination with the “magic” of technology. Crediting my mentor, Chris Foresman, an amazing brain and computer scientist for Sprout Social, I have been able to learn a tremendous amount about why these lines of code I type into Atom can direct a computer to behave in a certain way– accomplishing complex tasks automatically. While True: this does take some of the sorcery out of technology, it has made me a more competent and confident budding programmer.

Confidence is key to being successful in this (or any field). The Atlantic wrote recently about a confidence gap that exists between equally qualified women and men performing the same work. Making the decision to build my skill set and move towards the tech industry has raised a lot of questions. Can I even do this? What am I doing here trying to talk the talk with so many well-qualified and experienced programmers? Am I an imposter? Imposter syndrome is a real issue defined by the American Psychological Association. And the issue of feeling like a fraud isn’t new, even in the wild west of software engineering.

http://pre11.deviantart.net/a182/th/pre/i/2010/120/b/c/the_imposter_by_yastach.jpg

There are lots of folks willing to help overcome these issues of confidence and self-doubt in the computing community. If you’re a mentee in the program and this is on your mind, let’s talk about it! Or talk to your mentor. Or one of the coordinators. You can also look here. Or here. Or here.

Additionally, this is the first time that I’ve built a program that carries out several complex tasks simultaneously in order to return the desired output. Several times throughout the process I found myself feeling overwhelmed, confused, lost, and generally anguished. But yet again, I was reminded that I’m not alone in facing these challenges. In addition to the helpful community on Slack, Chris introduced me to a new strategic approach to programming, “chunking.” Essentially breaking up the larger program into smaller, more manageable components, testing these components individually, and then, once working integrating them with other “chunks” of code to hack together a working prototype. Chunking is also an excellent way to debug when errors happen. Directing the computer to return information that the program ought to have gathered by certain points in the operation, the savvy programmer can better see where the error might be originating.

Cool, so I learned some stuff. But what have I actually done with it? Part of my job used to involve a tedious, weekly manual review of inventory manifests. The process required me to compare a warehouse and an office manifest and account for discrepancies greater than 500 items. Passing this data into two CSVs allowed me to lean on Python’s built-in CSV library to build a script which completes what previously took hours out of my week in under 5 seconds.

Items that diverge by more than 500 stock are printed.

In the script above, item numbers that diverge by more than 500 stock are printed. Other items that appear on one list but not the other are parsed with the exception handler and printed as a double-check for the operator (me). Shoutout to fellow Chicago Pythoneer and ChiPy member Ryan Koch for his help with exceptions.

A less practical but more fun project nearing completion is a meeting cost calculator for Federal civilian employees. The user enters all the attendees at a meeting, using requests, Python pulls the public employee salary data from an API, and the cost of the meeting in calculated in real time.

I’m having a blast and am looking forward to continuing to share more with my fellow mentees and the Chicago Python community!

ChiPy: Python, Snake Charming, and Civic Tech

ChiPy (pronounced ‘chi,’ as in “chip,” ‘pee’) is a Chicago-based Python user group. Opening their doors to members of all-levels, ChiPy is a supportive space where novice programmers like me can sharpen their skills in a non-judgmental community. I was thrilled to be part of a small group selected to participate in ChiPy’s sixth iteration of of its nationally acclaimed Mentorship Program.

Upon embarking on this 12-week journey into the world of computer programming (which turns 70 today), I was fascinated with the magic of technology. Learning Python, to me, was akin to charming snakes. The earliest records of snake charming can be traced back to ancient Egypt where charmers acted as mystical healers and consultants to their clients. Using their magical ability to charm snakes, snake charming grew into a venerable and respected profession in the ancient world.

Fast forward to modern times, and I find myself enamored with the power of computing. As a full-time bureaucrat and millennial by birth, I find these components of my identity at odds. Why am I struggling day in, day out to use labor-intensive, manual processes on geriatric computer systems when, as Code for America’s Chicago Brigade Leader, Christopher Whitaker writes in his book, we have the power of a 1950s supercomputer in our pockets? As I was completing a weekly manual review of thousands of lines of XML containing addresses and order numbers, and comparing two CSVs side-by-side in Excel, I couldn’t help but think: there has to be a better way.

But how?

As a digital marketer by profession in the public service industry, I’ve been a regular attendee of Chi Hack Night, a weekly civic technology hackathon. Notably I supported the Chicago Nursing Home Search project by translating marketing graphics into Spanish for their launch. I also document the pre-hack meetings for the Chicago chapter of Young Government Leaders. While using my talents to support the civic tech movement is rewarding, I couldn’t help but notice all these cool applications changing the face of how social services and the public good can intersect with modern innovation in the digital age.

Yet I barely had the skills to create a basic HTML website from another developer’s template. Reenter ChiPy.

I am simultaneously humbled and floored to be working with my mentor Chris Foresman, a senior developer with Sprout Social, Ars Technica contributor, former indie record producer, dad, and all-round badass.

In the three weeks that we have been working together, I have used the Python CSV library to automate what was once a tedious, manual process in my day job. Chris’s Purdue computer science background really adds an interesting level of theoretical depth on how each line of code is parsed by the operating system and executed by the computer’s hardware. I find that my mentor’s formal education combined with a successful career as a technology writer and over six years of professional experience as a developer makes for an incredible learning experience. The patience and wisdom that come from having a three-year-old son at home also aren’t lost on me and greatly appreciated.

Next up, Chris and I plan to use Beautiful Soup and Requests to build an app that calculates the cost of meetings conducted by federal employees. Another tool I hope will encourage attention to transparency, efficiency, and efficacy in my line of work.

Image result for requests http for humans

Towards the end of the 12-week experience, I hope to have time left to pick Chris’s brain about APIs.

The racially diverse emoticon: A divisive rift rather than an inclusive gesture

With Apple’s recent announcement of racially inclusive emoticons, some users rejoiced over their digitalized emotional caricature having a similar skin tone. Meanwhile others with more malicious intent have begun to use these emoticons for more nefarious purposes such as slurs and other racially-charged liable. I argue that these new emoticons serve- not to remind us that we have the same feelings- but rather to divide us based on the color of our skin.

The company should’ve never made race a question, making the emojis raceless with yellow faces and leaving it at that.

CreditScore-169x300

photo: WaPo

Thats_Racist_Transparent

Yellow. Have you ever seen a (healthy) yellow person? I don’t mean my mom and grandparents from Taiwan, I mean actually yellow. You haven’t because among healthy human beings there is no such thing. The “classic” yellow emoji represents the corresponding feeling being communicated and doesn’t give much deference to skin color- usually unimportant in body language communication.

photo: USA Today

photo: USA Today

The company should’ve never made race a question, making the emojis raceless with yellow faces and leaving it at that,” writes Paige Tutt in The Washington PostRather than focusing on the purpose of an emoticon- to convey nonverbal expressions, thoughts, or feelings- the consideration of skin tone reminds us that even our emotions have skin color. The new emoji underscore the notion black, Asian, and white people can’t feel the same things nor share the same emotional landscape.