Software Development

General software development principals and tools. Receive insights applicable to building any application.
Python
29 Nov 2018

The Many Faces and Filetypes of Python Configs

Cleverly (or uncleverly) configure your Python project using .ini, .yaml, or .env files.
The Many Faces and Filetypes of Python Configs

As we cling harder and harder to Dockerfiles, Kubernetes, or any modern preconfigured app environment, our dependency on billable boilerplate grows. Whether or not that is a problem is a conversation in itself. The longer I keep my projects self-hosted, the more  I'm consumed by the open-ended approaches people take to manage their project configuration variables.

Full disclosure here: this post is probably about as boring as where you see this heading. Today, I'm here to talk about Python Environment and general configuration variable handling.

Pick Your Poison

Someday, each and every one of us will die. I'm referring of

Continue Reading
NoSQL
15 Nov 2018

MongoDB Cloud: "Backend as a Service" with Atlas & Stitch

MongoDB's silent transformation from an open-source database to enterprise cloud provider.
MongoDB Cloud: "Backend as a Service" with Atlas & Stitch

You may have heard me drone on here and there about MongoDB Atlas and MongoDB Stitch. Previously, I hacked together an awful workflow that somehow utilized Tableau as an ETL tool to feed JIRA information into Mongo. I'd like to formally apologize for that entire series: I can't imagine there's a single soul on this planet interested in learning about all of those things simultaneously. Such hobbies reserved for masochists with blogging addictions. I apologize. Let's start over.

This is not a tutorial on how to use MongoDB: the database. I have zero interest cluttering the internet by reiterating what

Continue Reading
JavaScript
06 Oct 2018

Compile Frontend JavaScript with Babel and Gulp

Using ECMAScript functions on the frontend the quick and dirty way.
Compile Frontend JavaScript with Babel and Gulp

NOTE: This post has not aged particularly well. This is made evident by the presence of the word "Gulp" present throughout the post.


As you may have already deduced from the occasional glaring holes in my programming knowledge, I haven’t spent as much of my life programming than, well, anybody who haphazardly threw away an 8-year product management career. Apparently, a lot can happen in 8 years... especially when it comes to JavaScript.
Putting aside that whole server-side  NodeJS thing or whatever it’s called, there’s years worth of mindfucks for those of us who fairly recently returned

Continue Reading
Flask
30 Sep 2018

Configuring Your Flask App

Tips on how to neatly and securely configure your Python Flask application.
Configuring Your Flask App

Becoming minimally familiar with Flask is often an exhilarating experience. To Discover Flask is to rediscover instant gratification itself: all it takes is a mere few seconds for anybody deploy a Python application, alive and well on a development server. I believe the cliche that the hardest part of anything is getting started, so it's no surprise that Flaks can get the imagination brewing.

Indeed, there's no monolithic settings.py files in Flask (thank god). In fact, if you're to take Flask's documentation seriously, they might have you think that configuring Flask can happen any where in your code, any

Continue Reading
Flask
19 Sep 2018

The Art of Routing in Flask

With great flexibility comes great responsibility. Build smarter Flask routes using this in-depth guide.
The Art of Routing in Flask

It isn't often you find somebody sad or miserable enough to detail the inglorious features of web frameworks, such as routing. This is understandable: flexible route creation is an expected part of any framework, and isn't exactly the first thing that comes to mind when thinking about sexy new tools.

My personal frustrations flared with the official release of Flask v1.0. Version 1 of Flask resulted in many fundamental changes to the framework functions, which is usually fine with the proper documentation. As it turns out, coming off the heels of a breaking release is a bad time to

Continue Reading
Flask
17 Sep 2018

Organizing Flask Apps with Blueprints

Introduce structure to your Flask app by utilizing Flask's Blueprints.
Organizing Flask Apps with Blueprints

Flask tutorials have an occasionally nasty habit of oversimplifying what actual Flask apps should look like. Many newcomers to Flask are likely under the misconception that having a single, giant app.py file is a totally normal and acceptable way to build an app. And why shouldn’t they? Almost every tutorial is structured this way, which is fine for simplicity’s sake, but it seems as though an asterisk is missing, which should read: *This is not a good way to build applications.

Good software is organized by separation of concerns. It doesn’t make much sense to keep

Continue Reading
Atlassian
31 Aug 2018

Recreate JIRA Service Desk in Python & Flask

When SaaS doesn't cut it, beat it down and take everything its got.
Recreate JIRA Service Desk in Python & Flask

When it comes to SaaS products in the realm of Service desks, JIRA Service Desk is at the very least, just as powerful as the next solution (Zendesk comes to mind). This naturally begs the question: Why is JIRA Service Desk's pricing model roughly 1/10th of that of it's competitor?

The answer lies within ease of use, but more importantly, presentation. While Atlassian's cloud offering is slowly playing catchup, Atlassian as a company has never quite seemed to nail down the importance of a friendly user interface, nor the importance of this when it comes to worldwide adoption. To

