Matt Makai portrait. Welcome to my blog on
software development.

I am currently a Developer Evangelist for Twilio.

I live in Washington, D.C. although I spend a significant amount of time traveling, including my 2013 Coding Across America trip to 30 cities in 5 months.

Post Titles at a Glance

Latest Blog Posts

CFPB Collab MySQL requirements.txt Installation Error

In case you're trying to get CFPB collab working in your environment, there's a few errors you might run into. This is a quick post to highlight solutions to the issues I came across.

Collab currently requires MySQL for the backend. I do not believe MySQL is a hard ... (read more)

My 2013 Software Development Year in Review

2013 was an incredible and fortunate year for me. The quick highlights:

  • traveled the US for 5 months talking to tech startups and software developers
  • developed numerous client and open source software projects while traveling
  • wrote dozens of blog posts on Coding Across America and this ... (read more)

Getting Started With Pelican and GitHub Pages

Pelican is an open source static website generator. While Pelican is written in Python, you don't have to know much about that programming language to get started. In this post, I'll walk through the steps to getting your first Pelican website up and running, including a deployment to GitHub Pages for hosting.

A quick note before we dive ... (read more)

Evaluating Third Party Services for Django Projects

Every non-trivial modern Django project combines externally hosted third party services with custom code to create a complete web application. The art of discovering, evaluating, integrating, and maintaining these third party services is an important capability for any post-entry-level Django developer. I'm writing these posts as a framework ... (read more)

Discovering Third Party Services for Django Projects

Every non-trivial modern Django project combines externally hosted third party services with custom code to create a complete web application.

For example:

  • Google Analytics for traffic and customer funnel analysis
  • Stripe, Dwolla, or PayPal for payment processing
  • Twilio for text message ... (read more)

One Additon Per Day

I'm a huge believer in the power of results that accumulate by working on something every single day. This idea obviously isn't new. Nathan Barry's new book Authority is one of the most recent examples that explains the power of writing each day.

My favorite ... (read more)

Checklist for Evaluating Existing Django Projects

Lately I've consulted for several clients where I was asked to drop into an existing large Django project code base to triage issues and build enhancements. Working on an established code base is common whether you're a new developer on a team or like me working on consulting projects.

There are many attributes of an existing project: ... (read more)

Developer Interview Questions

One of my clients was interviewing web developers and asked me about how I go about performing technical interviews. I have interviewed 15 developers of all experience levels for Excella Consulting in the past year. My style and questions are still developing. This morning when I ... (read more)

Coding Across America

In two weeks I get on the road to begin my primary 2013 project: Coding Across America. This is a large undertaking. I travel for five months from March until August to thirty cities across the United States.

I am going to be developing software for my existing ... (read more)

Getting to Plan B

Getting to Plan B by John Mullins and Randy Komisar is a book about transitioning from an initial idea, your "Plan A", to a ... (read more)

My 2012 Software Development Year in Review

Ever since I was a little kid I knew that I wanted to develop software. From what I hear that clarity of purpose is rare. It wasn't until college that I really felt I "got serious" about constantly improving on what I know. That learning has accelerated in the past few years since I finished my second Master's. 2012 has been a very ... (read more)

The Startup Owner's Manual Strategy Guide

The Startup Owner's Manual Strategy Guide by Steve Blank and Bob Dorf describes the Customer Development methodology that can be used by ... (read more)

The Lean Startup by Eric Ries

I recently finished reading The Lean Startup by Eric Ries. This blog post contains some brief notes on the book. I'll have more to say ... (read more)

How I Feel While Reading Open Source Projects

My New Year's resolution for 2013 is to read code from awesome open source projects each day. I don't like waiting for New Year's Day ... (read more)

Learning Python

I am often asked by friends and colleagues that are not currently developers how they should go about learning Python. It's not an easy question - the answer is often highly dependent upon the individual's immediate technical aptitude. I do however believe anyone can learn how to program just as anyone can learn about history or business. The ... (read more)

Wise Words From Elon Musk

Wise words from Elon Musk. While process can sometimes allow for a repeatable way to perform an action, it is also often a substitute for thinking creatively. That type of situation leads to an innovation vacuum where workers do a task in the same way "it's always been done" without determining whether the task actually adds value to ... (read more)

Learning Vim - A Colleague's Question

I received the following email from my colleague this morning:

Hey buddy, finally taking the plunge to learn VIM because it will make me a lot more productive when working with Puppet manifests. Any helpful tips you've come across? I already set up my client with pathogen to allow me to easily use new plugins and I pulled ... (read more)

