ESMITHY.NET

git-flow with Cmder

"Git Flow" is a branching model using the Git version control system. There is also a set of extensions for Git that make using Git Flow easier, but there aren't installation instructions specifically for use with the excellent cmder Windows shell replacement. Here's how to do it...

These instructions are …

Public Key Cryptography Made Easy

Learning about cryptography can be discouraging. You get so bombarded by "don't invent your own", "you're doing it wrong", and "even really smart people screw this up" that you wonder why you even bother to try. For me, the answer is because if you don't learn it, someone who knows …

Your right margin is telling you something

The recommendation to keep lines widths less than 80 characters is a surprising part of the Python style guide (PEP 8). Really, 79 characters? Is it still the 1980's in Python-land? Maybe it's time to upgrade that monochrome CRT and get some screen real-estate.

Acting a bit on faith, and …

The First Rule of Test Code

Software is kind of cool in that you can write programs that verify that your other programs work correctly. These testing "meta programs" tend to get short-shrift though, because it's not like the code is actually part of the shipping product. So who cares about cleanliness or good style or …

Deceiving Your Readers

APIs are user interfaces for programmers. I came across a function recently that had a couple of user interface issues that serves as a great example of this principle.

The function is internal to an HTTP client class, taking care of the common logic independent of the HTTP method, and …

SQLAlchemy with Python 64-bit on Windows

While hooking up SQLAlchemy for a web project, I kept running into attribute errors for 'session_registry'. I figured I was doing something wrong, so I thought I'd just walk through the tutorial as a sanity check.

I was, apparently, insane.

>>> u = session.query(User).filter_by(name='ed').first()
Traceback (most …

Python Packaging (2013 Edition)

About a year ago, I set out to get a solid working understanding of Python packaging, resulting in a lengthy blog post of what I learned. There have been some significant course changes over that year such that my original post is wrong in several regards.

Here's a summary of …

Getting pip into your Python 3 venv

Python 3.3 includes a built-in equivalent to the popular virtualenv tool for creating isolated Python environments. One difference with the built-in venv is that it doesn't automatically install pip as virtualenv does. While I can understand the decision (given Python's volatile packaging situation), it isn't very convenient.

Here's a …

UI Gem: Android Calendar Time Picker

It's been available for a while now, but every time I use the new Android calendar app's time controls, I'm so impressed by their elegance.

Previously, setting the time for a calendar event involved some simple numeric up/down spinners. Setting the hour worked reasonably well, but if your event …

Security Camera Stills As Art

Sure, you can schlep a camera around looking for beautiful things to photograph, or you can just let your security camera do the work and get some serendipitous art.

Color Variance Triptisch

Color Variance Triptisch

Bleak Winter

Bleak Winter

Darn Suction Cups

Darn Suction Cups

Watcher

Watcher

Flight

Flight