Colin Copeland
Colin co-founded Caktus in 2007. As Chief Technical Officer, he helps ensure that Caktus remains at the forefront of the open source community. He regularly implements services and products to better serve clients. He loves coding and still actively works on client projects, often as lead developer.
A proponent of automated testing and continuous integration, Colin is always researching best practices and creating efficiencies to improve deployment processes and provide outstanding support for Caktus clients. He particularly enjoys working on social innovation projects, some of which he’s become involved with through Code For Durham, a civic hacking brigade, which he helped to found around 2013.
One of Colin’s favorite, long-term projects was building the Open Data Policing NC website for the Southern Coalition for Social Justice, which displayed North Carolina police stop data. As a result of the project, Colin was invited to the White House Police Data Initiative in 2016 to share his ideas on how to ensure law enforcement transparency and accountability. In 2020-2021, Colin worked to relaunch the Open Data Policing NC website as NC Cop Watch. It draws on public records to publish up-to-date stop, search, and use-of-force data — broken down by race and ethnicity.
When Colin isn’t working on client projects, he continues to be motivated by volunteering through Code for Durham. He also enjoys baking, playing piano, and spending time with his family.
Hear more about Colin, his background, and his interests in this Modern CTO podcast and the DjangoChat podcast. You can also connect with him on GitHub, LinkedIn, and Twitter.
2010

Continuous Integration with Django and Hudson CI (Day 1)
We're always looking for new tools to make our development environment more robust here at Caktus. We write a lot of tests to ensure proper functionality as new features land and bug fixes are added to our projects. The next step is to integrate with a continuous integration system to automate the process and regularly check that status of the build.
2009

Custom JOINs with Django's query.join()
Django's ORM is great. It handles simple to fairly complex queries right out the box without having to write any SQL. If you need a complicated query, Django's lets you use .extra(), and you can always fallback to raw SQL if need be, but then you lose the ORM's bells and whistles. So it's always nice to find solutions that allow you to tap into the ORM at different levels.

Web Developer for Hire
We're pleased to announce that Caktus is looking for a developer to join our team on a contract basis!
What do we do? We build custom web applications for local and remote clients using a variety of open-source technologies. We are a small team founded in the Chapel Hill/Carrboro area (currently residing in Carrboro Creative Coworking) who believe in face-to-face contact and employ agile development techniques that emphasize teamwork and collaboration.

Setting PostgreSQL's SHMMAX in Mac OS X 10.5 (Leopard)
If you've ever tried to increase the shared_buffers setting in your postgresql.conf to a value that exceeds the amount of shared memory supported by your operating system kernel, then you'll see an error message like this:

Explicit Table Locking with PostgreSQL and Django
By default, Django doesn't do explicit table locking. This is OK for most read-heavy scenarios, but sometimes you need guaranteed, exclusive access to the data. Caktus uses PostgreSQL in most of our production environments, so we can use the various lock modes it provides to control concurrent access to the data. Once we obtain a lock in PostgreSQL, it is held for the remainder of the current transaction. Django provides transaction management, so all we need to do is execute a SQL LOCK statement within a transaction, and Django and PostgreSQL will handle the rest.

minibooks: Small Business Bookkeeping
Caktus released minibooks (open-sourced under the AGPL) as a bookkeeping package for small tech agencies. Boasting a double-entry accounting system, customer relationship management (CRM) and transaction reconciliation, minibooks provides a clean, multiuser web-based interface to manage simple accounting needs for small businesses.