Python
2012

Narrowing the Gender Gap in the Open Source community
Diversity is important in a workplace environment. Having different points of view from people with different life experiences brings creative new ideas and innovative solutions to the software development process. As a team of web developers that designs and builds custom web applications, creativity and gender diversity, I would argue, are closely tied and both crucial to the success of our projects.

Caktus seeking a Django Contractor
I'm excited to announce that Caktus is looking for a developer to join our team on a contract basis!
We're looking for a strong software developer who enjoys working on a team and is excited to learn and experiment with new technologies. We do have a preference for local candidates, but will consider all submissions. Initial work will focus on maintaining small Django-powered websites. This position will involve managing existing Django projects, data modeling complex business ideas and deploying Django sites.

Caktus is Sponsoring Pycon 2012
Caktus is sponsoring Pycon 2012 in Santa Clara, CA this coming weekend! Nearly the entire office will be attending this year's event, which means Mark, Caleb, Calvin, David, Karen, Dan, Tobias, Colin, Julia, Nicole and I will be on site contributing and learning with the rest of the Python community. Nicole and I will be in charge of manning the booth, and so if you managed to wrangle tickets to the sold-out event, we invite you to stop by our booth #213 and say hello! Also Karen, Mark and Calvin will be sprinting after the talks, working on Django and Python3 tickets.

Configuring a Jenkins Slave
We're pretty avid testers here at Caktus and when one of our Django projects required upgrading to Python 2.7, we also needed to upgrade our Jenkins build environment. Luckily, Jenkins supports distributed builds to allow a master install to delegate tasks to slaves instances. This way we can continue to run our primary build system on Ubuntu 10.04, which defaults to Python 2.6, and delegate tasks to an Ubuntu 11.04 environment running Python 2.7. The setup is fairly easy, but since I didn't find much out there already, I figured I write up a quick post outlining what we did.
2011

Class-based views in Django 1.3
Django class-based views
Introduction
Django 1.3 added class-based views, but neglected to provide documentation to explain what they were or how to use them. So here's a basic introduction.

OpenBlock Geocoder, Part 3: External Geocoders
The OpenBlock geocoder is powerful and robust. It uses PostGIS for spacial queries, can extract addresses from bodies of text, and can understand block and intersection notation. We've run into a few issues with it, however, including a low geocoding success rate. This is a tough problem to solve and depends on a lot of factors (the extent of street and block data in OpenBlock, format of the street addresses, etc.), so your mileage may vary. Below I constructed a simple test using Google's Geocoding API to have as an alternative.

OpenBlock Geocoder, Part 2: Text Parsing and Entity Extraction
This is the second post in our OpenRural series reviewing OpenBlock and it's geocoder. OpenBlock Geocoder, Part 1: Data Model and Geocoding covers the internals of the OpenBlock geocoder and it's geocoding capabilities. As this posts builds upon topics covered there, you may wish to read Part 1 before proceeding. In this post we step back from the internals of the geocoder and explore how to use it along with other OpenBlock tools to parse unstructured text.

OpenBlock Geocoder, Part 1: Data Model and Geocoding
As Tobias mentioned in Scraping Data and Web Standards, Caktus is collaborating with the UNC School of Journalism to help develop Open Rural (the code is on GitHub). Open Rural hopes to help rural newspapers in North Carolina leverage OpenBlock. This blog post is the first of several covering the internals of OpenBlock and, specifically, the geocoder.

Testing Web Server Configurations with Fabric and ApacheBench
Load testing a site with ApacheBench is fairly straight forward. Typically you'd just SSH to a machine on the same network as the one you want to test, and run a command like this:

Getting Started using Python in Eclipse
Eclipse with the PyDev module has a lot to offer the Python programmer these days. If you haven't looked at PyDev before, or not in a while, it's worth checking out.