Blog Tutorials

Flask and Okta logos. Copyright their respective owners.

Adding Okta Authentication to an Existing Flask Web App

Post updated by Matt Makai on November 02, 2018. Originally posted on October 31, 2018.

It can be a lot of work to piece together a full authentication system if you have an existing Flask web application that you are coding. Okta makes it much easier to drop-in a complete user authentication system without a lot of additional effort. In this tutorial we... (read more)

Python programming language and Full Stack Python logos.

Fresh Tutorials on Full Stack Python

Posted by Matt Makai on October 22, 2018.

There are a bunch of new tutorials on Full Stack Python that were written since the last time I sent out an email newsletter. These range from getting started with some popular open source projects to integrating third party APIs to... (read more)

Flask, Green Unicorn and Ubuntu logos. Copyright their respective owners.

How to Provision Ubuntu 18.04 LTS Linux Servers on DigitalOcean

Posted by Matt Makai on October 14, 2018.

Python web applications need to be deployed to a production server or service so your users have access to the application.

DigitalOcean is one such... (read more)

Flask and Okta logos. Copyright their respective owners.

How to Add User Authentication to Flask Apps with Okta

Post updated by Matt Makai on October 10, 2018. Originally posted on October 08, 2018.

User authentication is a basic feature in web applications so people can create and access their own accounts. Unfortunately, authentication is not always easy to set up and there are many ways to incorrectly implement login and logout features.

This tutorial walks through how to use the read more)

Flask, Green Unicorn and Ubuntu logos. Copyright their respective owners.

Configure Python 3, Flask and Gunicorn on Ubuntu 18.04 LTS

Post updated by Matt Makai on June 15, 2018. Originally posted on June 14, 2018.

Ubuntu Linux's latest Long Term Support (LTS) operating system version is 18.04 and was released in April 2018. The 18.04 update is code named "Bionic Beaver" and it includes Python 3 by default.... (read more)

Bottle, Docker and Apple logos, copyright their respective owners.

Running Bottle Apps in Docker Containers on macOS

Post updated by Matt Makai on June 05, 2018. Originally posted on June 04, 2018.

It can be confusing to figure out how to use Docker containers in your Python and Bottle development environment workflow. This tutorial will quickly show you the exact steps to get Docker up and running on... (read more)

Comment bubble with code representing a technical talk-based blog post.

How to Explain Your Products to Developers

Posted by Matt Makai on May 25, 2018.

This blog post contains the slides along with a loose transcript from my talk on appropriately marketing products to software developers that I gave at Silicon Valley Bank during Ubiquity.VC's summit for founders, investors and technical advisors on May 24,... (read more)

Python, Django and Mapbox logos are copyright their respective owners.

How to Add Maps to Django Web App Projects with Mapbox

Post updated by Matt Makai on May 25, 2018. Originally posted on May 19, 2018.

Building interactive maps into a Django web application can seem daunting if you do not know where to begin, but it is easier than you think if you use a developer tool such as Mapbox.

In this post we will build a simple Django project with a single app and add an... (read more)

Python programming language and Full Stack Python logos.

Full Stack Python at PyCon US 2018

Posted by Matt Makai on May 09, 2018.

PyCon US 2018 kicked off today with the first day of tutorials. I am flying in tomorrow and will be there through the end of the weekend. If you're around, come by either the Twilio booth or the... (read more)

Python, AWS Lambda and Rollbar logos are copyright their respective owners.

Monitoring Python 3.6 Functions on AWS Lambda

Post updated by Matt Makai on April 25, 2018. Originally posted on April 20, 2018.

Amazon Web Services (AWS) Lambda is a usage-based execution environment that can run Python 3.6 code. If you have never previously used AWS Lambda then you can read
How to Create Your First Python 3.6 AWS Lambda Function. However, this tutorial will give you... (read more)

Flask, Docker and Apple logos, copyright their respective owners.

Developing Flask Apps in Docker Containers on macOS

Post updated by Matt Makai on June 05, 2018. Originally posted on March 09, 2018.

Adding Docker to your Python and Flask development environment can be confusing when you are just getting started with containers. Let's quickly get Docker installed and configured for developing Flask web... (read more)

Python programming language and Full Stack Python logos.

ReportLab and Future Community Project Launches

Posted by Matt Makai on March 04, 2018.

Congratulations to fellow Python developer Mike Driscoll for his successful ReportLab: PDF Processing with Python Kickstarter that just concluded with over double his funding... (read more)

Django and Rollbar logos, copyright their respective owners.

Monitoring Django Projects with Rollbar

Post updated by Matt Makai on May 20, 2018. Originally posted on February 02, 2018.

One fast way to scan for exceptions and errors in your Django web application projects is to add a few lines of code to include a hosted monitoring tool.