Continue Reading
Python
30 Aug 2018

Pipenv: Better Environment Management for Python

Effortlessly manage your Python environment and dependencies.
Pipenv: Better Environment Management for Python

As a shoutout to my fellow Data Engineers, I'm going to take a step back from typical data science workflows. When we build standalone applications, we probably don't want to be tossing around Miniconda's 720 software packages in production, nor would we ever want to commit the source of any dependencies to Github. This is where Pipenv comes in handy: it serves as both an environment management tool, as well as a sort of package.json for your Python app.

The combination of virtualenv and virtualenvwrapper have reigned supreme for some time. While this combination is a totally fine solution,

Continue Reading
Flask
15 Aug 2018

The End-to-End Guide to Handling Forms in Flask

Learn to create form logic and templates in Flask with the Flask-WTForms library.
The End-to-End Guide to Handling Forms in Flask

Happy Tuesday everybody! To start this week hot, let's talk about something that everybody hates: forms. The only thing more painful than filling out a form is creating one, much less a functional one with feedback. Listen, if you're into creating pleasant form UI experiences, you're probably into some freaky shit. Call me.

Flask's youth is an advantage in one regard, in that there are only so many libraries available to handle any given task. In this case, there's only one: the aptly named WTForms.

If you don't have a pressing need to create forms in Flask, I won't be

Continue Reading
Flask
31 Jul 2018

Using MongoDB Atlas as your Flask Database

Since you prefer using Python and Flask, I’ll assume we both prefer enjoyable dev.
Using MongoDB Atlas as your Flask Database

It's been roughly a year since MongoDB launched their Stitch: a "back-end as a service" cloud offering. I've been tinkering with Mongo on the cloud ever since... Alright fine, "tinkering with" may better be described as  "accidentally became dependent on it after developing new features in production environments," but I can't really complain thus-far. If you're not familiar, MongoDB Atlas is MongoDB's cloud-hosted database offering; that is to say, the same as any other MongoDB database, except very expensive.

The jury is still out on how MongoDB Atlas and its counterpart Stitch will fit into the picture of next generation

Continue Reading
Flask
23 Jul 2018

Serving Frontend Assets in Flask

When Python developers manage presentation layers.
Serving Frontend Assets in Flask

If you're familiar with Django (or Python to any extent), you've probably accepted the concept of what Python guys refer to as "static assets." Let's take a moment to consider this: at some point in Django's conception a design decision was made: all JavaScript, CSS, or any assets pertaining to the presentation layer belong tucked away into an isolated corner of the framework. Alas, it was decreed: henceforward, only two types of code exist in the universe: Python, and not-Python. Anything that isn't Python is simply a "static" asset to be dealt with either locally or via a CDN somewhere.

Continue Reading
Flask
20 Jul 2018

Powerful Page Templates in Flask With Jinja

Work with markup that writes itself using Flask's built-in Jinja library.
Powerful Page Templates in Flask With Jinja

So you want to build a web application in Python, eh? Hasn't anybody told you... Python is SLOW! Python is subject to CONTEXT SWITCHING! Oh, the HORROR!

Chances are most of these people aren't well-versed in Python at all. I enjoy creating web applications in Flask more-so than I do in Node. Even if we were to put aside somehow the thousands of potentially malicious Javascript libraries needed to stand up a simple app, or the decades of legacy knowledge needed to tolerate the JavaScript ecosystem without going insane: the simplicity of Flask paired and its libraries get the job

Continue Reading
Flask
08 Jul 2018

Creating Your First Flask Application

After achieving market dominance, Flask is a Python framework impossible to avoid.
Creating Your First Flask Application

Evidence of Flask’s rise to power has been all around us for a couple of years now. Anybody paying close attention to the technology stacks chosen by startups has undoubtedly noticed a flip: at some point, the industry standard flipped away from Django entirely.

Huge bets are being placed on Flask across the industry. Plotly’s famous Dash product is an extension of Flask which has seen significant success. Even major cloud providers, namely Google Cloud, are choosing to default to Flask for Python implementations of serverless apps. Google Cloud Functions and Google App Engine both ship with Flask

Continue Reading
NodeJS
28 Jun 2018

Upgrading to Gulp 4.0.0

Upgrading to Gulp 4 and tackling the breaking changes that come with it.
Upgrading to Gulp 4.0.0

Back in the day we touched on some of the wonderful upsides of implementing Gulp into your workflow. If you have been following along and happened to install the latest version of Gulp, you may has noticed something horrible happen: nothing worked. I probably should’ve mentioned that the latest major update to Gulp, Gulp 4, is actually a breaking update. That's my bad.

Strangely, documentation around upgrading from Gulp 3.X to Gulp 4 seems to be lagging way behind this release, with the closest thing to official documentation being some article a guy posted on Medium a while

Continue Reading