The Journey to True Full-Stack Developer

There are several areas in which I need to improve to be a truly self-reliant full-stack software engineer. My full-stack focus is on web development, both traditional desktop and tablet browsers as well as constrained smartphone mobile browsers. This post describes those areas and what I'm doing through the next year to improve those ... (read more)

Agile in the Federal Government Presentation

Yesterday I presented at the 2012 PMI Project Management Symposium in at the Crystal City Hyatt in Arlington, Virginia. My slides for ... (read more)

Introduction to Python for Non-Developers Notes

Matt Camilli and I gave a talk Tuesday night introducing about 30 non-developers to the Python programming language's history, philosophy, and differences from other languages, as well as an industry analysis of companies using Python. Matt ... (read more)

The First Django Website Run On Python 3

The top post on Hacker News this morning is about a Django (1.5 development branch) site running on Python 3. Why is a Django site running on Python 3 newsworthy? Because while Django 1.5 is tested and ... (read more)

Steps for Non-Developers to Start an Internet Business

I am often asked by friends and colleagues about what first steps a non-technical person should take when they come up with ideas and want to do something with them. I always appreciate these requests since it provides recognition that I have some insight into software development in the entrepreneurship and small business space. This is my ... (read more)

A Fascinating Post on Curiousity's Software

I found this blog post on Curiosity's hardware and software to be a fascinating read. The Curiosity rover has 2.5 million lines of C code running on custom radiation and extreme temperature hardened computer ... (read more)

Spreadsheets As A Beachhead

Spreadsheets represent a need by the business to solve a data-related problem in a structured manner. Looking for spreadsheets that run business-critical operations is an opportunity to build a system that replaces an ad hoc bunch of columns with a normalized, scalable database. This opportunity holds regardless of whether you're an employee of ... (read more)

My Favorite Django Article Sources

  • yipit tech blog: Yipit is a tech start up in New York specializing in daily deals. Their platform is built on Python/Django and they write a lot of detailed posts on topics such as how they set up their configuration management and what to watch for when ... (read more)

Fabric Function For Rebuilding a Django MySQL Database

This is a very specific blog post on what my Fabric fabfile.py looks like for rebuilding my database. This is particularly useful early in a project lifecycle before I start using South for database migrations and instead I am building new tables and columns at a fast clip.