In this tutorial we will learn to add the Rollbar monitoring service to a web app to... (read more)

Python programming language and Full Stack Python logos.

5 Years of Full Stack Python

Posted by Matt Makai on December 23, 2017.

Full Stack Python began five years ago today, on December 23, 2012, with Git commit 69f5f46.

I originally built the site to help out a group of junior... (read more)

Python programming language and Full Stack Python logos.

GitPython and New Git Tutorials

Posted by Matt Makai on December 11, 2017.

First Steps with GitPython is a quick tutorial that shows how to get started using the awesome GitPython library for programmatically interacting with Git repositories in your Python applications. In the spirit of the... (read more)

Python and Git logos, copyright their respective owners.

First Steps with GitPython

Post updated by Matt Makai on November 30, 2017. Originally posted on November 29, 2017.

GitPython is a Python code library for programmatically reading from and writing to Git source control repositories.

Let's learn how to use GitPython by quickly installing it and reading from a local cloned Git... (read more)

Python programming language and Full Stack Python logos.

DevOps, Thank You Maintainers and Contributing to Open Source

Posted by Matt Makai on November 13, 2017.

DevOps, Continuous Delivery... and You is a blog post with the slides and notes based on a class I taught at the University of Virginia this past week. The talk is relevant as a brief introduction to read more)

Comment bubble with code representing a technical talk-based blog post.

DevOps, Continuous Delivery... and You

Post updated by Matt Makai on November 05, 2017. Originally posted on November 01, 2017.

This blog post contains the slides along with a loose transcript and additional resources from my technical talk on DevOps and Continuous Delivery concepts given at my alma mater, the University of Virginia, to the M.S. in Management of Information Technology program on November 2nd and... (read more)

Python programming language and Full Stack Python logos.

PyDev of the Week, Django 2.0 and Twilio Voices

Posted by Matt Makai on October 30, 2017.

PyDev of the Week is a developer interview series by Mike Driscoll that asks Python programmers how they started coding, the projects they're working on and what advice they have for beginners. Mike was... (read more)

PyCon US 2018 Call for Proposals now open, the awesome Python Bytes and using Pelican to generate static sites.

PyCon US 2018 CFP, Python Bytes and Pelican

Posted by Matt Makai on October 09, 2017.

PyCon US 2018 is coming up in Cleveland, Ohio on May 9th-17th. The call for proposals (CFP) went live in the past few days so now is the time to sharpen your keyboards and get yourself into the proposal writing zone.... (read more)

Python, Rollbar and Bottle logos, copyright their respective owners.

How to Monitor Python Web Applications

Post updated by Matt Makai on September 29, 2017. Originally posted on September 26, 2017.

A quick way to check for errors and issues in your operational Python web application is to drop-in one of many awesome hosted monitoring tools.

Let's learn to quickly add Rollbar monitoring to a web app to visualize when our... (read more)

Ubuntu Linux logo, copyright Canonical Ltd. and Linode logo.

How to Provision Ubuntu 16.04 Linux Servers on Linode

Posted by Matt Makai on September 20, 2017.

Your live web application must be deployed and run somewhere other than your local development environment. That deployment location is known as a "production environment" and it is built out of one or more servers.

Let's learn... (read more)

Python, Bottle and Bokeh logos.

Creating Bar Chart Visuals with Bokeh, Bottle and Python 3

Post updated by Matt Makai on July 30, 2017. Originally posted on July 25, 2017.

The Bokeh open source Python visualization library assists developers with creating web browser visuals. You can build charts for web applications without coding any JavaScript, like you'd need to do to use libraries such as d3.js and plotly.

Bokeh can create many... (read more)

Flask, Python and Rollbar logos, copyright their respective owners.

How to Add Hosted Monitoring to Flask Web Applications

Posted by Matt Makai on July 23, 2017.

How do you know whether your application is running properly with minimal errors after building and deploying it? The fastest and easiest way to monitor your operational Flask web application is to integrate one of the many available fantastic... (read more)

Pelican, Jinja2 and Markdown logos.

How to Create Your First Static Site with Pelican and Jinja2

Posted by Matt Makai on June 09, 2017.

Pelican is an incredibly well-built Python tool for creating static sites.

Full Stack Python is generated with Pelican, Jinja2 templates and Markdown. This site... (read more)

Python, Flask and Bokeh logos.

Responsive Bar Charts with Bokeh, Flask and Python 3

Post updated by Matt Makai on July 30, 2017. Originally posted on May 26, 2017.

Bokeh is a powerful open source Python library that allows developers to generate JavaScript data visualizations for their web applications without writing any JavaScript. While learning a JavaScript-based data visualization library like d3.js can be useful, it's often far... (read more)

