How to thrive as a remote worker

I wrote a post this week about remote work, specifically how to avoid going crazy and losing your job when employed as such, on Safari’s corporate blog.

Now that I’ve worked for more than three years as a fully remote developer, I have a lot of advice to share based on hard-won experience. Several posts on the topic are kicking around my head, so depending on response to my post at Safari I may follow up with more.

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

Setting the program path for an external tool in PyCharm

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 […]

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...