It’s Working! ChiPy Mentorship Next Steps

This triumphant scene is from everyone’s favorite installment of Star Wars: when young Anakin Skywalker, played by Jake Lloyd, fires up his pod-racer for the first time– and it works! The sentiment is akin to running a program, again, and for the first time, returning the desired results instead of error messages.

Well folks, 13 weeks later, I’ve gone from a tinkering script kiddie to a Padawan of the Jedi Arts software development. Some really serious interpersonal changes have happened in a relatively short amount of time:

  1. I came to the ChiPy Spring Mentorship Program with low confidence. I’ve always wanted to be a programmer but high expectations and hyper-critical energy from my folks growing up instilled the idea that I couldn’t ever do it.
  2. Surprised that I even got accepted, I began to struggle with imposter syndrome. While not the first time in my life I’ve experienced such a phenomenon, this is the first time that people I respect and look up to have acknowledged the real battle within. My formal mentor Chris as well as Ray the program coordinator, other mentees, and ChiPy members have made me feel welcome, valued, and capable of participating in this environment.
  3. After all these years letting the creative, innovative part of my brain stagnate, for the first time I feel energized, empowered, and excited to be working on things that fuel and thrive off this type of energy.

That said, I’ve also gotten some serious work done through the mentorship program; three projects to be precise. Chances are, without the structure, rigor, and support of the program, I’d still be struggling to get my first project off the ground. So what DID we do anyway?

  1. Used Python’s CSV library to create a script that automates a previously manual, inventory review process at my day job. The labor intensive process took several hours each week to resolve and the simple script has shaved at least 5 hours per week off my workload. Getting this out of the way first not only was a powerful learning experience but gave me the opportunity to free up more time to study and code.
  2. Using the Requests framework and some API endpoints, build a command line tool which keeps track of the running total cost of meetings attended by federal employees.
  3. Hot on the heels of the meeting tracker command line script, my mentor introduced me to Falcon, a microframework for developing APIs. Using gunicorn and Falcon, I turned the command line script into a microservice which accepts JSON input. I am currently working on a React.js front-end which can connect to the microservice. Any front-end tips/ tricks/ pointers would be most welcome! You can access the microservice on Heroku. It accepts JSON input like in this sample.

This Friday I am leaving for vacation in Alaska with my sister. Even though I will miss the final ChiPy meeting of the mentorship, I am so excited to share with you all a video of my progress and celebrate our monumental successes alongside my peers.

There is a lot of momentum right now and while I am still learning not to compare my progress to other people’s, the ChiPy Mentorship has helped me grow as a person as well as a programmer. I am excited to continue learning about this field, sharing my progress, and seeking the advice and camaraderie of fellow developers.

As an avid scuba diver and student of Buddhism, the journey has reminded me of this powerful Confucian mantra.

Falcon, JSON, APIs, Oh My!

This is the final blog post of the ChiPy 2017 Spring Mentorship, but the experience is far from over! I began the program as a timid, self-concious, and novice programmer. Only one of these three conditions remains true. While I might not be an independently amazing, full-stack developer just yet, the weeks which have transpired since the beginning of the mentorship. Not only do I feel confident I know how to reason my way through most Python-related problems, given some time I can definitely even figure out the implementation!

I have learned how to use Git, set up virtual environments, edit my terminal colors in the bash config file, and gained practice making two command-line tools. The struggle to overcome imposter syndrome continues, yet my proficiency is growing– which makes me feel proud of my effort and grateful to the program for the opportunity to …. program.

So what’s new since last time?

I still have two primary projects contained within the scope of the mentorship. The inventory reconciliation script and the federal employee meeting cost calculator. Since we talked last time, the meeting cost calculator has grown a bit. Since the dataset containing federal employee locations, grades, and salaries is incomplete when looking up individuals by name, a workaround is to query the API using the individuals’ grade and step, equivalent to a rank in the armed forces. This method always returns some non-zero integer which directly addresses a major design flaw in the previous version.

The next step now is using Falcon instead of Requests (process outlined in the first ChiPy blog post). Falcon is a WSGI framework which allows for the construction of speedy APIs to handle simple HTTP verbs: GET, POST, PUT/PATCH, DELETE.

Falcon-on-a-perch

A falcon

So why do this if the program was essentially working before using the Requests framework? Sure, the program “worked,” i.e. a proof-of-concept was created. The goal now is to improve usability of the application and even build a JavaScript front-end that can be presented to the group on July 6!

The program working as a command line script. Dreaming of a day when it can be accessed from the web!

Here’s a sneak peek— but take note that it doesn’t work yet! There are even some lovely notes from my epic mentor Chris Foresman for your enjoyment. Chris was generous to gift me 500 hours of Heroku Cloud Application Platform so we can get it launched!

Happy coding!

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.