Header image for the blog post.

How to Become A Successful Self-Taught Software Developer

Posted by Matt Makai on May 14, 2017.

I received the following question via email from someone spending significant effort learning how to code in anticipation of obtaining full-time job with those skills. The question is also frequently asked by university students and coding bootcamp graduates.

This post provides my current answer on how get your first full-time... (read more)

AWS, AWS Lambda and Python logos are copyright their respective owners.

How to Create Your First Python 3.6 AWS Lambda Function

Post updated by Matt Makai on April 25, 2018. Originally posted on April 29, 2017.

Amazon Web Services (AWS) Lambda provides a usage-based compute service for running Python code in response to developer-defined events. For example, if an inbound HTTP POST comes in to API Gateway or a new file is uploaded to AWS S3 then AWS Lambda can execute a... (read more)

AWS, AWS Lambda and Python logos, copyright their respective owners.

Getting Started with AWS Lambda & Python 2.7

Post updated by Matt Makai on April 29, 2017. Originally posted on April 28, 2017.

Amazon Web Services (AWS) Lambda is a "serverless" compute service that executes arbitrary Python code in response to developer-defined events, such as inbound API calls or file uploads to AWS S3. Note that AWS Lambda has nothing to do with the lambda... (read more)

Comment bubble with code representing a technical talk-based blog post.

How to Choose the Right DevOps Tools for You and Your Team

Post updated by Matt Makai on March 01, 2017. Originally posted on February 27, 2017.

This blog post contains a loose transcript along with the slides and additional resources from my technical talk that will be given at Oracle Code SF 2017 and DC Continuous Delivery within the next couple of... (read more)

Apple logo, copyright Apple.

Creating SSH Keys on macOS Sierra

Post updated by Matt Makai on April 28, 2017. Originally posted on February 20, 2017.

Deploying Python applications typically requires SSH keys. An SSH key has both a public and a private key file. You can use the private key to authenticate when syncing remote Git repositories, connect to remote servers and automate your application's... (read more)

Ubuntu Linux logo, copyright Canonical Ltd.

Creating SSH Keys on Ubuntu Linux 16.04 LTS

Post updated by Matt Makai on April 28, 2017. Originally posted on February 14, 2017.

SSH keys are a necessity for Python development when you are working with Git, connecting to remote servers and automating your deployments. Let's walk through how to generate SSH key pairs, which contain both a public and a private key within a single pair, on Ubuntu... (read more)

Python and Twilio logos. Copyright their respective owners.

How to Make Phone Calls in Python

Post updated by Matt Makai on July 22, 2017. Originally posted on November 23, 2016.

Good old-fashioned phone calls remain one of the best forms of communication despite the slew of new smartphone apps that have popped up over the past several years. With just a few lines of Python code plus a web application programming interface we can make and receive phone calls... (read more)

Bottle, Python and Twilio logos. Copyright their respective owners.

Dialing Outbound Phone Calls with a Bottle Web App

Post updated by Matt Makai on June 16, 2017. Originally posted on August 30, 2016.

Python web apps built with the Bottle web framework can send and receive SMS text messages. In this tutorial we will go beyond texting and learn how to dial outbound phone calls. The calls will... (read more)

Talk Python to Me, Full Stack Python and Python logos. Copyright their respective owners.

Python for Entrepreneurs

Post updated by Matt Makai on April 25, 2017. Originally posted on July 30, 2016.

Python for Entrepreneurs is a new video course by the creators of Talk Python to Me and Full Stack Python.

Update: The Kickstarter has been... (read more)

Django, Green Unicorn and Linux Mint logos. Copyright their respective owners.

Setting Up Python 3, Django & Gunicorn on Linux Mint 17.3

Post updated by Matt Makai on July 22, 2016. Originally posted on June 26, 2016.

Linux Mint 17.3 "Rosa" is December 2015 release of the polished and widely-used Linux distribution. This Mint release includes both Python 2.7 and 3.4 by default, but in this tutorial we will download and install the latest Python 3.5.1 version to run our Django application.

If you want to use a different Linux distribution such... (read more)

Pyramid, Green Unicorn and Ubuntu logos. Copyright their respective owners.

Configuring Python 3, Pyramid and Gunicorn on Ubuntu 16.04

Post updated by Matt Makai on August 10, 2016. Originally posted on June 19, 2016.

Canonical's Ubuntu 16.04 Long Term Support (LTS) Linux operating system, also known as "Xenial Xerus", was released in April 2016. It is the first Ubuntu release to include Python 3 instead of Python 2 as its default Python... (read more)

Twilio, Python and Bottle logos. Copyright their respective owners.

Replying to SMS Text Messages with Python and Bottle

Post updated by Matt Makai on August 10, 2016. Originally posted on June 05, 2016.