def rebuild_db():
  run('mysql -u ...
          (read more)

Recent Python Posts

I recently read and enjoyed the following Python blog posts (in no particular order).

RFP Bullshit

Request For Proposals (RFPs) in the government are so heavily tilted towards big lumbering companies* that government uses a "small business ... (read more)

wget and Proxy Servers

Short answer: before you use wget, specify 'export http_proxy=my.proxy.server:port' then wget will use the proxy.

I needed to grab some files with wget while working on a Linux server I was setting up for a Django deployment. Unfortunately, I was behind a firewall and had to use a specific proxy for HTTP connections.

pip makes it ... (read more)

Recent Design Books

I recently purchased and read two design books, Bootstrapping Design by Jarrod Drysdale and Step by Step UI Design by Sacha Greif. Both books came out around the same time and were on the front page of ... (read more)

Advice to College Graduates

A couple of weekends ago, I watched my little brother Luke graduate from JMU. Dr. Rose, the outgoing President of JMU gave the commencement address. I've attended enough read more)

Stanford's CS183 Class Notes

Stanford's CS183 class with Peter Thiel is simply amazing. A huge thank you to Blake Masters for writing up summaries of each class. Every class notes post I have read has been amazingly insightful. I highly recommend checking it out if ... (read more)

Big Data Presentation

Over the weekend I finished up the big data presentation that I am presenting to Excella's Business Intelligence Center of Excellence this evening at 530pm.

I prefer my presentations minimal to keep them as an aid to my talk (instead of reading from the ... (read more)

Screencasting on Mac OS X

I recently took a look at the range of screencasting software available on Mac OS X for a couple of reasons. First, I want to have an easy way of demoing software and uploading videos to Vimeo. Second, short screencasts like the ones provided by Treehouse (highly recommended ... (read more)

Can't "Find" Developers? Increase Your Offer

This little rant about paying developers what the market demands instead of complaining you can't find them climbed its way up to the top of the Hacker News charts this morning and ... (read more)

MongoDB, node.js, and Backbone.js

The concept of an all-JavaScript stack on both the client and server is hardly new, but I'm finding the idea more appealing now that the projects have matured. I see notifications like this read more)

Django Officially On Github

Django, the web application framework for perfectionists with deadlines, is now officially on Github. Welcome Django, it's about time you ... (read more)

Database Backups

Backing up your databases on a daily, or more preferrably, hourly basis is IMPORTANT. Do not skimp on preserving your data.

You never know when an errant "drop database ..." will screw up your afternoon. Even the fantastic developers at Github are ... (read more)

Python & MongoDB News

Yesterday had a couple of interesting Python & MongoDB related posts on Hacker News.

The first post was on scrapping websites with scrapy and storing the data in MongoDB. ... (read more)

Consolidation in the Python Hosting Industry

The announcement yesterday about Epio closing down got me thinking about the Python PaaS industry. I did not have any personal experience with Epio, but from the discussion on Hacker ... (read more)

Repository Structure and Python

Kenneth Reitz has another great post on how to structure repositories for Python projects. Repository structure is one of those topics that everyone seems to come up with a slightly different way of doing so it's great to see some direction ... (read more)

Django Nudge (django-nudge)

Django Nudge (nudge) is an open source Django application written by developers at the Consumer Financial Protection Bureau. Nudge is designed to be the Django equivalent to Ramp for WordPress.

In a nutshell, Nudge allows content creators to develop their ... (read more)

Django in Production

Django is easy to get started with, especially if you already have a programming background in a "heavier" language like Java. When I first started creating websites with Django 0.96, I was programming Java systems during the day and relaxed in the evenings by using Python/Django. I found the speed at which I could create sites ... (read more)

Site Relaunch

I recreated mattmakai.com earlier this year with a new theme on top of a custom Python/Django stack I wrote. Although I liked some of the work I did, I just was not satisfied with the overall result. So I'm relaunching the blog with the core written in Markdown and jinja2 with read more)

"DevOps is Ruining My Craft"

This DevOps blog post is a great satirical take on the automation and DevOps movement. The post is written as an "interview" with a current sysadmin and it's definitely worth the quick read.

(read more)

Python Context Managers

During my talk to django-district last night, I explained that Django 1.4 drops support for Python 2.4 because the core committers wanted to use Python's context managers. Python 2.4 would not suffice because context managers are a Python 2.5+ ... (read more)

Django 1.4 Beta Released

The Django 1.4 beta release is now available for testing.

Although the 1.4 beta can be downloaded as a package, it's probably best to get it from the SVN ... (read more)

Django District February Meetup Lightning Talk

I'll be giving a 10 minute lightning talk on updates and incompatibilities in the upcoming Django 1.4 release. If you're interested in Python/Django and want to hear more, read more)

Django 1.4 Requires Python 2.5+

Django 1.4 is the first Django release to remove support for Python 2.4. This change is an expected for two reasons. First, beginning with Django 1.2, Python 2.3 support was dropped and the community was notified ... (read more)

What the Django's ORM Author Hates About It

Alex Gaynor, a Django core committer and author of much of the object-relational mapping (ORM) code, gave a presentation on what he hates about the mapping layer. Every ORM layer in existence has issues, especially for edge cases, but Django's ... (read more)

The Seven Steps

There are at least seven distinct steps towards Internet entrepreneurship. I'll begin with the caveat that these seven steps only apply in the Internet space and not other avenues such as starting a bakery. From my (limited) experience, everyone goes through these steps in order. Some steps take hours, while others can take years.

The ... (read more)

Specify the HTML File for PhoneGap and iOS

When working with iOS applications and using PhoneGap, you'll often want to use a different file name than "index.html" for your first page. This can be tricky for first time PhoneGap/iOS developers because there is no stub function or properties file for specifying the file like there is in Android and BlackBerry projects.

In ... (read more)

Heroku on Ubuntu 10.04

A couple of guys from Heroku gave a talk tonight at DC Python and it looked like a good solution for running small sites. However, I was disappointed that set up was more difficult on Ubuntu 10.04 than turn key installers on Windows and Mac OS X. The set up read more)

Impress.js: Now Works With Presentation Pointers

I saw impress.js, a really cool CSS3 transformation-based presentation Javascript library on Hacker News yesterday. The demo is flashy - similar to Prezi but without Flash, plus new 3D ... (read more)

New Blog

Note: This post is outdated because I am already on a new blog platform.

To kick off 2012, I'm shifting my technical blog from Tumblr to my own platform.

I created this site with read more)

Older Blog Posts

My blog posts from the last couple of years can still be access at http://mmakai.com/.

Eventually I'll transfer the posts' content to this site and redirect the URLs to their new locations, but for now I'm leaving the old posts on Tumblr. There is also a nice way to browse the ... (read more)