cat /dev/brain

Open Source's Affects On a Career

Summary: I've been writing and maintaining Open Source Software for over 8 years now and it has been simultaneously the catalyst for the success I've had professionally and the misery I feel on a daily basis.

Open Source Software (a.k.a, Free and Open Source Software, F/OSS) has …

Posted on 14 February 2019 by Ian Stapleton Cordasco

Distributing Python Libraries with Type Annotations

Back in December, when I released rush, I struggled to figure out the appropriate way to signal that the library was shipping with type annotations built-in. I've also been working on adding type annotation stub files to as a result, I've had to look around quite a bit …

Posted on 03 February 2019 by Ian Stapleton Cordasco

The Constant Struggle of F/OSS

Everyone has a different motivation when working on Open Source Software. That motivation can change over time both in quantity and in actual motivation. When the Free and Open Source Software (a.k.a., F/OSS) movement began, the motivation was clear: I have hardware and I should be able …

Posted on 28 January 2019 by Ian Stapleton Cordasco

Cultures of Free Labor

There are a lot of companies that rely on Free and Open Source Software (a.k.a, F/OSS) and adoption of their solution within various language communities. Often times, these companies are providing some kind of software or solution as a service and they're basically packaging up the existing …

Posted on 27 January 2019 by Ian Stapleton Cordasco

Getting Started with Gradle and Kotlin

Most people who start using Kotlin are already familiar with Java and its ecosystem. I, on the other hand, am not one of those people and have been looking for easier ways into the Java ecosystem. I found that Kotlin was probably that softer path back. (I wrote Java in …

Posted on 01 January 2019 by Ian Stapleton Cordasco

Understanding Generic Cell Rate Limiting

Recently, I have had the opportunity to work on some APIs that were implementing rate limiting for users. The idea we started with was to implement a limit algorithm that reset after a period of time, e.g., one hour. I researched rate limiting a bit more, and found another …

Posted on 24 December 2018 by Ian Stapleton Cordasco

Making Python Faster with Rust and CFFI, or Not

Recently, I had the (genuine) joy of helping port a Python library with a C extension to work on Python 2 and Python 3. C was my first language that I really understood pretty well and I have some (possibly misplaced) nostalgia for the time when I only ever wrote …

Posted on 07 January 2018 by Ian Stapleton Cordasco

Configuring Docker on OpenStack CI

Over the last few months I've been assigned to work on a project called Craton [0]. The project will be an inventory system that can integrate with most of our popular configuration management tools (Ansible, Chef, Puppet, Salt, etc.) and perform automated remediation. My team started Craton and moved it …

Posted on 19 February 2017 by Ian Cordasco

API Client Design Decisions

Every API client is different. They are shaped by many things, including:

  • the author's personal tastes
  • the language and its conventions
  • the API itself
  • the underlying HTTP library

People have told me that they love and how I designed it. Personally, I feels there is room for significant …

Posted on 22 January 2017 by Ian Cordasco

Some Better Practices For Using Requests in API Clients

As someone who has written a few API client libraries and works on Requests a bit, I realize I have some overlapping knowledge that I need to share. There are some patterns I've found from building my own API client libraries and helping developers of other client libraries. I hesitate …

Posted on 11 January 2017 by Ian Cordasco

Styling Gertty

In my position at Rackspace, I tend to spend a lot of time using OpenStack's instance of Gerrit to review proposed changes. When reviewing OpenStack changes, I prefer keyboard shortcuts and terminal interfaces so I can explore the affect of a change via my preferred text editor. To accommodate this …

Posted on 05 January 2017 by Ian Cordasco

SELinux and Samba on Fedora 25 Server

After setting up a home server running Fedora 25, we wanted to use it's large amounts of storage for images and such. Naturally, we reached for Samba to enable network file storage. We installed and configured it, but neither from macOS, nor from Linux could access files after mounting the …

Posted on 31 December 2016 by Ian Cordasco

On the Importance of Public Email Addresses

I have started to notice a trend. More and more people are aggressively attempting to integrate themselves into open source projects. Some are doing so spectacularly, while others are struggling. And the people who struggle seem to become agitated, aggressive, and their attempts to contribute discourage everyone involved.

Often, when …

Posted on 15 November 2016 by Ian Cordasco

Flake8 3.0 beta Released!

Today, I released Flake8 3.0.0b1. You can try it out by running:

pip install --pre flake8

This marks the start of the culmination of several months worth of work and a couple years of hammock driven development (mostly spent ruminating). You can read about the list of changes …

Posted on 25 June 2016 by Ian Cordasco

Corporations and OSS Do Not Mix

I have been working on Open Source Software (in one way or another) since 2011 (just over 4 years since my first open source commit on a project). When I started writing open source software it was for fun. I was not a Computer Science/Engineering student. Programming was a …

Posted on 02 November 2015 by Ian Cordasco

Betamax 0.5.0 Now With A PyTest Fixture

Tonight marks the release of Betamax 0.5.0. Beyond just reworking the documentation, it also marks the addition of two integrations with popular testing frameworks. Betamax now ships with a pytest fixture that provides an instantiated Session that is being recorded by Betamax. Let's look at how we might …

Posted on 15 July 2015 by Ian Cordasco

Moving PEP8 to the PyCQA

tl;dr pep8's repository has moved from Johann Rocholl's account to the Python Code-Quality Authority organization.

It's my great pleasure to announce that the pep8 project has moved to the PyCQA organization on GitHub and will hopefully enjoy an expanded team of maintainers as a result. This comes after …

Posted on 11 July 2015 by Ian Cordasco

Cutting Off the Internet, Part I

This year I gave the talk "Cutting Off the Internet: Testing Applications that Use Requests" at PyTennessee and PyCon. The recording of the talk is already online with my slides.

At the end of my talk, I promised to write a blog post going into far more detail and covering …

Posted on 14 June 2015 by Ian Cordasco

Type Hints in Python 3.5

You may have already heard about this, but Guido van Rossum has co-authored PEP 484 [1] to standardize a basic set of Type Hints. If you've heard of PEP 484 already, this probably isn't the one-line summary you've heard about. In fact, if you've heard about this already, you've probably …

Posted on 24 April 2015 by Ian Cordasco

PyCon 2015 Recap

This year was my second year attending PyCon North America (a.k.a., PyCon US) and once again I loved every second of it.

tl;dr I didn't see a lot of talks in person but I spoke to a large number of people this year and made some great …
Posted on 13 April 2015 by Ian Cordasco

requests-toolbelt 0.4.0 released

It is my distinct pleasure to announce the 0.4.0 release of the requests toolbelt. This version comes almost a year after the release of 0.3.1.

A lot of work was put into the toolbelt in those 10 months though. We reorganized the documentation to make it …

Posted on 03 April 2015 by Ian Cordasco 1.0.0a1 released

On August 2nd, 2013 I opened issue 122 on's issue tracker. The driving force behind the "Roadmap for 1.0" was to clean up an API that I fundamentally disliked. Yesterday, on December 7th, 2014, I released the first alpha version of 1.0. The following is …

Posted on 08 December 2014 by Ian Cordasco

Retries in Requests

This is the second in what I hope will be a series of explorations of advanced features in requests.

Websites and servers sometimes, misbehave. They can misbehave in a number of ways:

  • read errors
  • large numbers of redirects
  • failure to connect
  • 500 errors

What most people don't know is that …

Posted on 01 December 2014 by Ian Cordasco