The blog is currently being ported from WordPress to over 12 years of static pages of content. If there's an article missing that you're hoping to see, please contact me and let me know and I'll prioritize getting it online.

Dynamically Injecting Scraped GitHub Data in a Google Spreadsheet

At the new job, I started piecing together a Google Spreadsheet about our open-source software in various languages, based on frameworks, or example applications. One of the things we wanted to track for each repository was a count of open issues and pull requests we had at GitHub. Turns out Google made this pretty easy, but you have to scrape the repo page first. The code I wrote a scraper in Python using Flask, Requests and BeatifulSoup, hosted the project on Heroku, and works a little like this:

Continue Reading

HOWTO: Get a Mac, Python, Homebrew, PyEnv, and Bash aliases to play nicely

Okay, I’ll be blunt: I’m a Linux guy. I know, shocker. I’ve recently moved to an awesome new job and part of that role will be an area of developer advocacy which will require me to go to meetups and tech conferences from time to time, and talk about how freakin' awesome my new employer is. And they are, srsly. You should sign up and use it if you’re thinking about building a news/activity feed/timeline in your app.

Continue Reading

In support of Miguel Grinberg, I bought the pre-release of 'Flask Web Development'

I’ve chatted with Miguel several times online and we met up in person for the first time at PyCon in 2016. I was excited to meet him in person and started explaining how he might remember our chats, etc., and he interrupted me with “Yes, Ian, I know who you are, I remember you.” Heh. Sorry, let my fanboy show a little. Miguel is the author of the much-acclaimed “Flask Mega-Tutorial” which he explained on his blog was updated for Python 3 and written into book format, sponsored by O’Reilly.

Continue Reading

Flask App, Gunicorn and Nosetests, help requested.

I have a Flask app that’s successfully accepting POST/PUT data via JSON input (tested through curl while gunicorn is running) but running nosetests is failing. (okay, technically I’m using Flask-Restful too…) I’m curious if there’s a better way to debug this than tons of logging/printing, etc. I’ve been using PyCharm for development but its debugger doesn’t seem to actually run any of the tests. I can go into detail on anything that’s unclear but cannot post the project publicly.

Continue Reading

Using SendGrid's Parse API to Email yourself a Trello card

Nutshell: I used a free SendGrid developer account, a free Trello account, and a free Google App Engine account. I added a subdomain to, set its MX record to point to, then modified a portion of py-trello to be appengine-compatible, and wrote some other Python code to answer a POST operation as a webhook. SendGrid would perform a POST operation to my webhook when receiving Email to any recipient at @mynewsubdomain.

Continue Reading