PyCharm: Open the current file in Vim, Emacs or Sublime Text

Even though I use PyCharm, I still drop into Vim occasionally to edit configuration files. This was an annoying process until today, when I discovered that PyCharm and other Intellij editors can open the current file in an external tool. This works with both GUI and console-based applications, and its most trivial use case seems to be opening the current file in an external editor.

So, how does it work? Easy — this should only take a minute or so! Instructions are geared toward OS X users, but should be clear to users on other operating systems.

Continue Reading

Video of my DjangoCon talk “The evolution of a RESTful Django backend”

The video of my first ever conference talk is now available on YouTube. Check it out here or watch it below. It could have been better, but least now my daughter will always be able to find a video of her dad looking foolish on the internet. The talk was a look at different web […]

Continue reading...

An Epic Review of PyCharm 3 from a Vim User’s Perspective

Code Completion

This review is for the Professional Edition of PyCharm 3. It includes screenshots and sound-free video demos of PyCharm features. I will try to cut straight to the point while offering some tips from my experience. My perspective is that of a professional software developer who has used Vim, Emacs, Sublime Text, PyDev and others. […]

Continue reading...

Porting a Geographic Nearest-Neighbor Python Web Service to Go

I wrote a blog post recently at work that described my experience porting a geographic nearest-neighbor web service from Python to Go. You can read it on the Safari Flow blog. The post covers setting up a dev environment for Go, finding replacement third-party libraries, writing tests, performance profiling and deployment. If you'd rather read […]

Continue reading...

Four Things I Learned about Software Engineering from Programming MUDs as a Teenager

In job interviews I try to casually drop that I learned how to program as a teenager writing C code for MUDs1. My intent is to open a fun discussion into why this was awesome. Programming for MUDs taught me the fundamentals of the craft, so I could probably ramble about it for an hour. […]

Continue reading...

On Starting a Daily Meditation Practice

The single thing that improved my daily life the most in 2013 was starting a daily meditation practice. Specifically, Buddhist meditation based on techniques from the Ānāpānasati Sutta and Satipaṭṭhāna Sutta. In this post I will share why I started, how I did it and some pleasant results. Suffering As I suspect many new parents […]

Continue reading...

One Year Later: An Epic Review of PyCharm 2.7 from a Vim User’s Perspective

This is a review of PyCharm 2.7 that covers all of the features of the editor that I have used on a near-daily basis over the past year. My perspective is that of a professional (and hobby) software developer, occasional open-source contributor and former happy user of Vim. Wait! There is newer version of this […]

Continue reading...

Reading List for an Apprentice Web Developer

Here are a few books that I found useful when I was starting out as a web developer. I originally wrote this list for a friend who is wrapping up his Computer Science degree, so the emphasis is on practical rather than academic knowledge. Craft These books touch on a lot of non-technical areas of […]

Continue reading...

Wrap Comments and Text to Column Width in IntelliJ Editors

One of the small annoyances I found after switching to PyCharm recently was that while the editor will reformat code to the chosen column width, it won’t wrap plaintext or comments. Annoying, for Vim and Emacs users! I corrected this by writing my first IntelliJ plugin: Wrap to Column, which is a port of a […]

Continue reading...

Build an In-Memory Proximity Search Web Service with Python, SciPy and Heroku

In this post I’m going to look at a concrete example of building an in-memory proximity (aka, nearest neighbor) search web service using Python, SciPy and Heroku. Later we can speculate on use cases for this approach as opposed to a geo-aware database. Define Our Terms So, let’s define our terms: In-memory: The web service […]

Continue reading...