Tooling a Python Project: Part 2, Optional Tools

In Part 1 we took a look at the basic tools necessary for any Python project.  Now we’ll look at a couple of tools that add additional structure and can help make your development experience as smooth as possible. Black The proper way to format code is an old argument among programmers (see the infamous […]

Tooling a Python Project: Part 1, Basic Tooling

In this two part series, we’re gong to take a look at some of the most important tools to be aware of when starting a new Python project.  For this series we’ll assume you’re using Python 3 since the Python 2 EOL is coming up in 2020. Let’s dive in. Poetry In order to get […]

Should We Use a Full Stack Development Team or Specialists?

Should we hire full stack developers to build the application or hire specialists for each part?  This is a question that often comes up when an organization starts a new development project. In my experience there is no better team than a full stack development team for any new project.  When starting a new development […]

Refactoring Part 4: Implementing New Functionality

In Part 3 we did some major refactoring and added new tests.  Now that we’ve refactored out everything, we’re prepared to remove our dependence on the UI in our tests, refactor the remaining UI pieces, and implement our feature. Introducing a method seam The first step in removing out dependence on the UI is providing […]

Refactoring Part 3: More Testing

In Part 2 we started adding unit tests and refactoring for our new feature.  Now we’ll finish up the rest of the changes and then move on to separating out the UI code so we can generate the appropriate number of boxes to represent doors.  As a refresher, the changes we need to make are: […]

Refactoring Part 2: Tests and Seams

In Part 1 we took a look at how to get our Monty-Hall simulator into a test harness so we could start refactoring to add N doors functionality.  In this part, we’ll look at how we can refactor and write test cases to make our code more maintainable while making new functionality easy to add. […]

Refactoring Part 1: Working with Legacy Code

In this series we will look at how we can improve the design of a piece of legacy code in order to add new functionality and make the code easier to maintain.  First, lets take a look at the code we’ll be dealing with.  https://github.com/aweidner/monty-hall/blob/master/index.html If you’re not familiar with the Monty-Hall problem, take a […]

Sentry: self-hosted installation using Docker

In the last post, we looked at the difference between self-hosting Sentry versus the SaaS option.  In this post, we’ll do a deeper dive on self-hosting Sentry and take a look at some possible pitfalls you may encounter. In order to self-host your Sentry installation, there are a couple of resources you’ll need to look […]

Sentry: Deciding how to deploy for your environment

In the last post, we discussed exception tracking tools and introduced Sentry as a best in breed solution.  Due to its open source nature, Sentry has two options for deployment: SaaS and Self Hosting. SaaS Sentry’s SaaS pricing model has 4 tiers: Developer – Free for a single developer working on a personal project Team […]

A Serverless-less Story

Serverless infrastructure

Somewhere in downtown Manhattan, a combined team of VPs, developers, and operations staff nervously anticipate the open of the markets.  After going through months of testing, they are about to push their trading system into production. As scripted, the market opens and the first trade is made.  The team celebrates the big milestone and returns […]