Python applications can easily send SMS by using a web API. Web apps built with the Bottle framework can also reply to incoming text messages by handling inbound HTTP POST webhooks. In this post we'll... (read more)

Slack and Python logos. Copyright their respective owners.

How to Build Your First Slack Bot with Python

Post updated by Matt Makai on December 13, 2017. Originally posted on June 04, 2016.

Bots are a useful way to interact with chat services such as Slack. If you have never built a bot before, this post provides an easy starter tutorial for combining the Slack API with Python to create your first bot.

We will walk through... (read more)

Twilio, Python and Flask logos. Copyright their respective owners.

Responding to SMS Text Messages with Python & Flask

Post updated by Matt Makai on May 11, 2017. Originally posted on May 30, 2016.

Short Message Service (SMS) text messages are easy to send from Python applications with a web application programming interface (API). Flask applications can also receive incoming text messages and respond back to the sender with... (read more)

MySQL and Ubuntu logos. Copyright their respective owners.

How to Install and Use MySQL on Ubuntu 16.04

Post updated by Matt Makai on December 22, 2017. Originally posted on May 28, 2016.

MySQL is a common open source relational database for creating, reading, updating and deleting data in Python web applications. Let's learn how to install MySQL on Ubuntu 16.04 and then run a few SQL queries within the... (read more)

PostgreSQL and Ubuntu logos. Copyright their respective owners.

Setting up PostgreSQL with Python 3 and psycopg on Ubuntu 16.04

Post updated by Matt Makai on December 25, 2017. Originally posted on May 18, 2016.

PostgreSQL is a powerful open source relational database frequently used to create, read, update and delete Python web application data. Psycopg2 is a PostgreSQL database driver that serves as a Python... (read more)

Redis and Ubuntu logos. Copyright their respective owners.

How to Use Redis with Python 3 and redis-py on Ubuntu 16.04

Post updated by Matt Makai on April 28, 2017. Originally posted on May 16, 2016.

Redis is an in-memory key-value pair NoSQL data store often used for web application sessions, transient data and as a broker for task queues. redis-py is a common Python code library... (read more)

Twilio and Python logos. Copyright their respective owners.

How to Send MMS Picture Messages with Python

Post updated by Matt Makai on March 28, 2018. Originally posted on May 15, 2016.

Multimedia Message Service (MMS) picture and video messages are a common extension to the Short Message Service (SMS) system for sending text messages. Using a web application programming interface (API) with Python makes it easy to send MMS messages from a web application or script.... (read more)

Bottle, Green Unicorn and Ubuntu logos. Copyright their respective owners.

Configuring Python 3, Bottle and Gunicorn for Development on Ubuntu 16.04 LTS

Post updated by Matt Makai on April 28, 2017. Originally posted on May 13, 2016.

The Ubuntu 16.04 Long Term Support (LTS) Linux operating system was released in April 2016. This latest Ubuntu release is named "Xenial Xerus" and it is the first Ubuntu release to include Python 3, instead of Python 2.x, as the default Python... (read more)

Twilio and Python logos. Copyright their respective owners.

How to Send SMS Text Messages with Python

Post updated by Matt Makai on April 28, 2017. Originally posted on May 11, 2016.

Short Message Service (SMS) text messages are ubiquitous for communication all over the world. It is easy to send SMS text messages from a Python application using a web application programming interface (API). Let's take a look at the tools we need... (read more)

Flask, Green Unicorn and Ubuntu logos. Copyright their respective owners.

How to set up Python 3, Flask and Green Unicorn on Ubuntu 16.04 LTS

Post updated by Matt Makai on June 14, 2017. Originally posted on May 10, 2016.

Ubuntu's latest Long Term Support (LTS) operating system was released last year, in April 2016. The 16.04 update for Ubuntu is known as "Xenial Xerus" and it is the first Ubuntu release to include Python 3 as the default Python... (read more)

Django, Green Unicorn and Ubuntu Linux logos. Copyright their respective owners.

Setting up Python 3, Django and Gunicorn on Ubuntu 16.04 LTS

Post updated by Matt Makai on April 28, 2017. Originally posted on May 09, 2016.

Ubuntu released the newest Long Term Support (LTS) version of its operating system in April 2016. The update brings Ubuntu to version 16.04 and its latest code name is "Xenial Xerus". 16.04 is the first Ubuntu release to include Python 3 as... (read more)

Full Stack Python and Python logos. Copyright their respective owners.

The Full Stack Python Blog

Post updated by Matt Makai on December 28, 2017. Originally posted on May 08, 2016.

Full Stack Python began way back in December 2012 when I started writing the initial deployment, server, operating system, web server... (read more)


Matt Makai 2012-2018