<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Caktus Group</title><link>https://www.caktusgroup.com/</link><description>Recent content in Home on Caktus Group</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 02 Mar 2026 09:00:00 -0600</lastBuildDate><atom:link href="https://www.caktusgroup.com/index.xml" rel="self" type="application/rss+xml"/><item><title>The Creative Commons (CC) Licensing Infrastructure for Copyrighted Materials Gets a Comprehensive Update</title><link>https://www.caktusgroup.com/case-study/creative-commons-licensing/</link><pubDate>Thu, 18 Nov 2021 19:17:13 +0000</pubDate><guid>https://www.caktusgroup.com/case-study/creative-commons-licensing/</guid><description>New Django-based system will provide support for the next 5 to 10 years, and enable more efficient administration and expansion.</description></item><item><title>Caktus Completes Major Data Integration to Enable COVID-19 Contact Tracing in Philadelphia</title><link>https://www.caktusgroup.com/case-study/covid-19-contact-tracing/</link><pubDate>Thu, 03 Jun 2021 01:37:36 +0000</pubDate><guid>https://www.caktusgroup.com/case-study/covid-19-contact-tracing/</guid><description>The Philadelphia Department of Public Health (PDPH) needed a sustainable, integrated solution to effectively manage screening, contact tracing, patient monitoring, and post-care support for COVID-19.</description></item><item><title>Health System Leads the Charge in Cloud Data Migration</title><link>https://www.caktusgroup.com/case-study/health-system-leads-charge-cloud-data-migration/</link><pubDate>Thu, 17 Dec 2020 22:07:33 +0000</pubDate><guid>https://www.caktusgroup.com/case-study/health-system-leads-charge-cloud-data-migration/</guid><description>A Caktus consulting team helps Duke Crucible move protected health information to the cloud.</description></item><item><title>A Startup Healthcare Tech Firm Is Now Poised for the Future</title><link>https://www.caktusgroup.com/case-study/startup-healthcare-tech-firm-now-poised-future/</link><pubDate>Mon, 22 Jun 2020 14:33:04 +0000</pubDate><guid>https://www.caktusgroup.com/case-study/startup-healthcare-tech-firm-now-poised-future/</guid><description>For its innovative healthcare solution, Force Therapeutics needed to drive scalability and guard against technical debt.</description></item><item><title>Live Event Management App</title><link>https://www.caktusgroup.com/case-study/live-event-management-app/</link><pubDate>Fri, 15 Aug 2014 01:28:09 +0000</pubDate><guid>https://www.caktusgroup.com/case-study/live-event-management-app/</guid><description>With more than 1.5 billion subscribers, Discovery needed a better way to manage live events.</description></item><item><title>World’s First SMS Voter Registration System</title><link>https://www.caktusgroup.com/case-study/worlds-first-sms-voter-registration-system/</link><pubDate>Fri, 15 Aug 2014 12:05:47 +0000</pubDate><guid>https://www.caktusgroup.com/case-study/worlds-first-sms-voter-registration-system/</guid><description>Elections management system that integrates SMS, poll center management, and bulk SMS alerts.</description></item><item><title>Team Augmentation for Platform Migration</title><link>https://www.caktusgroup.com/case-study/team-augmentation-platform-migration/</link><pubDate>Fri, 30 Mar 2018 11:49:52 +0000</pubDate><guid>https://www.caktusgroup.com/case-study/team-augmentation-platform-migration/</guid><description>A tight deadline and resource constraints prompted Truth Initiative® to seek effective, temporary support from an experienced team.</description></item><item><title>Project Mwana: SMS Infant HIV Results</title><link>https://www.caktusgroup.com/case-study/project-mwana/</link><pubDate>Wed, 26 Mar 2014 18:20:37 +0000</pubDate><guid>https://www.caktusgroup.com/case-study/project-mwana/</guid><description>Mobile messaging solution improves delivery of infant HIV results by 57%</description></item><item><title>Moving from Physical Tapes to Amazon Glacier</title><link>https://www.caktusgroup.com/case-study/moving-from-physical-tapes-to-amazon-glacier/</link><pubDate>Wed, 26 Mar 2014 18:20:37 +0000</pubDate><guid>https://www.caktusgroup.com/case-study/moving-from-physical-tapes-to-amazon-glacier/</guid><description>For the world’s largest on-demand video provider, we developed a digital archiving system.</description></item><item><title>Team Augmentation and Best Practices</title><link>https://www.caktusgroup.com/case-study/team-augmentation-and-best-practices/</link><pubDate>Wed, 26 Mar 2014 18:20:37 +0000</pubDate><guid>https://www.caktusgroup.com/case-study/team-augmentation-and-best-practices/</guid><description>We supported a growing startup by staffing our own Django experts and imparting best practices.</description></item><item><title>NC Health Insurance Exchange</title><link>https://www.caktusgroup.com/case-study/ncgetcoveredorg/</link><pubDate>Wed, 12 Nov 2014 15:38:28 +0000</pubDate><guid>https://www.caktusgroup.com/case-study/ncgetcoveredorg/</guid><description>NCGetCovered.org is an alternative exchange that helps North Carolinians enroll in health insurance.</description></item><item><title>PyCon 2014 Website Development</title><link>https://www.caktusgroup.com/case-study/pycon-2014-website/</link><pubDate>Wed, 26 Mar 2014 18:20:37 +0000</pubDate><guid>https://www.caktusgroup.com/case-study/pycon-2014-website/</guid><description>We built and designed this site for the industry’s largest Python users conference.</description></item><item><title>Accessible Traffic Stop Data with NC CopWatch</title><link>https://www.caktusgroup.com/case-study/accessible-nc-traffic-stops-data/</link><pubDate>Tue, 21 Oct 2025 09:00:00 +0400</pubDate><guid>https://www.caktusgroup.com/case-study/accessible-nc-traffic-stops-data/</guid><description>Forward Justice partnered with Caktus to transform North Carolina&amp;rsquo;s 32 million+ inaccessible traffic stop records into an open-source public resource. This tool empowers communities and advocates to analyze law enforcement data and drive data-driven policy reform.</description></item><item><title>Auto-scaling Online Survey</title><link>https://www.caktusgroup.com/case-study/auto-scaling-online-survey/</link><pubDate>Wed, 26 Mar 2014 18:20:37 +0000</pubDate><guid>https://www.caktusgroup.com/case-study/auto-scaling-online-survey/</guid><description>UChicago can now track school reform through online surveys of millions of students throughout the United States.</description></item><item><title>Tracking Back Pain with FitBits</title><link>https://www.caktusgroup.com/case-study/tracking-back-pain-with-fitbits/</link><pubDate>Wed, 26 Mar 2014 18:20:37 +0000</pubDate><guid>https://www.caktusgroup.com/case-study/tracking-back-pain-with-fitbits/</guid><description>The FitBack web application uses the FitBit to correlate back pain with exercise, sleep, and other variables.</description></item><item><title>DjangoCon 2025 The Attendee's Experience</title><link>https://www.caktusgroup.com/blog/2026/03/02/djangocon-2025-the-attendees-experience/</link><pubDate>Mon, 02 Mar 2026 09:00:00 -0600</pubDate><guid>https://www.caktusgroup.com/blog/2026/03/02/djangocon-2025-the-attendees-experience/</guid><description>&lt;p>This post is &lt;strong>the second in a three-part series&lt;/strong> reflecting on DjangoCon US 2025. In this post, I’m reflecting on experiencing DjangoCon 2025 from the audience while serving as conference chair.&lt;/p></description></item><item><title>PydanticAI Agents Intro</title><link>https://www.caktusgroup.com/blog/2025/12/16/pydanticai-agents-intro/</link><pubDate>Tue, 16 Dec 2025 08:00:00 -0500</pubDate><guid>https://www.caktusgroup.com/blog/2025/12/16/pydanticai-agents-intro/</guid><description>&lt;p>In previous posts, we explored function calling and how it enables models to interact with external tools. However, manually defining schemas and managing the request/response loop can get tedious as an application grows. Agent frameworks can help here.&lt;/p></description></item><item><title>LLM Basics: Ollama Function Calling</title><link>https://www.caktusgroup.com/blog/2025/12/03/learning-llm-basics-ollama-function-calling/</link><pubDate>Wed, 03 Dec 2025 19:42:14 +0300</pubDate><guid>https://www.caktusgroup.com/blog/2025/12/03/learning-llm-basics-ollama-function-calling/</guid><description>&lt;p>In our &lt;a href="https://www.caktusgroup.com/blog/2025/12/01/learning-llm-basics-openai-function-calling/">previous post&lt;/a>, we introduced function calling and learned how to do it with OpenAI&amp;rsquo;s LLMs.
In this post, we&amp;rsquo;ll call the same &lt;code>cactify_name&lt;/code> function from that post using Meta&amp;rsquo;s
Llama 3.2 model, installed locally using Ollama. The techniques in this post should also work
with &lt;a href="https://ollama.com/search?c=tools" target="_blank" rel="noopener noreferrer">other Ollama models that support function-calling&lt;/a>.&lt;/p></description></item><item><title>LLM Basics: OpenAI Function Calling</title><link>https://www.caktusgroup.com/blog/2025/12/01/learning-llm-basics-openai-function-calling/</link><pubDate>Mon, 01 Dec 2025 10:00:00 -0500</pubDate><guid>https://www.caktusgroup.com/blog/2025/12/01/learning-llm-basics-openai-function-calling/</guid><description>&lt;p>In our &lt;a href="https://www.caktusgroup.com/blog/2025/10/28/learning-llm-basics-ollama/">previous post&lt;/a>, we explored how to send text to an LLM and receive a text response in return. That is useful for chatbots, but often we need to integrate LLMs with other systems. We may want the model to query a database, call an external API, or perform calculations.&lt;/p></description></item><item><title>Behind the Curtain as a Conference Chair</title><link>https://www.caktusgroup.com/blog/2025/11/12/behind-the-curtain-as-a-conference-chair/</link><pubDate>Wed, 12 Nov 2025 00:00:00 -0600</pubDate><guid>https://www.caktusgroup.com/blog/2025/11/12/behind-the-curtain-as-a-conference-chair/</guid><description>&lt;p>This post is &lt;strong>the first in a three-part series&lt;/strong> reflecting on DjangoCon US 2025 — In this post, I’m taking you behind the scenes of DjangoCon US 2025 to share what it taught me about leadership, community, and the power of holding space for others.&lt;/p></description></item><item><title>Hitting Limits and Noticing Clues in Graphs</title><link>https://www.caktusgroup.com/blog/2025/11/05/hitting-limits-and-noticing-clues-in-graphs/</link><pubDate>Wed, 05 Nov 2025 16:53:53 -0600</pubDate><guid>https://www.caktusgroup.com/blog/2025/11/05/hitting-limits-and-noticing-clues-in-graphs/</guid><description>&lt;p>Editor’s Note: This post was updated November 11, 2025 to correct the graphs that are linked to the text in the blog.&lt;/p></description></item><item><title>The Halting Problem</title><link>https://www.caktusgroup.com/blog/2025/11/03/the-halting-problem/</link><pubDate>Mon, 03 Nov 2025 09:00:00 -0500</pubDate><guid>https://www.caktusgroup.com/blog/2025/11/03/the-halting-problem/</guid><description>&lt;p>In &lt;a href="https://www.caktusgroup.com/blog/2025/03/11/choosing-a-voice-for-speech-synthesis/">a previous post&lt;/a>, I wrote about adding read-aloud support to a website we maintain. I mentioned how it was pretty straightforward to do and even easy to get the browser to choose a correct voice that matches the language of the text being spoken. We did, however, hit one puzzling and difficult-to-resolve issue: for &lt;em>large&lt;/em> pieces of text to be read aloud, sometimes a browser would simply stop speaking. No errors appeared in the JavaScript console, and querying the &lt;code>speechSynthesis&lt;/code> API indicated it was “speaking,” but it wasn’t.&lt;/p></description></item><item><title>Learning LLM Basics with Ollama</title><link>https://www.caktusgroup.com/blog/2025/10/28/learning-llm-basics-ollama/</link><pubDate>Tue, 28 Oct 2025 00:53:50 -0400</pubDate><guid>https://www.caktusgroup.com/blog/2025/10/28/learning-llm-basics-ollama/</guid><description>&lt;p>We have recently started learning about LLMs and how we can integrate them into our development projects, and we will be documenting our learning in a series of blog posts.
In our &lt;a href="https://www.caktusgroup.com/blog/2025/10/02/learning-llm-basics-openai/">first installment&lt;/a> of the &lt;a href="https://www.caktusgroup.com/tags/llm-learning-series/">series&lt;/a>, we learned about the OpenAI API.
In this one, we will experiment with &lt;a href="https://ollama.com/" target="_blank" rel="noopener noreferrer">Ollama&lt;/a>, which is an open-source application that allows you to download, run, and interact with LLMs on your own hardware. By running models locally, you maintain complete control over your data and can use LLMs without an internet connection. It also allows you to easily experiment with different models.&lt;/p></description></item><item><title>How We Replaced Bit.ly with Our Own URL Shortener Using Hugo and Cloudflare Pages</title><link>https://www.caktusgroup.com/blog/2025/10/21/how-we-replaced-bitly/</link><pubDate>Tue, 21 Oct 2025 09:42:47 -0400</pubDate><guid>https://www.caktusgroup.com/blog/2025/10/21/how-we-replaced-bitly/</guid><description>&lt;p>We have been using Bit.ly to create easily shareable short URLs, but we recently
decided to replace it with our own solution. We created a &lt;a href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo&lt;/a>-based static
website where we could create the short URLs, handle redirects to their respective long URLs,
and have a page for each short URL displaying its QR code.&lt;/p></description></item><item><title>Don't Let Search Take You Down</title><link>https://www.caktusgroup.com/blog/2025/10/07/dont-let-search-take-you-down/</link><pubDate>Tue, 07 Oct 2025 14:00:00 -0400</pubDate><guid>https://www.caktusgroup.com/blog/2025/10/07/dont-let-search-take-you-down/</guid><description>&lt;p>Twice in the last few months we&amp;rsquo;ve had to deal with &lt;strong>Django production site issues&lt;/strong> caused by inefficient search queries.&lt;/p></description></item><item><title>DjangoCon US 2025: A Celebration of Community, Code and 20 Years of Django</title><link>https://www.caktusgroup.com/blog/2025/10/06/djangocon-us-2025-celebration-community-code-20-years/</link><pubDate>Mon, 06 Oct 2025 09:00:00 -0500</pubDate><guid>https://www.caktusgroup.com/blog/2025/10/06/djangocon-us-2025-celebration-community-code-20-years/</guid><description>&lt;figure>&lt;img src="https://www.caktusgroup.com/blog/2025/10/06/djangocon-us-2025-celebration-community-code-20-years/djangocon25.jpg"
 alt="Group photo at DjangoCon US 2025">&lt;figcaption>
 &lt;p>Celebrating 20 years of Django&lt;/p>
 &lt;/figcaption>
&lt;/figure>

&lt;p>DjangoCon US 2025 was a milestone year for the community, as we gathered in Chicago to celebrate 20 years of Django. Attendees from around the world came together to learn about the latest developments, share their work, and strengthen the bonds that make DjangoCon such a special event. Caktus was well-represented once again, with our team contributing as organizers, speakers, and active participants throughout the week.&lt;/p></description></item><item><title>Learning LLM Basics with OpenAI</title><link>https://www.caktusgroup.com/blog/2025/10/02/learning-llm-basics-openai/</link><pubDate>Thu, 02 Oct 2025 09:00:00 -0400</pubDate><guid>https://www.caktusgroup.com/blog/2025/10/02/learning-llm-basics-openai/</guid><description>&lt;p>For some time now, we&amp;rsquo;ve been using tools like ChatGPT and CoPilot for day-to-day tasks, but mostly through the conversational AI chatbots they provide. We&amp;rsquo;ve used them for everything from drafting emails to providing type-ahead coding assistance. We haven&amp;rsquo;t, however, gone a step further and integrated them into a development project. Honestly, we weren&amp;rsquo;t sure where to start. Looking into the available options, you quickly run into a dozen new concepts, from vector stores to agents, and different SDKs that all seem to solve similar problems.&lt;/p></description></item><item><title>Migrating Amazon EKS Nodes to Amazon Linux 2023 (AL2023) from Amazon Linux 2 (AL2) Using CloudFormation and Troposphere</title><link>https://www.caktusgroup.com/blog/2025/09/migrate-eks-nodes-from-al2-to-al2023-images/</link><pubDate>Wed, 24 Sep 2025 22:18:00 +0300</pubDate><guid>https://www.caktusgroup.com/blog/2025/09/migrate-eks-nodes-from-al2-to-al2023-images/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>In this post, we’ll explain how we extended our existing AWS CloudFormation infrastructure, built using &lt;a href="https://github.com/cloudtools/troposphere" target="_blank" rel="noopener noreferrer">Troposphere&lt;/a>, to support the use of &lt;code>Amazon Linux 2023 (AL2023)&lt;/code> for Amazon EKS (Elastic Kubernetes Service) nodes. This migration was necessary to ensure compatibility ahead of our planned upgrade to &lt;code>Kubernetes version 1.33&lt;/code>.&lt;/p></description></item><item><title>How to migrate from pip-tools to uv</title><link>https://www.caktusgroup.com/blog/2025/08/25/migrate-pip-tools-to-uv/</link><pubDate>Mon, 25 Aug 2025 14:00:00 -0400</pubDate><guid>https://www.caktusgroup.com/blog/2025/08/25/migrate-pip-tools-to-uv/</guid><description>&lt;p>At Caktus, many of our projects use &lt;code>pip-tools&lt;/code> for dependency management. Following Tobias&amp;rsquo; post &lt;a href="https://www.caktusgroup.com/blog/2025/06/11/migrating-python-django-projects-uv/">How to Migrate your Python &amp;amp; Django Projects to uv&lt;/a>, we were looking to migrate other projects to &lt;code>uv&lt;/code>, but the path seemed less clear with existing pip-tools setups. Our requirements are often spread across multiple files, like this:&lt;/p></description></item><item><title>How to Deploy a Hugo Site to Cloudflare Pages With Github Actions</title><link>https://www.caktusgroup.com/blog/2025/08/20/how-to-deploy-a-hugo-site-to-cloudflare-pages-with-github-actions/</link><pubDate>Wed, 20 Aug 2025 01:33:52 +0300</pubDate><guid>https://www.caktusgroup.com/blog/2025/08/20/how-to-deploy-a-hugo-site-to-cloudflare-pages-with-github-actions/</guid><description>&lt;p>We recently moved this website from Django to a static website made using &lt;a href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo&lt;/a>, and
decided to use &lt;a href="https://pages.cloudflare.com/" target="_blank" rel="noopener noreferrer">Cloudflare Pages&lt;/a> to deploy it.
Cloudflare Pages offers automatic deployments, meaning it can automatically build
and deploy a website when changes are pushed to a GitHub branch. This is simple
to set up and works well. However, we wanted to build and deploy using GitHub
Actions instead, so that the build logs would be easily accessible on GitHub.
Cloudflare&amp;rsquo;s &lt;a href="https://github.com/cloudflare/wrangler-action" target="_blank" rel="noopener noreferrer">&lt;code>wrangler-action&lt;/code>&lt;/a>
makes it simple to set up a GitHub Actions workflow for this.&lt;/p></description></item><item><title>Why Open Source Makes Sense For Your Business Web Projects</title><link>https://www.caktusgroup.com/blog/2025/08/12/why-open-source-makes-sense-for-your-business-web-projects/</link><pubDate>Tue, 12 Aug 2025 13:15:00 -0500</pubDate><guid>https://www.caktusgroup.com/blog/2025/08/12/why-open-source-makes-sense-for-your-business-web-projects/</guid><description>&lt;h2 id="what-is-open-source">What Is Open Source?&lt;/h2>
&lt;p>Open source software is publicly available code that anyone can use, modify, and improve. It’s the foundation of much of the modern internet and it’s trusted by global enterprises, startups, nonprofits, and government agencies alike.&lt;/p></description></item><item><title>Happy 20th Birthday Django!</title><link>https://www.caktusgroup.com/blog/2025/08/11/happy-20th-birthday-django/</link><pubDate>Mon, 11 Aug 2025 12:27:30 -0400</pubDate><guid>https://www.caktusgroup.com/blog/2025/08/11/happy-20th-birthday-django/</guid><description>&lt;p>This Tuesday (tomorrow!), August 12th, we’re teaming up with &lt;a href="https://www.meetup.com/tripython/" target="_blank" rel="noopener noreferrer">TriPython&lt;/a> to host an informal Django Birthday event at &lt;a href="https://boxyard.rtp.org/" target="_blank" rel="noopener noreferrer">Boxyard RTP&lt;/a> in Durham.&lt;/p></description></item><item><title>Handling Configuration and Server Snippets When Upgrading to ingress-nginx 1.12.0</title><link>https://www.caktusgroup.com/blog/2025/07/03/handling-configuration-and-server-snippets-when-upgrading-ingress-nginx-1120/</link><pubDate>Thu, 03 Jul 2025 16:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/07/03/handling-configuration-and-server-snippets-when-upgrading-ingress-nginx-1120/</guid><description>&lt;p>As part of our ongoing Sustainability and Maintenance efforts, we are
upgrading our Kubernetes clusters to version 1.32. Much like a major
Django upgrade, this process requires us to update other key components
to ensure they remain compatible. One of these is the ingress-nginx
controller, which manages external access to the cluster.&lt;/p></description></item><item><title>Avoiding Timezone Traps: Correctly Extracting Date/Time Subfields in Django with PostgreSQL</title><link>https://www.caktusgroup.com/blog/2025/06/16/avoiding-timezone-traps-correctly-extracting-datetime-subfields-django-postgresql/</link><pubDate>Mon, 16 Jun 2025 19:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/06/16/avoiding-timezone-traps-correctly-extracting-datetime-subfields-django-postgresql/</guid><description>&lt;p>Working with timezones can sometimes lead to confusing results,
especially when combining Django's ORM, raw SQL for performance (like
in PostgreSQL materialized views), and specific timezone requirements. I
recently had an issue while aggregating traffic stop data by year, where
all yearly calculations needed to reflect the 'America/New_York'
(EST/EDT) timezone, even though our original data contained
&lt;code>timestamp with time zone&lt;/code> fields. We were using
&lt;a href="https://github.com/xelixdev/django-pgviews-redux" target="_blank" rel="noopener noreferrer">django-pgviews-redux&lt;/a>
to manage materialized views, and I mistakenly attempted to apply
timezone logic to a &lt;code>date&lt;/code> field that had no time or timezone
information.&lt;/p></description></item><item><title>How to Migrate your Python &amp; Django Projects to uv</title><link>https://www.caktusgroup.com/blog/2025/06/11/migrating-python-django-projects-uv/</link><pubDate>Wed, 11 Jun 2025 05:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/06/11/migrating-python-django-projects-uv/</guid><description>&lt;p>&lt;em>Editor&amp;rsquo;s note:&lt;/em> This post was updated on July 17th, 2025, to use the
&lt;code>PATH_add&lt;/code> hook for direnv and to recommend including &lt;code>uv sync --locked&lt;/code>
in your &lt;code>.envrc&lt;/code> file.&lt;/p></description></item><item><title>DjangoCon Europe 2025 Highlights</title><link>https://www.caktusgroup.com/blog/2025/05/27/djangocon-europe-2025-highlights/</link><pubDate>Tue, 27 May 2025 05:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/05/27/djangocon-europe-2025-highlights/</guid><description>&lt;p>Three Cakti recently attended DjangoCon Europe 2025 in Dublin and it was a wonderful experience! It was great to see and chat with various Django community members we usually only see once or twice a year. Beyond that, we were most impressed by the consistently high quality of the talks throughout all three days of the conference. It was a pleasure to listen to so many excellent presentations, including the lightning talks at the end of each day. Here are some of our favorite talks.&lt;/p></description></item><item><title>Chicago Like a Local: Part 2</title><link>https://www.caktusgroup.com/blog/2025/04/24/chicago-local-part-2/</link><pubDate>Thu, 24 Apr 2025 23:54:16 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/04/24/chicago-local-part-2/</guid><description>&lt;h2 id="chicago-like-a-local-hidden-gems--unique-experiences-part-2">Chicago Like a Local: Hidden Gems &amp;amp; Unique Experiences (Part 2)&lt;/h2>
&lt;p>&lt;a href="https://2025.djangocon.us/" target="_blank" rel="noopener noreferrer">DjangoCon US 2025&lt;/a> is getting closer, and while we&amp;rsquo;ve covered some classic must-see spots in Part 1, there’s so much more to explore beyond the typical tourist attractions. If you’re looking for unique experiences, quirky hidden gems, and places where locals actually hang out, this guide is for you.&lt;/p></description></item><item><title>Tips for Tracking Django Model Changes with django-pghistory</title><link>https://www.caktusgroup.com/blog/2025/04/07/tips-tracking-django-model-changes-django-pghistory/</link><pubDate>Mon, 07 Apr 2025 10:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/04/07/tips-tracking-django-model-changes-django-pghistory/</guid><description>&lt;p>Django and its admin interface are a big part of &lt;a href="https://www.caktusgroup.com/blog/2016/12/14/django-boring-or-why-tech-startups-should-use-django/">why Caktus uses
Django&lt;/a>,
but the admin's ability to log database changes is limited. For
example, it shows only changes made via the Django admin, not via other
parts of the site.&lt;/p></description></item><item><title>Cakti Share Their Favorite Tools For Streamlined Workflows</title><link>https://www.caktusgroup.com/blog/2025/03/27/cakti-share-their-favorite-tools-for-streamlined-worklows/</link><pubDate>Thu, 27 Mar 2025 20:09:03 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/03/27/cakti-share-their-favorite-tools-for-streamlined-worklows/</guid><description>&lt;p>Let’s jump into it!&lt;/p>
&lt;p>At Caktus, we’re always looking for tools that help us streamline our workflows, increase productivity, and make our day-to-day tasks more efficient. Whether you&amp;rsquo;re managing projects, writing code, or debugging, the right tools can make all the difference. Here are some of our favorite tools that we love using to get the job done!&lt;/p></description></item><item><title>Upgrade Smarter, Not Harder: Python Tools for Code Modernization</title><link>https://www.caktusgroup.com/blog/2025/03/27/upgrade-smarter-not-harder-python-tools-code-modernization/</link><pubDate>Thu, 27 Mar 2025 10:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/03/27/upgrade-smarter-not-harder-python-tools-code-modernization/</guid><description>&lt;p>Upgrading projects is somewhat equivalent to flossing, you know you have
to do it, but rarely make time for it. After all, if the project is in
active development, there are exciting new features to build. And we all
know that &lt;strong>new features&lt;/strong> &amp;gt; &lt;strong>project upgrades&lt;/strong>. Well not to worry,
Caktus wants to make you aware of some tools that will save you from
considerable repetitive work &amp;amp; time while simultaneously modernizing
your codebase. Combined, these tools will automate part of the upgrade
process, decreasing the likelihood of neglecting parts of the codebase.&lt;/p></description></item><item><title>How to Use regexp_matches and regexp_match in PostgreSQL</title><link>https://www.caktusgroup.com/blog/2025/03/19/how-use-regexp_matches-and-regexp_match-postgresql/</link><pubDate>Wed, 19 Mar 2025 08:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/03/19/how-use-regexp_matches-and-regexp_match-postgresql/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>&lt;code>regexp_matches()&lt;/code> and &lt;code>regexp_match()&lt;/code> are two similar &lt;a href="https://www.postgresql.org/docs/current/functions-string.html" target="_blank" rel="noopener noreferrer">string
functions&lt;/a>
that support regular expression matching directly in the PostgreSQL
database. &lt;code>regexp_matches()&lt;/code> was added in &lt;a href="https://www.postgresql.org/docs/8.3/release-8-3.html" target="_blank" rel="noopener noreferrer">PostgreSQL
8.3&lt;/a>, and
&lt;code>regexp_match()&lt;/code> was added in &lt;a href="https://www.postgresql.org/docs/release/10.0/" target="_blank" rel="noopener noreferrer">PostgreSQL
10&lt;/a> (keep reading to see
how ChatGPT struggled to answer this question).&lt;/p></description></item><item><title>How to Create a Helm Chart for a Django App</title><link>https://www.caktusgroup.com/blog/2025/03/18/how-create-helm-chart-django-app/</link><pubDate>Tue, 18 Mar 2025 08:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/03/18/how-create-helm-chart-django-app/</guid><description>&lt;p>At Caktus, we use &lt;a href="https://helm.sh/" target="_blank" rel="noopener noreferrer">Helm charts&lt;/a> to simplify our
deployment process for Django projects. Helm is a package manager for
Kubernetes, and using Helm charts allows us to automate the process of
writing Kubernetes configuration files for our Django applications. We
use it together with GitHub Actions and Ansible to streamline our
deployment processes.&lt;/p></description></item><item><title>One Thing to Look Out For While Testing django-import-export</title><link>https://www.caktusgroup.com/blog/2025/03/17/one-thing-look-out-while-testing-django-import-export/</link><pubDate>Mon, 17 Mar 2025 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/03/17/one-thing-look-out-while-testing-django-import-export/</guid><description>&lt;p>Often the applications we build at Caktus deal with large sets of Django
objects. The attributes of these objects can vary, and may need updating
in certain instances. One of the best ways to manage this data is via
&lt;a href="https://django-import-export.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer">django-import-export&lt;/a>,
which is a tool that creates a way to perform these bulk updates with a
file upload such as a .csv or .xlsx file.&lt;/p></description></item><item><title>Private, ngrok-like Dev Servers with Tailscale</title><link>https://www.caktusgroup.com/blog/2025/03/12/private-ngrok-dev-servers-tailscale/</link><pubDate>Wed, 12 Mar 2025 10:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/03/12/private-ngrok-dev-servers-tailscale/</guid><description>&lt;p>This past week, I learned that it's possible to run
&lt;a href="https://tailscale.com/" target="_blank" rel="noopener noreferrer">Tailscale&lt;/a> in a local &lt;code>docker-compose.yml&lt;/code> on a
developer's workstation, and securely allow access to services in the
docker-compose file to other users on your Tailnet.&lt;/p></description></item><item><title>Choosing a Voice for Speech Synthesis</title><link>https://www.caktusgroup.com/blog/2025/03/11/choosing-a-voice-for-speech-synthesis/</link><pubDate>Tue, 11 Mar 2025 14:45:36 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/03/11/choosing-a-voice-for-speech-synthesis/</guid><description>&lt;p>Recently we&amp;rsquo;ve been adding read-aloud support to a Django website. The tech stack for this site is Django with a bit of jQuery on the front end. The website is used exclusively in the United States, its content is offered in English and Spanish, and the read-aloud support is wanted for forms on the site. So where the site offered, for example:&lt;/p></description></item><item><title>A Helpful Guide to Solving Common Poetry Issues</title><link>https://www.caktusgroup.com/blog/2025/03/10/helpful-guide-solving-common-poetry-issues/</link><pubDate>Mon, 10 Mar 2025 10:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/03/10/helpful-guide-solving-common-poetry-issues/</guid><description>&lt;p>We don't often use &lt;a href="https://python-poetry.org/" target="_blank" rel="noopener noreferrer">Poetry&lt;/a>, the Python
packaging and dependency management tool, but when we do, we usually
look up and re-learn the same things repeatedly. This post is a quick
reference for some of the recent issues we encountered when using
&lt;a href="https://python-poetry.org/" target="_blank" rel="noopener noreferrer">Poetry&lt;/a>.&lt;/p></description></item><item><title>Chicago Like A Local</title><link>https://www.caktusgroup.com/blog/2025/03/06/chicago-local/</link><pubDate>Thu, 06 Mar 2025 18:16:09 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/03/06/chicago-local/</guid><description>&lt;h2 id="chicago-like-a-local-things-to-do-during-djangocon-us-2025-part-1">Chicago Like a Local: Things to Do During DjangoCon US 2025 (Part 1)&lt;/h2>
&lt;p>&lt;a href="https://2025.djangocon.us/" target="_blank" rel="noopener noreferrer">DjangoCon US 2025&lt;/a> is coming to Chicago, and while you’ll be busy soaking in all things Django, there’s no reason you can’t experience the city like a local while you’re here. Whether you’re looking for great food, cultural spots, or just a cool place to unwind, here are some top recommendations from a Chicago native.&lt;/p></description></item><item><title>Understanding Pricing in Custom Software Development</title><link>https://www.caktusgroup.com/blog/2025/03/06/understanding-pricing-in-custom-software-development/</link><pubDate>Thu, 06 Mar 2025 15:30:34 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/03/06/understanding-pricing-in-custom-software-development/</guid><description>&lt;p>If you’re in the early stages of a software project and researching a technology partner, I can guess your top two questions:&lt;/p></description></item><item><title>How to Deploy Selectively to Production</title><link>https://www.caktusgroup.com/blog/2025/03/04/how-deploy-selectively-production/</link><pubDate>Tue, 04 Mar 2025 11:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/03/04/how-deploy-selectively-production/</guid><description>&lt;p>Sometimes, it&amp;rsquo;s necessary to deploy a set of features and/or bug fixes to production before part of the current &amp;ldquo;testing&amp;rdquo; branch has been tested completely in a Q/A or staging environment.&lt;/p></description></item><item><title>Deleting a Django Application from a Multi-Site Kubernetes Cluster</title><link>https://www.caktusgroup.com/blog/2025/03/03/deleting-django-application-multi-site-kubernetes-cluster/</link><pubDate>Mon, 03 Mar 2025 13:20:54 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/03/03/deleting-django-application-multi-site-kubernetes-cluster/</guid><description>&lt;p>Recently, a client requested that we delete a website that was no longer
used. The Kubernetes cluster was managed by an engineer who is no longer
with the company, making the cluster feel like a concealed box. All I
had was the website&amp;rsquo;s name. Since we use &lt;a href="https://github.com/kubernetes/ingress-nginx" target="_blank" rel="noopener noreferrer">Ingress
Nginx&lt;/a> and
&lt;a href="https://nginx.org/" target="_blank" rel="noopener noreferrer">Nginx&lt;/a> as a web server, I figured the answer to my
query could be found there. So I ran:&lt;/p></description></item><item><title>How to fix factory_boy post-generation deprecation warnings</title><link>https://www.caktusgroup.com/blog/2025/02/18/how-fix-factory_boy-post-generation-deprecation-warning/</link><pubDate>Tue, 18 Feb 2025 17:52:17 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2025/02/18/how-fix-factory_boy-post-generation-deprecation-warning/</guid><description>&lt;p>We use &lt;a href="https://factoryboy.readthedocs.io/en/stable/" target="_blank" rel="noopener noreferrer">factory_boy&lt;/a> for
bootstrapping test data on many Python and Django projects at Caktus.
Recently, we encountered a deprecation warning on an older project that
had been using &lt;code>factory_boy&lt;/code> for some time:&lt;/p></description></item><item><title>Reflections on DjangoCon US 2024: Highlights, Takeaways, and Community Connections</title><link>https://www.caktusgroup.com/blog/2024/12/16/reflections-djangocon-us-2024-highlights-takeaways-and-community-connections/</link><pubDate>Mon, 16 Dec 2024 23:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2024/12/16/reflections-djangocon-us-2024-highlights-takeaways-and-community-connections/</guid><description>&lt;p>DjangoCon 2024 was a resounding success for the community, with attendees from all over the world gathering to learn about the latest developments in Django and to connect with the Django community. Caktus was well-represented at the conference, with six of our team members attending. In this blog post, we share our experiences at DjangoCon 2024, including our favorite talks, the people we met, and the things we learned. We also offer some tips for future attendees on how to get the most out of DjangoCon.&lt;/p></description></item><item><title>Getting Started with Dagster</title><link>https://www.caktusgroup.com/blog/2024/12/09/getting-started-dagster/</link><pubDate>Mon, 09 Dec 2024 23:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2024/12/09/getting-started-dagster/</guid><description>&lt;p>Recently, Caktus has been using Tailscale to manage VPN connections
between Android tablets and a central server. We wanted to report on the
devices connected to the network using the Tailscale API. While we could
use tools like &lt;a href="https://docs.celeryq.dev/en/stable/" target="_blank" rel="noopener noreferrer">Celery&lt;/a> to fetch
data from the API and load it into a database&amp;mdash;given its widespread use
in the Django ecosystem&amp;mdash;we also wanted to explore other options.&lt;/p></description></item><item><title>Upgrading PostgreSQL From v11 to v15 in Your Django Application</title><link>https://www.caktusgroup.com/blog/2023/10/23/upgrade-postgresql-client-15/</link><pubDate>Mon, 23 Oct 2023 13:28:50 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/10/23/upgrade-postgresql-client-15/</guid><description>&lt;p>In the ever-evolving world of data management, staying up-to-date with
the latest technologies and best practices is imperative. One crucial
aspect of this is ensuring your PostgreSQL version remains current. On
&lt;strong>November 9, 2023&lt;/strong>, PostgreSQL 11 reaches &lt;a href="https://www.postgresql.org/support/versioning/#:~:text=November%2014%2C%202024-,11,November%209%2C%202023,-10" target="_blank" rel="noopener noreferrer">end of life
(EOL)&lt;/a>.&lt;/p></description></item><item><title>Migrating a Django Project from a GPU to a Convenience Image on CircleCI</title><link>https://www.caktusgroup.com/blog/2023/08/22/migrating-django-project-gpu-convenience-image-circleci/</link><pubDate>Tue, 22 Aug 2023 11:22:07 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/08/22/migrating-django-project-gpu-convenience-image-circleci/</guid><description>&lt;p>Recently we learned that as of &lt;em>September 30th, 2023&lt;/em> &lt;a href="https://discuss.circleci.com/t/linux-cuda-deprecation-and-image-policy/48568?mkt_tok=NDg1LVpNSC02MjYAAAGM6em0j1c6QSwAzSPHBw_kbCD6VmHwcrtr74I_yJ4R5W6GlyyUFsm1Qtv7LLzkwkVqvCeh2UqgD4lY4ZjnezxuvYUcc9HgZ2xXuihHBlv_45J_" target="_blank" rel="noopener noreferrer">several linux
images will be
deprecated&lt;/a>,
including the one we used, &lt;code>ubuntu-2004:202111-02&lt;/code>. Therefore, after
September 30th, our pipelines would have failed. To avoid this, we
switched several machines in our Django project from Ubuntu GPU images
to convenience images; This writing details that switch.&lt;/p></description></item><item><title>Addressing the recent uptick in scam job offers on LinkedIn related to Caktus Group LLC.</title><link>https://www.caktusgroup.com/blog/2023/08/14/addressing-recent-uptick-scam-job-offers-linkedin-related-caktus-group-llc/</link><pubDate>Mon, 14 Aug 2023 18:03:02 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/08/14/addressing-recent-uptick-scam-job-offers-linkedin-related-caktus-group-llc/</guid><description>&lt;p>Beginning on July 20th, many individuals contacted us asking if a job offer they had received from us was a legitimate offer, wanting to ensure that they were talking with the correct person at the company. The unfortunate truth was that none of the potential applicants seeking information had submitted an application with Caktus Group.&lt;/p></description></item><item><title>Migrate to Amazon EKS Add-ons</title><link>https://www.caktusgroup.com/blog/2023/07/10/migrate-amazon-eks-add-ons/</link><pubDate>Mon, 10 Jul 2023 17:07:44 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/07/10/migrate-amazon-eks-add-ons/</guid><description>&lt;p>Amazon Elastic Kubernetes Service (Amazon EKS) released support for
operational cluster add-on software, or &lt;a href="https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html" target="_blank" rel="noopener noreferrer">Amazon EKS
add-ons&lt;/a>,
around Kubernetes version 1.19 in May 2021. These include:&lt;/p></description></item><item><title>Set up AWS CloudTrail to Monitor Application Events using Ansible</title><link>https://www.caktusgroup.com/blog/2023/06/27/set-aws-cloudtrail-monitor-kubernetes-application-events-using-ansible/</link><pubDate>Tue, 27 Jun 2023 15:50:46 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/06/27/set-aws-cloudtrail-monitor-kubernetes-application-events-using-ansible/</guid><description>&lt;p>AWS CloudTrail is a service that enables monitoring and recording of
account activities. In this post, we will use CloudTrail to monitor CPU
usage and to monitor our nodes. We will use Ansible to automate the
setup process and as a means to document our setup (IaC). This post
assumes you already have Ansible set up for your project and will not
provide setup instructions.&lt;/p></description></item><item><title>GitHub Submodules: Leveraging Branches to Allow Independent Updates in Parent Applications</title><link>https://www.caktusgroup.com/blog/2023/06/09/github-submodule-branches-upgrade/</link><pubDate>Fri, 09 Jun 2023 13:24:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/06/09/github-submodule-branches-upgrade/</guid><description>&lt;p>Recently I&amp;rsquo;ve been working with projects that use GitHub submodules.
According to
&lt;a href="https://github.blog/2016-02-01-working-with-submodules/#:~:text=Submodules%20allow%20you%20to%20include%20or%20embed%20one%20or%20more%20repositories%20as%20a%20sub%2Dfolder%20inside%20another%20repository" target="_blank" rel="noopener noreferrer">GitHub&lt;/a>,
submodules &amp;ldquo;allow you to include or embed one or more repositories as a
sub-folder inside another repository.&amp;rdquo; Submodules help us keep code dry
when functionality is shared across multiple repositories.&lt;/p></description></item><item><title>Update an Amazon EKS cluster Kubernetes version to 1.23+</title><link>https://www.caktusgroup.com/blog/2023/05/03/update-amazon-eks-cluster-kubernetes-version-123/</link><pubDate>Wed, 03 May 2023 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/05/03/update-amazon-eks-cluster-kubernetes-version-123/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Caktus is committed to developing and maintaining high-quality web
applications for clients, so we focus on software sustainability.
Software sustainability refers to the ability of software to continue to
function as expected over time, even as hardware and software
environments change. It involves maintaining and updating software to
remain reliable, secure, and compatible with new hardware and software
technologies. Additionally, from a security perspective, attackers can
exploit software vulnerabilities to gain unauthorized access to systems
or data. Keeping software up-to-date with the latest security patches
helps to reduce the risk of these vulnerabilities being exploited.&lt;/p></description></item><item><title>Analyze data with SQL window functions</title><link>https://www.caktusgroup.com/blog/2023/04/05/analyze-data-sql-window-functions/</link><pubDate>Wed, 05 Apr 2023 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/04/05/analyze-data-sql-window-functions/</guid><description>&lt;p>We regularly use tools like &lt;a href="https://www.postgresql.org/" target="_blank" rel="noopener noreferrer">PostgreSQL&lt;/a>,
&lt;a href="https://pandas.pydata.org/" target="_blank" rel="noopener noreferrer">Pandas&lt;/a>, and &lt;a href="https://jupyter.org/" target="_blank" rel="noopener noreferrer">Jupyter
Notebooks&lt;/a> to analyze data here at Caktus.
Recently, we were reviewing North Carolina traffic stop data for the &lt;a href="https://nccopwatch.org/" target="_blank" rel="noopener noreferrer">NC
CopWatch&lt;/a> project and had the opportunity to
use &lt;a href="https://www.postgresql.org/docs/current/tutorial-window.html" target="_blank" rel="noopener noreferrer">PostgreSQL's window
functions&lt;/a>,
which are helpful when aggregating data.&lt;/p></description></item><item><title>Begin your Data Analysis Journey with Pandas and Seaborn</title><link>https://www.caktusgroup.com/blog/2023/03/28/begin-your-data-analysis-journey-pandas-and-seaborn/</link><pubDate>Tue, 28 Mar 2023 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/03/28/begin-your-data-analysis-journey-pandas-and-seaborn/</guid><description>&lt;p>Lately, there has been a lot of talk about scoring in the NBA because
LeBron James surpassed Kareem Abdul-Jabbar with 38,390 career points. I
have noticed that there is not much discussion about post-season
scoring, so I searched for this
&lt;a href="https://www.kaggle.com/datasets/isaienkov/nba-top-25-alltime-playoff-scorers" target="_blank" rel="noopener noreferrer">dataset&lt;/a>
on Kaggle (nba_playoffs.csv) which contains the top 25 all-time
post-season scoring leaders. Post-season scoring is its own beast. Since
teams face one opponent multiple times in a row, they can better
concentrate on the opposing team and its individual players,
particularly star players. This results in improved defenses across the
board. However, the post-season also means players improving their game.
What is the result of improved defenses and players alike? Only elite
players score consistently and thus, only the NBA's elite are on this
list. This post will first examine the dataset using &lt;strong>Pandas&lt;/strong> and then
use &lt;strong>Seaborn&lt;/strong> to graph such data.&lt;/p></description></item><item><title>Denormalization with JSON Fields for a Performance Boost</title><link>https://www.caktusgroup.com/blog/2023/03/22/denormalization-json-fields-performance-boost/</link><pubDate>Wed, 22 Mar 2023 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/03/22/denormalization-json-fields-performance-boost/</guid><description>&lt;h4 id="what-is-normalized-data">What is Normalized Data?&lt;/h4>
&lt;p>In the early 2000s, I had a paper test that I gave to developer
candidates. It was a single sheet that I printed out from Excel, in
landscape, containing order data from a small fictional online
bookstore. I asked each candidate to &lt;strong>normalize&lt;/strong> the data from the
spreadsheet by drawing and writing on a blank sheet of paper I provided.&lt;/p></description></item><item><title>Forging a New Path</title><link>https://www.caktusgroup.com/blog/2023/03/16/forging-new-path/</link><pubDate>Thu, 16 Mar 2023 15:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/03/16/forging-new-path/</guid><description>&lt;p>I haven’t always been a Software Developer….Imagine that.&lt;/p>
&lt;p>I spent 20 years in Corporate America where I took my career as far as I could without holding a college degree, so I’m definitely not green when it comes to work experience. What a stark difference from my past work experience and my current situation: the corporate world was a dog eat dog kind of world versus the collaborative nature of developing I’m in currently.&lt;/p></description></item><item><title>Post 3</title><link>https://www.caktusgroup.com/posts/post-3/</link><pubDate>Wed, 15 Mar 2023 11:00:00 -0700</pubDate><guid>https://www.caktusgroup.com/posts/post-3/</guid><description>&lt;p>Occaecat aliqua consequat laborum ut ex aute aliqua culpa quis irure esse magna
dolore quis. Proident fugiat labore eu laboris officia Lorem enim. Ipsum
occaecat cillum ut tempor id sint aliqua incididunt nisi incididunt
reprehenderit. Voluptate ad minim sint est aute aliquip esse occaecat tempor
officia qui sunt. Aute ex ipsum id ut in est velit est laborum incididunt.
Aliqua qui id do esse sunt eiusmod id deserunt eu nostrud aute sit ipsum.
Deserunt esse cillum Lorem non magna adipisicing mollit amet consequat. &lt;img src="https://www.caktusgroup.com/posts/post-3/bryce-canyon.jpg" alt="Bryce
Canyon National Park"> Sit excepteur do velit veniam mollit in
nostrud laboris incididunt ea. Amet eu cillum ut reprehenderit culpa aliquip
labore laborum amet sit sit duis. Laborum id proident nostrud dolore laborum
reprehenderit quis mollit nulla amet veniam officia id id. Aliquip in deserunt
qui magna duis qui pariatur officia sunt deserunt.&lt;/p></description></item><item><title>Fellowship: A Path to Caktus</title><link>https://www.caktusgroup.com/blog/2023/03/14/fellowship-a-path-to-caktus/</link><pubDate>Tue, 14 Mar 2023 15:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/03/14/fellowship-a-path-to-caktus/</guid><description>&lt;p>During the past year, we&amp;rsquo;ve begun a new program for folks looking for
training prior to beginning a career in web development. This program
has paired Caktus with a local coding bootcamp to sponsor several
students&amp;rsquo; learning, and subsequently to continue our relationship with
those students, which has led to a full-time position for several of
them. Read below for details on how the fellowship has worked. Looking
for more information about mentorship at Caktus? Check out &lt;a href="https://www.caktusgroup.com/blog/2022/12/07/new-mentorship-program/">A New
Mentorship
Program&lt;/a>.&lt;/p></description></item><item><title>How to Automate Google Sheets to ODK Central</title><link>https://www.caktusgroup.com/blog/2023/03/08/how-automate-google-sheets-odk-central/</link><pubDate>Wed, 08 Mar 2023 15:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/03/08/how-automate-google-sheets-odk-central/</guid><description>&lt;p>&lt;a href="https://getodk.org/" target="_blank" rel="noopener noreferrer">ODK&lt;/a> is a popular tool for offline data collection
with a &lt;a href="https://forum.getodk.org/" target="_blank" rel="noopener noreferrer">thriving user community&lt;/a>. Like a
number of other offline data collection tools, it uses the &lt;a href="https://xlsform.org/en/" target="_blank" rel="noopener noreferrer">XLSForm
standard&lt;/a> for authoring forms. While convenient
to author and exchange, authoring the forms in Excel means each
iteration of the form must be uploaded to the &lt;a href="https://docs.getodk.org/central-intro/" target="_blank" rel="noopener noreferrer">ODK
Central&lt;/a> server that distributes
forms to mobile data collection applications, such as &lt;a href="https://docs.getodk.org/collect-intro/" target="_blank" rel="noopener noreferrer">ODK
Collect&lt;/a>.&lt;/p></description></item><item><title>Back in the Day: BFF Music Bytes</title><link>https://www.caktusgroup.com/blog/2023/02/21/back-day-bestie-beats/</link><pubDate>Wed, 22 Feb 2023 00:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/02/21/back-day-bestie-beats/</guid><description>&lt;p>&lt;a href="https://www.youtube.com/watch?v=q0WMSovOboY" target="_blank" rel="noopener noreferrer">&lt;strong>Back in the Day&lt;/strong>&lt;/a>&lt;strong>:
BFF Music Bytes&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Picture this&lt;/strong>: the year is 2003 and two young women are far from
home. They're joining thousands of contemporaries in the pursuit of
independence, education, and community. One of them hailing from the
bluegrass state, the other from the Motown Records capital city of
Detroit, both of them trepidatiously ready to call North Carolina home
for the next nine months. Their hometowns couldn&amp;rsquo;t be more different,
but one night after a full day of orientation, one of them spies the
other reading a familiar book. Not only were books the key to her heart,
but to see Harry Potter and the Order of the Phoenix in this Detroit
girl's hands was nothing short of the magic infused within the book&amp;rsquo;s
pages. From that moment on, she knew they would be the &lt;a href="https://www.youtube.com/watch?v=xsGP35Vd6qQ" target="_blank" rel="noopener noreferrer">two best friends
that anyone could have&lt;/a>.
And it was so.&lt;/p></description></item><item><title>Grab a Good Book and Put on Some Music</title><link>https://www.caktusgroup.com/blog/2023/02/17/grab-good-book-and-put-some-music/</link><pubDate>Fri, 17 Feb 2023 16:19:17 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/02/17/grab-good-book-and-put-some-music/</guid><description>&lt;p>It&amp;rsquo;s another collaboration Friday during this celebration of Black
History Month with Caktus! Here is a list of books that team member
Keanya Phelps read and loved, along with an accompanying soundtrack
curated by Lindsey Ardrey.&lt;/p></description></item><item><title>Post 2</title><link>https://www.caktusgroup.com/posts/post-2/</link><pubDate>Wed, 15 Feb 2023 10:00:00 -0700</pubDate><guid>https://www.caktusgroup.com/posts/post-2/</guid><description>&lt;p>Anim eiusmod irure incididunt sint cupidatat. Incididunt irure irure irure nisi
ipsum do ut quis fugiat consectetur proident cupidatat incididunt cillum. Dolore
voluptate occaecat qui mollit laborum ullamco et. Ipsum laboris officia anim
laboris culpa eiusmod ex magna ex cupidatat anim ipsum aute. Mollit aliquip
occaecat qui sunt velit ut cupidatat reprehenderit enim sunt laborum. Velit
veniam in officia nulla adipisicing ut duis officia. Exercitation voluptate
irure in irure tempor mollit Lorem nostrud ad officia. Velit id fugiat occaecat
do tempor. Sit officia Lorem aliquip eu deserunt consectetur. Aute proident
deserunt in nulla aliquip dolore ipsum Lorem ut cupidatat consectetur sit sint
laborum. Esse cupidatat sit sint sunt tempor exercitation deserunt. Labore dolor
duis laborum est do nisi ut veniam dolor et nostrud nostrud.&lt;/p></description></item><item><title>An introduction to Django Simple History</title><link>https://www.caktusgroup.com/blog/2023/02/13/introduction-django-simple-history/</link><pubDate>Mon, 13 Feb 2023 15:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/02/13/introduction-django-simple-history/</guid><description>&lt;p>Wouldn&amp;rsquo;t it be useful if we could document changes in our life and
revisit them later at will? It would allow us to better analyze
situations, remember what we were thinking, or help us remember how we
got to our current state. Although no such tool currently exists for
changes in life, one such tool does exist in Django. It is called
&lt;a href="https://django-simple-history.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer">django-simple-history&lt;/a>.&lt;/p></description></item><item><title>Back Down Memory Lane: An 80's Jukebox Jam Session</title><link>https://www.caktusgroup.com/blog/2023/02/10/back-down-memory-lane-80s-jukebox-jam-session/</link><pubDate>Fri, 10 Feb 2023 15:55:39 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/02/10/back-down-memory-lane-80s-jukebox-jam-session/</guid><description>&lt;p>Gather a group of friends and family, put on your dancing shoes, and flashback to the 80s with Keanya Phelps’ playlist. Enjoy a vibrant weekend, folks!&lt;/p></description></item><item><title>Dream Your Way to Freedom</title><link>https://www.caktusgroup.com/blog/2023/02/07/dream-your-way-freedom/</link><pubDate>Tue, 07 Feb 2023 22:02:43 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/02/07/dream-your-way-freedom/</guid><description>&lt;p>Black History Month, recently also referred to as Black Futures Month,
is all about celebrating freedom. What is freedom and how do we make
sure it's here to stay? Let these recommendations from teammates
Jeanette O'Brien (photo credit) and Gerald Carlton help you to dream
yourself free and then act upon those visions.&lt;/p></description></item><item><title>A Refactoring Dance Party</title><link>https://www.caktusgroup.com/blog/2023/02/03/refactoring-dance-party/</link><pubDate>Fri, 03 Feb 2023 16:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/02/03/refactoring-dance-party/</guid><description>&lt;p>Every work project, or weekend dance party deserves a worthy soundtrack and we’re not here to disappoint. Team members Keanya Phelps and Lindsey Ardrey invite you to open your ears and let the musical notes of these artists drift into your ears. Happy first Friday of Black History Month, folks!&lt;/p></description></item><item><title>3 React Anti-Patterns and How to Fix Them</title><link>https://www.caktusgroup.com/blog/2023/02/02/3-react-anti-patterns-and-how-fix-them/</link><pubDate>Thu, 02 Feb 2023 15:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/02/02/3-react-anti-patterns-and-how-fix-them/</guid><description>&lt;p>React is a powerful JavaScript library for building user interfaces, but it is important to avoid certain common mistakes that can hinder the performance, maintainability, and scalability of your application. Here are three React anti-patterns that you should be aware of:&lt;/p></description></item><item><title>Developing the Downbeat</title><link>https://www.caktusgroup.com/blog/2023/02/01/developing-the-downbeat/</link><pubDate>Wed, 01 Feb 2023 15:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/02/01/developing-the-downbeat/</guid><description>&lt;p>Two years ago, I created a blog post entitled &lt;a href="https://www.caktusgroup.com/blog/2021/02/22/black-artists-add-your-work-playlist/">Chords and Code: 52 Black
Artists to Add to Your Work
Playlist&lt;/a>.
My Co-Guiding Life Partner, Eshé (credited in the photo), had just
completed their first sun (r)evolution and began their second tour of
life on earth. Caktus had just started transitioning to a delayered,
autonomous organizational structure while simultaneously working to
finalize our plans to become an employee-owned company (which &lt;a href="https://www.caktusgroup.com/blog/2022/01/14/meet-new-owners-caktus/">we
accomplished&lt;/a>
in 2022!). I was the only BIPOC-identifying cis-female person on our
team.&lt;/p></description></item><item><title>Post 1</title><link>https://www.caktusgroup.com/posts/post-1/</link><pubDate>Sun, 15 Jan 2023 09:00:00 -0700</pubDate><guid>https://www.caktusgroup.com/posts/post-1/</guid><description>&lt;p>Tempor proident minim aliquip reprehenderit dolor et ad anim Lorem duis sint
eiusmod. Labore ut ea duis dolor. Incididunt consectetur proident qui occaecat
incididunt do nisi Lorem. Tempor do laborum elit laboris excepteur eiusmod do.
Eiusmod nisi excepteur ut amet pariatur adipisicing Lorem. Occaecat nulla
excepteur dolore excepteur duis eiusmod ullamco officia anim in voluptate ea
occaecat officia. Cillum sint esse velit ea officia minim fugiat. Elit ea esse
id aliquip pariatur cupidatat id duis minim incididunt ea ea. Anim ut duis sunt
nisi. Culpa cillum sit voluptate voluptate eiusmod dolor. Enim nisi Lorem ipsum
irure est excepteur voluptate eu in enim nisi. Nostrud ipsum Lorem anim sint
labore consequat do.&lt;/p></description></item><item><title>Love Letter to HTML</title><link>https://www.caktusgroup.com/blog/2023/01/10/love-letter-html/</link><pubDate>Tue, 10 Jan 2023 15:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/01/10/love-letter-html/</guid><description>&lt;h3 id="my-dearest-html">My Dearest HTML,&lt;/h3>
&lt;p>Shall I compare thee to another Markup language? Thou art more
foundational and more essential to how we consume web content!&lt;/p></description></item><item><title>Reflection on DjangoCon 2022</title><link>https://www.caktusgroup.com/blog/2023/01/06/django-con-2022/</link><pubDate>Fri, 06 Jan 2023 15:33:37 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2023/01/06/django-con-2022/</guid><description>&lt;h2 id="ronards-recap">Ronard&amp;rsquo;s Recap&lt;/h2>
&lt;p>&lt;em>&amp;ldquo;It takes a village&amp;rdquo;&lt;/em> the African proverb goes. Nowhere was this as apparent as in DjangoCon. It was my first technology conference and my experience could not have been better. People from the most senior developer to fellow juniors and even one of the co-creators of Django made the experience feel warm and inviting. Perhaps knowing that you are surrounded by introverts alleviates the social pressure, knowing that everyone has a common interest, or perhaps even love for programming also brought a soothing feeling to the experience.&lt;/p></description></item><item><title>A New Mentorship Program</title><link>https://www.caktusgroup.com/blog/2022/12/07/new-mentorship-program/</link><pubDate>Wed, 07 Dec 2022 18:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2022/12/07/new-mentorship-program/</guid><description>&lt;p>With all of the global changes from the past few years, some of us have been thinking a fair amount about the way that folks at our company, as well as in web development, grow in their careers. Initially, this conversation began with the desire to attract new developers to our company. However, as we continued discussing, we realized that it would also be beneficial to think about how to help people at our company grow in their careers. As a result, Kel Hanna and I have worked together to come up with a structure for more junior folks at our company to grow in their careers. I’m sharing some thoughts about it here, since we’re excited to see it in action, and in case it may allow others to implement similar ideas at their workplace.&lt;/p></description></item><item><title>How We Built a Caktus Cloud</title><link>https://www.caktusgroup.com/blog/2022/12/01/how-we-built-caktus-cloud/</link><pubDate>Thu, 01 Dec 2022 16:15:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2022/12/01/how-we-built-caktus-cloud/</guid><description>&lt;p>As a research project this year at Caktus, we decided to build our own
private cloud. Some of Caktus' clients prefer or require that their
data and workloads remain on premises, which begs the question, &amp;quot;How
can we bring a modern, cloud-like experience to an on-premises data
center?&amp;quot;&lt;/p></description></item><item><title>Developer's Playground</title><link>https://www.caktusgroup.com/blog/2022/11/29/developers-playground/</link><pubDate>Tue, 29 Nov 2022 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2022/11/29/developers-playground/</guid><description>&lt;p>Image by Colin Copeland&lt;/p>
&lt;p>We’ve made it…the final category description! Welcome to the Developer’s Playground. This is where the developers run wild and free. They have absolute free reign on the monkey bars, swings, giant slides, and may spin the merry-go-round as fast (or slow) as their hearts’ content. This is that underground lair the aliens have yet to find. That place with the cave drawings full of acronyms, drawings, algorithms, and codes the likes most of us have no way to decipher. So we’ll only hear the voices of developers here. DEVS UNITE…and geek out at will!&lt;/p></description></item><item><title>Big Data</title><link>https://www.caktusgroup.com/blog/2022/11/23/big-data/</link><pubDate>Wed, 23 Nov 2022 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2022/11/23/big-data/</guid><description>&lt;p>Artwork by Myk&amp;rsquo;l Hanna&lt;/p>
&lt;p>Café Rouge was busy today. Servers bustled about, taking orders and delivering food. The design reminded Morgan of a cafe he had frequented in London. The floors were shiny and clean, gray-flecked white tile. Booths lined every wall, standing out from the white floor in stark contrast with vibrant red vinyl seats and red and white backrests. A crowded bar occupied the back third of the cafe, with gleaming silver stools packed in closely. Between the booths and the bar, tables were arranged like a checkerboard, leaving enough space for several servers to flit from table to table.&lt;/p></description></item><item><title>Ethical Divinations</title><link>https://www.caktusgroup.com/blog/2022/11/22/ethical-divinations/</link><pubDate>Tue, 22 Nov 2022 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2022/11/22/ethical-divinations/</guid><description>&lt;p>Image by Jeanette O&amp;rsquo;Brien&lt;/p>
&lt;p>Through all of your Caktus Universe exploring, set your sights high but keep your expectations at sea level. We’re here to explore and experiment, share a couple of laughs, and live as humans just trying to make it from one day to the next. Some pieces will be silly and inane, many will be our bread and butter technical works, others will serve hard-hitting topics with wide-ranging social implications, and still others will be somewhere in-between.&lt;/p></description></item><item><title>Alien Anthropologist</title><link>https://www.caktusgroup.com/blog/2022/11/17/alien-anthropologist/</link><pubDate>Thu, 17 Nov 2022 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2022/11/17/alien-anthropologist/</guid><description>&lt;p>Welcome back, let’s jump right in! Since we’re painting this picture of a Caktus universe, it comes to mind that perhaps we’ve left some people behind down on Earth. Some folks have journeyed along with us, of course, but for the remnant–well, things may seem a little alien to them. So, this category will hold posts that bring those folks into the loop. And when I say ‘those folks,’ I mean me. I am that alien anthropologist (thanks to my liturgy professor for that term), venturing into this new-to-me universe of technology, and I’m pretty sure the air has a different molecular make-up than I’m accustomed to. But of course there are hundreds of others out there like me who use, but do not understand, technology. For myself and all the other alien Earthlings, let’s take copious notes and learn what makes this technology culture and Caktus society unique.&lt;/p></description></item><item><title>Cosmic Revelations</title><link>https://www.caktusgroup.com/blog/2022/11/15/cosmic-revelations/</link><pubDate>Tue, 15 Nov 2022 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2022/11/15/cosmic-revelations/</guid><description>&lt;p>Welcome to the Caktus universe. If you read our opening piece &lt;em>&lt;a href="https://www.caktusgroup.com/blog/2022/10/13/new-worlds/">New
Worlds&lt;/a>&lt;/em>,
you&amp;rsquo;re already aware that when you enter our blogosphere, the air is a
little bit different than normal. (If you haven&amp;rsquo;t read it, don&amp;rsquo;t delay!)
Sure, we&amp;rsquo;ll be talking about technology and the super cool, agile, sharp
web applications that Caktus builds. AND&amp;hellip;guess what else? Behind all
of those applications, codes, and tech lingo are very real people. Folks
with whole lives who are interacting with culture and society, raising
families, spending time with chosen family members, and engaging in
hobbies and side hustles. Basically, human beings who are breathing,
eating, laughing, grieving, thriving, and making their way through each
day. This blog will live into the fullness of this reality.&lt;/p></description></item><item><title>How to Handle Django Login Redirects with HTMX</title><link>https://www.caktusgroup.com/blog/2022/11/11/how-handle-django-login-redirects-htmx/</link><pubDate>Fri, 11 Nov 2022 17:08:26 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2022/11/11/how-handle-django-login-redirects-htmx/</guid><description>&lt;p>One of my favorite parts of working at Caktus is the community of
developers who share knowledge within and outside our teams. Many of us
work on different projects, but still take time to come together, share
what we've learned, and apply those learnings to other projects.&lt;/p></description></item><item><title>New Worlds</title><link>https://www.caktusgroup.com/blog/2022/10/13/new-worlds/</link><pubDate>Thu, 13 Oct 2022 14:16:38 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2022/10/13/new-worlds/</guid><description>&lt;center>Words by Lindsey Ardrey&lt;/center>
&lt;center>Image by Jeanette O’Brien&lt;/center>
&lt;p>Greetings to those who read this, wherever or whenever you may be on the space-time continuum. I’m Lindsey and currently serve as Curator of Community Revelations here at Caktus Group. It’s a fun and interesting title, right? A little nonsensical, and a smidge confusing. Individually the words are familiar, but together it’s just a mix of jibber jabber. This might very well be the case, but housed within Caktus, I hope to bind each of these words together so that they coalesce with common meaning. Meaning that calls in my own vocation as a chaplain and ordained minister (priest) in The Episcopal Church, while bringing into fruition my desire to understand and cultivate (nay, curate!) relationships within the communities I live and work.&lt;/p></description></item><item><title>Meet the New Owners of Caktus</title><link>https://www.caktusgroup.com/blog/2022/01/14/meet-new-owners-caktus/</link><pubDate>Fri, 14 Jan 2022 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2022/01/14/meet-new-owners-caktus/</guid><description>&lt;p>Nearly every week, I receive an email or two from a third party
expressing interest in buying Caktus. As a matter of habit, I don't
open them, let alone respond. Most are scattershot, venture capital
firms looking for Software-as-a-Service companies (which Caktus is not).
But when an employee approached me in 2018 expressing an interest in
making Caktus employee-owned, I listened.&lt;/p></description></item><item><title>Caktus Clicks: November Link Roundup</title><link>https://www.caktusgroup.com/blog/2021/11/24/caktus-clicks-november/</link><pubDate>Wed, 24 Nov 2021 13:28:39 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/11/24/caktus-clicks-november/</guid><description>&lt;p>We’re thankful for many things around here — our customers, our followers, our growing team, our community. We’re also thankful for a wealth of information available online that educates, inspires, and entertains!&lt;/p></description></item><item><title>How Django Got Its Name</title><link>https://www.caktusgroup.com/blog/2021/11/19/how-django-got-its-name/</link><pubDate>Fri, 19 Nov 2021 13:49:17 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/11/19/how-django-got-its-name/</guid><description>&lt;p>&lt;em>Pictured: From left to right, musicians Sebastian Peszko, Francisco Batista, and Filippo Dall&amp;rsquo;Asta in Berlin, Germany.&lt;/em>&lt;/p>
&lt;p>In early November, my husband and I celebrated a friend’s birthday with dinner and a show. The birthday boy has eclectic tastes and it’s always a treat to be included in his plans. Little did I know, however, that our night out in Berlin, Germany, would be related to my day job with Caktus, which is of course, based in Durham, North Carolina &amp;hellip; As a side note, I’ve been working remotely from Berlin since August 2021.&lt;/p></description></item><item><title>Caktus Clicks: October Link Roundup</title><link>https://www.caktusgroup.com/blog/2021/10/29/caktus-clicks-october-link-roundup/</link><pubDate>Fri, 29 Oct 2021 13:09:47 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/10/29/caktus-clicks-october-link-roundup/</guid><description>&lt;p>October brought with it a (slight) change in the weather as well as the return of &lt;a href="https://2021.djangocon.us/" target="_blank" rel="noopener noreferrer">DjangoCon&lt;/a>! In between our usual fall routines, here are some of the interesting things we have been clicking on — a nice mix of food for thought and actual food! Click for yourself and see what you think:&lt;/p></description></item><item><title>Continuing My Sales Tech Career: A Promotion and Professional Development</title><link>https://www.caktusgroup.com/blog/2021/10/25/sales-tech-career-promotion-and-professional-development/</link><pubDate>Mon, 25 Oct 2021 18:47:28 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/10/25/sales-tech-career-promotion-and-professional-development/</guid><description>&lt;p>This blog is a continuation of &lt;a href="https://www.caktusgroup.com/blog/2021/07/30/sales-tech-sponge/">my last post&lt;/a> about my professional background and transition to a new career at Caktus Group. As an update: I &lt;em>still&lt;/em> dig it here.&lt;/p></description></item><item><title>DjangoCon is Back and Free of Charge</title><link>https://www.caktusgroup.com/blog/2021/10/08/djangocon-2021/</link><pubDate>Fri, 08 Oct 2021 18:02:16 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/10/08/djangocon-2021/</guid><description>&lt;p>We’ve waited eagerly for &lt;a href="https://2021.djangocon.us/" target="_blank" rel="noopener noreferrer">DjangoCon 2021&lt;/a> since last year’s event was cancelled due to COVID-19. Not only is the event back, but it’s free to attend! DjangoCon will take place virtually on October 22 and 23 — it will be unprecedented since this is the first time the conference will be virtual.&lt;/p></description></item><item><title>Caktus Clicks: September Link Roundup</title><link>https://www.caktusgroup.com/blog/2021/09/23/caktus-clicks-september/</link><pubDate>Thu, 23 Sep 2021 10:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/09/23/caktus-clicks-september/</guid><description>&lt;p>We’re reviving a blog series from a few years ago in which we compile and share the things Cakti are clicking on — articles, videos, podcasts — whether it’s tech-related, an idea for social good, or just something interesting or amusing that caught someone’s eye. Have a look at this recommended reading and let us know what you think:&lt;/p></description></item><item><title>How to Use Celery for Scheduling Tasks</title><link>https://www.caktusgroup.com/blog/2021/08/11/using-celery-scheduling-tasks/</link><pubDate>Wed, 11 Aug 2021 18:14:40 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/08/11/using-celery-scheduling-tasks/</guid><description>&lt;p>There are multiple ways to schedule tasks in your Django app, but there
are some advantages to using Celery. It&amp;rsquo;s supported, scales well, and
works nicely with Django. Given its wide use, there are also lots of
resources for learning more about it, and once learned, that knowledge
is likely to be useful on other projects.&lt;/p></description></item><item><title>Becoming a Sales Tech Sponge: Transitioning to My Dream Job</title><link>https://www.caktusgroup.com/blog/2021/07/30/sales-tech-sponge/</link><pubDate>Fri, 30 Jul 2021 18:48:17 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/07/30/sales-tech-sponge/</guid><description>&lt;p>This is a blog post about where I come from and where I’m headed as a team member at Caktus Group. I’ll only be on my soapbox for a few paragraphs, pinky promise.&lt;/p></description></item><item><title>Modern CTO Podcast Spotlights Caktus CTO Colin Copeland</title><link>https://www.caktusgroup.com/blog/2021/07/19/podcast-spotlights-colin-copeland/</link><pubDate>Mon, 19 Jul 2021 17:33:42 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/07/19/podcast-spotlights-colin-copeland/</guid><description>&lt;p>In the July 16 episode of &lt;a href="https://moderncto.io/colin-copeland/" target="_blank" rel="noopener noreferrer">Modern CTO&lt;/a>, Colin Copeland, Caktus Co-Founder and Chief Technical Officer goes one-on-one with podcast host Joel Beasley. They discuss the:&lt;/p></description></item><item><title>Highlights from PyCon US 2021</title><link>https://www.caktusgroup.com/blog/2021/06/24/pycon-us-2021/</link><pubDate>Thu, 24 Jun 2021 17:10:44 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/06/24/pycon-us-2021/</guid><description>&lt;p>I had the opportunity to attend &lt;a href="https://us.pycon.org/2021/" target="_blank" rel="noopener noreferrer">PyCon US&lt;/a>,
which was held entirely virtually. Though an in-person experience is
impossible to replicate (the last time I attended PyCon in person was in
2018), I found that many aspects of the live conference were still
available in an online format. Here are some of my highlights:&lt;/p></description></item><item><title>Django Chat is Where it’s At</title><link>https://www.caktusgroup.com/blog/2021/06/14/django-chat-podcast/</link><pubDate>Mon, 14 Jun 2021 13:11:11 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/06/14/django-chat-podcast/</guid><description>&lt;p>&lt;strong>Have you heard of the &lt;a href="https://djangochat.com/" target="_blank" rel="noopener noreferrer">Django Chat&lt;/a> podcast? With more than 90 episodes on all things Django, it’s full of informative interviews featuring some of the best and brightest in the industry.&lt;/strong>&lt;/p></description></item><item><title>How to Decouple Your App From its Operating System with Docker</title><link>https://www.caktusgroup.com/blog/2021/06/04/decouple-app-operating-system/</link><pubDate>Fri, 04 Jun 2021 13:48:53 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/06/04/decouple-app-operating-system/</guid><description>&lt;p>We regularly update and improve our &lt;a href="https://www.caktusgroup.com/services/python-django-upgrades-and-sustainability/">upgrades and sustainability service
offerings&lt;/a>
at Caktus, and a recent upgrade for a client precipitated a solution
that I felt might be worth sharing. At Caktus, the preferred approach
for addressing upgrades and sustainability is to make incremental
updates to a project over time, trying to keep both Django and the
servers themselves on a long-term support version. These are select
versions of Django and Ubuntu, for example, that generally have much
longer support periods than other versions, i.e., they are a good fit
for applications that you will need to continue maintaining well into
the future.&lt;/p></description></item><item><title>How to Simplify Django Migrations and Deployment</title><link>https://www.caktusgroup.com/blog/2021/05/25/django-migrations-and-deployment/</link><pubDate>Tue, 25 May 2021 17:34:09 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/05/25/django-migrations-and-deployment/</guid><description>&lt;p>&lt;strong>When removing fields from Django models, or adding non-nullable
fields, it can be hard to avoid a mismatch between code running on some
servers and the database in use.&lt;/strong>&lt;/p></description></item><item><title>Pair Programming During a Pandemic: Collaborating Virtually Improves Performance and Boosts Camaraderie</title><link>https://www.caktusgroup.com/blog/2021/05/17/pair-programming-during-pandemic/</link><pubDate>Mon, 17 May 2021 13:04:05 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/05/17/pair-programming-during-pandemic/</guid><description>&lt;p>In March 2020, with the first wave of the coronavirus hitting the US, Caktus sent all its employees home. One year later, with working from home still in effect, our days punctuated by virtual meetings via Google Hangouts and chats via Slack, our co-founders decided it was time to connect in another way.&lt;/p></description></item><item><title>PyCon US 2021 is Around the Corner</title><link>https://www.caktusgroup.com/blog/2021/04/30/pycon-us-2021-around-corner/</link><pubDate>Fri, 30 Apr 2021 18:23:52 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/04/30/pycon-us-2021-around-corner/</guid><description>&lt;p>PyCon US 2021 will be completely virtual this year. For the first time ever you’ll be able to enjoy this popular event from the comfort of your favorite armchair!&lt;/p></description></item><item><title>How Mock Can Improve Your Unit Tests: Part 2</title><link>https://www.caktusgroup.com/blog/2021/04/05/mock-improve-unit-tests/</link><pubDate>Mon, 05 Apr 2021 12:54:21 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/04/05/mock-improve-unit-tests/</guid><description>&lt;p>In &lt;a href="https://www.caktusgroup.com/blog/2021/03/29/mock-unit-tests-part-1/">Part
1&lt;/a>
of this blog series, we started looking at how we can use mocking to
improve our unit tests. We'll expand on that in this post.&lt;/p></description></item><item><title>Python, Django, and React Development on Apple Silicon</title><link>https://www.caktusgroup.com/blog/2021/04/02/python-django-react-development-apple-silicon/</link><pubDate>Fri, 02 Apr 2021 17:06:27 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/04/02/python-django-react-development-apple-silicon/</guid><description>&lt;p>Last year, Apple announced that they would transition their entire Mac
line from Intel processors to their ARM64 Apple Silicon chip &lt;a href="https://www.apple.com/mac/m1/" target="_blank" rel="noopener noreferrer">called the
M1&lt;/a>. Several weeks ago, I started testing
development on MacBook Air with the Apple M1 chip (pictured above).&lt;/p></description></item><item><title>How Mock Can Improve Your Unit Tests: Part 1</title><link>https://www.caktusgroup.com/blog/2021/03/29/mock-unit-tests-part-1/</link><pubDate>Mon, 29 Mar 2021 12:54:20 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/03/29/mock-unit-tests-part-1/</guid><description>&lt;p>We've written in the past about the importance of unit tests and how to
write better ones: &lt;a href="https://www.caktusgroup.com/blog/2018/01/08/culture-unit-testing/">Culture of Unit
Testing&lt;/a>,
&lt;a href="https://www.caktusgroup.com/blog/2017/05/29/subtests-are-best/">Subtests are the
Best&lt;/a>.&lt;/p></description></item><item><title>Sharp Tech Pioneers: A Celebration of Black History Month</title><link>https://www.caktusgroup.com/blog/2021/02/26/sharp-tech-pioneers-black-history-month/</link><pubDate>Fri, 26 Feb 2021 19:22:12 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/02/26/sharp-tech-pioneers-black-history-month/</guid><description>&lt;p>Have you heard of Jerry Lawson or Kimberly Bryant? No? You’re not the only one … I hadn’t either, until earlier this month. Both of them are trailblazers in the tech industry, who we’re recognizing as part of our celebration of Black History Month.&lt;/p></description></item><item><title>Chords and Code: 52 Black Artists to Add to Your Work Playlist</title><link>https://www.caktusgroup.com/blog/2021/02/22/black-artists-add-your-work-playlist/</link><pubDate>Mon, 22 Feb 2021 20:47:36 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/02/22/black-artists-add-your-work-playlist/</guid><description>&lt;p>The year 2021 is upon us, and February is a fine month to kick off a long-term culture of learning and celebration of the contributions of Black, Indigenous, and People of Color to our collective history! One of the most pervasive and enduring contributions of Black people to world culture is through rhythm and sound.&lt;/p></description></item><item><title>Take Note of these Top Talks From DjangoCon Europe</title><link>https://www.caktusgroup.com/blog/2021/02/18/top-talks-djangocon-eu/</link><pubDate>Thu, 18 Feb 2021 20:28:03 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/02/18/top-talks-djangocon-eu/</guid><description>&lt;p>&lt;em>&lt;span>Photo by &lt;a href="https://unsplash.com/@climatereality?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText">The Climate Reality Project&lt;/a> on &lt;a href="https://unsplash.com/?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText">Unsplash&lt;/a>&lt;/span>&lt;/em>&lt;/p>
&lt;p>Like many conferences in 2020, &lt;a href="https://2020.djangocon.eu/" target="_blank" rel="noopener noreferrer">DjangoCon Europe&lt;/a> was held virtually. I&amp;rsquo;m glad I had the opportunity to attend because the sessions provided insight and information that I’m still applying. In light of the pandemic and the social changes it&amp;rsquo;s caused, I&amp;rsquo;ve come to know that web development and the solutions it provides are at the heart of how we are navigating this challenging time. Here are three talks from DjangoCon Europe that I believe will help you protect, maintain, and develop projects.&lt;/p></description></item><item><title>Automating PyPI releases with Github Actions</title><link>https://www.caktusgroup.com/blog/2021/02/11/automating-pypi-releases/</link><pubDate>Thu, 11 Feb 2021 14:37:42 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/02/11/automating-pypi-releases/</guid><description>&lt;p>At Caktus, we maintain some &lt;a href="https://github.com/caktus" target="_blank" rel="noopener noreferrer">open source packages&lt;/a>, which are usually pieces of code that we&amp;rsquo;ve found useful when building an application, and we figure they might be useful to others. From time to time, those open source projects need a little maintenance: Maybe a bug fix has been provided from a community member, or we need to update to support a new version of Python or Django. I always hesitate to do this because I know there are multiple steps involved to ensure that any updates are properly tested, documented, versioned, and released. One of my silly blockers is that I always seem to forget how to upload a release to PyPI, which is the Python Package Index, a repository of software for Python. I call it silly because it shouldn’t really be a blocker, seeing how simple it actually is, but I still forget it each time and have to walk through the documentation step by step to make sure I do it properly. I recently found a tool that helps with this process.&lt;/p></description></item><item><title>The Magic of Single Sign-On</title><link>https://www.caktusgroup.com/blog/2021/01/29/magic-sso/</link><pubDate>Fri, 29 Jan 2021 15:08:20 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/01/29/magic-sso/</guid><description>&lt;p>I remember being really impressed the first time I encountered single
sign-on (SSO), in which I could access multiple websites after just
logging in once. But I was even more impressed when I learned that
underlying SSO are just a few, basic HTTP features.&lt;/p></description></item><item><title>JavaScript Variable Declaration in the 21st Century</title><link>https://www.caktusgroup.com/blog/2021/01/25/javascript-variable/</link><pubDate>Mon, 25 Jan 2021 15:32:15 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/01/25/javascript-variable/</guid><description>&lt;p>October 2020 marked the 14th anniversary of the introduction of &amp;ldquo;let&amp;rdquo;
and &amp;quot;const&amp;quot; to Javascript. Yes, it was in 2006 that this feature was
first introduced, and we&amp;rsquo;re still having conversations about it. So why,
you ask, are we still talking about this? It seems that a lot of
confusion remains, not to mention a lot of old code being passed around
on StackOverflow with &amp;ldquo;var&amp;rdquo; all over the place. Here I&amp;rsquo;ll discuss the
difference between these three declarations, and come to a conclusion
about best practices&lt;/p></description></item><item><title>My Python Development Environment</title><link>https://www.caktusgroup.com/blog/2021/01/14/python-development-environment/</link><pubDate>Thu, 14 Jan 2021 14:40:35 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/01/14/python-development-environment/</guid><description>&lt;p>This is how to set up the One True Development Environment for Python.&lt;/p>
&lt;p>Haha, just kidding, there is no such thing. Here's one way to do it
that works for me, and an attempt to explain the benefits of doing it
this way.&lt;/p></description></item><item><title>Our Top 20 Blogs in 2020</title><link>https://www.caktusgroup.com/blog/2021/01/05/top-20-blogs-2020/</link><pubDate>Tue, 05 Jan 2021 15:26:55 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2021/01/05/top-20-blogs-2020/</guid><description>&lt;p>We’ve published summaries of our most popular blog posts before (see &lt;a href="https://www.caktusgroup.com/blog/2020/01/01/top-19-blogs-2019/">Top 19 of 2019&lt;/a> and &lt;a href="https://www.caktusgroup.com/blog/2019/01/01/caktus-blog-top-18-posts-2018/">Top 18 of 2018&lt;/a>), but this time, we’re taking it a step further. We’re sharing the 20 most popular posts in 2020, regardless of the year the post was originally published. And some of these have been around a while! Based on total pageviews, here are the blogs that rose to the top of the popularity list, from most viewed to least viewed.&lt;/p></description></item><item><title>My Favorite Technical Blogs and Mailing Lists</title><link>https://www.caktusgroup.com/blog/2020/11/04/favorite-technical-blogs-and-mailing-lists/</link><pubDate>Wed, 04 Nov 2020 19:16:51 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/11/04/favorite-technical-blogs-and-mailing-lists/</guid><description>&lt;p>I keep up with what's happening in my field by following a number of
blogs and an occasional email list. I don't read everything posted in
all of these, but by scanning the topics in a feed reader, I can keep up
with what's going on, without wasting a lot of time.&lt;/p></description></item><item><title>JWT Authentication: Rethinking the Pattern</title><link>https://www.caktusgroup.com/blog/2020/10/20/jwt-authentication-rethinking-pattern/</link><pubDate>Tue, 20 Oct 2020 14:31:14 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/10/20/jwt-authentication-rethinking-pattern/</guid><description>&lt;p>&lt;strong>Part two of a two-part series. &lt;a href="https://www.caktusgroup.com/blog/2020/08/21/jwt-authentication-how-does-it-work/">View part one&lt;/a>.&lt;/strong>&lt;/p>
&lt;h4 id="stateless-authentication-with-json-web-tokens--safely">Stateless authentication with JSON Web Tokens  —  safely!&lt;/h4>
&lt;p>As developers who build REST APIs, we are quite familiar with JSON Web Token (JWT) based authentication. The typical pattern is this:&lt;/p></description></item><item><title>Build React Apps with Styled Components: The Why and How of the Styled-Components Library</title><link>https://www.caktusgroup.com/blog/2020/10/08/build-react-apps-styled-components/</link><pubDate>Thu, 08 Oct 2020 13:13:51 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/10/08/build-react-apps-styled-components/</guid><description>&lt;p>React is a library that helps developers approach user interface (UI)
development with the single-responsibility principle in mind, while
building reusable, encapsulated components. But when it comes to
styling, there is a heated debate in the React community. There are a
few schools of thought:&lt;/p></description></item><item><title>JWT Authentication: How Does it Work?</title><link>https://www.caktusgroup.com/blog/2020/08/21/jwt-authentication-how-does-it-work/</link><pubDate>Fri, 21 Aug 2020 16:20:58 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/08/21/jwt-authentication-how-does-it-work/</guid><description>&lt;p>&lt;strong>Part one of a two-part series.&lt;/strong>&lt;/p>
&lt;p>A REST API is a wonderful way to expose application data to a wide
variety of clients. Anything that can speak HTTP can communicate with a
REST API, and these days that means an exciting variety of devices. From
plain old web browsers to mobile devices to a whole array of IoT
applications  &amp;mdash;  there are a lot of good reasons to use a REST API.
And if you&amp;rsquo;ve &lt;a href="https://www.caktusgroup.com/blog/2019/02/01/creating-api-endpoint-django-rest-framework/">ever built
one&lt;/a>,
you&amp;rsquo;re familiar with the predominant means of restricting endpoints to
authenticated users  &amp;mdash;  JSON Web Token (JWT) based authentication.&lt;/p></description></item><item><title>Accessibility Testing Tips for Beginners</title><link>https://www.caktusgroup.com/blog/2020/07/23/accessibility-testing-tips/</link><pubDate>Thu, 23 Jul 2020 14:37:24 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/07/23/accessibility-testing-tips/</guid><description>&lt;p>&lt;em>Above: Caktus uses several mobile devices for accessibility testing. For a more realistic experience, it&amp;rsquo;s important to test on devices, and not just with simulators.&lt;/em>&lt;/p></description></item><item><title>Build a useKeypress Hook in React</title><link>https://www.caktusgroup.com/blog/2020/07/01/usekeypress-hook-react/</link><pubDate>Wed, 01 Jul 2020 19:27:20 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/07/01/usekeypress-hook-react/</guid><description>&lt;p>One of the great patterns to come out of React 16.8 is composable hooks.
Using React's built-in hooks such as
&lt;a href="https://reactjs.org/docs/hooks-reference.html#usestate" target="_blank" rel="noopener noreferrer">useState&lt;/a> and
&lt;a href="https://reactjs.org/docs/hooks-reference.html#useeffect" target="_blank" rel="noopener noreferrer">useEffect&lt;/a>, we
can encapsulate and modularize bits of functionality &amp;mdash; almost the same
way we create reusable components. In this article we're going to throw
together a quick hook that registers an event listener on a keypress and
performs an action. Nothing fancy, but it's a nice abstraction that
makes it a lot easier to add some nice power-user features to your app.&lt;/p></description></item><item><title>How to Schedule Tasks Using Celery Beat in a Container</title><link>https://www.caktusgroup.com/blog/2020/05/14/how-schedule-tasks-using-celery-beat-container/</link><pubDate>Thu, 14 May 2020 12:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/05/14/how-schedule-tasks-using-celery-beat-container/</guid><description>&lt;p>When running services in a container, changes to files can be discarded
at any time, but the Celery beat default scheduler keeps its state in a
file.&lt;/p></description></item><item><title>How to Use Kubernetes on Azure for Cloud Computing</title><link>https://www.caktusgroup.com/blog/2020/04/28/how-use-kubernetes-azure-cloud-computing/</link><pubDate>Tue, 28 Apr 2020 18:41:03 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/04/28/how-use-kubernetes-azure-cloud-computing/</guid><description>&lt;p>For the &lt;a href="http://ratom.web.unc.edu/" target="_blank" rel="noopener noreferrer">Review, Appraisal, and Triage of Mail (RATOM)
project&lt;/a>, funded by the Andrew W. Mellon
Foundation, we were tasked with deploying to a Microsoft Azure
environment. More details about the project are in our &lt;a href="https://www.caktusgroup.com/blog/2020/03/19/email-extract-data-microsoft-pst-files/">first blog
post&lt;/a>
in this Learn With Us blog series. Caktus has experience with Amazon Web
Services (AWS) and Google Cloud, but we hadn't had the opportunity to
use Azure yet, so we looked forward to the opportunity to use that
environment and document our experience. The entire deployment process
is available on GitHub as a reference under the
&lt;a href="https://github.com/StateArchivesOfNorthCarolina/ratom-deploy" target="_blank" rel="noopener noreferrer">StateArchivesOfNorthCarolina/ratom-deploy&lt;/a>
repository.&lt;/p></description></item><item><title>A Quick Guide to Generating Fake Data with Pandas</title><link>https://www.caktusgroup.com/blog/2020/04/15/quick-guide-generating-fake-data-with-pandas/</link><pubDate>Wed, 15 Apr 2020 10:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/04/15/quick-guide-generating-fake-data-with-pandas/</guid><description>&lt;p>Last August, our CTO Colin Copeland wrote about &lt;a href="https://www.caktusgroup.com/blog/2019/08/13/import-multiple-excel-sheets-pandas/">how to import multiple Excel files in your Django project using pandas&lt;/a>. We have used &lt;a href="https://pandas.pydata.org/docs/" target="_blank" rel="noopener noreferrer">pandas&lt;/a> on multiple Python-based projects at Caktus and are adopting it more widely.&lt;/p></description></item><item><title>Caktus Hosts First Pitch Competition: Winner Receives 300 Hours of Project Time</title><link>https://www.caktusgroup.com/blog/2020/03/30/caktus-hosts-first-pitch-competition-winner-receives-300-hours-project-time/</link><pubDate>Mon, 30 Mar 2020 13:57:46 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/03/30/caktus-hosts-first-pitch-competition-winner-receives-300-hours-project-time/</guid><description>&lt;p>We recently hosted the first Caktus Pitch Competition: Building Tech for Good, which aimed to draw out innovative ideas and help make them a reality. While any web development ideas were welcome, preference was given to projects serving the public good.&lt;/p></description></item><item><title>What to do About Email: How to Extract Data from Microsoft PST Files</title><link>https://www.caktusgroup.com/blog/2020/03/19/email-extract-data-microsoft-pst-files/</link><pubDate>Thu, 19 Mar 2020 12:27:52 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/03/19/email-extract-data-microsoft-pst-files/</guid><description>&lt;p>In my previous line of work as an archivist, the question of what to do
about email archives was an ongoing and deeply-considered topic. Email
is everywhere. Yes, even Gen Z and millennials use it, despite thousands
of think pieces that would have you believe that the old ways are giving
way to business meetings conducted on fixed-gear bicycles, over avocado
toast and Instagram.&lt;/p></description></item><item><title>Creating a Sub-account in Amazon Web Services</title><link>https://www.caktusgroup.com/blog/2020/03/03/sub-account-amazon-web-services/</link><pubDate>Tue, 03 Mar 2020 20:20:50 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/03/03/sub-account-amazon-web-services/</guid><description>&lt;p>Anytime we host resources for a client within the Caktus Amazon Web
Services (AWS) account, we set up a sub-account and put the resources
there. Some of the advantages of doing this compared to putting a
client's resources in our main account are:&lt;/p></description></item><item><title>How to Use the "docker" Docker Image to Run Your Own Docker daemon</title><link>https://www.caktusgroup.com/blog/2020/02/25/docker-image/</link><pubDate>Tue, 25 Feb 2020 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/02/25/docker-image/</guid><description>&lt;p>There exists on Docker hub a Docker image called
&lt;a href="https://hub.docker.com/_/docker" target="_blank" rel="noopener noreferrer">docker&lt;/a>. It also has two flavors,
&amp;quot;stable&amp;quot; and a &amp;quot;dind&amp;quot; (Docker-in-Docker). What is this image for and
what is the purpose of these two different image tags?&lt;/p></description></item><item><title>Vue or React: How to Choose?</title><link>https://www.caktusgroup.com/blog/2020/01/14/vue-or-react-how-choose/</link><pubDate>Tue, 14 Jan 2020 20:16:19 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/01/14/vue-or-react-how-choose/</guid><description>&lt;p>Across industries and sectors, we have become accustomed to seeing great
rivalries that drive further innovation and competition. In the early
days of car manufacturing, we had Ford and Chevy. In the early days of
beverage and bottling, we had Coca-Cola and Pepsi. And today in
front-end software development, we have Vue and React. As a framework
and a library, respectively, both single page applications (SPAs) are
tackling Document Object Model (DOM) Manipulation in markedly improved
ways from their predecessor JQuery; with the added benefit of offering
state management and code-splitting up front. However, as Django
developers, we often struggle to decide between these two titans when
choosing a front-end for our Django REST Framework (DRF) APIs. In
writing this blog post, we hope to alert you to some of the key
distinctions between Vue and React, as well as some of their
similarities, before you move forward with either for your team.&lt;/p></description></item><item><title>Our Top 19 Blogs of 2019</title><link>https://www.caktusgroup.com/blog/2020/01/01/top-19-blogs-2019/</link><pubDate>Wed, 01 Jan 2020 17:17:32 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2020/01/01/top-19-blogs-2019/</guid><description>&lt;p>During the last year we gave our popular technical blog an official name: Developer Access. We published 32 posts on the blog, including technical how-to’s, conference information, web development best practices and detailed guides. Among all those posts, 19 rose to the top of the popularity list (based on total pageviews):&lt;/p></description></item><item><title>Single Page Application + REST as an Abstraction: The Benefits of Decoupling Your Front &amp; Back Ends</title><link>https://www.caktusgroup.com/blog/2019/12/19/single-page-application-rest-abstraction/</link><pubDate>Thu, 19 Dec 2019 19:18:18 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/12/19/single-page-application-rest-abstraction/</guid><description>&lt;p>Monolithic, consolidated applications are not bad. These are your Rails apps, your Django apps, etc. — the ones where your server sends back HTML and assets. You’ve faithfully followed the Model-View-Controller (MVC) pattern as best you can and your concerns are “separated.” This design principle is not passé. It just so happens that for a long time, it was your only option.&lt;/p></description></item><item><title>20 Last-Minute Gift Ideas for the Techie on Your List</title><link>https://www.caktusgroup.com/blog/2019/12/05/last-minute-tech-gifts/</link><pubDate>Thu, 05 Dec 2019 16:40:35 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/12/05/last-minute-tech-gifts/</guid><description>&lt;p>‘Tis the season for giving, but it can be difficult to find the perfect gift for the special techie in your life. Whether you’re looking for something fun and quirky or something more challenging, here are 20 unique gift ideas from our technical team:&lt;/p></description></item><item><title>One Team’s Development Patterns With Vue.js and Django REST Framework</title><link>https://www.caktusgroup.com/blog/2019/11/18/development-patterns-vuejs-and-drf/</link><pubDate>Mon, 18 Nov 2019 18:44:02 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/11/18/development-patterns-vuejs-and-drf/</guid><description>&lt;p>Within the past year, my development team at Caktus worked on a project
that required a front-end framework to build a fast, easy-to-use product
for a client. After a discussion of frameworks such as React, Vue, and
Angular, and their approaches, our team settled on using
&lt;a href="https://vuejs.org/" target="_blank" rel="noopener noreferrer">Vue.js&lt;/a>, along with a Django back-end with Django
REST Framework (DRF). Initially, we chose Vue because we were more
familiar with it, rather than its current competitor React, but as we
worked on the product, we ended up having a number of team discussions
about how to organize our code well and avoid extra code debt. This blog
outlines some of the development patterns we chose as we worked through
a number of issues, such as simplifying a multitude of almost identical
Vuex mutations, finding a consistent way of holding temporary state, and
working with nested objects on the front-end and back-end.&lt;/p></description></item><item><title>All Things Open 2019 Recap</title><link>https://www.caktusgroup.com/blog/2019/11/06/all-things-open/</link><pubDate>Wed, 06 Nov 2019 19:02:08 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/11/06/all-things-open/</guid><description>&lt;p>I recently attended &lt;a href="https://allthingsopen.org/" target="_blank" rel="noopener noreferrer">All Things Open in Raleigh&lt;/a>. Bringing together more than 4,000 attendees, it is the largest open tech event on the East Coast, and is focused on “exploring open source, open tech, and the open web.” This year, ATO included more than 240 sessions across 22 tracks, ranging from front-end development to internet-of-things to studies of open data in government. The event was much larger than the last time that I attended in 2017.&lt;/p></description></item><item><title>Internship Bridges Gap to a Full-Time Tech Job</title><link>https://www.caktusgroup.com/blog/2019/10/29/internship-full-time-tech-job/</link><pubDate>Tue, 29 Oct 2019 18:01:15 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/10/29/internship-full-time-tech-job/</guid><description>&lt;p>I recently completed a three-month internship with Caktus Group. This is a major accomplishment for me because two years ago, to the day, I was working as a consultant in the education services industry. I was inspired to pursue a career in web development after I came across a six-month course teaching full-stack Javascript. In sharing my experience, I hope to shed light on what it’s like working as an intern at Caktus, and give professionals looking to transition into web development some advice that may be useful once they land an entry-level position. In general, my experience felt a little like this:&lt;/p></description></item><item><title>DjangoCon 2019 Delivered Again</title><link>https://www.caktusgroup.com/blog/2019/10/03/djangocon-2019/</link><pubDate>Thu, 03 Oct 2019 21:05:01 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/10/03/djangocon-2019/</guid><description>&lt;p>&lt;em>Above: Django Fellow Carlton Gibson gives a talk on &amp;ldquo;Your Web Framework Needs You: An Update.&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>Again this year, DjangoCon more than delivered on its promise of something for everyone. A keynote on burnout and balance? Thoroughly entertaining! &lt;a href="https://2019.djangocon.us/talk/keynote-jessica-rose/" target="_blank" rel="noopener noreferrer">Jessica Rose’s talk&lt;/a> left us in stitches. Who knew a talk about occupational burnout could be so fun? It was one of a wide range of subjects covered in three days of talks, bookended by a day of tutorials and two days of sprints. The conference took place in San Diego and ran from September 22 - 26. What a great week of learning and networking!&lt;/p></description></item><item><title>Community and Caktus: Charitable Giving, Spring/Summer 2019</title><link>https://www.caktusgroup.com/blog/2019/09/19/charitable-giving-springsummer-2019/</link><pubDate>Thu, 19 Sep 2019 18:04:45 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/09/19/charitable-giving-springsummer-2019/</guid><description>&lt;p>We are pleased to continue serving the North Carolina community at-large through our semi-annual Charitable Giving Program. Twice a year we solicit proposals from our team to contribute to a variety of non-profit organizations. With this program, we look to support groups in which Cakti are involved or that have impacted their lives in some way. This gives Caktus a chance to support our own employees as well as the wider community. For the first half of 2019 we are pleased to support the following charities:&lt;/p></description></item><item><title>How to Do Wagtail Data Migrations</title><link>https://www.caktusgroup.com/blog/2019/09/12/wagtail-data-migrations/</link><pubDate>Thu, 12 Sep 2019 20:12:03 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/09/12/wagtail-data-migrations/</guid><description>&lt;p>&lt;a href="https://wagtail.io/" target="_blank" rel="noopener noreferrer">Wagtail&lt;/a> is a fantastic content management system
that does a great job of making it easy for developers to get a new
website up and running quickly and painlessly. It&amp;rsquo;s no wonder that
Wagtail has grown to become the leading Django-based CMS. &lt;a href="https://django-chat.simplecast.com/episodes/wagtail-cms-tom-dyson" target="_blank" rel="noopener noreferrer">As one of the
creators of Wagtail recently
said&lt;/a>,
it makes the initial experience of getting a website set up and running
very good. At Caktus, &lt;a href="https://www.caktusgroup.com/blog/2019/03/07/why-we-love-wagtail/">Wagtail is our go-to
framework&lt;/a>
when we need a content management system.&lt;/p></description></item><item><title>A Review of ReportLab: PDF Processing with Python</title><link>https://www.caktusgroup.com/blog/2019/08/28/review-reportlab-pdf-processing-python/</link><pubDate>Wed, 28 Aug 2019 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/08/28/review-reportlab-pdf-processing-python/</guid><description>&lt;p>These days it&amp;rsquo;s easy to get swept up into the buzz around Python&amp;rsquo;s
strengths as a data science package, but Python is also great for the
more mundane, business process side of computing. One of the most
important business processes is generating reports, and the most used
and venerable form of report is the PDF. Python has a great library for
generating and manipulating PDFs:
&lt;a href="https://pypi.org/project/reportlab/" target="_blank" rel="noopener noreferrer">ReportLab&lt;/a>. I recently read more
about this extremely useful library in ReportLab: PDF Processing with
Python, by Michael Driscoll. With a few caveats, it&amp;rsquo;s an excellent
resource.&lt;/p></description></item><item><title>Taking a Dip into Elixir</title><link>https://www.caktusgroup.com/blog/2019/08/22/taking-dip-elixir/</link><pubDate>Thu, 22 Aug 2019 17:55:58 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/08/22/taking-dip-elixir/</guid><description>&lt;p>&lt;a href="https://elixirconf.com/2019" target="_blank" rel="noopener noreferrer">ElixirConf 2019&lt;/a> will be in Aurora, CO, and I&amp;rsquo;m delighted to announce that two Cakti, our &lt;a href="https://www.caktusgroup.com/about/tobias-mcnulty/">CEO Tobias McNulty&lt;/a> and &lt;a href="https://www.caktusgroup.com/about/vinod-kurup/">Lead Developer Vinod Kurup&lt;/a>, will be in attendance from August 27 - 30.&lt;/p></description></item><item><title>DjangoCon, Here We Come!</title><link>https://www.caktusgroup.com/blog/2019/08/20/djangocon-here-we-come/</link><pubDate>Tue, 20 Aug 2019 18:13:01 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/08/20/djangocon-here-we-come/</guid><description>&lt;p>We’re looking forward to the international gathering at &lt;a href="https://2019.djangocon.us/" target="_blank" rel="noopener noreferrer">DjangoCon 2019&lt;/a>, in San Diego, CA. The six-day conference, from September 22 - 27, is focused on the Django web framework, and we’re proud to attend as sponsors for the tenth year! We’re also hosting the second annual Caktus Mini Golf event.&lt;/p></description></item><item><title>How to Import Multiple Excel Sheets in Pandas</title><link>https://www.caktusgroup.com/blog/2019/08/13/import-multiple-excel-sheets-pandas/</link><pubDate>Tue, 13 Aug 2019 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/08/13/import-multiple-excel-sheets-pandas/</guid><description>&lt;p>Pandas is a powerful Python data analysis tool. It's used heavily in
the data science community since its data structures make real-world
data analysis significantly easier. At Caktus, in addition to using it
for data exploration, we also incorporate it into Extract, Transform,
and Load (ETL) processes.&lt;/p></description></item><item><title>Making Space for Wagtail</title><link>https://www.caktusgroup.com/blog/2019/08/05/making-space-wagtail/</link><pubDate>Mon, 05 Aug 2019 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/08/05/making-space-wagtail/</guid><description>&lt;p>It’s no secret that &lt;a href="https://www.caktusgroup.com/blog/2019/03/07/why-we-love-wagtail/">Caktus ❤️’s Wagtail&lt;/a>, our favorite Django-based CMS. On July 25, I had the pleasure of attending &lt;a href="https://us.wagtail.space" target="_blank" rel="noopener noreferrer">Wagtail Space US&lt;/a>, an annual convening and celebration of all things Wagtail at The Wharton School at the University of Pennsylvania. After a couple days of talks, workshops, and sprints, we’re even more excited by what &lt;a href="https://wagtail.io/" target="_blank" rel="noopener noreferrer">Wagtail&lt;/a> can offer us and our clients.&lt;/p></description></item><item><title>Book Review: Creating GUI Applications with wxPython</title><link>https://www.caktusgroup.com/blog/2019/07/10/book-review-gui-applications/</link><pubDate>Wed, 10 Jul 2019 12:22:06 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/07/10/book-review-gui-applications/</guid><description>&lt;p>I enjoyed working through the book &lt;a href="https://leanpub.com/creatingapplicationswithwxpython" target="_blank" rel="noopener noreferrer">Creating GUI Applications with wxPython&lt;/a> by Michael Driscoll, learning various techniques for programming GUI applications in Python using wxPython.&lt;/p></description></item><item><title>How to Set Up a Centralized Log Server with rsyslog</title><link>https://www.caktusgroup.com/blog/2019/06/20/how-to-set-up-centralized-log-server-rsyslog/</link><pubDate>Thu, 20 Jun 2019 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/06/20/how-to-set-up-centralized-log-server-rsyslog/</guid><description>&lt;p>For many years, we've been running an ELK (Elasticsearch, Logstash,
Kibana) stack for centralized logging. We have a specific project that
requires on-premise infrastructure, so sending logs off-site to a hosted
solution was not an option. Over time, however, the maintenance
requirements of this self-maintained ELK stack were staggering.
Filebeat, for example, filled up all the disks on all the servers in a
matter of hours, not once, but twice (and for different reasons) when it
could not reach its Logstash/Elasticsearch endpoint. Metricbeat suffered
from a similar issue: It used far too much disk space relative to the
value provided in its Elasticsearch indices. And while provisioning a
self-hosted ELK stack has gotten easier over the years, it's still a
lengthy process, which requires extra care anytime an upgrade is needed.
Are these problems solvable? Yes. But for our needs, a simpler solution
was needed.&lt;/p></description></item><item><title>Our Favorite PyCon 2019 Presentations</title><link>https://www.caktusgroup.com/blog/2019/06/11/favorite-pycon-2019-presentations/</link><pubDate>Tue, 11 Jun 2019 18:31:31 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/06/11/favorite-pycon-2019-presentations/</guid><description>&lt;p>&lt;em>Above: A view of the busy exhibit hall. Photo copyright © 2019 by Sean Harrison. All rights reserved.&lt;/em>&lt;/p>
&lt;p>&lt;a href="https://us.pycon.org/2019/" target="_blank" rel="noopener noreferrer">PyCon 2019&lt;/a> attracted 3,393 attendees, including a group of six Cakti. When we weren’t networking with attendees at our booth, we attended some fascinating presentations. Below are some of our favorites. You can watch these talks and more on the &lt;a href="https://www.youtube.com/channel/UCxs2IIVXaEHHA4BtTiWZ2mQ/videos" target="_blank" rel="noopener noreferrer">PyCon 2019 YouTube channel&lt;/a>.&lt;/p></description></item><item><title>Be Quick or Eat Potatoes: A Newbie’s Guide to PyCon</title><link>https://www.caktusgroup.com/blog/2019/05/23/newbies-guide-pycon/</link><pubDate>Thu, 23 May 2019 20:49:07 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/05/23/newbies-guide-pycon/</guid><description>&lt;p>&lt;em>Pictured: I traveled to Cleveland, OH, for PyCon 2019, where I got this shot of the city skyline.&lt;/em>&lt;/p>
&lt;p>This year I attended PyCon for the first time. It’s rather amazing that I haven’t been before, since I’ve been using Python professionally for over 15 years. &lt;a href="https://us.pycon.org/2019/" target="_blank" rel="noopener noreferrer">PyCon 2019&lt;/a> was held in Cleveland from May 1–9. There was so much to take in, and there are so many good things to say about it. It was a fantastic experience. But rather than provide a “mission report: 2019” a la &lt;em>Winter Soldier&lt;/em>, I thought I’d do something more useful — write a guide to PyCon from a newbie perspective. Here are six lessons I learned from my first PyCon.&lt;/p></description></item><item><title>How to Switch to a Custom Django User Model Mid-Project</title><link>https://www.caktusgroup.com/blog/2019/04/26/how-switch-custom-django-user-model-mid-project/</link><pubDate>Fri, 26 Apr 2019 16:32:33 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/04/26/how-switch-custom-django-user-model-mid-project/</guid><description>&lt;p>The Django documentation recommends always &lt;a href="https://docs.djangoproject.com/en/2.2/topics/auth/customizing/#using-a-custom-user-model-when-starting-a-project" target="_blank" rel="noopener noreferrer">starting your project with a
custom user
model&lt;/a>
(even if it's identical to Django's to begin with), to make it easier
to customize later if you need to. But what are you supposed to do if
you didn't see this when starting a project, or if you inherited a
project without a custom user model and you need to add one?&lt;/p></description></item><item><title>The Secret Lives of Cakti (Part 3): Game On!</title><link>https://www.caktusgroup.com/blog/2019/04/16/secret-lives-cakti-part-3/</link><pubDate>Tue, 16 Apr 2019 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/04/16/secret-lives-cakti-part-3/</guid><description>&lt;p>&lt;em>Pictured: Scott, Kat, and Tim take a quick break for a game of cards.&lt;/em>&lt;/p>
&lt;p>It may be no surprise that there are gamers among our Caktus crew, but you may be surprised by the type of games that Cakti play. From the ancient art of Mahjong to the modern fun of Pokemon, our team members cover it all.&lt;/p></description></item><item><title>We're Eagerly Preparing for PyCon 2019!</title><link>https://www.caktusgroup.com/blog/2019/04/11/pycon-2019/</link><pubDate>Thu, 11 Apr 2019 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/04/11/pycon-2019/</guid><description>&lt;p>&lt;em>Pictured: The final rush is on! Staff quickly check materials for our PyCon booth.&lt;/em>&lt;/p>
&lt;p>&lt;a href="https://us.pycon.org/2019/" target="_blank" rel="noopener noreferrer">PyCon 2019&lt;/a> is almost here, and we’re excited to continue to sponsor this premier Python event, which takes place in Cleveland, OH, from May 1 - 9. PyCon attracts attendees from around the world, and for the first time, the conference will include a &lt;a href="https://us.pycon.org/2019/hatchery/charlas/" target="_blank" rel="noopener noreferrer">track of Spanish talks&lt;/a>.&lt;/p></description></item><item><title>Caktus Adopts New Web Framework</title><link>https://www.caktusgroup.com/blog/2019/04/01/caktus-adopts-new-web-framework/</link><pubDate>Mon, 01 Apr 2019 11:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/04/01/caktus-adopts-new-web-framework/</guid><description>&lt;h2 id="caktus-changing-from-django-to-new-cobol-based-framework">Caktus Changing from Django to New COBOL-based Framework&lt;/h2>
&lt;p>Beginning immediately, Caktus will build new projects using our new
COBOL-based framework, ADD COBOL TO WEB.&lt;/p></description></item><item><title>Coding for Time Zones &amp; Daylight Saving Time — Oh, the Horror</title><link>https://www.caktusgroup.com/blog/2019/03/21/coding-time-zones-and-daylight-saving-time/</link><pubDate>Thu, 21 Mar 2019 16:45:36 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/03/21/coding-time-zones-and-daylight-saving-time/</guid><description>&lt;p>In this post, I review some reasons why it's really difficult to
program correctly when using times, dates, time zones, and daylight
saving time, and then I'll give some advice for working with them in
Python and Django. Also, I'll go over why I hate daylight saving time
(DST).&lt;/p></description></item><item><title>Why We Love Wagtail (and You Will, Too)</title><link>https://www.caktusgroup.com/blog/2019/03/07/why-we-love-wagtail/</link><pubDate>Thu, 07 Mar 2019 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/03/07/why-we-love-wagtail/</guid><description>&lt;p>New clients regularly ask us if we build WordPress sites. When we dig deeper, we generally learn that they’re looking for a user-friendly content management system (CMS) that will allow them to effortlessly publish and curate their site content. As we’ve &lt;a href="https://www.caktusgroup.com/blog/2018/08/14/django-vs-wordpress/">written about previously&lt;/a>, WordPress can be a good fit for simple sites. However, the majority of our clients need a more robust technical solution with customizable content management tools. For the Python-driven web applications that we develop, we love to work with Wagtail.&lt;/p></description></item><item><title>Django: Recommended Reading</title><link>https://www.caktusgroup.com/blog/2019/03/01/django-recommended-reading/</link><pubDate>Fri, 01 Mar 2019 22:19:42 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/03/01/django-recommended-reading/</guid><description>&lt;p>&lt;em>Pictured: Our library of reference books at Caktus cover topics including Django and Python, as well as project management and Agile methodologies.&lt;/em>&lt;/p></description></item><item><title>Impressed by Devopsdays Charlotte 2019</title><link>https://www.caktusgroup.com/blog/2019/02/22/devopsdays-charlotte/</link><pubDate>Fri, 22 Feb 2019 15:41:09 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/02/22/devopsdays-charlotte/</guid><description>&lt;p>We have a small two-person Infrastructure Ops team here at Caktus (including myself) so I was excited to go to my first &lt;a href="https://www.devopsdays.org/events/2019-charlotte/welcome/" target="_blank" rel="noopener noreferrer">devopsdays Charlotte&lt;/a> and be surrounded by Ops people. The event was held just outside of Charlotte, at the Red Ventures auditorium in Indian Land, South Carolina. About 200 people gathered there for two days of talks and open sessions. Devopsdays are held multiple times a year, in various locations around the world. Check out their &lt;a href="https://www.devopsdays.org/events/" target="_blank" rel="noopener noreferrer">schedule&lt;/a> to see if there will be an event near you.&lt;/p></description></item><item><title>Suggestions For Picking Up Old Projects</title><link>https://www.caktusgroup.com/blog/2019/02/15/old-projects/</link><pubDate>Fri, 15 Feb 2019 18:36:49 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/02/15/old-projects/</guid><description>&lt;p>At Caktus, we work on many projects, some of which are built by us from
start to finish, while others are inherited from other sources.
Oftentimes, we pick up a project that we either have not worked on in a
long time, or haven&amp;rsquo;t worked on at all, so we have to get familiar with
the code and figure out the design decisions that were made by those who
developed it (including when the developers are younger versions of
ourselves). Moreover, it is a good idea to improve the setup process in
each project, so others can have an easier time getting set up in the
future. In our efforts to work on such projects, a few things have been
helpful both for becoming familiar with the projects more quickly, and
for making the same projects easier to pick up in the future.&lt;/p></description></item><item><title>Community &amp; Caktus: Charitable Giving, Winter 2018</title><link>https://www.caktusgroup.com/blog/2019/02/09/charitable-giving-winter-2018/</link><pubDate>Sat, 09 Feb 2019 14:54:22 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/02/09/charitable-giving-winter-2018/</guid><description>&lt;p>&lt;em>Pictured: Developer Dan Poirier is an advocate for WCPE and a volunteer announcer. WCPE is one of the recipients of our charitable giving program.&lt;/em>&lt;/p></description></item><item><title>A Guide To Creating An API Endpoint With Django Rest Framework</title><link>https://www.caktusgroup.com/blog/2019/02/01/creating-api-endpoint-django-rest-framework/</link><pubDate>Fri, 01 Feb 2019 20:42:28 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/02/01/creating-api-endpoint-django-rest-framework/</guid><description>&lt;p>As part of our work to make sharp web apps at Caktus, we frequently
create API endpoints that allow other software to interact with a
server. Oftentimes this means using a frontend app (React, Vue, or
Angular), though it could also mean connecting some other piece of
software to interact with a server. A lot of our API endpoints, across
projects, end up functioning in similar ways, so we have become
efficient at writing them, and this blog post gives an example of how to
do so.&lt;/p></description></item><item><title>7 Conferences We’re Looking Forward To</title><link>https://www.caktusgroup.com/blog/2019/01/26/7-conferences/</link><pubDate>Sat, 26 Jan 2019 18:01:22 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/01/26/7-conferences/</guid><description>&lt;p>&lt;em>Above: The Internet Summit in Raleigh is one of the local conferences we recommend attending. (Photo by Ian Huckabee.)&lt;/em>&lt;/p>
&lt;p>At Caktus, we strongly believe in professional development and continued learning. We encourage our talented team to stay up to date with industry trends and technologies. During 2018, Cakti attended a number of conferences around the country. Below is a list (in alphabetical order) of the ones we found the most helpful, practical, and interesting. We look forward to attending these conferences again, and if you get the chance, we highly recommend that you check them out as well.&lt;/p></description></item><item><title>The Secret Lives of Cakti (Part 2)</title><link>https://www.caktusgroup.com/blog/2019/01/15/secret-lives-cakti-part-2/</link><pubDate>Tue, 15 Jan 2019 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/01/15/secret-lives-cakti-part-2/</guid><description>&lt;p>&lt;em>Pictured from left: Our musically inclined Cakti, Dane Summers, Dan Poirier, and Ian Huckabee.&lt;/em>&lt;/p>
&lt;p>The first installment of the &lt;a href="https://www.caktusgroup.com/blog/2018/10/11/secret-lives/">secret lives of Cakti&lt;/a> highlighted some colorful extracurriculars (including rescuing cats, running endurance events, and saving lives). This time, we’re taking a look at our team’s unexpected musical talents.&lt;/p></description></item><item><title>How to Use Django Bulk Inserts for Greater Efficiency</title><link>https://www.caktusgroup.com/blog/2019/01/09/django-bulk-inserts/</link><pubDate>Wed, 09 Jan 2019 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/01/09/django-bulk-inserts/</guid><description>&lt;p>It's been awhile since we &lt;a href="https://www.caktusgroup.com/blog/2011/09/20/bulk-inserts-django/">last discussed bulk
inserts&lt;/a>
on the Caktus blog. The idea is simple: if you have an application that
needs to insert a lot of data into a Django model &amp;mdash; for example a
background task that processes a CSV file (or some other text file) &amp;mdash;
it pays to &amp;quot;chunk&amp;quot; those updates to the database so that multiple
records are created through a single database operation. This reduces
the total number of round-trips to the database, something my colleague
Dan Poirier discussed in more detail in the post linked above.&lt;/p></description></item><item><title>Caktus Blog: Top 18 Posts of 2018</title><link>https://www.caktusgroup.com/blog/2019/01/01/caktus-blog-top-18-posts-2018/</link><pubDate>Tue, 01 Jan 2019 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2019/01/01/caktus-blog-top-18-posts-2018/</guid><description>&lt;p>In 2018, we published 44 posts on our blog, including technical how-to’s, a series on UX research methods, web development best practices, and tips for project management. Among all those posts, 18 rose to the top of the popularity list in 2018.&lt;/p></description></item><item><title>My New Year’s Resolution: Work Less to Code Better</title><link>https://www.caktusgroup.com/blog/2018/12/27/new-years-resolution-work-less-code-better/</link><pubDate>Thu, 27 Dec 2018 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/12/27/new-years-resolution-work-less-code-better/</guid><description>&lt;p>You may look at my job title (or picture) and think, “Oh, this is easy, he’s going to resolve to stand up at his desk more.” Well, you’re not wrong, that is one of my resolutions, but I have an even more important
one. I, Jeremy Gibson, resolve to do less work in 2019. You’re probably thinking that it’s bold to admit this on my employer’s blog. Again, you’re not wrong, but I think I can convince them that the less work I
do, the more clear and functional my code will become. My resolution has three components.&lt;/p></description></item><item><title>How to Fix your Python Code's Style</title><link>https://www.caktusgroup.com/blog/2018/12/10/how-to-fix-python-code-style/</link><pubDate>Mon, 10 Dec 2018 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/12/10/how-to-fix-python-code-style/</guid><description>&lt;p>Sometimes we inherit code that doesn't follow the style guidelines we
prefer when we're writing new code. We could just run
&lt;a href="http://flake8.pycqa.org/en/latest/" target="_blank" rel="noopener noreferrer">flake8&lt;/a> on the whole codebase and
fix everything before we continue, but that's not necessarily the best
use of our time.&lt;/p></description></item><item><title>Our Top Tip for Computer Security During the Holidays</title><link>https://www.caktusgroup.com/blog/2018/11/29/top-tip-computer-security/</link><pubDate>Fri, 30 Nov 2018 00:26:09 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/11/29/top-tip-computer-security/</guid><description>&lt;p>&lt;em>Updated December 2020.&lt;/em>&lt;/p>
&lt;p>This holiday season, there&amp;rsquo;s more online activity than ever, from shopping to Zoom sessions with family and friends, not to mention remote work and school. But during all this online activity, how much do you think about your computer security? (We know, there are way more important things on your mind these days!) But a security breach could wreak havoc on your business or personal life. Just think, is your password different for every shopping site or app that you use? If not, it should be!&lt;/p></description></item><item><title>Django Depends on You: A Takeaway from DjangoCon</title><link>https://www.caktusgroup.com/blog/2018/11/13/django-depends-you/</link><pubDate>Tue, 13 Nov 2018 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/11/13/django-depends-you/</guid><description>&lt;p>&lt;em>Photo by &lt;a href="https://bartpawlik.format.com/" target="_blank" rel="noopener noreferrer">Bartek Pawlik&lt;/a>.&lt;/em>&lt;/p>
&lt;p>DjangoCon 2018 attracted attendees from around the world, including myself and several other Cakti (check out our &lt;a href="https://www.caktusgroup.com/blog/2018/10/25/djangocon-2018-recap/">DjangoCon recap post&lt;/a>). Having attended a number of DjangoCons in the past, I looked forward to reconnecting with old colleagues and friends within the community, learning new things about our favorite framework, and exploring San Diego.&lt;/p></description></item><item><title>DjangoCon 2018 Recap</title><link>https://www.caktusgroup.com/blog/2018/10/25/djangocon-2018-recap/</link><pubDate>Thu, 25 Oct 2018 11:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/10/25/djangocon-2018-recap/</guid><description>&lt;p>&lt;em>Above: Hundreds of happy Djangonauts at DjangoCon 2018. (Photo by Bartek Pawlik.)&lt;/em>&lt;/p>
&lt;p>That’s it, folks — another &lt;a href="https://2018.djangocon.us/" target="_blank" rel="noopener noreferrer">DjangoCon&lt;/a> in the books! Caktus was thrilled to sponsor and attend this fantastic gathering of Djangonauts for the ninth year running. This year’s conference ran from October 14 - 19, in sunny San Diego. ☀️&lt;/p></description></item><item><title>Filtering and Pagination with Django</title><link>https://www.caktusgroup.com/blog/2018/10/18/filtering-and-pagination-django/</link><pubDate>Thu, 18 Oct 2018 14:40:42 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/10/18/filtering-and-pagination-django/</guid><description>&lt;p>If you want to build a list page that allows filtering and pagination,
you have to get a few separate things to work together. Django provides
some tools for pagination, but the documentation doesn't tell us how to
make that work with anything else. Similarly, django_filter makes it
relatively easy to add filters to a view, but doesn't tell you how to
add pagination (or other things) without breaking the filtering.&lt;/p></description></item><item><title>The Secret Lives of Cakti</title><link>https://www.caktusgroup.com/blog/2018/10/11/secret-lives/</link><pubDate>Thu, 11 Oct 2018 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/10/11/secret-lives/</guid><description>&lt;p>&lt;em>Pictured from left: Caktus team members Vinod Kurup, Karen Tracey, and David Ray.&lt;/em>&lt;/p>
&lt;p>The &lt;a href="https://www.caktusgroup.com/about/">Caktus team&lt;/a> includes expert developers, sharp project managers, and eagle-eyed QA analysts. However, you may not know that there’s more to them than meets the eye. Here’s a peek at how Cakti spend their off-hours.&lt;/p></description></item><item><title>Django or Drupal for Content Management: Which Fits your Needs?</title><link>https://www.caktusgroup.com/blog/2018/09/28/django-or-drupal-content-management/</link><pubDate>Fri, 28 Sep 2018 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/09/28/django-or-drupal-content-management/</guid><description>&lt;p>If you’re building or updating a website, you’re probably wondering about which content management system (CMS) to use. A CMS helps users — particularly non-technical users — to add pages and blog posts, embed videos and images, and incorporate other content into their site.&lt;/p></description></item><item><title>Diverse Speaker Line-up for DjangoCon is Sharp</title><link>https://www.caktusgroup.com/blog/2018/09/20/speakers-djangocon/</link><pubDate>Thu, 20 Sep 2018 13:37:18 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/09/20/speakers-djangocon/</guid><description>&lt;p>&lt;em>Above: Caktus Account Manager Tim Scales gears up for DjangoCon.&lt;/em>&lt;/p>
&lt;p>We’re looking forward to taking part in the international gathering of Django enthusiasts at &lt;a href="https://2018.djangocon.us/" target="_blank" rel="noopener noreferrer">DjangoCon&lt;/a> 2018, in San Diego, CA. We’ll be there from October 14 - 19, and we’re proud to attend as sponsors for the ninth year! As such, we’re hosting a mini golf event for attendees (details below).&lt;/p></description></item><item><title>Better Python Dependency Management with pip-tools</title><link>https://www.caktusgroup.com/blog/2018/09/18/python-dependency-management-pip-tools/</link><pubDate>Tue, 18 Sep 2018 14:37:29 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/09/18/python-dependency-management-pip-tools/</guid><description>&lt;p>I recently looked into whether I could use
&lt;a href="https://github.com/jazzband/pip-tools" target="_blank" rel="noopener noreferrer">pip-tools&lt;/a> to improve my
workflow around projects' Python dependencies. My conclusion was that
pip-tools would help on some projects, but it wouldn't do everything I
wanted, and I couldn't use it everywhere. (I tried pip-tools version
2.0.2 in August 2018. If there are newer versions, they might fix some
of the things I ran into when trying pip-tools.)&lt;/p></description></item><item><title>National Day of Civic Hacking in Durham</title><link>https://www.caktusgroup.com/blog/2018/08/31/national-day-civic-hacking/</link><pubDate>Fri, 31 Aug 2018 17:26:48 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/08/31/national-day-civic-hacking/</guid><description>&lt;p>&lt;em>Pictured: Simone Sequeira, Senior Product Manager of GetCalFresh, with event attendees at Caktus.&lt;/em>&lt;/p>
&lt;p>On August 11, I attended the &lt;a href="https://www.codeforamerica.org/national-day-of-civic-hacking" target="_blank" rel="noopener noreferrer">National Day of Civic Hacking&lt;/a> hosted by &lt;a href="http://codefordurham.com/" target="_blank" rel="noopener noreferrer">Code for Durham&lt;/a>. More than 30 attendees came to the event, hosted in the Caktus Group Tech Space, to collaborate on civic projects that focus on the needs of Durham residents.&lt;/p></description></item><item><title>Complicated Project? Start with our Discovery Workshop Guide</title><link>https://www.caktusgroup.com/blog/2018/08/27/discovery-workshop-guide/</link><pubDate>Mon, 27 Aug 2018 15:31:43 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/08/27/discovery-workshop-guide/</guid><description>&lt;p>If you ever struggled to implement a complicated development project, starting your next one with a discovery workshop will help. Discovery workshops save you time and money over the course of a project because we help you answer important questions in advance, ensuring that the final product lines up with your primary end goals. Our new guide, &lt;a href="https://learn.caktusgroup.com/shared-understanding-caktus-discovery-workshops" target="_blank" rel="noopener noreferrer">Shared Understanding: A Guide to Caktus Discovery Workshops&lt;/a>, demonstrates the value of these workshops and why we’ve made them a core component of our client services.&lt;/p></description></item><item><title>ShipIt Day Summer 2018 Recap</title><link>https://www.caktusgroup.com/blog/2018/08/20/shipit-day-summer-2018/</link><pubDate>Mon, 20 Aug 2018 11:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/08/20/shipit-day-summer-2018/</guid><description>&lt;p>On July 27 - 28, we ran our quarterly ShipIt Day here at Caktus. These 24-hour sprints, which we’ve organized since 2012, allow Cakti to explore new projects that expand or increase their skill sets. The event kicked off at 3:00 pm on Thursday and we reconvened at 3:00 pm on Friday to showcase our progress. The goal is to experiment, take risks, and try something new.&lt;/p></description></item><item><title>Django vs WordPress: How to Decide?</title><link>https://www.caktusgroup.com/blog/2018/08/14/django-vs-wordpress/</link><pubDate>Tue, 14 Aug 2018 10:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/08/14/django-vs-wordpress/</guid><description>&lt;p>In the early stages of a web development project, your first step is a big decision: what’s the right tool for the job? What kind of software makes the most sense for me?&lt;/p></description></item><item><title>Caktus Embraces GDPR Compliance (and you can, too!)</title><link>https://www.caktusgroup.com/blog/2018/08/06/caktus-embraces-gdpr-compliance/</link><pubDate>Mon, 06 Aug 2018 11:21:44 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/08/06/caktus-embraces-gdpr-compliance/</guid><description>&lt;h3 id="if-youve-landed-on-this-page-youre-probably-here-for-one-of-two-reasons">If you’ve landed on this page, you’re probably here for one of two reasons:##&lt;/h3>
&lt;p>&lt;strong>A)&lt;/strong> You’re a European firm who’s interested in hiring Caktus, in which case: Yes, we’re GDPR compliant! &lt;a href="https://www.caktusgroup.com/contact/">Ask us about it here&lt;/a>.&lt;/p></description></item><item><title>Caktus Supports the Community through Charitable Giving</title><link>https://www.caktusgroup.com/blog/2018/07/20/supporting-community/</link><pubDate>Fri, 20 Jul 2018 11:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/07/20/supporting-community/</guid><description>&lt;p>Twice a year we solicit proposals from our team to contribute to a variety of non-profit organizations. With this program, we look to support groups in which Cakti are involved or that have impacted their lives in some way. This gives Caktus a chance to support our own employees as well as the wider community. For the first half of 2018, we are pleased to donate to the following organizations:&lt;/p></description></item><item><title>Outgrowing Sprints: A Shift from Scrum to Kanban</title><link>https://www.caktusgroup.com/blog/2018/07/09/outgrowing-sprints-shift-scrum-kanban/</link><pubDate>Mon, 09 Jul 2018 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/07/09/outgrowing-sprints-shift-scrum-kanban/</guid><description>&lt;h2 id="the-problem">The problem&lt;/h2>
&lt;p>The Scrum and Kanban frameworks are tools for development teams, and as with any job, it’s crucial to pick the right tool for the situation at hand. Caktus teams have been using Scrum for over two years, but one of my teams started to bring up in retrospectives that sprint deadlines felt arbitrary and were irrelevant to anyone outside the team. They also had to do some mental gymnastics to plan sprints that were so brittle they were likely to fall apart due to restricted monthly project budgets. As a result, I started to ask myself some difficult questions.&lt;/p></description></item><item><title>Lessons from the Great Failure of 1858 (PyCon 2018 Must-See Talk Series)</title><link>https://www.caktusgroup.com/blog/2018/06/25/lessons-great-failure-1858-pycon-2018/</link><pubDate>Mon, 25 Jun 2018 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/06/25/lessons-great-failure-1858-pycon-2018/</guid><description>&lt;p>&lt;em>This is the third post in the 2018 edition of our annual &lt;a href="https://www.caktusgroup.com/blog/tags/pycon-must-see-series/">PyCon Must-See Series&lt;/a>, which highlights the talks our staff especially loved at PyCon. While there were many great talks, this is our team&amp;rsquo;s shortlist.&lt;/em>&lt;/p></description></item><item><title>Make ALL Your Django Forms Better</title><link>https://www.caktusgroup.com/blog/2018/06/18/make-all-your-django-forms-better/</link><pubDate>Mon, 18 Jun 2018 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/06/18/make-all-your-django-forms-better/</guid><description>&lt;p>Website experiences need to be consistent as much as they need to be well thought out and aesthetically pleasing. Structure, visual design, user interactions, and accessibility concerns are among many considerations that go into building quality websites. While achieving consistency of experience and implementation is an essential goal of web development, efficiency of execution is also very important. An efficient workflow means this consistent experience doesn’t require redoing work across the site.&lt;/p></description></item><item><title>Stories of Security (PyCon 2018 Must-See Talk Series)</title><link>https://www.caktusgroup.com/blog/2018/06/13/pycon-2018-must-see-talk-series/</link><pubDate>Wed, 13 Jun 2018 13:50:52 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/06/13/pycon-2018-must-see-talk-series/</guid><description>&lt;p>&lt;em>This is the second post in the 2018 edition of our annual &lt;a href="https://www.caktusgroup.com/blog/tags/pycon-must-see-series/">PyCon Must-See Series&lt;/a>, which highlights the talks our staff especially loved at PyCon. While there were many great talks, this is our team&amp;rsquo;s shortlist.&lt;/em>&lt;/p></description></item><item><title>Why We Love TestBash (and You Will, Too!)</title><link>https://www.caktusgroup.com/blog/2018/06/11/why-we-love-testbash/</link><pubDate>Mon, 11 Jun 2018 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/06/11/why-we-love-testbash/</guid><description>&lt;p>Mirror, mirror, on the wall - what&amp;rsquo;s the best test conference of them all? That’s the question that many of you may be asking yourselves when trying to decide which conference to attend. Well, we believe we have discovered what may be one of the top contenders for best software testing conferences: the Ministry of Testing’s &lt;a href="https://www.ministryoftesting.com/testbash" target="_blank" rel="noopener noreferrer">TestBash&lt;/a>.&lt;/p></description></item><item><title>3 Common Form Testing Issues (Plus 1 Helpful Tool)</title><link>https://www.caktusgroup.com/blog/2018/05/28/3-common-form-testing-issues-plus-1-helpful-tool/</link><pubDate>Mon, 28 May 2018 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/05/28/3-common-form-testing-issues-plus-1-helpful-tool/</guid><description>&lt;p>Forms are something that I find myself testing frequently, whether it&amp;rsquo;s an e-commerce checkout page or a new &lt;a href="https://docs.djangoproject.com/en/2.0/topics/db/models/" target="_blank" rel="noopener noreferrer">model&lt;/a> in the Django admin. The challenge of forms is that users will often enter things that may not have been accounted for when the form was created.&lt;/p></description></item><item><title>Love Your Bugs (PyCon 2018 Must-See Talk Series)</title><link>https://www.caktusgroup.com/blog/2018/05/23/love-your-bugs-pycon-2018-must-see-talk-series/</link><pubDate>Wed, 23 May 2018 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/05/23/love-your-bugs-pycon-2018-must-see-talk-series/</guid><description>&lt;p>&lt;em>Welcome to the 2018 edition of our annual &lt;a href="https://www.caktusgroup.com/blog/tags/pycon-must-see-series/">PyCon Must-See Series&lt;/a>, highlighting the talks our staff especially loved at PyCon. While there were many great talks, this is our team&amp;rsquo;s shortlist.&lt;/em>&lt;/p></description></item><item><title>PyCon 2018 Recap</title><link>https://www.caktusgroup.com/blog/2018/05/21/pycon-2018-recap/</link><pubDate>Mon, 21 May 2018 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/05/21/pycon-2018-recap/</guid><description>&lt;h3 id="making-connections">Making connections&lt;/h3>
&lt;p>Before the conference, our team listed “making connections” as one of the main reasons to attend PyCon. We certainly did that, welcoming visitors to the booth and catching up with friends old and new.&lt;/p></description></item><item><title>Avoiding the Blame Game in Scrum</title><link>https://www.caktusgroup.com/blog/2018/05/14/avoiding-blame-game-scrum/</link><pubDate>Mon, 14 May 2018 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/05/14/avoiding-blame-game-scrum/</guid><description>&lt;p>The words we use, and the tone in which we use them, can either nurture or hinder the growth of Scrum teams. This is especially true for teams that are new to Scrum or that may be transitioning into a new Agile methodology.&lt;/p></description></item><item><title>Creating Dynamic Forms with Django</title><link>https://www.caktusgroup.com/blog/2018/05/07/creating-dynamic-forms-django/</link><pubDate>Mon, 07 May 2018 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/05/07/creating-dynamic-forms-django/</guid><description>&lt;p>&lt;em>Editor&amp;rsquo;s note: This post was written in 2018 when Django 1.11 and Django 2.0 were current. The code samples may need to be updated to work with more recent versions of Django.&lt;/em>&lt;/p></description></item><item><title>Prioritizing Defects</title><link>https://www.caktusgroup.com/blog/2018/04/30/prioritizing-defects/</link><pubDate>Mon, 30 Apr 2018 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/04/30/prioritizing-defects/</guid><description>&lt;p>A defect, or bug, in a software product can be defined as a flaw in the system that leads to a measurable or observable deviation from its expected result. During development, it’s part of the &lt;a href="https://www.caktusgroup.com/blog/2018/03/14/what-software-quality-assurance/">quality assurance&lt;/a> process to prioritize defects in order to minimize the impact to the end product and meet the agreed-upon quality level for the product. This prioritization can seem like a dark art. How do we decide what gets addressed and what doesn’t?&lt;/p></description></item><item><title>Caktus Recognized as Top Web Development Company in Raleigh</title><link>https://www.caktusgroup.com/blog/2018/04/24/caktus-recognized-top-web-development-company-raleigh/</link><pubDate>Tue, 24 Apr 2018 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/04/24/caktus-recognized-top-web-development-company-raleigh/</guid><description>&lt;p>Since Caktus’ founding in 2007, we have dedicated ourselves to growing sharp web apps the right way. The tenets of our &lt;a href="https://www.caktusgroup.com/blog/2017/06/21/caktus-success-model/">Success Model&lt;/a> drive us to focus on strategic partnerships, prioritize the most valuable features, develop for scalability, and recruit a sharp team. We’re pleased and honored that this focus on doing things right has been recognized by leading review website Clutch.&lt;/p></description></item><item><title>The Users We Don't Know</title><link>https://www.caktusgroup.com/blog/2018/04/23/users-we-dont-know/</link><pubDate>Mon, 23 Apr 2018 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/04/23/users-we-dont-know/</guid><description>&lt;p>Businesses and organizations come to Caktus to build custom web applications that will help solve their users’ problems. Before contacting us, clients spend time and effort thinking through their users’ problems. But in doing so they do not always talk directly to potential users of the application. As a result, they come up with ideas for the application based on who they think the target users are rather than who they know those users are. Or, if they have correctly identified their target user segment, they may make assumptions about the ways users think, behave, or accomplish tasks.&lt;/p></description></item><item><title>5 Scrum Master Lessons Learned</title><link>https://www.caktusgroup.com/blog/2018/04/16/5-scrum-master-lessons-learned/</link><pubDate>Mon, 16 Apr 2018 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/04/16/5-scrum-master-lessons-learned/</guid><description>&lt;p>March 2018 marked the end of my fourth year as a Scrum master. I began with a Certified ScrumMaster workshop in 2014 and haven’t stopped learning since. I keep a running list titled “Lessons Learned,” where I jot down thoughts I find significant as they occur to me so that I can go back to the list and draw from my little bank of personal wisdom.&lt;/p></description></item><item><title>Caktus at PyCon 2018</title><link>https://www.caktusgroup.com/blog/2018/04/09/caktus-pycon-2018/</link><pubDate>Mon, 09 Apr 2018 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/04/09/caktus-pycon-2018/</guid><description>&lt;p>We’re one month away from PyCon 2018 and are looking forward to this year’s event in Cleveland, OH. Caktus is proud to sponsor once again and will be in attendance with a booth.&lt;/p></description></item><item><title>Agile for Stakeholders</title><link>https://www.caktusgroup.com/blog/2018/04/02/agile-stakeholders/</link><pubDate>Mon, 02 Apr 2018 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/04/02/agile-stakeholders/</guid><description>&lt;p>In Agile development, a stakeholder is anyone outside the development team with a stake in the success of the project. If you are a stakeholder, knowledge of Agile will help you understand how the project will be developed and managed, when you can expect to see progress, and what the team needs from you in order to deliver their best work. Understanding these basic concepts and what your role entails are essential to your project’s success.&lt;/p></description></item><item><title>ShipIt Day Recap Q1 2018</title><link>https://www.caktusgroup.com/blog/2018/03/26/shipit-day-recap-q1-2018/</link><pubDate>Mon, 26 Mar 2018 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/03/26/shipit-day-recap-q1-2018/</guid><description>&lt;p>Another quarter, another ShipIt Day! Take a look at what our team dove into in the first part of 2018.&lt;/p></description></item><item><title>When a Clean Merge is Wrong</title><link>https://www.caktusgroup.com/blog/2018/03/19/when-clean-merge-wrong/</link><pubDate>Mon, 19 Mar 2018 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/03/19/when-clean-merge-wrong/</guid><description>&lt;p>Git conflicts tell us when changes don’t go together. While working with other developers, or even when working more than one branch by yourself, changes to the same code can happen. Trying to merge them together will stop Git in its tracks.&lt;/p></description></item><item><title>What is Software Quality Assurance?</title><link>https://www.caktusgroup.com/blog/2018/03/14/what-software-quality-assurance/</link><pubDate>Wed, 14 Mar 2018 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/03/14/what-software-quality-assurance/</guid><description>&lt;p>A crucial but often overlooked aspect of software development is quality assurance (QA). If you have an app in progress, you will likely hear this term throughout the development life cycle. It may seem that coding is the brunt of the development work, since without code your app doesn’t exist, but quality assurance efforts often consist of up to 50% of the total project effort (1) (and part of the QA effort is coding). Without quality assurance, your app may exist but it is unlikely it will function well, meet the objectives of your users, or be maintainable in the future. QA is important, but what exactly is it?&lt;/p></description></item><item><title>Managing Sprint Reviews for Multiple Clients or Projects</title><link>https://www.caktusgroup.com/blog/2018/03/12/managing-sprint-reviews-multiple-clients-or-projects/</link><pubDate>Mon, 12 Mar 2018 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/03/12/managing-sprint-reviews-multiple-clients-or-projects/</guid><description>&lt;p>Sprint reviews for teams working with multiple clients and managing multiple projects can be a challenge. At Caktus, we combine more traditional sprint review guidelines with some tweaks to fit our company and client’s needs.&lt;/p></description></item><item><title>Basics of Django Rest Framework</title><link>https://www.caktusgroup.com/blog/2018/02/26/basics-django-rest-framework/</link><pubDate>Mon, 26 Feb 2018 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/02/26/basics-django-rest-framework/</guid><description>&lt;h3 id="what-is-django-rest-framework">What Is Django Rest Framework?&lt;/h3>
&lt;p>&lt;a href="http://www.django-rest-framework.org/" target="_blank" rel="noopener noreferrer">Django Rest Framework&lt;/a> (DRF) is a library which works with standard Django models to build a flexible and powerful API for your project.&lt;/p></description></item><item><title>Add Value To Your Django Project With An API</title><link>https://www.caktusgroup.com/blog/2018/02/19/add-value-to-django-project-api/</link><pubDate>Mon, 19 Feb 2018 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/02/19/add-value-to-django-project-api/</guid><description>&lt;p>How do your users interact with your web app? Do you have users who are requesting new features? Are there more good feature requests than you have developer hours to build? Often, a small addition to your app can open the door to let users build features they want (within limits) without using more of your own developers’ time, and you can still keep control over how data can be accessed or changed. That small addition is called an application programming interface, or API. APIs are used across the web, but if you aren’t a developer, you may not have heard of them. They can be easily built on top of Django projects, though, and can provide great value to your own developers as well as to your users.&lt;/p></description></item><item><title>UX Research Methods 3: Evaluating What Is</title><link>https://www.caktusgroup.com/blog/2018/02/05/ux-evaluating-what-exists/</link><pubDate>Mon, 05 Feb 2018 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/02/05/ux-evaluating-what-exists/</guid><description>&lt;p>In previous blog posts on UX research methods, I discussed techniques we use to &lt;a href="https://www.caktusgroup.com/blog/2018/01/29/understanding-thought-processes-motivations-needs/">understand how users think and feel, what they need and want, and why&lt;/a>; and those we use to &lt;a href="https://www.caktusgroup.com/blog/2018/01/31/analyzing-behavior/">analyze and understand user behavior&lt;/a>.&lt;/p></description></item><item><title>UX Research Methods 2: Analyzing Behavior</title><link>https://www.caktusgroup.com/blog/2018/01/31/analyzing-behavior/</link><pubDate>Wed, 31 Jan 2018 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/01/31/analyzing-behavior/</guid><description>&lt;p>Previously, I explained &lt;a href="https://www.caktusgroup.com/blog/2018/01/29/understanding-thought-processes-motivations-needs/">interviews, surveys, and card sorting&lt;/a> as techniques that help UX researchers understand how users think and feel, what they need and want, and why. In this post, I will review UX research methods best suited to understand user behavior and its causes.&lt;/p></description></item><item><title>UX Research Methods 1: Understanding Thought Processes, Motivations, and Needs</title><link>https://www.caktusgroup.com/blog/2018/01/29/understanding-thought-processes-motivations-needs/</link><pubDate>Mon, 29 Jan 2018 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/01/29/understanding-thought-processes-motivations-needs/</guid><description>&lt;p>In a previous blog post, &lt;a href="https://www.caktusgroup.com/blog/2018/01/22/types-ux-research/">Types of UX Research&lt;/a>, I discussed how UX research can be classified. I explained qualitative and quantitative, generative and evaluative, formative and summative, and attitudinal and behavioral types of research. Within each of these categories of research, there are several methods that can be used to reach specific project objectives.&lt;/p></description></item><item><title>Types of UX Research</title><link>https://www.caktusgroup.com/blog/2018/01/22/types-ux-research/</link><pubDate>Mon, 22 Jan 2018 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/01/22/types-ux-research/</guid><description>&lt;p>Requirements gathering (or product discovery) is a &lt;a href="https://www.caktusgroup.com/blog/2017/11/27/caktus-discovery-workshops/">part of every development project&lt;/a>. We must know what to build before we build it, and we must refine our understanding of what we are building as we move along. Discovery workshops are a format well-suited for certain types of projects before development begins, although requirements gathering continues throughout a development project.&lt;/p></description></item><item><title>Quick Tips: How to Find Your Project ID in JIRA Cloud</title><link>https://www.caktusgroup.com/blog/2018/01/15/quick-tips-find-your-project-id-jira-cloud/</link><pubDate>Mon, 15 Jan 2018 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/01/15/quick-tips-find-your-project-id-jira-cloud/</guid><description>&lt;p>Have you ever created a filter in JIRA full of project names and returned to edit it, only to find all the project names replaced by five-digit numbers with no context? The trial and error approach (deleting and restoring numbers one by one until the project you wanted to remove no longer appears in the filter results) is painful. So, how do you find the ID for a project?&lt;/p></description></item><item><title>Culture of Unit Testing</title><link>https://www.caktusgroup.com/blog/2018/01/08/culture-unit-testing/</link><pubDate>Mon, 08 Jan 2018 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/01/08/culture-unit-testing/</guid><description>&lt;p>Unit testing is something that deeply divides programmer communities. Nearly everyone agrees that it’s good to have unit tests in place, but some developers question whether the time invested in writing unit tests would be better spent writing “real” code, doing manual QA, or debugging.&lt;/p></description></item><item><title>Caktus Blog Best of 2017</title><link>https://www.caktusgroup.com/blog/2018/01/01/caktus-blog-best-2017/</link><pubDate>Mon, 01 Jan 2018 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2018/01/01/caktus-blog-best-2017/</guid><description>&lt;p>With 2017 now over, we highlight the top 17 posts published or updated on the Caktus blog this year. Have you read them all?&lt;/p></description></item><item><title>Southern Fried Agile 2017 Recap</title><link>https://www.caktusgroup.com/blog/2017/12/27/southern-fried-agile-2017-recap/</link><pubDate>Wed, 27 Dec 2017 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/12/27/southern-fried-agile-2017-recap/</guid><description>&lt;p>I attended the &lt;a href="https://www.southernfriedagile.com/" target="_blank" rel="noopener noreferrer">Southern Fried Agile&lt;/a> conference in November 2017, where I heard some excellent talks and connected with local Agilists in Charlotte, NC. Southern Fried Agile is the sister conference of TriAgile, which &lt;a href="https://www.caktusgroup.com/blog/2017/06/14/triagile-2017-recap/">I also attended this year&lt;/a>.&lt;/p></description></item><item><title>Year-End Charitable Giving 2017</title><link>https://www.caktusgroup.com/blog/2017/12/25/year-end-charitable-giving-2017/</link><pubDate>Mon, 25 Dec 2017 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/12/25/year-end-charitable-giving-2017/</guid><description>&lt;p>Twice a year we solicit proposals from the team for contributions to non-profit organizations in which individual Cakti are involved or that have impacted their lives. Our charitable giving program is a chance to support not only our own employees but the wider community. This quarter we are pleased to donate to the following organizations.&lt;/p></description></item><item><title>Supercharging your CSS with Stylus and PostCSS</title><link>https://www.caktusgroup.com/blog/2017/12/18/supercharging-your-css-stylus-and-postcss/</link><pubDate>Mon, 18 Dec 2017 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/12/18/supercharging-your-css-stylus-and-postcss/</guid><description>&lt;p>Here at Caktus the front-end team stays on the bleeding edge by taking
advantage of the latest and greatest tools. We only incorporate features
into our packaging that are well-supported and production-ready, as well
as those that meet our list of standard browser requirements. Luckily,
there are plenty of tools that allow us to use experimental technologies
with appropriate fallbacks for non-supported browsers.&lt;/p></description></item><item><title>2018 Event Shortlist</title><link>https://www.caktusgroup.com/blog/2017/12/11/2018-event-shortlist/</link><pubDate>Mon, 11 Dec 2017 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/12/11/2018-event-shortlist/</guid><description>&lt;p>The Caktus team attends a number of conferences each year to learn about the latest tips and tools. Several of us also go to events to share knowledge as speakers or sprint leaders. Using our varied experiences, we’ve put together a list of the events we’re looking forward to next year.&lt;/p></description></item><item><title>AWS re:Invent Recap</title><link>https://www.caktusgroup.com/blog/2017/12/06/aws-reinvent-recap/</link><pubDate>Wed, 06 Dec 2017 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/12/06/aws-reinvent-recap/</guid><description>&lt;p>As a &lt;a href="https://aws.amazon.com/partners/find/partnerdetails/?id=001E000001N5gJTIAZ" target="_blank" rel="noopener noreferrer">certified Amazon Web Services (AWS) Consulting Partner&lt;/a>, Caktus sent a member of the team to &lt;a href="https://reinvent.awsevents.com/" target="_blank" rel="noopener noreferrer">AWS re:invent&lt;/a> this year to meet other solution providers, discuss with AWS representatives how to leverage our partnership to best serve our clients, and of course, get hands-on experience with both existing and newly-revealed AWS services.&lt;/p></description></item><item><title>Caktus is Excited about Django 2.0</title><link>https://www.caktusgroup.com/blog/2017/12/04/caktus-excited-about-django-2/</link><pubDate>Mon, 04 Dec 2017 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/12/04/caktus-excited-about-django-2/</guid><description>&lt;p>Did you know Django 2.0 is out? The development team at Caktus knows and we’re excited! You should be excited too if you work with or depend on Django. Here’s what our Cakti have been saying about the recently-released 2.0 beta.&lt;/p></description></item><item><title>Caktus Discovery Workshops</title><link>https://www.caktusgroup.com/blog/2017/11/27/caktus-discovery-workshops/</link><pubDate>Mon, 27 Nov 2017 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/11/27/caktus-discovery-workshops/</guid><description>&lt;p>Before an app can be built, the development team needs to know what they are supposed to be building. How do they establish that? With requirements gathering.&lt;/p></description></item><item><title>Developing Sharp Interns</title><link>https://www.caktusgroup.com/blog/2017/11/20/developing-sharp-interns/</link><pubDate>Mon, 20 Nov 2017 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/11/20/developing-sharp-interns/</guid><description>&lt;p>Our internship program sustains Caktus’ growth, challenges and reinvigorates our development practices, builds our relations with the local tech and wider Django communities, and hones our operational practices as a company. This post shares our guiding principles for how we structure our developer internship to achieve these goals, while providing a meaningful and edifying experience for the interns we hire.&lt;/p></description></item><item><title>Getting Started with Outsourced Web Development</title><link>https://www.caktusgroup.com/blog/2017/11/13/getting-started-outsourced-web-development/</link><pubDate>Mon, 13 Nov 2017 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/11/13/getting-started-outsourced-web-development/</guid><description>&lt;p>In researching outsourced web development, you may have come across a few different ways to get your project built and have some questions as a result. How well defined do the project requirements need to be prior to starting development? Will Waterfall or Agile methods deliver the best results? Should you look for a consultancy offering team augmentation or in-house Agile-based work? What are the ramifications for your project of picking one or the other?&lt;/p></description></item><item><title>ShipIt Day Recap Q4 2017</title><link>https://www.caktusgroup.com/blog/2017/11/06/shipit-day-recap-q4-2017/</link><pubDate>Mon, 06 Nov 2017 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/11/06/shipit-day-recap-q4-2017/</guid><description>&lt;p>Our quarterly ShipIt Day has come and gone, with many new ideas and experiments from the team. As we do every quarter, Caktus staff stepped away from client work to try new technology, read up on the latest documentation, update internal processes, or otherwise find inspiring ways to improve themselves and Caktus as a whole. Keep reading to see what we worked on.&lt;/p></description></item><item><title>The Opera of Agile: A Striking Performance at Red Hat Agile Day</title><link>https://www.caktusgroup.com/blog/2017/11/01/opera-agile-striking-performance-red-hat-agile-day/</link><pubDate>Wed, 01 Nov 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/11/01/opera-agile-striking-performance-red-hat-agile-day/</guid><description>&lt;p>Have you ever heard anyone sing opera during a tech-focused conference? Neither had I, until now.&lt;/p>
&lt;p>Red Hat Agile Day, held in downtown Raleigh, recently provided this unique opportunity. The theme of the 2017 &lt;a href="http://redhatagileday.com/" target="_blank" rel="noopener noreferrer">Red Hat Agile Day&lt;/a> was “Agile: brokering innovation; bringing together great ideas.” The conference certainly lived up to that theme with a diverse line-up of speakers, including a former professional opera singer who bookended his presentation with songs. One was a creative, original ballad about being an Agile product manager (&lt;a href="https://deanondelivery.com/am-i-the-very-model-of-a-modern-product-manager-5388a3882100" target="_blank" rel="noopener noreferrer">see the lyrics here&lt;/a>), which he delivered at full blast, because how else can you sing opera?&lt;/p></description></item><item><title>White Space Explained</title><link>https://www.caktusgroup.com/blog/2017/10/30/white-space-explained/</link><pubDate>Mon, 30 Oct 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/10/30/white-space-explained/</guid><description>&lt;h3 id="what-white-space-is">What White Space Is&lt;/h3>
&lt;p>In the context of web design, &lt;a href="https://www.interaction-design.org/literature/article/the-power-of-white-space" target="_blank" rel="noopener noreferrer">white space&lt;/a> (or negative space) is the space around and between elements on a page. To non-designers, it may seem unnecessary or an expression of a particular aesthetic (and therefore non-essential to a web page). To designers, it is an essential tool to increase the comprehension of a composition and guide a viewer’s attention and focus.&lt;/p></description></item><item><title>CSS Tip: Fixed Headers and Section Anchors</title><link>https://www.caktusgroup.com/blog/2017/10/23/css-tip-fixed-headers-and-section-anchors/</link><pubDate>Mon, 23 Oct 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/10/23/css-tip-fixed-headers-and-section-anchors/</guid><description>&lt;p>Fixed headers are a common design pattern that keeps navigation
essentials in easy reach as users meander down a page. Keeping a header
fixed as the user scrolls can free up horizontal space for smaller
devices by avoiding sidebars, and keeps your branding visible.&lt;/p></description></item><item><title>Automating Dokku Setup with AWS Managed Services</title><link>https://www.caktusgroup.com/blog/2017/10/16/automating-dokku-setup-aws-managed-services/</link><pubDate>Mon, 16 Oct 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/10/16/automating-dokku-setup-aws-managed-services/</guid><description>&lt;p>&lt;a href="http://dokku.viewdocs.io/dokku/" target="_blank" rel="noopener noreferrer">Dokku&lt;/a> is a great little tool. It lets
you set up your own virtual machine (VM) to facilitate quick and easy
Heroku-like deployments through a &lt;code>git push&lt;/code> command. Builds are fast,
and updating environment variables is easy. The problem is that Dokku
includes all of your services on a single instance. When you run your
database on the Dokku instance, you risk losing it (and any data that's
not yet backed up) should your VM suddenly fail.&lt;/p></description></item><item><title>User-Centered Navigation Design</title><link>https://www.caktusgroup.com/blog/2017/10/09/user-centered-navigation-design/</link><pubDate>Mon, 09 Oct 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/10/09/user-centered-navigation-design/</guid><description>&lt;p>Designing navigation that will support the needs of website users is one of the more important aspects of site usability. At Caktus we practice iterative, user-centered navigation design, which includes user feedback.&lt;/p></description></item><item><title>Eliciting Helpful Stakeholder Feedback</title><link>https://www.caktusgroup.com/blog/2017/10/02/eliciting-helpful-stakeholder-feedback/</link><pubDate>Mon, 02 Oct 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/10/02/eliciting-helpful-stakeholder-feedback/</guid><description>&lt;p>Client feedback is integral to the success of a project and as a product owner, obtaining it is part of your responsibility. Good feedback is not synonymous with positive or negative feedback. A client should feel empowered and comfortable enough to speak up when something isn’t right. If they wait to share their honest thoughts, there is a high chance it will cost more time and money to fix down the road.&lt;/p></description></item><item><title>The Importance of Developer Communities</title><link>https://www.caktusgroup.com/blog/2017/09/25/importance-developer-communities/</link><pubDate>Mon, 25 Sep 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/09/25/importance-developer-communities/</guid><description>&lt;p>Go to any major city and you will be able to find a user group for just about every major, modern programming language. Developers meet in their off hours to discuss what’s new in their language of choice, challenges they’ve encountered, and different ways of doing things. If you’ve never been to one of these groups, it might be easy to brush them off as an unimportant outlet where people talk in way too much detail about a geeky interest. Instead, most of the attendees are professionals who are looking to build skills and find new ways to solve problems.&lt;/p></description></item><item><title>Commuter Benefits and Encouraging Sustainable Commuting</title><link>https://www.caktusgroup.com/blog/2017/09/18/commuter-benefits-and-encouraging-sustainable-commuting/</link><pubDate>Mon, 18 Sep 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/09/18/commuter-benefits-and-encouraging-sustainable-commuting/</guid><description>&lt;p>Growth for Durham has meant a lot of great things for Caktus, from an expanding pool of tech talent to an increased interest in civic-minded tech solutions to shape the evolving community. This growth has also brought logistical challenges. Most recently, this meant providing adequate commuter support to our employees in a city whose transportation infrastructure is still nascent.&lt;/p></description></item><item><title>Caktus 10th Anniversary Event</title><link>https://www.caktusgroup.com/blog/2017/09/13/caktus-10th-anniversary-event/</link><pubDate>Wed, 13 Sep 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/09/13/caktus-10th-anniversary-event/</guid><description>&lt;p>Caktus turned ten this year and we recently celebrated with a party at our office in Durham, NC. We wouldn’t be where we are today without our employees, clients, family, and friends, so this wasn’t just a celebration of Caktus. It was a celebration of the relationships the company is built on.&lt;/p></description></item><item><title>False Peaks and Temporary Code</title><link>https://www.caktusgroup.com/blog/2017/09/11/false-peaks-and-temporary-code/</link><pubDate>Mon, 11 Sep 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/09/11/false-peaks-and-temporary-code/</guid><description>&lt;p>In the day-to-day work of building new software and maintaining old
software, we can easily lose sight of the bigger picture. I think we can
find perspective when we step back and walk through the evolution of a
single piece of software.&lt;/p></description></item><item><title>Quick Tips: How to Change Your Name in JIRA</title><link>https://www.caktusgroup.com/blog/2017/09/05/quick-tips-how-change-your-name-jira/</link><pubDate>Tue, 05 Sep 2017 15:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/09/05/quick-tips-how-change-your-name-jira/</guid><description>&lt;p>In May 2017, Atlassian rolled out the new Atlassian ID feature, which gives Atlassian product users a central Atlassian account that holds their user details. When this change occurred, our integration with G Suite combined with the Atlassian ID feature to result in some users with strange display names in JIRA, which I (as the JIRA admin) can’t fix since users now control their own profile. However, they don’t control their profile through JIRA. So, how does one change the names that display in JIRA for their users? (Hint: you can’t do it through User Management.)&lt;/p></description></item><item><title>Tips for Product Ownership and Project Management in a Client Services Organization</title><link>https://www.caktusgroup.com/blog/2017/09/04/tips-product-ownership-project-management-client-services-org/</link><pubDate>Mon, 04 Sep 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/09/04/tips-product-ownership-project-management-client-services-org/</guid><description>&lt;p>Looking for some pointers to improve my own client management skills, I scoured the internet to find practical ideas on how to handle challenges better as the product owner (PO) in a client-services organization. I came up completely short.&lt;/p></description></item><item><title>Advanced Django File Handling</title><link>https://www.caktusgroup.com/blog/2017/08/28/advanced-django-file-handling/</link><pubDate>Mon, 28 Aug 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/08/28/advanced-django-file-handling/</guid><description>&lt;h2 id="advanced-django-file-handling">Advanced Django File Handling&lt;/h2>
&lt;p>Modern Django's file handling capabilities go well beyond what's
covered in the tutorial. By customizing the handlers that Django uses,
you can do things pretty much any way you want.&lt;/p></description></item><item><title>DjangoCon 2017 Recap</title><link>https://www.caktusgroup.com/blog/2017/08/23/djangocon-2017-recap/</link><pubDate>Wed, 23 Aug 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/08/23/djangocon-2017-recap/</guid><description>&lt;p>Mid-August brought travel to Spokane for several Caktus staff members attending DjangoCon 2017. As a Django shop, we were proud to sponsor and attend the event for the eighth year.&lt;/p></description></item><item><title>Letting Go of JIRA: One Team's Experiment With a Physical Sprint Board</title><link>https://www.caktusgroup.com/blog/2017/08/21/letting-go-jira-experiment-physical-sprint-board/</link><pubDate>Mon, 21 Aug 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/08/21/letting-go-jira-experiment-physical-sprint-board/</guid><description>&lt;p>At Caktus, each team works on multiple client-service projects at once, and it’s sometimes challenging to adapt different clients’ various tools and workflows into a single Scrum team’s process.&lt;/p></description></item><item><title>ShipIt Day Recap Q3 2017</title><link>https://www.caktusgroup.com/blog/2017/08/14/shipit-day-recap-q3-2017/</link><pubDate>Mon, 14 Aug 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/08/14/shipit-day-recap-q3-2017/</guid><description>&lt;p>Caktus recently held the Q3 2017 ShipIt Day. Each quarter, employees take a step back from business as usual and take advantage of time to work on personal projects or otherwise develop skills. This quarter, we enjoyed fresh crêpes while working on a variety of projects, from coloring books to Alexa skills.&lt;/p></description></item><item><title>Transitioning to Scrum: Mapping Job Titles to Scrum Roles</title><link>https://www.caktusgroup.com/blog/2017/08/07/transitioning-scrum-mapping-job-titles-scrum-roles/</link><pubDate>Mon, 07 Aug 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/08/07/transitioning-scrum-mapping-job-titles-scrum-roles/</guid><description>&lt;p>Early in your transition to Scrum, you will be faced with a hard truth: your team or organization has job titles and Scrum has roles, and there is probably little to no overlap between the two. How do you map Susan, lead technical architect, and Tom, project manager, to the three Scrum roles: product owner, Scrum master, and developer?&lt;/p></description></item><item><title>From User Story Mapping to High-Level Release Plan</title><link>https://www.caktusgroup.com/blog/2017/07/31/user-story-mapping-high-level-release-plan/</link><pubDate>Mon, 31 Jul 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/07/31/user-story-mapping-high-level-release-plan/</guid><description>&lt;p>At Caktus, we begin many projects with a &lt;a href="https://www.caktusgroup.com/services/">discovery workshop&lt;/a>. A discovery workshop is an opportunity for our product team to get together with client stakeholders in order to answer three questions:&lt;/p></description></item><item><title>Is Django the Right Fit for your Project?</title><link>https://www.caktusgroup.com/blog/2017/07/24/django-right-fit-your-project/</link><pubDate>Mon, 24 Jul 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/07/24/django-right-fit-your-project/</guid><description>&lt;p>You need a website. You may have done some searches, and come back overwhelmed and empty-handed, having found hosting providers offering services that may have sounded familiar (“WordPress”) and ones that may have sounded like a foreign language (“cPanel”). You may have considered hiring someone to build your website, and gotten conflicting answers about what you need and what it would cost. You may have also heard about Django, but you&amp;rsquo;re not sure how it it fits into the picture and whether or not it&amp;rsquo;s the right fit for your project. This is common, because there are many different types of websites out there. To help answer the question of whether Django is the right fit for your project, let’s take a look at the landscape.&lt;/p></description></item><item><title>Upgrading from Wagtail 1.0 to Wagtail 1.11</title><link>https://www.caktusgroup.com/blog/2017/07/19/upgrading-wagtail/</link><pubDate>Wed, 19 Jul 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/07/19/upgrading-wagtail/</guid><description>&lt;p>There are plenty of reasons to upgrade your Wagtail site. Before we look
at how to do it, let&amp;rsquo;s take a look at a few of those reasons.&lt;/p></description></item><item><title>Caktus at DjangoCon2017</title><link>https://www.caktusgroup.com/blog/2017/07/17/caktus-djangocon2017/</link><pubDate>Mon, 17 Jul 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/07/17/caktus-djangocon2017/</guid><description>&lt;p>In less than a month we’ll be heading out to Spokane, WA for DjangoCon 2017. We’re proud to be attending as &lt;a href="https://2017.djangocon.us/news/caktusgroup/" target="_blank" rel="noopener noreferrer">sponsors&lt;/a> for the eighth year, and look forward to greeting everyone at our booth. On August 16th, we’ll be raffling off a GoPro Session action camera, so be sure to stop by and enter. We’ll also have our comfy new t-shirts and some limited-edition Caktus 10th Anniversary water bottles to give away. They went fast at PyCon, so don’t wait to get yours.&lt;/p></description></item><item><title>Constructive Code Review (Bonus PyCon 2017 Must-See Talk)</title><link>https://www.caktusgroup.com/blog/2017/07/12/constructive-code-review-bonus-pycon-2017-must-see-talk/</link><pubDate>Wed, 12 Jul 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/07/12/constructive-code-review-bonus-pycon-2017-must-see-talk/</guid><description>&lt;p>&lt;em>There were so many good talks this year that we&amp;rsquo;re including a bonus entry in the 2017 edition of our annual &lt;a href="https://www.caktusgroup.com/blog/tags/pycon-must-see-series/">PyCon Must-See Series&lt;/a>, highlighting the talks our staff especially loved at PyCon.&lt;/em>&lt;/p></description></item><item><title>Readability Counts (PyCon 2017 Must-See Talk 6/6)</title><link>https://www.caktusgroup.com/blog/2017/07/10/readability-counts-pycon-2017-must-see-talk-66/</link><pubDate>Mon, 10 Jul 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/07/10/readability-counts-pycon-2017-must-see-talk-66/</guid><description>&lt;p>&lt;em>Part 6 in the 2017 edition of our annual &lt;a href="https://www.caktusgroup.com/blog/tags/pycon-must-see-series/">PyCon Must-See Series&lt;/a>, highlighting the talks our staff especially loved at PyCon. While there were many great talks, this is our team&amp;rsquo;s shortlist.&lt;/em>&lt;/p></description></item><item><title>Python Tool Review: Using PyCharm for Python Development - and More</title><link>https://www.caktusgroup.com/blog/2017/07/05/python-tool-review-using-pycharm-python-development-and-more/</link><pubDate>Wed, 05 Jul 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/07/05/python-tool-review-using-pycharm-python-development-and-more/</guid><description>&lt;p>Back in 2011, I wrote a blog post on &lt;a href="https://www.caktusgroup.com/blog/2011/08/31/getting-started-using-python-eclipse/">using Eclipse for Python
Development&lt;/a>.&lt;/p>
&lt;p>I've never updated that post, and it's probably terribly outdated by
now. But there's a good reason for that - I haven't used Eclipse in
years. Not long after that post, I came across
&lt;a href="https://www.jetbrains.com/pycharm/" target="_blank" rel="noopener noreferrer">PyCharm&lt;/a>, and I haven't really
looked back.&lt;/p></description></item><item><title>Requests, Under the Hood (PyCon 2017 Must-See Talk 5/6)</title><link>https://www.caktusgroup.com/blog/2017/07/03/requests-under-hood-pycon-2017-must-see-talk-56/</link><pubDate>Mon, 03 Jul 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/07/03/requests-under-hood-pycon-2017-must-see-talk-56/</guid><description>&lt;p>&lt;em>Part five of six in the 2017 edition of our annual &lt;a href="https://www.caktusgroup.com/blog/tags/pycon-must-see-series/">PyCon Must-See Series&lt;/a>, highlighting the talks our staff especially loved at PyCon. While there were many great talks, this is our team&amp;rsquo;s shortlist.&lt;/em>&lt;/p></description></item><item><title>Managing your AWS Container Infrastructure with Python</title><link>https://www.caktusgroup.com/blog/2017/06/28/managing-your-aws-container-infrastructure-with-python/</link><pubDate>Wed, 28 Jun 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/06/28/managing-your-aws-container-infrastructure-with-python/</guid><description>&lt;p>We deploy Python/Django apps to a wide variety of hosting providers at
Caktus. Our
&lt;a href="https://github.com/caktus/django-project-template" target="_blank" rel="noopener noreferrer">django-project-template&lt;/a>
includes a &lt;a href="https://docs.saltstack.com/en/latest/topics/" target="_blank" rel="noopener noreferrer">Salt&lt;/a>
configuration to set up an Ubuntu virtual machine on just about any
hosting provider, from scratch. We've also modified this a number of
times for local hosting requirements when our customer required the
application we built to be hosted on hardware they control. In the past,
we also &lt;a href="http://fabulaws.readthedocs.io/en/latest/architecture.html" target="_blank" rel="noopener noreferrer">built our own
tool&lt;/a> for
creating and managing EC2 instances automatically via the Amazon Web
Services (AWS) APIs. In March, my colleague &lt;a href="https://www.caktusgroup.com/about/dan-poirier/">Dan
Poirier&lt;/a> wrote an excellent post about &lt;a href="https://www.caktusgroup.com/blog/2017/03/23/hosting-django-sites-amazon-elastic-beanstalk/">deploying
Django applications to Elastic
Beanstalk&lt;/a>
demonstrating how we&amp;rsquo;ve used that service.&lt;/p></description></item><item><title>5 Ways to Deploy Your Python Web App in 2017 (PyCon 2017 Must-See Talk 4/6)</title><link>https://www.caktusgroup.com/blog/2017/06/26/5-ways-deploy-your-python-web-app-2017-pycon-2017-must-see-talks-46/</link><pubDate>Mon, 26 Jun 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/06/26/5-ways-deploy-your-python-web-app-2017-pycon-2017-must-see-talks-46/</guid><description>&lt;p>&lt;em>Part four of six in the 2017 edition of our annual &lt;a href="https://www.caktusgroup.com/blog/tags/pycon-must-see-series/">PyCon Must-See Series&lt;/a>, highlighting the talks our staff especially loved at PyCon. While there were many great talks, this is our team&amp;rsquo;s shortlist.&lt;/em>&lt;/p></description></item><item><title>The Caktus Success Model</title><link>https://www.caktusgroup.com/blog/2017/06/21/caktus-success-model/</link><pubDate>Wed, 21 Jun 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/06/21/caktus-success-model/</guid><description>&lt;p>Here at Caktus, we’ve been fortunate to work on some incredible projects with our clients. For example, we built the &lt;a href="https://www.caktusgroup.com/case-study/worlds-first-sms-voter-registration-system/">world’s first SMS voter registration app&lt;/a> for Libya, developed a &lt;a href="https://www.caktusgroup.com/case-study/moving-from-physical-tapes-to-amazon-glacier/">digital archiving system&lt;/a> for the world’s largest on-demand video provider, and created a &lt;a href="https://www.caktusgroup.com/case-study/auto-scaling-online-survey/">survey tool with auto-scaling architecture&lt;/a> to help the University of Chicago track school reform.&lt;/p></description></item><item><title>How Documentation Works, and How to Make It Work for Your Project (PyCon 2017 Must-See Talk 3/6)</title><link>https://www.caktusgroup.com/blog/2017/06/19/how-documentation-works-and-how-make-it-work-your-project-pycon-2017-must-see-talk-36/</link><pubDate>Mon, 19 Jun 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/06/19/how-documentation-works-and-how-make-it-work-your-project-pycon-2017-must-see-talk-36/</guid><description>&lt;p>&lt;em>Part three of six in the 2017 edition of our annual &lt;a href="https://www.caktusgroup.com/blog/tags/pycon-must-see-series/">PyCon Must-See Series&lt;/a>, highlighting the talks our staff especially loved at PyCon. While there were many great talks, this is our team&amp;rsquo;s shortlist.&lt;/em>&lt;/p></description></item><item><title>TriAgile 2017 Recap</title><link>https://www.caktusgroup.com/blog/2017/06/14/triagile-2017-recap/</link><pubDate>Wed, 14 Jun 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/06/14/triagile-2017-recap/</guid><description>&lt;p>I attended the &lt;a href="http://triagile.com/" target="_blank" rel="noopener noreferrer">TriAgile conference&lt;/a> in Raleigh, NC on March 30th, 2017 and wanted to share some takeaways from a couple of the talks I saw. Overall, the conference was a nice opportunity to network with some local Agilists and hear about their work and experiences. It was well organized, and I was pleasantly surprised by the size of the Agile community in the Triangle!&lt;/p></description></item><item><title>Python at Instagram (PyCon 2017 Must-See Talk 2/6)</title><link>https://www.caktusgroup.com/blog/2017/06/12/python-instagram/</link><pubDate>Mon, 12 Jun 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/06/12/python-instagram/</guid><description>&lt;p>&lt;em>Part two of six in the 2017 edition of our annual &lt;a href="https://www.caktusgroup.com/blog/tags/pycon-must-see-series/">PyCon Must-See Series&lt;/a>, highlighting the talks our staff especially loved at PyCon. While there were many great talks, this is our team&amp;rsquo;s shortlist.&lt;/em>&lt;/p></description></item><item><title>Decorators, Unwrapped: How Do They Work? (PyCon 2017 Must-See Talk 1/6)</title><link>https://www.caktusgroup.com/blog/2017/06/05/decorators-unwrapped-how-do-they-work-pycon-2017-must-see-talk-16/</link><pubDate>Mon, 05 Jun 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/06/05/decorators-unwrapped-how-do-they-work-pycon-2017-must-see-talk-16/</guid><description>&lt;p>&lt;em>Part one of six in the 2017 edition of our annual &lt;a href="https://www.caktusgroup.com/blog/tags/pycon-must-see-series/">PyCon Must-See Series&lt;/a>, highlighting the talks our staff especially loved at PyCon. While there were many great talks, this is our team&amp;rsquo;s shortlist.&lt;/em>&lt;/p></description></item><item><title>Subtests are the Best</title><link>https://www.caktusgroup.com/blog/2017/05/29/subtests-are-best/</link><pubDate>Mon, 29 May 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/05/29/subtests-are-best/</guid><description>&lt;h2 id="subtests-are-the-best">Subtests are the best&lt;/h2>
&lt;p>Testing our code is important. Because developers write bugs, it&amp;rsquo;s
valuable to catch and correct them before the code gets to production so
our apps work as they should. Specifically, we want tests that are DRY
(Don&amp;rsquo;t Repeat Yourself), thorough, and readable. Though there are many
ways to try to accomplish these goals, subtests make each of them
easier. If you&amp;rsquo;re not using subtests in your test classes, you probably
should be.&lt;/p></description></item><item><title>PyCon 2017 Recap</title><link>https://www.caktusgroup.com/blog/2017/05/24/pycon-2017-recap/</link><pubDate>Wed, 24 May 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/05/24/pycon-2017-recap/</guid><description>&lt;p>Caktus attended PyCon 2017 in Portland from May 18-21. It was the first PyCon for some, while others were PyCon veterans. All of us were looking forward to the opportunity to hear some great talks and make or renew connections in the Python community.&lt;/p></description></item><item><title>3 Reasons to Upgrade to the Latest Version of Django</title><link>https://www.caktusgroup.com/blog/2017/05/22/3-reasons-upgrade-latest-version-django/</link><pubDate>Mon, 22 May 2017 15:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/05/22/3-reasons-upgrade-latest-version-django/</guid><description>&lt;p>When considering a website upgrade, many business stakeholders probably think about the frontend, i.e., how the website looks or the features users interact with. Perhaps less often considered is the importance of upgrading the backend; that is, the databases, applications, and servers powering all the behind-the-scenes activity. Infrastructure support and upgrades are necessary but often performed as a separate project from any improvements to design or user experience, rather than as part of a holistic update project.&lt;/p></description></item><item><title>Uniqueness is an Advantage</title><link>https://www.caktusgroup.com/blog/2017/05/17/uniqueness-advantage/</link><pubDate>Wed, 17 May 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/05/17/uniqueness-advantage/</guid><description>&lt;p>Back in March, the organizers from the Women in Tech summit asked if I’d like to collaborate on a panel on diversity in technology at their &lt;a href="http://womenintechsummit.net/philly_session/uniqueness-is-an-advantage-for-you-your-company/" target="_blank" rel="noopener noreferrer">Philadelphia summit&lt;/a>. Back in October, I had created a panel on &lt;a href="https://medium.com/@TWelsonRossman/staying-a-women-in-tech-a-moderators-view-6bbe93b3929d" target="_blank" rel="noopener noreferrer">“Staying a Women in Tech”&lt;/a> and was excited for the opportunity to speak on such a significant topic in my hometown of Philadelphia. I was introduced to Brigitte Daniel, who had submitted this new panel, and we began putting the panel plans together. Brigitte would moderate the discussion and I would be a panelist along with three other dynamic women in tech: Elise Wei, Jumoke Dada and Gulrukh Ahanger.&lt;/p></description></item><item><title>Caktus Consulting Group is an Official AWS Consulting Partner</title><link>https://www.caktusgroup.com/blog/2017/05/15/caktus-consulting-group-official-aws-consulting-partner/</link><pubDate>Mon, 15 May 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/05/15/caktus-consulting-group-official-aws-consulting-partner/</guid><description>&lt;p>We’re proud to announce that Caktus has become a &lt;a href="https://aws.amazon.com/partners/find/partnerdetails/?id=001E000001N5gJTIAZ" target="_blank" rel="noopener noreferrer">certified Amazon Web Services (AWS) Consulting Partner&lt;/a> in recognition of the depth and breadth of our AWS expertise. Since AWS became an option for fast, flexible, and low cost infrastructure, we’ve used it to build scalable web or cloud apps for our clients. We’ve used AWS services for computing, networking, storage, databases, security, application services and security for 10 clients over the last few years (and that’s not including the projects we do for fun or as part of &lt;a href="https://www.caktusgroup.com/blog/tags/ship-it-day/">ShipIt Day projects&lt;/a>).&lt;/p></description></item><item><title>Celebrating 10 Years of Building Web Apps the Right Way</title><link>https://www.caktusgroup.com/blog/2017/05/10/celebrating-10-years-building-web-apps-right-way/</link><pubDate>Wed, 10 May 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/05/10/celebrating-10-years-building-web-apps-right-way/</guid><description>&lt;p>This year marks 10 years of building sharp web apps at Caktus Group. We’re honored by the trust our clients have put in us; it has enabled Caktus to grow from a team of 3 Python developers to an organization of 31 people and supported our efforts to give back to the local and open source communities.&lt;/p></description></item><item><title>Using Tokens During Sprint Planning to Allocate Time</title><link>https://www.caktusgroup.com/blog/2017/05/08/using-tokens-during-sprint-planning-allocate-time/</link><pubDate>Mon, 08 May 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/05/08/using-tokens-during-sprint-planning-allocate-time/</guid><description>&lt;p>In January of 2016, Caktus transitioned from a general Agile development environment to a more focused Scrum environment. Part of this transition entailed moving from a targeted budget allocation approach per project, to a self-organizing, goal-based team structure with no obvious provision for tight, consistent control over project budgets.&lt;/p></description></item><item><title>ShipIt Day Recap Q2 2017</title><link>https://www.caktusgroup.com/blog/2017/05/03/shipit-day-recap-q2-2017/</link><pubDate>Wed, 03 May 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/05/03/shipit-day-recap-q2-2017/</guid><description>&lt;p>Once per quarter, Caktus employees have the opportunity to take a day away from client work to focus on learning or refreshing skills, testing out ideas, or working on open source contributions. The Q2 2017 ShipIt Day work included building apps, updating open source projects, trying out new tools, and more. Keep reading for the details.&lt;/p></description></item><item><title>Building a Custom Block Template Tag</title><link>https://www.caktusgroup.com/blog/2017/05/01/building-custom-block-template-tag/</link><pubDate>Mon, 01 May 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/05/01/building-custom-block-template-tag/</guid><description>&lt;p>Building custom tags for Django templates has gotten much easier over
the years, with decorators provided that do most of the work when
building common, simple kinds of tags.&lt;/p></description></item><item><title>Caktus Activities at PyCon 2017</title><link>https://www.caktusgroup.com/blog/2017/04/26/caktus-activities-pycon-2017/</link><pubDate>Wed, 26 Apr 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/04/26/caktus-activities-pycon-2017/</guid><description>&lt;p>It’s almost time for PyCon and the team here at Caktus is ready to meet other attendees. Where and how can you find us?&lt;/p></description></item><item><title>Calling all Cat Herders: New Meetup for Digital Project Managers</title><link>https://www.caktusgroup.com/blog/2017/04/24/calling-all-cat-herders-new-meetup-digital-project-managers/</link><pubDate>Mon, 24 Apr 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/04/24/calling-all-cat-herders-new-meetup-digital-project-managers/</guid><description>&lt;p>When I first became a digital project manager (DPM), I struggled to find relevant resources. A ton of information was available on traditional project management, but not much specifically on &lt;em>digital&lt;/em> project management. Eventually, I connected with another DPM in my organization and we quickly became friends and confidants. She opened my eyes to the &lt;a href="http://bureauofdigital.com/summits/digital-pm-2017/" target="_blank" rel="noopener noreferrer">Digital PM Summit&lt;/a>, a new conference targeted at DPMs, which was ultimately the inspiration for my &lt;a href="https://www.meetup.com/Triangle-DPM/" target="_blank" rel="noopener noreferrer">new Meetup group&lt;/a>.&lt;/p></description></item><item><title>Product Discovery Part 2: From User Contexts to Solutions</title><link>https://www.caktusgroup.com/blog/2017/04/19/product-discovery-part-2-user-contexts-solutions/</link><pubDate>Wed, 19 Apr 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/04/19/product-discovery-part-2-user-contexts-solutions/</guid><description>&lt;p>In the first installment of this two-part series, I &lt;a href="https://www.caktusgroup.com/blog/2017/04/17/product-discovery-part-1-getting-started/">introduced product discovery&lt;/a> as the process of building a shared understanding about the product between stakeholders and the product team, which helps you make better decisions about what to build. I also suggested that we look at product discovery as a four-step process:&lt;/p></description></item><item><title>Product Discovery Part 1: Getting Started</title><link>https://www.caktusgroup.com/blog/2017/04/17/product-discovery-part-1-getting-started/</link><pubDate>Mon, 17 Apr 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/04/17/product-discovery-part-1-getting-started/</guid><description>&lt;p>When setting out to build a new website or web application, it is a good idea to build a shared understanding of the product between stakeholders and the product team. Through research and collaborative activities that aim to answer questions about the product, its goals, and its users’ needs, the stakeholders and product team discover the full breadth and depth of the application to be built, as well as contexts and implications that need to be considered for the product to be successful. We call this process &lt;a href="https://www.producttalk.org/2016/03/rise-modern-product-discovery/" target="_blank" rel="noopener noreferrer">product discovery&lt;/a>.&lt;/p></description></item><item><title>Learning to ask the right questions, or people</title><link>https://www.caktusgroup.com/blog/2017/04/10/learning-ask-right-questions-or-people/</link><pubDate>Mon, 10 Apr 2017 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/04/10/learning-ask-right-questions-or-people/</guid><description>&lt;p>I ask a lot of questions as a developer. Some of them have been more basic, like ‘How do I import a Python function from one file into another?’, and some more complex, like ‘How should we take an API request and return a dynamically-generated PDF as a response?’&lt;/p></description></item><item><title>Digging Into Django QuerySets</title><link>https://www.caktusgroup.com/blog/2017/04/05/digging-into-django-querysets/</link><pubDate>Wed, 05 Apr 2017 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/04/05/digging-into-django-querysets/</guid><description>&lt;h2 id="digging-into-django-querysets">Digging Into Django QuerySets&lt;/h2>
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Object-relational_mapping" target="_blank" rel="noopener noreferrer">Object-relational
mappers&lt;/a> (or
ORMs for short), such as the one that comes built-in with Django, make
it easy for even new developers to become productive without needing to
have a large body of knowledge about how to make use of relational
databases. They abstract away the details of database access, replacing
tables with declarative model classes and queries with chains of method
calls. Since this is all done in standard Python developers can build on
top of it further, adding instance methods to a model to wrap reusable
pieces of logic. However, the abstraction provided by ORMs is not
perfect. There are pitfalls lurking for unwary developers, such as the
&lt;strong>N + 1 problem&lt;/strong>. On the bright side, it is not difficult to explore
and gain a better understanding of Django's ORM. Taking the time and
effort to do so will help you become a better Django developer.&lt;/p></description></item><item><title>Come Visit Us at PyCon 2017</title><link>https://www.caktusgroup.com/blog/2017/03/29/come-visit-us-pycon-2017/</link><pubDate>Wed, 29 Mar 2017 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/03/29/come-visit-us-pycon-2017/</guid><description>&lt;p>PyCon 2017 is fast approaching, and we’re excited to support the event this year as sponsors once again. It’s a great opportunity to meet new friends, exchange ideas and interact with the community at large.&lt;/p></description></item><item><title>Hosting Django Sites on Amazon Elastic Beanstalk</title><link>https://www.caktusgroup.com/blog/2017/03/23/hosting-django-sites-amazon-elastic-beanstalk/</link><pubDate>Thu, 23 Mar 2017 15:45:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/03/23/hosting-django-sites-amazon-elastic-beanstalk/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Amazon Web Services (AWS)' &lt;a href="http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html" target="_blank" rel="noopener noreferrer">Elastic
Beanstalk&lt;/a>
is a service that bundles up a number of their lower-level services to
manage many details for you when deploying a site. We particularly like
it for deploys and autoscaling.&lt;/p></description></item><item><title>Here's a Production-Ready Dockerfile for Your Python/Django App</title><link>https://www.caktusgroup.com/blog/2017/03/14/production-ready-dockerfile-your-python-django-app/</link><pubDate>Tue, 14 Mar 2017 08:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/03/14/production-ready-dockerfile-your-python-django-app/</guid><description>&lt;p>&lt;strong>Update (October 29, 2019):&lt;/strong> I updated this post with more recent
Django and Postgres versions, to use Python and pip directly in the
container (instead of in a separate virtual environment, which was
unnecessary), and switched to a non-root user via Docker instead of
uWSGI.&lt;/p></description></item><item><title>Opening External Links: Same Tab or New?</title><link>https://www.caktusgroup.com/blog/2017/03/01/opening-external-links-same-tab-or-new/</link><pubDate>Wed, 01 Mar 2017 11:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/03/01/opening-external-links-same-tab-or-new/</guid><description>&lt;h3 id="the-debate">The Debate&lt;/h3>
&lt;p>My teammates and I recently engaged in a spirited debate over whether outbound links (links to external websites) should open in the same or in a new tab. “Same tab” was a default behavior for a set of external links on a project we were working on. A suggestion had been made, however, that the behavior be changed.&lt;/p></description></item><item><title>Python type annotations</title><link>https://www.caktusgroup.com/blog/2017/02/22/python-type-annotations/</link><pubDate>Wed, 22 Feb 2017 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/02/22/python-type-annotations/</guid><description>&lt;p>When it comes to programming, I have a belt &lt;em>and&lt;/em> suspenders philosophy.
Anything that can help me avoid errors early is worth looking into.&lt;/p></description></item><item><title>Caktus Attends Wagtail CMS Sprint in Reykjavik</title><link>https://www.caktusgroup.com/blog/2017/02/17/caktus-attends-wagtail-cms-sprint-reykjavik/</link><pubDate>Fri, 17 Feb 2017 23:15:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/02/17/caktus-attends-wagtail-cms-sprint-reykjavik/</guid><description>&lt;p>Caktus CEO Tobias McNulty and Sales Engineer David Ray recently had the opportunity to attend a &lt;a href="https://wagtail.io/blog/reykjavik-2017/" target="_blank" rel="noopener noreferrer">development sprint&lt;/a> for the &lt;a href="https://wagtail.io/" target="_blank" rel="noopener noreferrer">Wagtail&lt;/a> Content Management System (CMS) in Reykjavik, Iceland. The two-day software development sprint attracted 15 attendees hailing from a total of 5 countries across North America and Europe.&lt;/p></description></item><item><title>How to write a bug report</title><link>https://www.caktusgroup.com/blog/2017/02/15/how-to-write-a-bug-report/</link><pubDate>Wed, 15 Feb 2017 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/02/15/how-to-write-a-bug-report/</guid><description>&lt;p>Here are some brief thoughts on writing good bug reports in general.&lt;/p>
&lt;h2 id="main-elements">Main elements&lt;/h2>
&lt;p>There are four crucial elements when writing a bug report:&lt;/p></description></item><item><title>How to make a jQuery</title><link>https://www.caktusgroup.com/blog/2017/02/08/how-make-jquery/</link><pubDate>Wed, 08 Feb 2017 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/02/08/how-make-jquery/</guid><description>&lt;p>Learn to live without jQuery by learning how to clone it&lt;/p>
&lt;p>jQuery is one of the earliest libraries every web developer learns, and
often is the first experience with programming of any sort someone has.
It provides a very safe cushion between a developer and the rough edges
of web development. But, it can also obscure learning Javascript itself
and learning what web APIs are capable of without the abstraction over
them that jQuery adds.&lt;/p></description></item><item><title>Caktus at PyCaribbean</title><link>https://www.caktusgroup.com/blog/2017/02/01/Caktus-at-pycaribbean/</link><pubDate>Wed, 01 Feb 2017 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/02/01/Caktus-at-pycaribbean/</guid><description>&lt;p>For the first time, Caktus will be gold sponsors at PyCaribbean February 18-19th in Bayamon, Puerto Rico. We’re pleased to announce two speakers from our team.&lt;/p></description></item><item><title>Plan for mistakes as a developer</title><link>https://www.caktusgroup.com/blog/2017/01/30/plan-for-mistakes-as-a-developer/</link><pubDate>Mon, 30 Jan 2017 18:44:30 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/01/30/plan-for-mistakes-as-a-developer/</guid><description>&lt;p>&lt;em>I Am Not Perfect.&lt;/em>&lt;/p>
&lt;p>I've been programming professionally for 25 years, and the most
important thing I have learned is this:&lt;/p></description></item><item><title>Ship It Day Q1 2017</title><link>https://www.caktusgroup.com/blog/2017/01/18/ship-it-day-q1-2017/</link><pubDate>Wed, 18 Jan 2017 16:39:28 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/01/18/ship-it-day-q1-2017/</guid><description>&lt;p>Last Friday, Caktus set aside client projects for our regular quarterly
ShipIt Day. From gerrymandered districts to RPython and meetup planning,
the team started off 2017 with another great ShipIt.&lt;/p></description></item><item><title>New year, new Python: Python 3.6</title><link>https://www.caktusgroup.com/blog/2017/01/11/new-year-new-python-3-6/</link><pubDate>Wed, 11 Jan 2017 19:44:14 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/01/11/new-year-new-python-3-6/</guid><description>&lt;p>Python 3.6 was released in the tail end of 2016. Read on for a few
highlights from this release.&lt;/p>
&lt;h2 id="new-module-secrets">New module: secrets&lt;/h2>
&lt;p>Python 3.6 introduces a new module in the standard library called
&lt;code>secrets&lt;/code>. While the &lt;code>random&lt;/code> module has long existed to provide us with
pseudo-random numbers suitable for applications like modeling and
simulation, these were not &amp;quot;cryptographically random&amp;quot; and not suitable
for use in cryptography. &lt;code>secrets&lt;/code> fills this gap, providing a
cryptographically strong method to, for instance, create a new, random
password or a secure token.&lt;/p></description></item><item><title>Responsive web design</title><link>https://www.caktusgroup.com/blog/2017/01/04/responsive-web-design/</link><pubDate>Wed, 04 Jan 2017 15:26:22 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2017/01/04/responsive-web-design/</guid><description>&lt;h3 id="what-is-responsive-web-design">What is responsive web design?&lt;/h3>
&lt;p>&lt;a href="http://blog.teamtreehouse.com/beginners-guide-to-responsive-web-design" target="_blank" rel="noopener noreferrer">Responsive web design&lt;/a> is an approach to web design and development whereby websites and web applications &lt;em>respond&lt;/em> to a screen size of the device on which they’re being accessed. The response includes layout changes, rearrangement of content, and in some cases selective display or hiding of content elements. Using a responsive web design approach you can optimize web pages to achieve great user experience on a range of devices, from smartphones to desktop.&lt;/p></description></item><item><title>Using Priority in Scrum to address team anxiety</title><link>https://www.caktusgroup.com/blog/2016/12/21/using-priority-scrum-address-team-anxiety/</link><pubDate>Wed, 21 Dec 2016 20:13:42 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/12/21/using-priority-scrum-address-team-anxiety/</guid><description>&lt;p>In Scrum, the backlog of tasks is ordered by the Product Owner from highest to lowest business value - not merely prioritized - so that the team knows what the most valuable items are. This helps to prevent Product Owners/Project Managers from being able to say two or more Product Backlog Items (PBIs) are the “same priority.” And this makes sense for the most part. However there are times when this information is not enough.&lt;/p></description></item><item><title>Django is Boring, or Why Tech Startups (Should) Use Django</title><link>https://www.caktusgroup.com/blog/2016/12/14/django-boring-or-why-tech-startups-should-use-django/</link><pubDate>Wed, 14 Dec 2016 15:04:32 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/12/14/django-boring-or-why-tech-startups-should-use-django/</guid><description>&lt;p>I recently attended &lt;a href="https://www.djangounderthehood.com/" target="_blank" rel="noopener noreferrer">Django Under The Hood&lt;/a> in Amsterdam, an annual gathering of Django core team members and developers from around the world. A common theme discussed at the conference this year is that “Django is boring.” While it’s not the first time this has been discussed, it still struck me as odd. Upon further reflection, however, I see Django’s “boringness” as a huge asset to the community and potential adopters of the framework.&lt;/p></description></item><item><title>CSS Grid, not Frameworks, are the Future</title><link>https://www.caktusgroup.com/blog/2016/12/07/css-grid-not-frameworks-are-future/</link><pubDate>Wed, 07 Dec 2016 20:17:08 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/12/07/css-grid-not-frameworks-are-future/</guid><description>&lt;p>At the &lt;a href="https://aneventapart.com/" target="_blank" rel="noopener noreferrer">2016 An Event Apart Conference&lt;/a> in San Francisco, I peeked under the hood of a new technology that would finally address all the layout woes that we as designers and developers face: CSS Grid Layout Module. At first I was a little skeptical - except for Microsoft Edge, browser support for Grid is currently non-existent - however its official release is actually not that far off. Currently it is enabled behind a flag in Chrome and Firefox, or you can download the latest nightly or developer versions of Firefox or Safari. Here’s my brief synopsis of why I think CSS Grid is going to change the landscape of the web forever, and why I think it’s so important from a design and developer perspective.&lt;/p></description></item><item><title>Django Under the Hood 2016 Recap</title><link>https://www.caktusgroup.com/blog/2016/11/29/django-under-hood-2016-recap/</link><pubDate>Tue, 29 Nov 2016 17:31:25 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/11/29/django-under-hood-2016-recap/</guid><description>&lt;p>Caktus was a proud sponsor of Django Under the Hood (DUTH) 2016 in Amsterdam this year. Organized by Django core developers and community members, DUTH is a highly technical conference that delves deep into Django.&lt;/p></description></item><item><title>On building relationships - Digital Project Management Summit Recap</title><link>https://www.caktusgroup.com/blog/2016/11/18/building-relationships-digital-project-management-summit-recap/</link><pubDate>Fri, 18 Nov 2016 15:27:30 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/11/18/building-relationships-digital-project-management-summit-recap/</guid><description>&lt;p>&lt;em>Photo of Elizabeth speaking to DPM 2016 Summit by David Jordan.&lt;/em>&lt;/p>
&lt;p>When I first became a digital project manager, I struggled to find professional resources. There was a plethora of information available for traditional project management, but not much specifically for digital project management. Luckily, a colleague recommended the &lt;a href="http://bureauofdigital.com/summits/digital-pm/" target="_blank" rel="noopener noreferrer">Digital PM Summit&lt;/a>, sponsored by the Bureau of Digital.&lt;/p></description></item><item><title>RapidCon 2016: RapidPro Developer's Recap</title><link>https://www.caktusgroup.com/blog/2016/11/16/rapidcon-2016-rapidpro-developers-recap/</link><pubDate>Wed, 16 Nov 2016 15:41:07 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/11/16/rapidcon-2016-rapidpro-developers-recap/</guid><description>&lt;p>Developer &lt;a href="https://www.caktusgroup.com/about/erin-mullaney/">Erin Mullaney&lt;/a> was just in Amsterdam for RapidCon, a UNICEF-hosted event for developers using RapidPro, an SMS tool built on Django. The teams that have worked on RapidPro and its predecessor RapidSMS have gotten to know each other virtually over the years. This marks the second time they’ve all come from across the globe to share learnings on RapidPro and to discuss its future.&lt;/p></description></item><item><title>Common web site security vulnerabilities</title><link>https://www.caktusgroup.com/blog/2016/11/10/common-web-site-vulnerabilities-Django-security/</link><pubDate>Thu, 10 Nov 2016 17:47:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/11/10/common-web-site-vulnerabilities-Django-security/</guid><description>&lt;p>I recently decided I wanted to understand better what Cross-Site
Scripting and Cross-Site Request Forgery were, and how they compared to
that classic vulnerability, SQL Injection.&lt;/p></description></item><item><title>Managing multiple Python projects: Virtual environments</title><link>https://www.caktusgroup.com/blog/2016/11/03/managing-multiple-python-projects-virtual-environments/</link><pubDate>Thu, 03 Nov 2016 12:06:49 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/11/03/managing-multiple-python-projects-virtual-environments/</guid><description>&lt;p>Even Python learning materials that get into very advanced language
features rarely mention some practical things that would be very helpful
to know as soon as you start working on more serious projects, like:&lt;/p></description></item><item><title>Presidential debate questions influenced by open source platform</title><link>https://www.caktusgroup.com/blog/2016/10/25/presidential-debate-questions-influenced-open-source-platform/</link><pubDate>Tue, 25 Oct 2016 18:40:02 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/10/25/presidential-debate-questions-influenced-open-source-platform/</guid><description>&lt;p>During the past two presidential debates, moderators from ABC and Fox asked candidates Hillary Clinton and Donald Trump voter-submitted questions from PresidentialOpenQuestions.com. The site, created by the bipartisan Open Debate Coalition (ODC) with the support of Caktus Group, is built on top of the open source Django web framework.&lt;/p></description></item><item><title>ShipIt Day Recap Q3 2016</title><link>https://www.caktusgroup.com/blog/2016/10/24/shipit-day-recap-october-2016/</link><pubDate>Mon, 24 Oct 2016 15:50:02 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/10/24/shipit-day-recap-october-2016/</guid><description>&lt;p>This ShipIt day marks four years of ShipIt days at Caktus! We had a wide range of projects that people came together to build. Most importantly, we all had fun and learned through actively working on the projects. People explored new technologies and tools, and had a chance to dig a bit deeper into items that piqued their interest in their regular work.&lt;/p></description></item><item><title>Don't keep important data in your Celery queue</title><link>https://www.caktusgroup.com/blog/2016/10/18/dont-keep-important-data-your-celery-queue/</link><pubDate>Tue, 18 Oct 2016 19:53:34 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/10/18/dont-keep-important-data-your-celery-queue/</guid><description>&lt;p>The Celery library (&lt;a href="https://www.caktusgroup.com/blog/tags/celery/">previous posts&lt;/a>) makes it as
easy to schedule a task to run later as calling a function. Just change:&lt;/p></description></item><item><title>PyData Carolinas 2016 Recap</title><link>https://www.caktusgroup.com/blog/2016/10/17/pydata-carolinas-2016-recap/</link><pubDate>Mon, 17 Oct 2016 19:29:14 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/10/17/pydata-carolinas-2016-recap/</guid><description>&lt;p>We had a great time at the inaugural PyData Carolinas hosted nearby at IBM in the Research Triangle Park. People from Caktus presented a number of talks and the videos are now up online:&lt;/p></description></item><item><title>How to tell if you’re building great user experience</title><link>https://www.caktusgroup.com/blog/2016/10/06/how-tell-if-youre-building-great-user-experience/</link><pubDate>Thu, 06 Oct 2016 18:23:27 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/10/06/how-tell-if-youre-building-great-user-experience/</guid><description>&lt;p>In web and software development, when we talk about &lt;a href="https://www.smashingmagazine.com/2010/10/what-is-user-experience-design-overview-tools-and-resources/" target="_blank" rel="noopener noreferrer">user experience&lt;/a>, we usually mean the experience you have when you are using a website or an application. Does it feel like you know where to click to get to your next destination? Do you know what to do in order to accomplish a task? Has anything you’ve clicked taken you to an unexpected page? Are you getting frustrated with or are you enjoying the website or app? Answers to these and similar questions are what describes the experience you’re having as a user. That’s user experience.&lt;/p></description></item><item><title>Principles of good user experience (UX)</title><link>https://www.caktusgroup.com/blog/2016/09/29/principles-good-user-experience-ux/</link><pubDate>Thu, 29 Sep 2016 17:56:15 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/09/29/principles-good-user-experience-ux/</guid><description>&lt;p>Google “UX principles” and you’ll end up with a search results page that offers:&lt;/p>
&lt;ul>
&lt;li>5 principles&amp;hellip;&lt;/li>
&lt;li>31 fundamentals….&lt;/li>
&lt;li>10 principles…&lt;/li>
&lt;li>Guidelines…&lt;/li>
&lt;li>Basics….&lt;/li>
&lt;/ul>
&lt;p>So let’s get this out of the way: no single checklist will guarantee that you create a great user experience. Every project is different, and the development of every product should be tailored to the user segment the product is built for. But there are some principles that can guide design decisions no matter what and you will not go wrong if you follow them. Let’s talk about a few:&lt;/p></description></item><item><title>What We’re Clicking - September 2016 Link Roundup</title><link>https://www.caktusgroup.com/blog/2016/09/21/what-were-clicking-september-2016-link-roundup/</link><pubDate>Wed, 21 Sep 2016 18:55:14 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/09/21/what-were-clicking-september-2016-link-roundup/</guid><description>&lt;p>Every 30 days, we look over the most popular and talked about links that we’ve either shared on social media or amongst ourselves. This month, a lot of the favorites were from our peers on our blog post. Here’s our top five for September.&lt;/p></description></item><item><title>Caktus Group @ PyData Carolinas 2016</title><link>https://www.caktusgroup.com/blog/2016/09/14/Caktus-group-pydata-carolinas-2016/</link><pubDate>Wed, 14 Sep 2016 17:23:47 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/09/14/Caktus-group-pydata-carolinas-2016/</guid><description>&lt;p>Tomorrow marks the official beginning of PyData Carolinas 2016 (though technically, the tutorials started today). This is the first time PyData has hosted a conference in our area. We’re especially proud of the way local leaders and members of meetups like TriPython, TechGirlz, Girl Develop It RDU, and PyLadies have worked in tandem to put this event together for the Python community.&lt;/p></description></item><item><title>What Web Analytics Can’t Tell You About User Experience</title><link>https://www.caktusgroup.com/blog/2016/09/13/what-web-analytics-cant-tell-you-about-user-experience/</link><pubDate>Tue, 13 Sep 2016 14:38:47 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/09/13/what-web-analytics-cant-tell-you-about-user-experience/</guid><description>&lt;p>Is analytics data collected for a website, an application, or a game sufficient to understand what problems users encounter while interacting with it and what prevents their full engagement?&lt;/p></description></item><item><title>Digital development principles: a tech firm’s take on understanding ecosystems</title><link>https://www.caktusgroup.com/blog/2016/09/07/digital-development-principles-tech-firms-take-understanding-ecosystems/</link><pubDate>Wed, 07 Sep 2016 15:54:02 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/09/07/digital-development-principles-tech-firms-take-understanding-ecosystems/</guid><description>&lt;p>When we meet potential clients, we want to learn more about their software development needs. Beyond that, we’re deeply curious about the work they do, those involved, and the kind of impact they desire to make in the world.&lt;/p></description></item><item><title>Insights into software development from a quality assurance (QA) pro</title><link>https://www.caktusgroup.com/blog/2016/08/29/insights-software-development-quality-assurance-QA-pro/</link><pubDate>Mon, 29 Aug 2016 15:51:24 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/08/29/insights-software-development-quality-assurance-QA-pro/</guid><description>&lt;p>Because quality assurance (QA) is all about creating a seamless application experience across any number of devices, it’s most successful when no one notices it. The craft and expertise behind the work of QA professionals, as a result, can sometimes feel hidden. Charlotte Fouque, Caktus’ QA Analyst, sheds light onto what exactly quality assurance is and the intricacies of doing it well.&lt;/p></description></item><item><title>What’s “User Experience” and Why It Matters</title><link>https://www.caktusgroup.com/blog/2016/08/22/whats-user-experience-and-why-it-matters/</link><pubDate>Mon, 22 Aug 2016 19:13:31 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/08/22/whats-user-experience-and-why-it-matters/</guid><description>&lt;p>Caktus recently welcomed UX designer &lt;a href="https://www.caktusgroup.com/about/basia-coulter/">Basia Coulter&lt;/a> to our team. We sat down with her to discuss her perspective on user experience design. Basia, like many in tech, came to her role through a nonlinear path. She first earned a PhD in neurobiology while in Poland, and then came to the United States for a postdoctoral fellowship. The experience led to soul searching, including seven years in a Tibetan monastery in upstate New York where, along with her spiritual interests, she pursued a passion for design, particularly web design. She subsequently devoted herself to learning more about digital communication. Basia has been in the North Carolina area for 2.5 years and currently is part of the leadership team of the local chapter of &lt;a href="https://www.girldevelopit.com/chapters/raleigh-durham" target="_blank" rel="noopener noreferrer">Girl Develop It&lt;/a> and a member of local organizations such as &lt;a href="http://triuxpa.org/" target="_blank" rel="noopener noreferrer">TriangleUXPA&lt;/a>, &lt;a href="http://codefordurham.com/" target="_blank" rel="noopener noreferrer">Code for Durham&lt;/a>, and &lt;a href="https://raleigh.aiga.org/" target="_blank" rel="noopener noreferrer">AIGA Raleigh&lt;/a>.&lt;/p></description></item><item><title>Postgres Present and Future (PyCon 2016 Must-See Talk: 6/6)</title><link>https://www.caktusgroup.com/blog/2016/08/18/postgres-present-and-future-pycon-2016-must-see-talk-66/</link><pubDate>Thu, 18 Aug 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/08/18/postgres-present-and-future-pycon-2016-must-see-talk-66/</guid><description>&lt;p>&lt;em>Part six of six in our annual &lt;a href="https://www.caktusgroup.com/blog/tags/PyCon%20Must%20See%20Series/">PyCon Must-See Series&lt;/a>, a weekly highlight of talks our staff especially loved at PyCon. With so many fantastic talks, it’s hard to know where to start, so here’s our short list.&lt;/em>&lt;/p></description></item><item><title>What We’re Clicking - August Link Roundup</title><link>https://www.caktusgroup.com/blog/2016/08/16/what-were-clicking-august-2016-link-roundup/</link><pubDate>Tue, 16 Aug 2016 15:51:28 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/08/16/what-were-clicking-august-2016-link-roundup/</guid><description>&lt;p>Every month we collect the links we’ve shared on social media or amongst ourselves that have captured our interest. Here are our favorites from the past 30 days.&lt;/p></description></item><item><title>Python Nordeste 2016 Recap</title><link>https://www.caktusgroup.com/blog/2016/08/15/python-nordeste-2016-recap/</link><pubDate>Mon, 15 Aug 2016 15:52:15 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/08/15/python-nordeste-2016-recap/</guid><description>&lt;p>&lt;em>Image via &lt;a href="https://twitter.com/PythonNordeste" target="_blank" rel="noopener noreferrer">@pythonnordeste&lt;/a> &lt;a href="https://photos.google.com/share/AF1QipObas3hoK7856ocD15R0SlRKrjLedhlXgHS_PO_ekLR4-OMGbkxvMHbcqlnL12g-A?key=QXRuYmNPWlZNME81R1JlMjFkV05seUhCQmRkdmpR" target="_blank" rel="noopener noreferrer">#pyselfie&lt;/a>&lt;/em>&lt;/p>
&lt;p>I don’t know anyone there. I don’t know the language. What about this Zika virus? What about this political unrest? These were some of the doubts and fears racing through my mind at the start of my trip. I had barely settled back home from my trip from PyCon US when it was time to start making the trip to Python Nordeste. It’s a long set of flights to Teresina in the northeast region of Brazil, and I was alone.&lt;/p></description></item><item><title>Bake the Cookies (PyCon 2016 Must-See Talk: 5/6)</title><link>https://www.caktusgroup.com/blog/2016/08/10/bake-cookies-pycon-2016-must-see-talk-56/</link><pubDate>Wed, 10 Aug 2016 17:29:12 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/08/10/bake-cookies-pycon-2016-must-see-talk-56/</guid><description>&lt;p>&lt;em>Part five of six in our annual &lt;a href="https://www.caktusgroup.com/blog/tags/PyCon%20Must%20See%20Series/">PyCon Must-See Series&lt;/a>, a weekly highlight of talks our staff especially loved at PyCon. With so many fantastic talks, it’s hard to know where to start, so here’s our short list.&lt;/em>&lt;/p></description></item><item><title>Trainspotting: Real-Time Detection (PyCon 2016 Must-See Talk: 4/6)</title><link>https://www.caktusgroup.com/blog/2016/08/04/trainspotting-real-time-detection-pycon-2016-must-see-talk-46/</link><pubDate>Thu, 04 Aug 2016 13:41:43 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/08/04/trainspotting-real-time-detection-pycon-2016-must-see-talk-46/</guid><description>&lt;p>&lt;em>Part four of six in our annual &lt;a href="https://www.caktusgroup.com/blog/tags/PyCon%20Must%20See%20Series/">PyCon Must-See Series&lt;/a>, a weekly highlight of talks our staff especially loved at PyCon. With so many fantastic talks, it’s hard to know where to start, so here’s our short list.&lt;/em>&lt;/p></description></item><item><title>How I Built a Power Debugger (PyCon 2016 Must-See Talk: 3/6)</title><link>https://www.caktusgroup.com/blog/2016/07/27/how-i-built-power-debugger-pycon-2016-must-see-talk-36/</link><pubDate>Wed, 27 Jul 2016 14:15:27 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/07/27/how-i-built-power-debugger-pycon-2016-must-see-talk-36/</guid><description>&lt;p>&lt;em>Part three of six in our annual &lt;a href="https://www.caktusgroup.com/blog/tags/PyCon%20Must%20See%20Series/">PyCon Must-See Series&lt;/a>, a weekly highlight of talks our staff especially loved at PyCon. With so many fantastic talks, it’s hard to know where to start, so here’s our short list.&lt;/em>&lt;/p></description></item><item><title>ShipIt Day Recap - July 2016</title><link>https://www.caktusgroup.com/blog/2016/07/25/shipit-day-recap-july-2016/</link><pubDate>Mon, 25 Jul 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/07/25/shipit-day-recap-july-2016/</guid><description>&lt;p>We finished up last week with another successful ShipIt Day. ShipIt Days are quarterly events where we put down client work for a little bit and focus on learning, stretching ourselves, and sharing. Everyone chooses to work together or individually on an itch or a project that has been on the back of their mind for the last few months. This time, we stretched ourselves by trying out new frameworks, languages, and pluggable apps. Here are some of the projects we worked on during ShipIt Day:&lt;/p></description></item><item><title>What We’re Clicking - July Link Roundup</title><link>https://www.caktusgroup.com/blog/2016/07/18/what-were-clicking-july-link-roundup/</link><pubDate>Mon, 18 Jul 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/07/18/what-were-clicking-july-link-roundup/</guid><description>&lt;p>Here’s external links our team&amp;rsquo;s been chatting about and sharing on social media &lt;a href="https://www.caktusgroup.com/blog/2016/06/08/what-were-clicking-may-link-roundup/">since the last roundup&lt;/a>.&lt;/p>
&lt;h3 id="web-service-efficiency-at-instagram-with-python-instagram">&lt;a href="https://engineering.instagram.com/web-service-efficiency-at-instagram-with-python-4976d078e366#.80k62ceyi" target="_blank" rel="noopener noreferrer">Web Service Efficiency at Instagram with Python&lt;/a> (Instagram)&lt;/h3>
&lt;p>&amp;ldquo;Instagram currently features the world’s largest deployment of the Django web framework, which is written entirely in Python. We initially chose to use Python because of its reputation for simplicity and practicality, which aligns well with our philosophy of &amp;lsquo;do the simple thing first.&amp;rsquo;&amp;rdquo;&lt;/p></description></item><item><title>Caktus at DjangoCon 2016 - Talks that Have Us Talking</title><link>https://www.caktusgroup.com/blog/2016/07/14/caktus-djangocon-2016-talks-have-us-talking/</link><pubDate>Thu, 14 Jul 2016 16:51:21 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/07/14/caktus-djangocon-2016-talks-have-us-talking/</guid><description>&lt;p>Caktus is headed to Philadelphia for our seventh DjangoCon. We’re Gold Sponsors this year, so definitely come by our booth to chat with our team and grab t-shirts, stickers, and a 40% off coupon for &lt;em>Lightweight Django&lt;/em>, co-written by our technical director, Mark Lavin. Also be sure to enter our raffle for an Amazon Echo.&lt;/p></description></item><item><title>Better Testing With Less Code (PyCon 2016 Must-See Talk: 2/6)</title><link>https://www.caktusgroup.com/blog/2016/07/13/better-testing-less-code-pycon-2016-must-see-talk-26/</link><pubDate>Wed, 13 Jul 2016 13:37:37 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/07/13/better-testing-less-code-pycon-2016-must-see-talk-26/</guid><description>&lt;p>&lt;em>Part two of six in our annual &lt;a href="https://www.caktusgroup.com/blog/tags/PyCon%20Must%20See%20Series/">PyCon Must-See Series&lt;/a>, a weekly highlight of talks our staff especially loved at PyCon. With so many fantastic talks, it’s hard to know where to start, so here’s our short list.&lt;/em>&lt;/p></description></item><item><title>From Developer to Manager by Sean O'Connor (PyCon 2016 Must-See Talk: 1/6)</title><link>https://www.caktusgroup.com/blog/2016/07/08/developer-manager-sean-oconnor-pycon-2016-must-see-talk-16/</link><pubDate>Fri, 08 Jul 2016 17:56:11 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/07/08/developer-manager-sean-oconnor-pycon-2016-must-see-talk-16/</guid><description>&lt;p>&lt;em>Part one of six in our annual &lt;a href="https://www.caktusgroup.com/blog/tags/PyCon%20Must%20See%20Series/">PyCon Must-See Series&lt;/a>, a weekly highlight of talks our staff especially loved at PyCon. With so many fantastic talks, it’s hard to know where to start, so here’s our short list.&lt;/em>&lt;/p></description></item><item><title>Caktus Endorses Principles for Digital Development</title><link>https://www.caktusgroup.com/blog/2016/07/06/caktus-endorses-principles-digital-development/</link><pubDate>Wed, 06 Jul 2016 17:58:41 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/07/06/caktus-endorses-principles-digital-development/</guid><description>&lt;p>Caktus is proud to announce that we endorse the Principles for Digital Development or “Digital Principles”, a set of best practices that support technology creation for international development. We feel strongly that they help technology companies like us improve our contributions to the Information and Communications Tool for Development (ICT4D) community. In offering technical design and software development services, we often work alongside our clients to help shape the tools they need. Because of our influence in this process, having established principles are helpful to use as a guide in our conversations and design of the tools we build.&lt;/p></description></item><item><title>Query Expressions are Amazing</title><link>https://www.caktusgroup.com/blog/2016/06/20/query-expressions-are-amazing/</link><pubDate>Mon, 20 Jun 2016 11:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/06/20/query-expressions-are-amazing/</guid><description>&lt;p>The Django 1.8 release added support for complex query expressions. The
&lt;a href="https://docs.djangoproject.com/en/1.8/ref/models/expressions/" target="_blank" rel="noopener noreferrer">documentation&lt;/a>
has some nice examples but they don't do justice to how crazy awesome
these are. In this post, we will go through some additional examples of
how to leverage these expressions.&lt;/p></description></item><item><title>The Journal of Medical Internet Research Features Epic Allies Phase 1 Study Results</title><link>https://www.caktusgroup.com/blog/2016/06/16/journal-medical-internet-research-features-epic-allies-phase-1-study-results/</link><pubDate>Thu, 16 Jun 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/06/16/journal-medical-internet-research-features-epic-allies-phase-1-study-results/</guid><description>&lt;p>&lt;em>The Journal of Medical Internet Research&lt;/em> recently published “&lt;a href="http://games.jmir.org/2016/1/e6/" target="_blank" rel="noopener noreferrer">Epic Allies: Development of a Gaming App to Improve Antiretroviral Therapy Adherence Among Young HIV-Positive Men Who Have Sex With Men&lt;/a>”. Epic Allies, initially funded by a federal Small Business Innovation Research (SBIR) grant, represents a partnership between Caktus, UNC’s Institute of Global Health and Infection Diseases, and Duke Global Health Institute.&lt;/p></description></item><item><title>PyCon 2016 Recap</title><link>https://www.caktusgroup.com/blog/2016/06/14/pycon-2016-recap/</link><pubDate>Tue, 14 Jun 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/06/14/pycon-2016-recap/</guid><description>&lt;p>PyCon, beyond being the best community event for Python developers, is also an event that we happily began thinking about eleven months ago. Almost as soon as PyCon 2015 ended, we had the good fortune of planning the look and feel of PyCon 2016 with organizer extraordinaires Ewa Jodlowska, Diana Clark, and new this year, Brandon Rhodes. Our team has loved working with the organizers on the PyCon websites for the past three years now. They’re great people who always prioritize the needs of PyCon attendees, whether that’s babysitting services or a smooth PyCon web experience.&lt;/p></description></item><item><title>My First Conference Talk: Reflecting on Support and Inclusivity at DjangoCon Europe 2016</title><link>https://www.caktusgroup.com/blog/2016/06/13/my-first-conference-talk-reflecting-support-and-inclusivity-djangocon-europe-2016/</link><pubDate>Mon, 13 Jun 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/06/13/my-first-conference-talk-reflecting-support-and-inclusivity-djangocon-europe-2016/</guid><description>&lt;p>The environment at Caktus is, above all, one of encouragement. I experienced that encouragement as an intern and continue to experience it as a full-time developer. In addition to providing workplace mentorship, Caktus encourages all of its employees to submit talks to conferences. My manager Mark Lavin and mentor Karen Tracy encouraged me to get over my concerns about being new to the field and to start submitting talks.&lt;/p></description></item><item><title>Code for Durham: National Day of Civic Hacking Recap</title><link>https://www.caktusgroup.com/blog/2016/06/10/code-durham-national-day-civic-hacking-recap/</link><pubDate>Fri, 10 Jun 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/06/10/code-durham-national-day-civic-hacking-recap/</guid><description>&lt;p>&lt;a href="http://codefordurham.com/" target="_blank" rel="noopener noreferrer">Code for Durham&lt;/a> recently participated in Code for America’s National Day of Civic Hacking. Hosted in the Caktus Group Tech Space, the event was attended by more than 50 local participants.&lt;/p></description></item><item><title>What We’re Clicking - May Link Roundup</title><link>https://www.caktusgroup.com/blog/2016/06/08/what-were-clicking-may-link-roundup/</link><pubDate>Wed, 08 Jun 2016 14:16:14 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/06/08/what-were-clicking-may-link-roundup/</guid><description>&lt;p>Below you can find this month’s roundup of articles and posts shared by Cakti that drew the most attention on Twitter. The list covers coding for matrix factorization algorithms in Python, designing apps that optimize for sequential dual screen usage, preventing technical debt, and understanding the complexities and limitations involved in building apps for low-income American families.&lt;/p></description></item><item><title>Code for Durham and a National Day of Civic Hacking</title><link>https://www.caktusgroup.com/blog/2016/06/02/code-durham-and-national-day-civic-hacking/</link><pubDate>Thu, 02 Jun 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/06/02/code-durham-and-national-day-civic-hacking/</guid><description>&lt;p>This Saturday, June 4th, Caktus Group will be hosting &lt;a href="http://codefordurham.com/" target="_blank" rel="noopener noreferrer">Code for Durham&lt;/a> as they join Code for America’s &lt;a href="https://www.codeforamerica.org/events/national-day-2016" target="_blank" rel="noopener noreferrer">National Day of Civic Hacking&lt;/a>. The day is a chance for everyone from developers, to government employees, to residents who care about their city to come together and use their talents to help the community. Attendees will collaborate on civic tech projects to be used by citizens and government employees. These projects seek to provide data on or improve government processes, addressing issues like health care, affordable housing, criminal record access, police data, and more.&lt;/p></description></item><item><title>Where to Find Cakti at PyCon 2016</title><link>https://www.caktusgroup.com/blog/2016/05/26/where-find-cakti-pycon-2016/</link><pubDate>Thu, 26 May 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/05/26/where-find-cakti-pycon-2016/</guid><description>&lt;p>As Django developers, we always look forward to PyCon. This year, working with the &lt;a href="https://www.python.org/psf/" target="_blank" rel="noopener noreferrer">Python Software Foundation&lt;/a> on the &lt;a href="https://www.caktusgroup.com/blog/2015/09/23/pycon-2016-behind-design/">design for PyCon 2016’s site&lt;/a> kindled our enthusiasm early. Our team is so excited for all the fun to begin. With an array of fantastic events, speakers, and workshops, we thought we would highlight all the events we’ll be participating in. Come find us!&lt;/p></description></item><item><title>Mark Lavin to Give Keynote at Python Nordeste</title><link>https://www.caktusgroup.com/blog/2016/05/16/mark-lavin-give-keynote-python-nordeste/</link><pubDate>Mon, 16 May 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/05/16/mark-lavin-give-keynote-python-nordeste/</guid><description>&lt;p>&lt;a href="https://www.caktusgroup.com/about/mark-lavin/">Mark Lavin&lt;/a> will be giving the keynote address at &lt;a href="http://2016.pythonnordeste.org/#" target="_blank" rel="noopener noreferrer">Python Nordeste&lt;/a> this year. Python Nordeste is the largest gathering of the Northeast Python community, which takes place annually in cities of northeastern Brazil. This year’s conference will be held in Teresina, the capital of the Brazilian state of Piauí.&lt;/p></description></item><item><title>Caktus CTO Colin Copeland Invited to the White House Open Police Data Initiative</title><link>https://www.caktusgroup.com/blog/2016/05/12/Caktus-CTO-Colin-Copeland-White-House-Open-Police-Data-Initiative/</link><pubDate>Thu, 12 May 2016 18:46:57 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/05/12/Caktus-CTO-Colin-Copeland-White-House-Open-Police-Data-Initiative/</guid><description>&lt;p>We at Caktus were incredibly proud when the White House Police Data Initiative invited CTO Colin Copeland to celebrate their first year accomplishments. While at the White House, Colin also joined private breakout sessions to share ideas with law enforcement officials, city staff, and other civic technologists from across the country. Colin is the co-founder of Code for Durham and served as lead developer for &lt;a href="OpenDataPolicingNC.com">OpenDataPolicingNC.com&lt;/a>. &lt;a href="OpenDataPolicingNC.com">OpenDataPolicingNC.com&lt;/a>, a site built for the Southern Coalition for Social Justice, displays North Carolina police stop data.&lt;/p></description></item><item><title>What We’re Clicking - April Link Roundup</title><link>https://www.caktusgroup.com/blog/2016/05/05/what-were-clicking-april-link-roundup/</link><pubDate>Thu, 05 May 2016 14:04:27 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/05/05/what-were-clicking-april-link-roundup/</guid><description>&lt;p>It&amp;rsquo;s time for this month’s roundup of articles and posts shared by Cakti that drew the most attention on Twitter. The list highlights new work in civic tech and international development as well as reasons for the increasing popularity of Python and open source development.&lt;/p></description></item><item><title>Florida Open Debate Platform Receives National Attention (The Atlantic, USA Today, Engadget)</title><link>https://www.caktusgroup.com/blog/2016/05/03/florida-open-debate-platform-receives-national-attention-atlantic-usa-today-engadget/</link><pubDate>Tue, 03 May 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/05/03/florida-open-debate-platform-receives-national-attention-atlantic-usa-today-engadget/</guid><description>&lt;p>Several national publications have featured the &lt;a href="https://floridaopendebate.com/watch/" target="_blank" rel="noopener noreferrer">Florida Open Debate&lt;/a> platform, including &lt;a href="http://www.usatoday.com/story/news/politics/onpolitics/2016/04/19/florida-senate-race-crowd-sourced-debate/83208788/?utm_content=29189403&amp;amp;utm_medium=social&amp;amp;utm_source=twitter" target="_blank" rel="noopener noreferrer">&lt;em>USA Today&lt;/em>&lt;/a>, &lt;a href="http://www.engadget.com/2016/04/19/submit-your-questions-for-the-us-senates-first-open-debate/?utm_content=32878275&amp;amp;utm_medium=social&amp;amp;utm_source=twitter" target="_blank" rel="noopener noreferrer">&lt;em>Engadget&lt;/em>&lt;/a>, and &lt;a href="http://www.theatlantic.com/politics/archive/2016/04/a-debate-where-the-voters-pick-the-questions/479958/?utm_source=SFFB" target="_blank" rel="noopener noreferrer">&lt;em>The Atlantic&lt;/em>&lt;/a>. Caktus helped develop the Django-based platform on behalf of the &lt;a href="http://opendebatecoalition.com/" target="_blank" rel="noopener noreferrer">Open Debate Coalition (ODC)&lt;/a> in advance of the nation’s first-ever open Senate debate held in Florida on April 25th. The site enabled citizens to submit debate questions as well as vote on which questions mattered most to them. Moderators then used the thirty most popular questions from the site to structure the debate between Florida Senate candidates David Jolly (R) and Alan Grayson (D). According to *The Atlantic, *more than 400,000 votes were submitted by users on the site, including more than 84,000 from Florida voters.&lt;/p></description></item><item><title>ES6 For Django Lovers</title><link>https://www.caktusgroup.com/blog/2016/05/02/es6-django-lovers/</link><pubDate>Mon, 02 May 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/05/02/es6-django-lovers/</guid><description>&lt;h2 id="es6-for-django-lovers">ES6 for Django Lovers!&lt;/h2>
&lt;p>The Django community is not one to fall to bitrot. Django supports every
new release of Python at an impressive pace. Active Django websites are
commonly updated to new releases quickly and we take pride in providing
stable, predictable upgrade paths.&lt;/p></description></item><item><title>Kittens at Caktus: Raising Money and Awareness for Local Charity Alley Cats and Angels</title><link>https://www.caktusgroup.com/blog/2016/04/27/kittens-caktus-raising-money-and-awareness-local-charity-alley-cats-and-angels/</link><pubDate>Wed, 27 Apr 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/04/27/kittens-caktus-raising-money-and-awareness-local-charity-alley-cats-and-angels/</guid><description>&lt;p>This week we welcomed three kittens into our office as part of a campaign to raise funds and awareness for local non-profit &lt;a href="http://alleycatsandangels.org/" target="_blank" rel="noopener noreferrer">Alley Cats and Angels&lt;/a>. This organization is dedicated to improving the lives of stray, abandoned, and feral cats. They also work to reduce the number of homeless cats in the Triangle through adoption, farm cat, and spay/neuter assistance programs.&lt;/p></description></item><item><title>Florida Open Debate Site Powers First-Ever Crowd-Sourced Open Senate Debate</title><link>https://www.caktusgroup.com/blog/2016/04/25/florida-open-debate-site-powers-first-ever-crowd-sourced-open-senate-debate/</link><pubDate>Mon, 25 Apr 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/04/25/florida-open-debate-site-powers-first-ever-crowd-sourced-open-senate-debate/</guid><description>&lt;p>&lt;a href="https://floridaopendebate.com/" target="_blank" rel="noopener noreferrer">Florida Open Debate&lt;/a> launched ahead of the upcoming, bi-partisan debate between candidates for the Florida Senate. The site, which crowdsources debate questions from the general public, was met with &lt;a href="http://www.usatoday.com/story/news/politics/onpolitics/2016/04/19/florida-senate-race-crowd-sourced-debate/83208788/" target="_blank" rel="noopener noreferrer">national acclaim&lt;/a>. Citizens can not only submit questions, but also vote on which ones matter most. Caktus helped develop the tool on behalf of the &lt;a href="http://opendebatecoalition.com/" target="_blank" rel="noopener noreferrer">Open Debate Coalition (ODC)&lt;/a>, a non-partisan organization dedicated to supporting participatory democracy through the use of civic tech.&lt;/p></description></item><item><title>ShipIt Day Recap: Q2 2016</title><link>https://www.caktusgroup.com/blog/2016/04/21/shipit-day/</link><pubDate>Thu, 21 Apr 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/04/21/shipit-day/</guid><description>&lt;p>Last Friday, the Cakti set aside regular client projects for our quarterly &lt;a href="https://www.caktusgroup.com/blog/2012/10/01/planning-our-first-shipit-day-caktus/">ShipIt Day&lt;/a>, a chance for personal development and independent projects. People work individually or in groups to flex their creativity, tackle interesting problems, or expand their personal knowledge. This quarter’s ShipIt Day was all about open source contributions, frontend fixes, and learning new (or revisiting old) programming languages. Read about the various ShipIt Day projects for Q2 of 2016 below.&lt;/p></description></item><item><title>From Intern to Professional Developer: Advice on a Mid-Career Pivot</title><link>https://www.caktusgroup.com/blog/2016/04/13/intern-professional-developer-advice-mid-career-pivot/</link><pubDate>Wed, 13 Apr 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/04/13/intern-professional-developer-advice-mid-career-pivot/</guid><description>&lt;p>A few weeks ago, &lt;a href="https://www.caktusgroup.com/about/rebecca-conley/">Rebecca Conley&lt;/a> attended &lt;a href="https://2016.djangocon.eu/" target="_blank" rel="noopener noreferrer">DjangoCon Europe 2016&lt;/a> in Budapest, Hungary. The event is a five-day conference that brings together Django lovers from all over the world to learn about and share each other’s experiences with Django.&lt;/p></description></item><item><title>Adopting Scrum in a Client-services, Multi-project Organization</title><link>https://www.caktusgroup.com/blog/2016/04/11/adopting-scrum-client-services-multi-project-organization/</link><pubDate>Mon, 11 Apr 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/04/11/adopting-scrum-client-services-multi-project-organization/</guid><description>&lt;p>Caktus began the process of adopting Scrum mid-November 2015 with two days of onsite Scrum training and fully transitioned to a Scrum environment in January 2016. From our original epiphany of “Yes! We want Scrum!” to the beginning of our first sprint, it took us six weeks to design and execute a process and transition plan. This is how we did it:&lt;/p></description></item><item><title>What We're Clicking - March Link Roundup</title><link>https://www.caktusgroup.com/blog/2016/04/05/what-were-clicking-march-link-roundup/</link><pubDate>Tue, 05 Apr 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/04/05/what-were-clicking-march-link-roundup/</guid><description>&lt;p>We’re starting a new, monthly series on the Caktus blog highlighting the articles and posts shared by Cakti that drew the most attention on Twitter. These roundups will include everything from Django how-tos to explorations of the tech industry, to innovations for social good.&lt;/p></description></item><item><title>Caktus expands anti-discrimination policies to include sexual orientation, gender identity</title><link>https://www.caktusgroup.com/blog/2016/04/04/caktus-expands-anti-harassment-policy-include-sexual-orientation-gender-identity/</link><pubDate>Mon, 04 Apr 2016 17:34:32 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/04/04/caktus-expands-anti-harassment-policy-include-sexual-orientation-gender-identity/</guid><description>&lt;p>For the past few months, we’ve been working on broadening our anti-harassment and equal employment policy. We’re very pleased to announce that our policies now include sexual orientation and gender identity as of March 24, 2016.&lt;/p></description></item><item><title>New white paper: "Shipping faster: Django team improvements"</title><link>https://www.caktusgroup.com/blog/2016/04/04/new-white-paper-shipping-faster-django-team-improvements/</link><pubDate>Mon, 04 Apr 2016 13:26:38 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/04/04/new-white-paper-shipping-faster-django-team-improvements/</guid><description>&lt;p>For the past couple months, we’ve been working on a new white paper, “&lt;a href="http://learn.caktusgroup.com/shipping-faster-django-team-improvements?utm_source=web&amp;amp;utm_medium=bloglaunch&amp;amp;utm_campaign=shippingfaster" target="_blank" rel="noopener noreferrer">Shipping Faster: Django Team Improvements&lt;/a>”. We examined our existing processes, looked at best practices, and considered what has or hasn’t worked across our dozens of simultaneous projects.&lt;/p></description></item><item><title>Lightweight Django now in Portuguese!</title><link>https://www.caktusgroup.com/blog/2016/04/02/lightweight-django-now-portuguese/</link><pubDate>Sat, 02 Apr 2016 17:18:24 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/04/02/lightweight-django-now-portuguese/</guid><description>&lt;p>We&amp;rsquo;re proud to report that &lt;em>Lightweight Django&lt;/em> (O&amp;rsquo;Reilly Media) is now available in Portuguese as &lt;em>Django Essencial&lt;/em>. The book was written by our technical director Mark Lavin and Caktus alumnus Julia Elman to great reviews. &lt;em>Django Essencial&lt;/em> comes just in time for Mark&amp;rsquo;s keynote talk during PyCon Nordeste.&lt;/p></description></item><item><title>Checking That It's All Translatable</title><link>https://www.caktusgroup.com/blog/2016/03/28/checking-its-all-translatable/</link><pubDate>Mon, 28 Mar 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/03/28/checking-its-all-translatable/</guid><description>&lt;p>When building a translated application, it's important to test that all
of the text is going to be translated, but difficult to tell until the
translation has been done. Until then, even when you switch languages
you still see English everywhere. It's not until all the text that's
been set up to be translated actually is that you can see the site in
the other language, at which point the English messages stick out like a
sore thumb. But that's usually very late in the process. How can we
catch those errors earlier?&lt;/p></description></item><item><title>Caktus Internship Fuels a Career Re-Launch</title><link>https://www.caktusgroup.com/blog/2016/03/24/caktus-internship-give-fuel-career-launch/</link><pubDate>Thu, 24 Mar 2016 13:28:53 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/03/24/caktus-internship-give-fuel-career-launch/</guid><description>&lt;p>What is it like to be an intern at Caktus? I am finishing up as the spring Django intern (though I didn&amp;rsquo;t actually use any Django), so I&amp;rsquo;ll share my experience.&lt;/p></description></item><item><title>Best Python Libraries</title><link>https://www.caktusgroup.com/blog/2016/03/17/best-python-libraries/</link><pubDate>Thu, 17 Mar 2016 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/03/17/best-python-libraries/</guid><description>&lt;p>Our love for Python is no secret. But with so many modules, tools, and libraries, it can be overwhelming for beginning developers to identify the most useful. Obviously, our &lt;a href="https://www.caktusgroup.com/blog/2009/01/13/why-caktus-uses-django/">favorite framework is Django&lt;/a>. But we’re setting aside our undying love for that framework for a moment to offer a list of other helpful Python libraries. From those offering standard solutions to everyday programming problems, to ones that hold a special place in the heart of the dev who created them, these are some of our developer’s favorite tools for Python development.&lt;/p></description></item><item><title>Time for Flexbox First</title><link>https://www.caktusgroup.com/blog/2016/03/07/time-flexbox-first/</link><pubDate>Mon, 07 Mar 2016 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/03/07/time-flexbox-first/</guid><description>&lt;p>The web development community has a habit of declaring &amp;ldquo;firsts&amp;rdquo; those practices and approaches that reach some ill-defined status signaling they are the go-to way to solve a particular problem. We&amp;rsquo;ve seen &amp;ldquo;mobile first&amp;rdquo; and, more recently, &amp;ldquo;offline first.&amp;rdquo; In these examples, a new problem comes along and as that problem grows more common there comes a tipping point. On the other side of that tipping point, it begins to make sense to solve the problem from the ground up, rather than building a project and solving it as an afterthought.&lt;/p></description></item><item><title>Wagtail: 2 Steps for Adding Pages Outside of the CMS</title><link>https://www.caktusgroup.com/blog/2016/02/15/wagtail-2-steps-adding-pages-outside-cms/</link><pubDate>Mon, 15 Feb 2016 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/02/15/wagtail-2-steps-adding-pages-outside-cms/</guid><description>&lt;p>My first Caktus project went live late in the summer of 2015. It's a
&lt;a href="https://community.rapidpro.io" target="_blank" rel="noopener noreferrer">community portal&lt;/a> for users of an
SMS-based product called RapidPro. The portal was built in the &lt;a href="https://wagtail.io" target="_blank" rel="noopener noreferrer">Wagtail
CMS framework&lt;/a> which has a lovely, intuitive admin
interface and &lt;a href="http://docs.wagtail.io" target="_blank" rel="noopener noreferrer">excellent documentation&lt;/a> for
developers and content editors. The code for our Wagtail-based project
is all &lt;a href="https://github.com/rapidpro/rapidpro-community-portal" target="_blank" rel="noopener noreferrer">open sourced on
GitHub&lt;/a>.&lt;/p></description></item><item><title>Writing Unit Tests for Django Migrations</title><link>https://www.caktusgroup.com/blog/2016/02/02/writing-unit-tests-django-migrations/</link><pubDate>Tue, 02 Feb 2016 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/02/02/writing-unit-tests-django-migrations/</guid><description>&lt;p>&lt;em>Editor's note: This post was originally published in February 2016 and
was updated in August 2017 to incorporate improvements suggested by our
readers. It has also been tested for compatibility as of the Django 1.11
release.&lt;/em>&lt;/p></description></item><item><title>ShipIt Day Recap: Q1 2016</title><link>https://www.caktusgroup.com/blog/2016/01/20/shipit-day-recap-q1-2016/</link><pubDate>Wed, 20 Jan 2016 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/01/20/shipit-day-recap-q1-2016/</guid><description>&lt;p>Last Friday, the Cakti set aside regular client projects for our quarterly &lt;a href="https://www.caktusgroup.com/blog/2012/10/01/planning-our-first-shipit-day-caktus/">ShipIt Day&lt;/a>, a chance for personal development and independent projects. People work individually or in groups to flex their creativity, tackle interesting problems, or expand their personal knowledge. This quarter’s ShipIt Day saw everything from cat animations to improvements on our Taylor Swift lyric generator app. Read about the various ShipIt Day projects for Q1 of 2016 below.&lt;/p></description></item><item><title>The Trials, Tribulations, and Triumphs of Choosing an M&amp;E Platform</title><link>https://www.caktusgroup.com/blog/2016/01/11/trials-tribulations-and-triumphs-choosing-me-platform/</link><pubDate>Mon, 11 Jan 2016 15:46:29 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/01/11/trials-tribulations-and-triumphs-choosing-me-platform/</guid><description>&lt;p>&lt;em>Republished with permission from &lt;a href="http://www.ictworks.org/" target="_blank" rel="noopener noreferrer">ICTWorks.org&lt;/a>&lt;/em>&lt;/p>
&lt;p>At the recent MERL Tech conference, Tania Lee (&lt;a href="www.caktusgroup.com">Caktus Group&lt;/a>), Tom Walker (&lt;a href="https://www.theengineroom.org/" target="_blank" rel="noopener noreferrer">Engine Room&lt;/a>), Laura Walker McDonald (&lt;a href="http://simlab.org/" target="_blank" rel="noopener noreferrer">SIMLab&lt;/a>), and Lynnae Day (&lt;a href="http://www.oxfamamerica.org/" target="_blank" rel="noopener noreferrer">Oxfam America&lt;/a>) led a session called, “The Trials, Tribulations, and Triumphs of Choosing an M&amp;amp;E Platform.” They’ve written up their reflections and learning from that session focusing on project design, tool design/research, and getting things off the ground, whether that means finding external help or building a custom solution.&lt;/p></description></item><item><title>Modified Preorder Tree Traversal in Django</title><link>https://www.caktusgroup.com/blog/2016/01/04/modified-preorder-tree-traversal-django/</link><pubDate>Mon, 04 Jan 2016 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2016/01/04/modified-preorder-tree-traversal-django/</guid><description>&lt;p>Hierarchical data are everywhere, from product catalogs to blog post
comments. A classic example is the tree of life, where kingdoms are
subdivided into a hierarchy of phylum and class down to genus and
species. What if you wish to store this data in a database table, which
is inherently flat? Databases do not natively store hierarchies, so you
need to work around that.&lt;/p></description></item><item><title>What We Open Sourced in 2015: A New Year's Retrospective</title><link>https://www.caktusgroup.com/blog/2015/12/31/what-we-open-sourced-2015-new-years-retrospective/</link><pubDate>Thu, 31 Dec 2015 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/12/31/what-we-open-sourced-2015-new-years-retrospective/</guid><description>&lt;p>This year we had the pleasure of building a number of unique solutions for several organizations. In addition, we had the support of these clients to open source the tools we built. By open sourcing our work, we enable others to use, replicate, and even improve upon the tools we’ve created.&lt;/p></description></item><item><title>Reflecting on My Time as Caktus' Open Source Fellow</title><link>https://www.caktusgroup.com/blog/2015/12/21/reflecting-my-time-caktus-open-source-fellow/</link><pubDate>Mon, 21 Dec 2015 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/12/21/reflecting-my-time-caktus-open-source-fellow/</guid><description>&lt;p>My name is Ben Phillips and I am Caktus&amp;rsquo; Open Source Fellow. As my fellowship comes to a close, I wanted to reflect on my time at Caktus and to share my experience and some of what I&amp;rsquo;ve learned here. First, however, I should probably share how I ended up here in the first place.&lt;/p></description></item><item><title>Caktus Participates in Tree of Bikes at American Tobacco Campus</title><link>https://www.caktusgroup.com/blog/2015/12/17/caktus-participates-tree-bikes-american-tobacco-campus/</link><pubDate>Thu, 17 Dec 2015 19:40:38 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/12/17/caktus-participates-tree-bikes-american-tobacco-campus/</guid><description>&lt;p>This year, our neighbors at American Tobacco Campus (ATC) hosted Durham’s first ever Tree of Bikes event to help collect and distribute new bikes to children in need in the local community. The tree is a 25-foot tall sculpture made entirely of new children’s bicycles donated by individuals and local businesses in the Triangle. The bikes are then distributed to children living in the Cornwallis Road affordable housing community managed by the Durham Housing Authority.&lt;/p></description></item><item><title>Caktus CTO Colin Copeland Helps Launch Open Data Policing Website</title><link>https://www.caktusgroup.com/blog/2015/12/17/cto-colin-copeland-helps-launch-open-data-policing-website/</link><pubDate>Thu, 17 Dec 2015 13:50:11 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/12/17/cto-colin-copeland-helps-launch-open-data-policing-website/</guid><description>&lt;p>Today, at Caktus headquarters, CTO and co-founder of Caktus Colin Copeland will stand at a press conference along with activists, police representatives, and elected officials to announce the launch of &lt;a href="http://OpenDataPolicingNC.com" target="_blank" rel="noopener noreferrer">OpenDataPolicingNC.com&lt;/a>. The first site of its kind, OpenDataPolicingNC.com draws on public records to publish up-to-date stop, search, and use-of-force data—broken down by race and ethnicity—for every police department and officer in the state of North Carolina. The volunteer effort, led by The Southern Coalition for Social Justice (SCSJ) and technical leadership by Colin, includes approximately 20 million anonymized data points from 15 years of NC traffic stop data.&lt;/p></description></item><item><title>Cyber Monday: 50% off Django book and videos</title><link>https://www.caktusgroup.com/blog/2015/11/30/cyber-monday-50-django-book-and-videos/</link><pubDate>Mon, 30 Nov 2015 15:52:56 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/11/30/cyber-monday-50-django-book-and-videos/</guid><description>&lt;p>Are you looking for a good gift for a current or future Django developer? Check out Caktus technical director Mark Lavin&amp;rsquo;s work for O&amp;rsquo;Reilly:&lt;/p></description></item><item><title>What human-centered design can do for international development</title><link>https://www.caktusgroup.com/blog/2015/11/20/what-human-centered-design-can-do-international-development/</link><pubDate>Fri, 20 Nov 2015 14:55:42 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/11/20/what-human-centered-design-can-do-international-development/</guid><description>&lt;p>&lt;em>Cross-posted with Creative Associates International. Written by Gina Assaf (Creative Associates International) and Tania Lee (Caktus Group). Image courtesy of Creative Associates International.&lt;/em>&lt;/p></description></item><item><title>Initial Data in Django</title><link>https://www.caktusgroup.com/blog/2015/11/10/initial-data-django/</link><pubDate>Tue, 10 Nov 2015 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/11/10/initial-data-django/</guid><description>&lt;p>I&amp;rsquo;ve struggled to find an ideal way to load initial data for Django projects. By “initial data,” I&amp;rsquo;m referring to the kind of data that you need on a new system for it to be functional, but could change later. These are largely lists of possible choices, such as time zones, countries, or crayon colors.&lt;/p></description></item><item><title>The Long, Hard Haul to Uncovering a Single, Tiny CSS Property Bug in IE10</title><link>https://www.caktusgroup.com/blog/2015/11/04/long-hard-haul-uncovering-single-tiny-css-property-bug/</link><pubDate>Wed, 04 Nov 2015 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/11/04/long-hard-haul-uncovering-single-tiny-css-property-bug/</guid><description>&lt;p>There&amp;rsquo;s a very small but devastatingly crash-inducing bug in Internet
Explorer 10. Watch out for setting a background-color to inherit on any
pseudo element (like ::before and ::after), because this will crash IE
completely every single time.&lt;/p></description></item><item><title>Open Sourcing SmartElect: Libya's SMS Voter Registration System</title><link>https://www.caktusgroup.com/blog/2015/10/28/open-sourcing-smartelect-libyas-sms-voter-registration-system/</link><pubDate>Wed, 28 Oct 2015 17:01:54 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/10/28/open-sourcing-smartelect-libyas-sms-voter-registration-system/</guid><description>&lt;p>We are proud to say that, with the Libyan High National Elections Commission (HNEC) and consultative support from the United Nations Support Mission to Libya, we have open sourced their elections management platform today under a permissive Apache 2.0 license. Open sourcing means other governments and organizations can freely adopt and adapt the elections tools which cover nine functional areas. The tools range from SMS voter registration, the first of its kind, to bulk alerts to voters and call center support software. You can learn more at our brand new &lt;a href="http://www.smartelect.com" target="_blank" rel="noopener noreferrer">SmartElect homepage&lt;/a>. This is the cumulation of two years of work, so we’re incredibly excited to share SmartElect with the rest of the world.&lt;/p></description></item><item><title>Identifying Racial Bias in Policing with a Data-driven App</title><link>https://www.caktusgroup.com/blog/2015/10/16/identifying-racial-bias-policing-tech/</link><pubDate>Fri, 16 Oct 2015 21:16:16 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/10/16/identifying-racial-bias-policing-tech/</guid><description>&lt;p>Recently, Caktus co-founder Colin Copeland spoke about the creation of a web app that analyzes North Carolina traffic stop data to identify racial bias during the Code for America 2015 Summit. The website allows both police departments and community members to visualize a dataset of more than 18 million stops statewide. Colin spoke with Ian Mance, the originator of the app idea and staff attorney with the Southern Coalition for Social Justice. Together with fellow community members, Andy Shapiro and Dylan Young, they used Django, an open source web framework, to make policing data more accessible.&lt;/p></description></item><item><title>A Peek Behind the Scenes at Caktus</title><link>https://www.caktusgroup.com/blog/2015/10/16/peek-behind-scenes-caktus/</link><pubDate>Fri, 16 Oct 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/10/16/peek-behind-scenes-caktus/</guid><description>&lt;p>Over the years, Caktus has had the opportunity to employ a wonderfully talented staff from a wide range of backgrounds. This summer we decided we would conduct a survey of Caktus staff. This infographic is the result of that study, and allows a little peek into the Cakti way of life. Conclusions: cats are great and coffee keeps you sharp!&lt;/p></description></item><item><title>ShipIt Day ReCap: Q4 2015</title><link>https://www.caktusgroup.com/blog/2015/10/14/shipit-day-recap-q4-2015/</link><pubDate>Wed, 14 Oct 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/10/14/shipit-day-recap-q4-2015/</guid><description>&lt;p>Members of one team joined forces with local meetup &lt;a href="http://codefordurham.com/" target="_blank" rel="noopener noreferrer">Code for Durham&lt;/a> to help with the alpha launch of the &lt;a href="http://codefordurham.com/blog/alpha_launch--school_navigator" target="_blank" rel="noopener noreferrer">School Navigator App&lt;/a>. Using publicly available data, the &lt;a href="https://schools.codefordurham.com/#/" target="_blank" rel="noopener noreferrer">School Navigator&lt;/a>, allows users to geolocate nearby Durham schools and view information like performance ratings. The team included Code for Durham co-founder &lt;a href="https://www.caktusgroup.com/about/colin-copeland/">Colin Copeland&lt;/a> who upgraded the Django template for the latest version of SALT. &lt;a href="https://www.caktusgroup.com/about/erin-mullaney/">Erin Mullaney&lt;/a> helped expand a feature denoting different school zones on the map, using Angular for the first time to do so. She also worked on a query change to more closely match the rules of districting on the map’s display. [Victor Rocha] developed various bug fixes, and merged pull requests. In the meantime, &lt;a href="https://www.caktusgroup.com/about/david-ray/">David Ray&lt;/a> put his new Ionic skills to the test by building a &lt;a href="https://play.google.com/store/apps/details?id=com.ionicframework.schoolnavigatormobile195852" target="_blank" rel="noopener noreferrer">mobile app version of the School Navigator&lt;/a>, now available from the Google App store. (David’s starting Ship It Day project was working through an Ionic tutorial to create a Reddit viewing app with pull refresh and infinite scrolling.)&lt;/p></description></item><item><title>Django Girls Workshop Recap</title><link>https://www.caktusgroup.com/blog/2015/10/08/django-girls-workshop-recap/</link><pubDate>Thu, 08 Oct 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/10/08/django-girls-workshop-recap/</guid><description>&lt;p>This past Saturday we had the pleasure of holding a &lt;a href="https://djangogirls.org/RDU" target="_blank" rel="noopener noreferrer">Django Girls RDU&lt;/a> workshop at Caktus in downtown Durham, NC. We hosted 22 students and 10 coaches for a free, all-day coding workshop. Aimed at increasing diversity in tech and encouraging women to gain the skills they need to fall in love with coding, Django Girls is a global nonprofit that provides the framework for these workshops. In regular Django Girls style, the day was part party, part coding marathon and every student left having deployed their very own website!&lt;/p></description></item><item><title>Colin Copeland to Speak on Police Data and Racial Bias at Code for America Summit</title><link>https://www.caktusgroup.com/blog/2015/09/29/caktus-group-co-founder-colin-copeland-speak-police-data-and-racial-bias-code-america-summit/</link><pubDate>Tue, 29 Sep 2015 17:33:09 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/09/29/caktus-group-co-founder-colin-copeland-speak-police-data-and-racial-bias-code-america-summit/</guid><description>&lt;p>This Thursday, Colin Copeland, CTO and Caktus Group Co-founder, will be co-presenting “Case Study from North Carolina: Identifying Racial Bias in Policing Practices” during the prestigious 2015 &lt;a href="http://www.codeforamerica.org/summit/" target="_blank" rel="noopener noreferrer">Code for America Summit&lt;/a> in Oakland, CA. This invite-only event joins technologists, activists, and officials ranging from mayors to White House officials to discuss technology’s role in civic participation.&lt;/p></description></item><item><title>Introduction to Monte Carlo Tree Search</title><link>https://www.caktusgroup.com/blog/2015/09/24/introduction-monte-carlo-tree-search-1/</link><pubDate>Thu, 24 Sep 2015 13:47:08 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/09/24/introduction-monte-carlo-tree-search-1/</guid><description>&lt;script type="text/javascript"
 src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
&lt;/script>
&lt;script type="text/x-mathjax-config">
 MathJax.Hub.Config({ TeX: { extensions: ["color.js"] }});
&lt;/script>
&lt;p>&lt;em>For DjangoCon 2015, Jeff Bradberry created an A.I. for our booth game,
Ultimate Tic Tac Toe. Reprinted here from jeffbradberry.com is his
explanation of the Monte Carlo Tree Search used to build the A.I.&lt;/em>&lt;/p></description></item><item><title>PyCon 2016: Behind the Design</title><link>https://www.caktusgroup.com/blog/2015/09/23/pycon-2016-behind-design/</link><pubDate>Wed, 23 Sep 2015 18:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/09/23/pycon-2016-behind-design/</guid><description>&lt;p>Having helped to design an &lt;a href="https://www.caktusgroup.com/blog/2015/04/29/caktus-wins-two-communicator-awards-pycon-2015/">award-winning event site&lt;/a> for last year’s PyCon in Montreal, we are thrilled to collaborate again with the Python Software Foundation (PSF) on this year’s site for &lt;a href="https://us.pycon.org" target="_blank" rel="noopener noreferrer">PyCon 2016&lt;/a>.&lt;/p></description></item><item><title>Caktus at DjangoCon 2015</title><link>https://www.caktusgroup.com/blog/2015/09/04/caktus-djangocon-2015/</link><pubDate>Fri, 04 Sep 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/09/04/caktus-djangocon-2015/</guid><description>&lt;p>Django is kind of our thing, so we’ve been looking forward to &lt;a href="https://2015.djangocon.us/" target="_blank" rel="noopener noreferrer">DjangoCon 2015&lt;/a> for months! Now that it is finally here, we thought we would give a little preview of what Cakti will be up to at this year’s conference.&lt;/p></description></item><item><title>Composting at Caktus</title><link>https://www.caktusgroup.com/blog/2015/08/19/composting-caktus/</link><pubDate>Wed, 19 Aug 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/08/19/composting-caktus/</guid><description>&lt;p>At Caktus we have an employee suggestion policy that has been the birthplace of tons of great ideas, from &lt;a href="https://www.caktusgroup.com/blog/2015/06/05/tech-community-yoga-now-offered-caktus/">tech community yoga&lt;/a> to a pair programming station.&lt;/p></description></item><item><title>Making Clean Code a Part of Your Build Process (And More!)</title><link>https://www.caktusgroup.com/blog/2015/08/15/making-clean-code-part-your-build-process/</link><pubDate>Sat, 15 Aug 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/08/15/making-clean-code-part-your-build-process/</guid><description>&lt;p>At Caktus, &amp;ldquo;clean&amp;rdquo; (in addition to &amp;ldquo;working&amp;rdquo;!) code is an important part of our delivery. For all new projects, we achieve that by using &lt;a href="https://flake8.readthedocs.org/en/latest/" target="_blank" rel="noopener noreferrer">flake8&lt;/a>. &lt;strong>flake8&lt;/strong> is a wrapper around several tools: &lt;a href="http://pep8.readthedocs.org/en/latest/" target="_blank" rel="noopener noreferrer">pep8&lt;/a>, &lt;a href="https://pypi.python.org/pypi/pyflakes" target="_blank" rel="noopener noreferrer">pyflakes&lt;/a>, and &lt;a href="https://pypi.python.org/pypi/mccabe" target="_blank" rel="noopener noreferrer">McCabe&lt;/a>. &lt;strong>pep8&lt;/strong> checks to make sure your code matches the &lt;a href="https://www.python.org/dev/peps/pep-0008/" target="_blank" rel="noopener noreferrer">PEP 0008&lt;/a> style guidelines, &lt;strong>pyflakes&lt;/strong> looks for a few additional things like unused imports or variables, and &lt;strong>McCabe&lt;/strong> raises warnings about overly complex sections of code.&lt;/p></description></item><item><title>AWS load balancers with Django</title><link>https://www.caktusgroup.com/blog/2015/08/10/aws-load-balancers-django/</link><pubDate>Mon, 10 Aug 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/08/10/aws-load-balancers-django/</guid><description>&lt;p>We recently had occasion to reconfigure some of our existing servers to use Amazon Web Services Elastic Load Balancers in front of them. Setting this up isn&amp;rsquo;t hard, exactly, but there are a lot of moving parts that have to mesh correctly before things start to work, so I thought I&amp;rsquo;d write down what we did.&lt;/p></description></item><item><title>Announcing the Caktus Open Source Fellowship</title><link>https://www.caktusgroup.com/blog/2015/08/06/announcing-caktus-open-source-fellowship/</link><pubDate>Thu, 06 Aug 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/08/06/announcing-caktus-open-source-fellowship/</guid><description>&lt;p>We are excited to announce the creation and funding of a pilot program for open source contributions here at Caktus Group. This program is inspired by the Django Software Foundation’s &lt;a href="https://www.djangoproject.com/weblog/2015/mar/06/welcome-our-full-time-django-fellow/" target="_blank" rel="noopener noreferrer">fellowship&lt;/a> as well as the &lt;a href="http://twodaymanifesto.com/" target="_blank" rel="noopener noreferrer">Two Day Manifesto&lt;/a>. For this program, Caktus seeks to hire a part-time developer for twelve weeks this fall for the sole purpose of contributing back to open source projects. Caktus builds web applications based on open source tools and the continued growth of these projects is important to us. Open source projects such as Python and Django have given so much to this company and this is one of many ways we are trying to give back.&lt;/p></description></item><item><title>Announcing Django Girls RDU: Free Coding Workshop for Women</title><link>https://www.caktusgroup.com/blog/2015/08/05/announcing-django-girls-rdu-free-coding-workshop-women/</link><pubDate>Wed, 05 Aug 2015 18:02:23 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/08/05/announcing-django-girls-rdu-free-coding-workshop-women/</guid><description>&lt;p>We’re incredibly excited to announce the launch of &lt;a href="https://djangogirls.org/RDU/" target="_blank" rel="noopener noreferrer">Django Girls RDU&lt;/a>, a group in NC’s Triangle region that hosts free one-day Django coding workshops for women. Django Girls is part of an international movement that’s helped 1,600 (and counting!) women learn how to code.&lt;/p></description></item><item><title>Using Unsaved Related Models for Sample Data in Django 1.8</title><link>https://www.caktusgroup.com/blog/2015/07/28/using-unsaved-related-models-sample-data-django-18/</link><pubDate>Tue, 28 Jul 2015 15:54:33 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/07/28/using-unsaved-related-models-sample-data-django-18/</guid><description>&lt;p>&lt;strong>Note:&lt;/strong> In between the time I originally wrote this post and it
getting published, a
&lt;a href="https://code.djangoproject.com/ticket/25160" target="_blank" rel="noopener noreferrer">ticket&lt;/a> and &lt;a href="https://github.com/django/django/pull/5060" target="_blank" rel="noopener noreferrer">pull
request&lt;/a> were opened in
Django to remove &lt;code>allow_unsaved_instance_assignment&lt;/code> and move validation
to the model &lt;code>save()&lt;/code> method, which makes much more sense anyways. It's
likely this will even be backported to Django 1.8.4. So, if you're
using a version of Django that doesn't require this, hopefully you'll
never stumble across this post in the first place! If this is still an
issue for you, here's the original post:&lt;/p></description></item><item><title>PyCon 2015 Workshop Video: Building SMS Applications with Django</title><link>https://www.caktusgroup.com/blog/2015/07/24/pycon-2015-workshop-video-building-sms-applications-django/</link><pubDate>Fri, 24 Jul 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/07/24/pycon-2015-workshop-video-building-sms-applications-django/</guid><description>&lt;iframe src='https://www.youtube.com/embed/HBVgcVlow4w' frameborder='0' allowfullscreen>&lt;/iframe>
&lt;p>As proud sponsors of PyCon, we hosted a one and a half hour free workshop. We see the workshops as a wonderful opportunity to share some practical, hands-on experience in our area of expertise: building applications in Django. In addition, it’s a way to give back to the open source community.&lt;/p></description></item><item><title>Reviews of two recent Django Books</title><link>https://www.caktusgroup.com/blog/2015/07/23/reviews-two-recent-django-books/</link><pubDate>Thu, 23 Jul 2015 19:21:26 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/07/23/reviews-two-recent-django-books/</guid><description>&lt;h4 id="introduction">Introduction&lt;/h4>
&lt;p>When I started building sites in Django, I learned the basics from the excellent Django tutorial. But I had to learn by trial and error which approaches to using Django&amp;rsquo;s building blocks worked well and which approaches tended to cause problems later on. I looked for more intermediate-level documentation, but beyond James Bennett&amp;rsquo;s &lt;a href="http://amazon.com/Practical-Django-Projects-Experts-Development-ebook/dp/B002ECESU0/" target="_blank" rel="noopener noreferrer">Practical Django Projects&lt;/a> and our &lt;a href="https://www.caktusgroup.com/about/karen-tracey/">Karen Tracey&lt;/a>&amp;rsquo;s &lt;a href="http://amazon.com/Django-Testing-Debugging-Tracey-Karen/dp/1847197566/" target="_blank" rel="noopener noreferrer">Django 1.1 Testing and Debugging&lt;/a>, there wasn&amp;rsquo;t much to be found.&lt;/p></description></item><item><title>Q3 2015 ShipIt Day ReCap</title><link>https://www.caktusgroup.com/blog/2015/07/14/q3-2015-shipit-day-recap/</link><pubDate>Tue, 14 Jul 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/07/14/q3-2015-shipit-day-recap/</guid><description>&lt;p>Last Friday marked another ShipIt Day at Caktus, a chance for our employees to set aside client work for experimentation and personal development. It’s always a wonderful chance for our developers to test new boundaries, learn new skills and sometimes even build something entirely new in a single day.&lt;/p></description></item><item><title>LAN Party at Caktus</title><link>https://www.caktusgroup.com/blog/2015/07/01/lan-party-caktus/</link><pubDate>Wed, 01 Jul 2015 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/07/01/lan-party-caktus/</guid><description>&lt;p>This past weekend, our wonderful Technology Support Specialist &lt;a href="https://www.caktusgroup.com/about/scott-morningstar/">Scott Morningstar&lt;/a> hosted a Local Area Network (LAN) party at Caktus HQ. Held twice a year since 2008, the event allows geeks, gamers, and retro technology lovers to relive the nostalgia of multiplayer gaming in the early days of dial-up internet. In other words, everyone brings their own computer, and uses the LAN to play online games in the company of others. These parties are a lot of fun and add a more personal social element to the online gaming community.&lt;/p></description></item><item><title>Lightning Talk Lunch: Two Useful Organizational Tools</title><link>https://www.caktusgroup.com/blog/2015/06/29/lightning-talk-lunch-two-useful-organizational-tools/</link><pubDate>Mon, 29 Jun 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/06/29/lightning-talk-lunch-two-useful-organizational-tools/</guid><description>&lt;p>Monthly, we organize short Lightning Talks that take place during the lunch hour here at Caktus. Not only does this allow us a wonderful excuse to have lunch delivered from one of our many local foodie options, but it’s an excellent chance to expand our knowledge on a variety of topics. Past talks have included everything from an introduction to synthesizers and other forms of electronic music, to bug fixing, to the &lt;a href="https://www.youtube.com/watch?v=jWhxLljitrE" target="_blank" rel="noopener noreferrer">design inspiration behind our PyCon 2015 site&lt;/a>.&lt;/p></description></item><item><title>Announcing Caktus Scholarships for Astro Code School</title><link>https://www.caktusgroup.com/blog/2015/06/22/announcing-caktus-scholarships-astro-code-school/</link><pubDate>Mon, 22 Jun 2015 12:30:46 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/06/22/announcing-caktus-scholarships-astro-code-school/</guid><description>&lt;p>We’re very pleased to announce that Caktus Group will be sponsoring up to $20,000 worth of scholarships for Astro Code School students per year. There will be twenty $1,000 scholarships. We hope that these scholarships help increase access to code schools and the wider tech industry:&lt;/p></description></item><item><title>Epic Allies Featured at mHealth at Duke 2015 Conference</title><link>https://www.caktusgroup.com/blog/2015/06/19/epic-allies-featured-mhealth-duke-2015-conference/</link><pubDate>Fri, 19 Jun 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/06/19/epic-allies-featured-mhealth-duke-2015-conference/</guid><description>&lt;p>At this year’s mHealth at Duke 2015 Conference, &lt;a href="http://globalhealth.unc.edu/about/faculty/lisa-hightow-weidman/" target="_blank" rel="noopener noreferrer">Dr. Lisa Hightow-Weidman&lt;/a> discussed her &lt;a href="http://sites.duke.edu/mhealth/2015/06/04/1285/" target="_blank" rel="noopener noreferrer">current mHealth projects for HIV prevention&lt;/a>. Chief among these projects is her work with Caktus Group on Epic Allies, a mobile gaming app that utilizes social media and mini-games to increase adherence to prescribed medication amongst HIV-positive men who have sex with men (MSM).&lt;/p></description></item><item><title>Stanford Social Innovation Review Highlights Caktus' Work in Libya</title><link>https://www.caktusgroup.com/blog/2015/06/12/stanford-social-innovation-review-highlights-caktus-work-libya/</link><pubDate>Fri, 12 Jun 2015 18:43:50 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/06/12/stanford-social-innovation-review-highlights-caktus-work-libya/</guid><description>&lt;p>The Stanford Social Innovation Review recently featured Caktus in “Text the Vote” in Suzie Boss’ “What’s Next: New Approaches to Social Change” column. It describes how our team of developers built the world’s first SMS voter registration system in Libya using RapidSMS.&lt;/p></description></item><item><title>Robots Robots Ra Ra Ra!!! (PyCon 2015 Must-See Talk: 6/6)</title><link>https://www.caktusgroup.com/blog/2015/06/10/robots-robots-ra-ra-ra/</link><pubDate>Wed, 10 Jun 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/06/10/robots-robots-ra-ra-ra/</guid><description>&lt;p>&lt;em>Part six of six in our &lt;a href="https://www.caktusgroup.com/blog/2015/04/28/pycon-2015-must-see-talk-favorites/">PyCon 2015 Must-See Series&lt;/a>, a weekly highlight of talks our staff enjoyed at PyCon.&lt;/em>&lt;/p>
&lt;p>I&amp;rsquo;ve had an interest in robotics since high school, but always thought it would be expensive and time consuming to actually do. Over the past few years, though, I&amp;rsquo;ve observed the rise of open hardware such as the Arduino and the Raspberry Pi, and modules and kits built on top of them, that make this type of project more affordable and accessible to the casual hobbyist. I was excited by Katherine&amp;rsquo;s talk because Robot Operating System (ROS) seems to do for the software side what Arduino and such do for the hardware side.&lt;/p></description></item><item><title>Testing Client-Side Applications with Django Post Mortem</title><link>https://www.caktusgroup.com/blog/2015/06/08/testing-client-side-applications-django-post-mortem/</link><pubDate>Mon, 08 Jun 2015 12:22:35 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/06/08/testing-client-side-applications-django-post-mortem/</guid><description>&lt;p>I had the opportunity to give a &lt;a href="http://www.oreilly.com/pub/e/3302" target="_blank" rel="noopener noreferrer">webcast for O’Reilly Media&lt;/a> during which I encountered a presenter’s nightmare: a broken demo. Worse than that it was a test failure in a presentation about testing. Is there any way to salvage such an epic failure?&lt;/p></description></item><item><title>Tech Community Yoga Now Offered at Caktus</title><link>https://www.caktusgroup.com/blog/2015/06/05/tech-community-yoga-now-offered-caktus/</link><pubDate>Fri, 05 Jun 2015 18:22:40 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/06/05/tech-community-yoga-now-offered-caktus/</guid><description>&lt;p>The Caktus office is now home to a weekly yoga class for the tech community of Durham. Via our employee suggestion box, Lead Designer &lt;a href="https://www.caktusgroup.com/about/ross-pike/">Ross Pike&lt;/a> recommended a Caktus yoga class. Through team effort that suggestion will come to fruition next week. Starting Thursday, June 11th, we will be offering a yoga class taught by professional instructor Christina Conley. The class will be open to the public at large and will be held in our community meeting space at our offices in downtown Durham.&lt;/p></description></item><item><title>PyLadies RDU and Astro Code School Team Up for an Intro to Django Workshop</title><link>https://www.caktusgroup.com/blog/2015/06/05/pyladies-rdu-and-astro-code-school-team-intro-django-workshop/</link><pubDate>Fri, 05 Jun 2015 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/06/05/pyladies-rdu-and-astro-code-school-team-intro-django-workshop/</guid><description>&lt;p>This past Saturday, Caktus developer &lt;a href="https://www.caktusgroup.com/about/rebecca-conley/">Rebecca Conley&lt;/a> taught a 4-hour introductory level workshop in Django hosted by &lt;a href="http://www.meetup.com/pyladies-rdu/" target="_blank" rel="noopener noreferrer">PyLadies RDU&lt;/a>. PyLadies RDU is the local chapter of an international mentorship group for women who love coding in Python. Their main focus is to empower women to become more active participants and leaders in the Python open-source community.&lt;/p></description></item><item><title>Creating and Using Open Source: A Guide for ICT4D Managers</title><link>https://www.caktusgroup.com/blog/2015/05/29/creating-and-using-open-source-guide-ict4d-managers/</link><pubDate>Fri, 29 May 2015 18:25:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/05/29/creating-and-using-open-source-guide-ict4d-managers/</guid><description>&lt;p>Choosing an open source product or platform upon which to build an ICT4D service is hard. Creating a sustainable, volunteer-driven open source project is even harder. There is a proliferation of open source tools in the world, but the messaging used to describe a given project does not always line up with the underlying technology. For example, the project may make claims about modularity or pluggability that, upon further investigation, prove to be exaggerations at best. Similarly, managers of ICT4D projects may be attracted to Open Source because of the promise of a “free” product, but as we’ve learned through trial and error at Caktus, it’s not always less costly to adapt an existing open source project than it would be to engineer a quality system from the ground up.&lt;/p></description></item><item><title>Durham Women in Tech (D-WiT) Starts Strong</title><link>https://www.caktusgroup.com/blog/2015/05/28/durham-women-tech-d-wit-starts-strong/</link><pubDate>Thu, 28 May 2015 14:55:27 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/05/28/durham-women-tech-d-wit-starts-strong/</guid><description>&lt;p>This past Tuesday we held our very first gathering for the new &lt;a href="http://www.meetup.com/DurhamWIT/" target="_blank" rel="noopener noreferrer">Durham Women in Tech (D-WiT)&lt;/a> Meetup group. There was a huge turnout and a lot of enthusiasm for the community we’re seeking to support and build. It was particularly wonderful to see our recently opened &lt;a href="http://astrocodeschool.com/" target="_blank" rel="noopener noreferrer">Astro Code School&lt;/a> space full of people.&lt;/p></description></item><item><title>Cakti at CRS ICT4D 2015</title><link>https://www.caktusgroup.com/blog/2015/05/27/cakti-crs-ict4d-2015/</link><pubDate>Wed, 27 May 2015 12:39:51 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/05/27/cakti-crs-ict4d-2015/</guid><description>&lt;p>This is Caktus’ first year taking part in the Catholic Relief Service’s (CRS) Information and Communication Technologies for Development (ICT4D) conference. The theme of this year’s conference is increasing the impact of aid and development tools through innovation. We’re especially looking forward to all of the speakers from organizations like the International Rescue Committee, USAID, World Vision, and the American Red Cross. In fact, the offerings are so vast, we thought we would provide a little cheat sheet to help you find Cakti throughout this year’s conference.&lt;/p></description></item><item><title>PyPy.js: What? How? Why? by Ryan Kelly (PyCon 2015 Must-See Talk: 5/6)</title><link>https://www.caktusgroup.com/blog/2015/05/26/pypyjs-what-how-why-ryan-kelly/</link><pubDate>Tue, 26 May 2015 17:21:14 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/05/26/pypyjs-what-how-why-ryan-kelly/</guid><description>&lt;p>&lt;em>Part five of six in our &lt;a href="https://www.caktusgroup.com/blog/2015/04/28/pycon-2015-must-see-talk-favorites/">PyCon 2015 Must-See Series&lt;/a>, a weekly highlight of talks our staff enjoyed at PyCon.&lt;/em>&lt;/p>
&lt;p>From Ryan Kelly&amp;rsquo;s talk I learned that it is actually possible, today, to run Python in a web browser (not something that interprets Python-like syntax and translates it into JavaScript, but an actual Python interpreter!). PyPy.js combines two technologies, &lt;a href="http://pypy.org/" target="_blank" rel="noopener noreferrer">PyPy&lt;/a> (the Python interpreter written in Python) and &lt;a href="http://kripken.github.io/emscripten-site/" target="_blank" rel="noopener noreferrer">Emscripten&lt;/a> (an LLVM-to-JavaScript converter, typically used for getting games running in the browser), to run PyPy in the browser. This talk is a must-see for anyone who&amp;rsquo;s longed before to write client-side Python instead of JavaScript for a web app. While realistically being able to do this in production may still be a ways off, at least in part due to the multiple megabytes of JavaScript one needs to download to get it working, I enjoyed the view Ryan&amp;rsquo;s talk provided into the internals of this project. PyPy itself is always fascinating, and this talk made it even more so.&lt;/p></description></item><item><title>Announcing the New Durham Women in Tech (DWiT) Meetup</title><link>https://www.caktusgroup.com/blog/2015/05/19/announcing-new-durham-women-tech-dwit-meetup/</link><pubDate>Tue, 19 May 2015 18:18:30 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/05/19/announcing-new-durham-women-tech-dwit-meetup/</guid><description>&lt;p>We’re pleased to officially announce the launch of a new meetup: &lt;a href="http://www.meetup.com/Durham-Women-in-Tech/" target="_blank" rel="noopener noreferrer">Durham Women in Tech&lt;/a> (DWiT). Through group discussions, lectures, panels, and social gatherings, we hope to provide a safe space for women in small and medium-sized Durham tech firms to share challenges, ideas, and solutions. We especially want to support women on the business side in roles such as operations, marketing, business development, finance, and project management.&lt;/p></description></item><item><title>Keynote by Catherine Bracy (PyCon 2015 Must-See Talk: 4/6)</title><link>https://www.caktusgroup.com/blog/2015/05/19/keynote-catherine-bracy-pycon-2015-must-see-talk-46/</link><pubDate>Tue, 19 May 2015 14:12:27 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/05/19/keynote-catherine-bracy-pycon-2015-must-see-talk-46/</guid><description>&lt;p>&lt;em>Part four of six in our &lt;a href="https://www.caktusgroup.com/blog/2015/04/28/pycon-2015-must-see-talk-favorites/">PyCon 2015 Must-See Series&lt;/a>, a weekly highlight of talks our staff enjoyed at PyCon.&lt;/em>&lt;/p>
&lt;p>My recommendation would be Catherine Bracy&amp;rsquo;s Keynote about Code for America. Cakti should be familiar with Code for America. Colin Copeland, Caktus CTO, is the founder of &lt;a href="http://codefordurham.com/" target="_blank" rel="noopener noreferrer">Code for Durham&lt;/a> and many of us are members. Her talk made it clear how important this work is. She was funny, straight-talking, and inspirational. For a long time before I joined Caktus, I was a &amp;ldquo;hobbyist&amp;rdquo; programmer. I often had time to program, but wasn&amp;rsquo;t sure what to build or make. Code for America is a great opportunity for people to contribute to something that will benefit all of us. I have joined Code for America and hope to contribute locally soon through Code for Durham.&lt;/p></description></item><item><title>Q2 2015 ShipIt Day ReCap</title><link>https://www.caktusgroup.com/blog/2015/05/14/q2-2015-shipit-day-recap/</link><pubDate>Thu, 14 May 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/05/14/q2-2015-shipit-day-recap/</guid><description>&lt;p>Last Friday everyone at Caktus set aside their regular client projects for our quarterly ShipIt Day, a chance for Caktus employees to take some time for personal development and independent projects. People work individually or in groups to flex their creativity, tackle interesting problems, or expand their personal knowledge. This quarter’s ShipIt Day saw everything from game development to Bokeh data visualization, Lego robots to superhero animation. Read more about the various projects from our Q2 2015 ShipIt Day.&lt;/p></description></item><item><title>Interactive Data for the Web by Sarah Bird (PyCon 2015 Must-See Talk: 3/6)</title><link>https://www.caktusgroup.com/blog/2015/05/12/interactive-data-web-sarah-bird-pycon-2015-must-see-talk-36/</link><pubDate>Tue, 12 May 2015 17:07:28 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/05/12/interactive-data-web-sarah-bird-pycon-2015-must-see-talk-36/</guid><description>&lt;p>&lt;em>Part three of six in our &lt;a href="https://www.caktusgroup.com/blog/2015/04/28/pycon-2015-must-see-talk-favorites/">PyCon 2015 Must-See Series&lt;/a>, a weekly highlight of talks our staff enjoyed at PyCon.&lt;/em>&lt;/p>
&lt;p>Sarah Bird&amp;rsquo;s talk made me excited to try the Bokeh tutorials. The Bokeh library has very approachable methods for creating data visualizations inside of &lt;a href="http://www.w3schools.com/html/html5_canvas.asp" target="_blank" rel="noopener noreferrer">Canvas&lt;/a> elements all via Python. No javascript necessary.
Who should see this talk? Python developers who want to add a beautiful data visualization to their websites without writing any javascript. Also, Django developers who would like to use QuerySets to create data visualizations should watch the entire video, and then rewind to minute 8:50 for instructions on how to use Django QuerySets with a couple of lines of code.&lt;/p></description></item><item><title>Cakti Comment on Django's Class-based Views</title><link>https://www.caktusgroup.com/blog/2015/05/11/cakti-comment-djangos-class-based-views/</link><pubDate>Mon, 11 May 2015 12:47:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/05/11/cakti-comment-djangos-class-based-views/</guid><description>&lt;p>After &lt;a href="https://us.pycon.org" target="_blank" rel="noopener noreferrer">PyCon 2015&lt;/a>, we were surprised when we realized how many Cakti who attended had all been asked about Django&amp;rsquo;s &lt;a href="https://docs.djangoproject.com/en/dev/topics/class-based-views/" target="_blank" rel="noopener noreferrer">class-based views&lt;/a> (CBVs). We talked about why this might be, and this is a summary of what we came up with.&lt;/p></description></item><item><title>Beyond PEP 8 by Raymond Hettinger (PyCon 2015 Must-See Talk: 2/6)</title><link>https://www.caktusgroup.com/blog/2015/05/05/pycon-2015-must-see-talk-beyond-pep-8-raymond-hettinger-26/</link><pubDate>Tue, 05 May 2015 12:10:53 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/05/05/pycon-2015-must-see-talk-beyond-pep-8-raymond-hettinger-26/</guid><description>&lt;p>&lt;em>Part two of six in our &lt;a href="https://www.caktusgroup.com/blog/2015/04/28/pycon-2015-must-see-talk-favorites/">PyCon 2015 Must-See Series&lt;/a>, a weekly highlight of talks our staff enjoyed at PyCon.&lt;/em>&lt;/p>
&lt;p>I think everyone who codes in any language and uses any automated PEP-8 or linter sort of code checker should watch this talk. Unfortunately to go into any detail on what I learned (or really was reminded of) would ruin the effect of actually watching the talk. I&amp;rsquo;d encourage everyone to watch it. I came away from the talk wanting to figure out a way to incorporate its lesson into our Caktus development practices.&lt;/p></description></item><item><title>Caktus Wins Two Communicator Awards for PyCon 2015</title><link>https://www.caktusgroup.com/blog/2015/04/29/caktus-wins-two-communicator-awards-pycon-2015/</link><pubDate>Wed, 29 Apr 2015 19:59:42 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/04/29/caktus-wins-two-communicator-awards-pycon-2015/</guid><description>&lt;p>We’re thrilled to announce that we’ve won two Communicator Awards in this year’s 2015 Communicator Awards competition. With over 6000 entries received from across the US and around the world, the &lt;a href="http://www.communicatorawards.com/home/" target="_blank" rel="noopener noreferrer">Communicator Awards&lt;/a> is considered the largest and most competitive international awards program honoring creative excellence for communications professionals.&lt;/p></description></item><item><title>AIGA Durham Studio Tour Recap</title><link>https://www.caktusgroup.com/blog/2015/04/29/aiga-durham-studio-tour-recap/</link><pubDate>Wed, 29 Apr 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/04/29/aiga-durham-studio-tour-recap/</guid><description>&lt;div style="text-align:center;">&lt;object width="700" height="525">&lt;param name="flashvars" value="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Fcaktusgroup%2Fsets%2F72157649774559193%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Fcaktusgroup%2Fsets%2F72157649774559193%2F&amp;set_id=72157649774559193&amp;jump_to=">&lt;/param> &lt;param name="movie" value="https://www.flickr.com/apps/slideshow/show.swf?v=1811922554">&lt;/param>&lt;param name="allowFullScreen" value="true">&lt;/object>&lt;/div>
&lt;p>This was the first year Caktus Group participated in the &lt;a href="http://www.aigaraleighstudiotour.com/" target="_blank" rel="noopener noreferrer">AIGA studio tour&lt;/a> and the turnout was amazing. From 5:30 PM till the 9:00 PM close, we had visitors ranging from students to tenured professionals in the design and web development fields sharing stories and touring the newly renovated Caktus Group office. Members from the Caktus design, development, and management teams were present to field questions, give tours, and show select works from the past year.&lt;/p></description></item><item><title>Marketplace Radio Highlights How Service Info App Helps 1.5 Million Syrian Refugees</title><link>https://www.caktusgroup.com/blog/2015/04/28/npr-highlights-how-serviceinfo-app-helps-15-million-syrian-refugees/</link><pubDate>Tue, 28 Apr 2015 18:51:07 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/04/28/npr-highlights-how-serviceinfo-app-helps-15-million-syrian-refugees/</guid><description>&lt;center>&lt;i>Image Courtesy of UK Department for International Development [&lt;a href="http://creativecommons.org/licenses/by/2.0">CC BY 2.0&lt;/a>], &lt;a href="http://commons.wikimedia.org/wiki/File%3AStill_smiling_despite_the_hardship_they_face_(11174085546).jpg">via Wikimedia Commons&lt;/a>&lt;/i>&lt;/center>
&lt;p>Recently, one of our projects, Service Info, received national attention thanks to a &lt;a href="http://www.marketplace.org/topics/world/service-info-its-yelpbut-refugees" target="_blank" rel="noopener noreferrer">Marketplace interview&lt;/a>. American Public Media’s Kai Ryssdal spoke with International Rescue Committee CEO David Miliband about how Service Info is helping 1.5 million refugees of the Syrian conflict in Lebanon. The Syrian conflict is one of the worst ongoing humanitarian crises, accounting for the majority of the world’s refugees.&lt;/p></description></item><item><title>PyCon 2015 Talks: Our Must See Picks (1/6)</title><link>https://www.caktusgroup.com/blog/2015/04/28/pycon-2015-must-see-talk-favorites/</link><pubDate>Tue, 28 Apr 2015 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/04/28/pycon-2015-must-see-talk-favorites/</guid><description>&lt;p>Whether you couldn’t make it to PyCon this year, were busy attending one of the other amazing talks, or were simply too enthralled by the always popular “hallway track”, there are bound to be talks you missed out on. Thankfully, the PyCon staff does an amazing job not only organizing the conference for the attendees and the days of the conference, but also by producing recordings of all the talks for anyone who couldn’t attend. Even if you attended, you couldn’t have seen every talk, so these recordings are a great safety net.&lt;/p></description></item><item><title>Why did Caktus Group start Astro Code School?</title><link>https://www.caktusgroup.com/blog/2015/04/27/why-did-caktus-group-start-astro-code-school/</link><pubDate>Mon, 27 Apr 2015 19:55:38 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/04/27/why-did-caktus-group-start-astro-code-school/</guid><description>&lt;p>Our Astro Code School is now officially &lt;a href="http://astrocodeschool.com/apply/" target="_blank" rel="noopener noreferrer">accepting applications&lt;/a> to its twelve-week &lt;a href="http://astrocodeschool.com/classes/be102/" target="_blank" rel="noopener noreferrer">Python &amp;amp; Django Web Development&lt;/a> class for intermediate programmers! To kick off Astro’s opening, we asked Caktus’ CTO and co-founder Colin Copeland, who recently won a &lt;a href="https://www.caktusgroup.com/blog/2015/04/22/caktus-groups-colin-copeland-recognized-among-tbjs-40-under-40/">2015 Triangle Business Journal 40 Under 40 Leadership Award&lt;/a>, and Astro’s Director Brian Russell to reflect on the development of Astro as well as the role they see the school playing in the Django community.&lt;/p></description></item><item><title>Q1 2015 Charitable Giving</title><link>https://www.caktusgroup.com/blog/2015/04/23/q1-2015-charitable-giving/</link><pubDate>Thu, 23 Apr 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/04/23/q1-2015-charitable-giving/</guid><description>&lt;p>Though our projects often have us addressing issues around the globe, we like to turn our focus to the local level once a quarter with our charitable giving program. Each quarter we ask our employees to suggest charities and organizations that they are involved in or have had a substantive influence on their lives. It’s our way of supporting not only our own employees, but the wider community in which we live and work. This quarter we are pleased to be sending contributions to the following organizations:&lt;/p></description></item><item><title>Caktus Group's Colin Copeland Recognized Among TBJ’s 40 Under 40</title><link>https://www.caktusgroup.com/blog/2015/04/22/caktus-groups-colin-copeland-recognized-among-tbjs-40-under-40/</link><pubDate>Wed, 22 Apr 2015 14:56:43 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/04/22/caktus-groups-colin-copeland-recognized-among-tbjs-40-under-40/</guid><description>&lt;p>Caktus co-founder and Chief Technology Officer, Colin Copeland, is among an outstanding group of top business leaders to receive the Triangle Business Journal’s 2015 40 Under 40 Leadership Award. The award recognizes individuals for their remarkable contributions to their organizations and to the community.&lt;/p></description></item><item><title>PyCon 2015 ReCap</title><link>https://www.caktusgroup.com/blog/2015/04/21/pycon-2015-recap/</link><pubDate>Tue, 21 Apr 2015 19:55:57 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/04/21/pycon-2015-recap/</guid><description>&lt;p>The best part of PyCon? Definitely the people. This is my fifth PyCon, so I’ve had a chance to see the event evolve, especially with the fantastic leadership of Ewa Jodlowska and Diana Clarke. We were also lucky enough to work with them on the PyCon 2015 website. This year we were once again located in the Centre-Ville section of Montreal, close to lots of great restaurants and entertainment.&lt;/p></description></item><item><title>Now Launching: Astro Code School for Django and Python Education</title><link>https://www.caktusgroup.com/blog/2015/04/20/now-launching-astro-code-school-django-and-python-education/</link><pubDate>Mon, 20 Apr 2015 16:23:28 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/04/20/now-launching-astro-code-school-django-and-python-education/</guid><description>&lt;p>Since moving to Durham in Fall 2014, we&amp;rsquo;ve been busy here at Caktus. We just finished renovating the first floor of our headquarters to bring the Triangle&amp;rsquo;s (and East Coast&amp;rsquo;s!) first Django and Python code school, &lt;a href="http://astrocodeschool.com/" target="_blank" rel="noopener noreferrer">Astro Code School&lt;/a>. We&amp;rsquo;re proud to say that the school is now officially open and we&amp;rsquo;ll be celebrating with a public launch party on May 1st.&lt;/p></description></item><item><title>Epic Allies Team Members to Speak at Innovate your Cool</title><link>https://www.caktusgroup.com/blog/2015/04/16/epic-allies-team-members-speak-innovate-your-cool/</link><pubDate>Thu, 16 Apr 2015 14:10:43 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/04/16/epic-allies-team-members-speak-innovate-your-cool/</guid><description>&lt;p>&lt;a href="http://aocfestival.org/" target="_blank" rel="noopener noreferrer">The Art of Cool festival&lt;/a> is a staple of spring happenings in the Triangle. A three-day festival to present, promote, and preserve jazz and jazz-influenced music, The Art of Cool always promises to be a great time for those interested in music, art, and delicious food from Durham’s many food trucks. But what does music have to do with programming and app development? This year, Caktus Group is helping to sponsor a new portion of the festival called &lt;a href="http://aocfestival.org/iyc/" target="_blank" rel="noopener noreferrer">Innovate Your Cool&lt;/a>. Innovate Your Cool celebrates the power of cool ideas, advancing innovative thinking by bringing together intelligent people with radically new ideas.&lt;/p></description></item><item><title>From Intern to Professional Developer</title><link>https://www.caktusgroup.com/blog/2015/04/15/intern-professional-developer/</link><pubDate>Wed, 15 Apr 2015 19:51:05 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/04/15/intern-professional-developer/</guid><description>&lt;p>Quite often, people undertake internships at the beginning of their career. For me, it was a mid-career direction change and a leap of faith. In order to facilitate this career move, I took a Rails Engineering class at The Iron Yard in the fall of 2014. I had limited experience as a developer and no experience in Django prior to my internship at Caktus. Because of the structure and support Caktus provided and my enthusiasm for becoming a developer, my internship turned out to be the ideal way for me to make the transition from a novice to a professional developer.&lt;/p></description></item><item><title>How to Find Cakti at PyCon 2015</title><link>https://www.caktusgroup.com/blog/2015/04/07/how-find-cakti-pycon-2015/</link><pubDate>Tue, 07 Apr 2015 13:09:46 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/04/07/how-find-cakti-pycon-2015/</guid><description>&lt;p>We’re very excited for PyCon 2015 and can’t wait for the fun to begin. &lt;a href="http://pycon.blogspot.com/2015/01/a-look-at-how-caktus-group-built-pycon.html" target="_blank" rel="noopener noreferrer">Working on the PyCon website&lt;/a> stoked our excitement early, so it’s almost surreal that PyCon is finally here. With an overwhelming number of great events, we wanted to highlight ones Caktus and our staff will be taking part in. Below you’ll find a list of where we’ll be each day. Please join us!&lt;/p></description></item><item><title>DiamondHacks 2015 Recap</title><link>https://www.caktusgroup.com/blog/2015/04/02/diamondhacks-2015/</link><pubDate>Thu, 02 Apr 2015 13:50:21 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/04/02/diamondhacks-2015/</guid><description>&lt;p>&lt;sub>&lt;em>Image via &lt;a href="https://www.facebook.com/ncsudiamondhacks/photos/pb.584970504980863.-2207520000.1427984192./618909331586980/?type=3&amp;amp;theater" target="_blank" rel="noopener noreferrer">Diamond Hacks Facebook Page&lt;/a>&lt;/em>&lt;sub>&lt;/p>
&lt;p>This past weekend, Technical Director Mark Lavin came out to support &lt;a href="http://www.ncsudiamondhacks.com/" target="_blank" rel="noopener noreferrer">DiamondHacks&lt;/a>, NCSU’s first ever hackathon and conference event for women interested in computer science. Not only is NCSU Mark’s alma mater, but he’s also a strong supporter of co-organizer &lt;a href="http://www.caktusgroup.com/blog/2014/12/03/caktus-hosts-lightweight-django-book-launch-girl-develop-it/" target="_blank" rel="noopener noreferrer">Girl Develop It RDU (GDI)&lt;/a>, of which Caktus is an official sponsor.&lt;/p></description></item><item><title>Welcome to Our New Staff Members</title><link>https://www.caktusgroup.com/blog/2015/03/27/welcome-our-new-staff-members/</link><pubDate>Fri, 27 Mar 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/03/27/welcome-our-new-staff-members/</guid><description>&lt;p>We’ve hit one of our greatest growth points yet in 2015, adding nine new team members since January to handle our increasing project load. There are many exciting things on the horizon for Caktus and &lt;a href="http://www.caktusgroup.com/casestudies/" target="_blank" rel="noopener noreferrer">our clients&lt;/a>, so it’s wonderful to have a few more hands on deck.&lt;/p></description></item><item><title>Astro Code School Now Accepting Applications - Intermediate Django + Python</title><link>https://www.caktusgroup.com/blog/2015/03/20/astro-code-school-now-accepting-applications-intermediate-django-python/</link><pubDate>Fri, 20 Mar 2015 15:49:52 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/03/20/astro-code-school-now-accepting-applications-intermediate-django-python/</guid><description>&lt;p>I&amp;rsquo;m really happy to officially announce the first &lt;strong>Python and Django Web Engineering&lt;/strong> class at &lt;a href="http://astrocodeschool.com" target="_blank" rel="noopener noreferrer">Astro Code School&lt;/a>. I&amp;rsquo;ll outline some details here and you can also find them on our &lt;a href="http://astrocodeschool.com/classes/" target="_blank" rel="noopener noreferrer">classes page&lt;/a>.&lt;/p></description></item><item><title>Why RapidSMS for SMS Application Development</title><link>https://www.caktusgroup.com/blog/2015/03/16/why-rapidsms-SMS-applications/</link><pubDate>Mon, 16 Mar 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/03/16/why-rapidsms-SMS-applications/</guid><description>&lt;p>Caktus has been involved in quite a few projects (&lt;a href="http://www.caktusgroup.com/case-study/libya-SMS-text-message-voter-registration/" target="_blank" rel="noopener noreferrer">Libyan voter registration&lt;/a>, &lt;a href="http://www.caktusgroup.com/case-study/Project-Mwana/" target="_blank" rel="noopener noreferrer">UNICEF Project Mwana&lt;/a>, and several others) that include text messaging (a.k.a. Short Message Service, or SMS), and we always use RapidSMS as one of our tools. We&amp;rsquo;ve also invested our own resources in &lt;a href="http://www.caktusgroup.com/blog/2014/02/05/caktus-completes-rapidsms-community-coordinator-development-unicef/" target="_blank" rel="noopener noreferrer">supporting and extending RapidSMS&lt;/a>.&lt;/p></description></item><item><title>Caktus is Durham Living Wage Certified</title><link>https://www.caktusgroup.com/blog/2015/03/10/caktus-durham-living-wage-certified/</link><pubDate>Tue, 10 Mar 2015 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/03/10/caktus-durham-living-wage-certified/</guid><description>&lt;p>Caktus Group recently became a Durham Living Wage Certified Employer! The &lt;a href="http://durhamlivingwage.org" target="_blank" rel="noopener noreferrer">Durham Living Wage Certification Program&lt;/a>is a project of the &lt;a href="http://www.durhampa.org/" target="_blank" rel="noopener noreferrer">Durham People’s Alliance&lt;/a>. The group asks that local businesses voluntarily certify themselves as living wage employers in order to identify, acknowledge, and celebrate those businesses. A living wage is the amount of income needed for an individual to meet her or his basic needs without public or private assistance. Caktus is proud to be a part of efforts to build a just and sustainable local economy.&lt;/p></description></item><item><title>PyCon 2015 Ticket Giveaway</title><link>https://www.caktusgroup.com/blog/2015/02/24/pycon-2015-ticket-giveaway/</link><pubDate>Tue, 24 Feb 2015 21:43:36 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/02/24/pycon-2015-ticket-giveaway/</guid><description>&lt;p>Caktus is giving away a PyCon 2015 ticket, valued at $350. We love going to &lt;a href="https://us.pycon.org/2015/" target="_blank" rel="noopener noreferrer">PyCon&lt;/a> every year. It’s the largest gathering of developers using &lt;a href="http://www.nature.com/news/programming-pick-up-python-1.16833" target="_blank" rel="noopener noreferrer">Python&lt;/a>, the open source programming language that Caktus relies on. This year, it’ll be held April 8th-16th at the beautiful Palais des congrès de Montréal (the inspiration we used to &lt;a href="http://pycon.blogspot.com/2015/01/a-look-at-how-caktus-group-built-pycon.html" target="_blank" rel="noopener noreferrer">design the website&lt;/a>).&lt;/p></description></item><item><title>Triangle Open Data Day and Code Across</title><link>https://www.caktusgroup.com/blog/2015/02/17/triangle-open-data-day-and-code-across/</link><pubDate>Tue, 17 Feb 2015 14:56:22 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/02/17/triangle-open-data-day-and-code-across/</guid><description>&lt;p>International Open Data Day is this weekend, February 21st and 22nd. As part of the festivities, &lt;a href="http://www.codeforamerica.org/" target="_blank" rel="noopener noreferrer">Code for America&lt;/a> is hosting its 4th annual &lt;a href="http://www.codeforamerica.org/events/codeacross-2015/" target="_blank" rel="noopener noreferrer">CodeAcross&lt;/a>. The event aims to unite developers across the country for a day of civic coding, creating tools that make government services simple, effective, easy to use. Put simply, “the goal of CodeAcross is to activate the Code for America network and inspire residents everywhere to get actively involved in their community.”&lt;/p></description></item><item><title>Astro Code School Tapped to Teach App Development at UNC Journalism School</title><link>https://www.caktusgroup.com/blog/2015/01/29/astro-code-school-tapped-teach-app-development-unc-journalism-school/</link><pubDate>Thu, 29 Jan 2015 13:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/01/29/astro-code-school-tapped-teach-app-development-unc-journalism-school/</guid><description>&lt;p>Our own &lt;a href="http://www.caktusgroup.com/about/caleb-smith" target="_blank" rel="noopener noreferrer">Caleb Smith&lt;/a>, &lt;a href="http://www.astrocodeschool.com" target="_blank" rel="noopener noreferrer">Astro Code School&lt;/a> lead instructor, is teaching this semester at UNC’s School of Journalism, one of the nation’s leading journalism schools. He’s sharing his enthusiasm for Django application development with undergraduate and graduate media students in a 500-level course, Advanced Interactive Development.&lt;/p></description></item><item><title>PyCon Blog Features Caktus Group</title><link>https://www.caktusgroup.com/blog/2015/01/27/pycon-blog-features-caktus-group/</link><pubDate>Tue, 27 Jan 2015 21:07:10 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/01/27/pycon-blog-features-caktus-group/</guid><description>&lt;p>Brian Curtis, the director of the Python Software Foundation, recently interviewed and featured Caktus on the &lt;a href="http://pycon.blogspot.com/2015/01/a-look-at-how-caktus-group-built-pycon.html" target="_blank" rel="noopener noreferrer">PyCon website&lt;/a>. PyCon is the premiere event for those of us within the Python and Django open source communities. Brian writes about our work designing the PyCon 2015 website, our efforts in Libya, and what’s on the horizon in 2015. We&amp;rsquo;re excited about this recognition!&lt;/p></description></item><item><title>Django Logging Configuration: How the Default Settings Interfere with Yours</title><link>https://www.caktusgroup.com/blog/2015/01/27/Django-Logging-Configuration-logging_config-default-settings-logger/</link><pubDate>Tue, 27 Jan 2015 16:04:04 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/01/27/Django-Logging-Configuration-logging_config-default-settings-logger/</guid><description>&lt;p>My colleague &lt;a href="http://www.caktusgroup.com/about/vinod-kurup/" target="_blank" rel="noopener noreferrer">Vinod&lt;/a> recently found the answer on Stack Overflow to something that&amp;rsquo;s been bugging me for a long time - why do my Django logging configurations so often not do what I think they should?&lt;/p></description></item><item><title>We’re Launching a Django code school: Astro Code School</title><link>https://www.caktusgroup.com/blog/2015/01/26/were-launching-django-code-school-astro-code-school/</link><pubDate>Mon, 26 Jan 2015 13:15:28 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/01/26/were-launching-django-code-school-astro-code-school/</guid><description>&lt;p>One of the best ways to grow the Django community is to have more high-quality Django developers. The good news is that we’ve seen sharply increasing demand for Django web applications. The challenge that we and many other firms face is that there’s much higher demand than there is supply: there aren’t enough high-quality Django developers. We’ve talked about this issue intensely internally and with our friends while at DjangoCon and PyCon. We decided that we can offer at least one solution: a new Django-focused code school.&lt;/p></description></item><item><title>Why I Love Technical Blogging</title><link>https://www.caktusgroup.com/blog/2015/01/23/why-i-love-technical-blogging/</link><pubDate>Fri, 23 Jan 2015 16:06:51 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/01/23/why-i-love-technical-blogging/</guid><description>&lt;p>I love writing blog posts, and today I’m setting out to do something I’ve never tried before: write a blog post about writing blog posts. A big part of our mission at Caktus is to foster and help grow the Python and Django development communities, both locally and nationally. Part of how we’ve tried to accomplish this in the past is through hosting development sprints, sponsoring and attending conferences such as PyCon and DjangoCon, and building a knowledge base of common problems in Python and Django development in our blog. Many in the Django community first get to know Caktus through our blog, and it’s both gratifying and humbling when I meet someone at a conference and the person thanks me for a post Caktus wrote that helped him or her solve a technical problem at some point in the past.&lt;/p></description></item><item><title>Caktus is looking for a Web Design Director</title><link>https://www.caktusgroup.com/blog/2015/01/22/caktus-looking-web-design-director/</link><pubDate>Thu, 22 Jan 2015 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/01/22/caktus-looking-web-design-director/</guid><description>&lt;p>Over the last two years Caktus’ &lt;a href="https://dribbble.com/caktusgroup" target="_blank" rel="noopener noreferrer">design portfolio&lt;/a> has rapidly been growing. We’ve taken on new &lt;a href="https://us.pycon.org/2015/" target="_blank" rel="noopener noreferrer">projects&lt;/a> &lt;a href="http://www.ncgetcovered.org/" target="_blank" rel="noopener noreferrer">primarily&lt;/a> focused on design and have &lt;a href="http://www.caktusgroup.com/blog/2014/11/12/weve-won-two-w3-awards-creative-excellence-1/" target="_blank" rel="noopener noreferrer">received community recognition&lt;/a> for those efforts. We are happy to have grown our design capabilities to match the level of quality we demand from our Django developers. We have found it’s important to have strength on both sides of the table as each side challenges the other and forces the final product of our process to be as high quality as possible.&lt;/p></description></item><item><title>Making a Difference for Teens and Young Adults Living with HIV</title><link>https://www.caktusgroup.com/blog/2015/01/21/making-difference-teens-and-young-adults-living-hiv/</link><pubDate>Wed, 21 Jan 2015 14:00:33 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/01/21/making-difference-teens-and-young-adults-living-hiv/</guid><description>&lt;p>Caktus has always pursued projects that &lt;a href="http://www.caktusgroup.com/case-study/ncgetcoveredorg/" target="_blank" rel="noopener noreferrer">make&lt;/a> a &lt;a href="http://www.caktusgroup.com/case-study/libya-SMS-text-message-voter-registration/" target="_blank" rel="noopener noreferrer">difference&lt;/a> in the &lt;a href="http://www.rescue.org/sites/default/files/resource-file/IRC%20CTSv3%20RFP.pdf" target="_blank" rel="noopener noreferrer">world&lt;/a>, particularly around &lt;a href="http://www.caktusgroup.com/case-study/Project-Mwana/" target="_blank" rel="noopener noreferrer">HIV/AIDs&lt;/a>. Now we’re hoping to provide a technology solution to a population that’s notoriously difficult to treat: teens and young adults living with HIV. They’re disproportionately impacted by new infections and, in the South in particular, those with HIV/AIDs have the &lt;a href="http://today.duke.edu/2015/01/southernaids" target="_blank" rel="noopener noreferrer">lowest survival rates&lt;/a> of any group living with the disease.&lt;/p></description></item><item><title>Webinar: Testing Client-Side Applications with Django</title><link>https://www.caktusgroup.com/blog/2015/01/20/webinar-testing-client-side-applications-django/</link><pubDate>Tue, 20 Jan 2015 16:40:09 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/01/20/webinar-testing-client-side-applications-django/</guid><description>&lt;p>Technical Director &lt;a href="http://www.caktusgroup.com/about/mark-lavin/" target="_blank" rel="noopener noreferrer">Mark Lavin&lt;/a> will be hosting a free &lt;a href="http://www.oreilly.com/pub/e/3302" target="_blank" rel="noopener noreferrer">O’Reilly webinar&lt;/a> today at 4PM EST or 1PM PT on Testing Client-Side Applications with Django. Mark says testing is one of the most popular question topics he receives. It’s also a topic near and dear to Caktus’ quality-loving heart. Mark’s last webinar garnered more than 500 viewers, so sign up quick!&lt;/p></description></item><item><title>The Herald-Sun: Durham Firms MDC and Caktus Group Team Up to Assist in Healthcare Enrollment</title><link>https://www.caktusgroup.com/blog/2015/01/19/herald-sun-durham-firms-mdc-and-caktus-group-team-assist-healthcare-enrollment/</link><pubDate>Mon, 19 Jan 2015 19:43:50 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/01/19/herald-sun-durham-firms-mdc-and-caktus-group-team-assist-healthcare-enrollment/</guid><description>&lt;p>We’re proud of our collaboration with Durham-based non-profit &lt;a href="http://mdcinc.org/" target="_blank" rel="noopener noreferrer">MDC&lt;/a> to create the health insurance exchange alternative for North Carolina, &lt;a href="http://www.ncgetcovered.org/" target="_blank" rel="noopener noreferrer">NCGetCovered.org&lt;/a>. The site was recently featured in the &lt;a href="http://www.heraldsun.com/news/showcase/x1351410356/Durham-firms-assist-with-healthcare-enrollment" target="_blank" rel="noopener noreferrer">Herald-Sun&lt;/a>. We’re excited to see our commitment to social good making an impact in our local community. Don’t forget the open enrollment deadline for health coverage is February 15th!&lt;/p></description></item><item><title>The Triangle Business Journal: Fighting the South's Low Survival Rate for Those with HIV/AIDS</title><link>https://www.caktusgroup.com/blog/2015/01/19/triangle-business-journal-fighting-souths-low-survival-rate-those-hivaids/</link><pubDate>Mon, 19 Jan 2015 18:26:50 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/01/19/triangle-business-journal-fighting-souths-low-survival-rate-those-hivaids/</guid><description>&lt;p>The &lt;a href="http://www.bizjournals.com/triangle/news/2015/01/19/south-including-n-c-has-a-lower-hiv-aids-survival.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A&amp;#43;industry_6&amp;#43;%28Industry&amp;#43;Health&amp;#43;Care%29" target="_blank" rel="noopener noreferrer">Triangle Business Journal&lt;/a> recognized Caktus’ work in the fight against &lt;a href="http://www.caktusgroup.com/blog/2015/01/21/making-difference-teens-and-young-adults-living-hiv/" target="_blank" rel="noopener noreferrer">HIV/AIDS&lt;/a> in an &lt;a href="http://www.bizjournals.com/triangle/news/2015/01/19/south-including-n-c-has-a-lower-hiv-aids-survival.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A&amp;#43;industry_6&amp;#43;%28Industry&amp;#43;Health&amp;#43;Care%29" target="_blank" rel="noopener noreferrer">important article&lt;/a> discussing lower survival rates for those diagnosed with the disease in the southern United States. The article lauds our work on the medication adherence app Epic Allies as innovative in the effort to develop and maintain consistent medication habits for those living with HIV/AIDS.&lt;/p></description></item><item><title>Announcing Durham TriPython Project Nights @ Caktus Group</title><link>https://www.caktusgroup.com/blog/2015/01/19/announcing-durham-tripython-project-nights-caktus-group/</link><pubDate>Mon, 19 Jan 2015 15:05:02 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/01/19/announcing-durham-tripython-project-nights-caktus-group/</guid><description>&lt;p>We’re happy to announce that &lt;a href="http://www.meetup.com/tripython/" target="_blank" rel="noopener noreferrer">TriPython&lt;/a> will be hosting their project nights at our new offices in Durham. This means now there’s a TriPython project night every single week, in every major Triangle city every month, on most weekdays. It’s great to see that the Triangle Python community has gotten so large.&lt;/p></description></item><item><title>PyCoder's Weekly: Caktus Included in Top Projects and Articles of 2014</title><link>https://www.caktusgroup.com/blog/2015/01/16/pycoders-weekly-caktus-included-top-projects-and-articles-2014/</link><pubDate>Fri, 16 Jan 2015 20:02:09 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/01/16/pycoders-weekly-caktus-included-top-projects-and-articles-2014/</guid><description>&lt;p>The weekly Python e-mail newsletter, &lt;a href="http://pycoders.com/" target="_blank" rel="noopener noreferrer">Pycoder’s Weekly&lt;/a> included Caktus Developer Dan Poirier’s post, &lt;a href="http://www.caktusgroup.com/blog/2014/09/29/celery-production/" target="_blank" rel="noopener noreferrer">Celery in Production&lt;/a> on their list of the best articles and projects of 2014! &lt;a href="http://pycoders.com/2014/" target="_blank" rel="noopener noreferrer">Take a look at their list&lt;/a> and be sure to revisit &lt;a href="http://www.caktusgroup.com/blog/2014/09/29/celery-production/" target="_blank" rel="noopener noreferrer">Dan&amp;rsquo;s post&lt;/a>.&lt;/p></description></item><item><title>The Triangle Business Journal: Caktus is Growing!</title><link>https://www.caktusgroup.com/blog/2015/01/12/triangle-business-journal-caktus-growing/</link><pubDate>Mon, 12 Jan 2015 19:57:25 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/01/12/triangle-business-journal-caktus-growing/</guid><description>&lt;p>The &lt;a href="http://www.bizjournals.com/triangle/blog/techflash/2015/01/durhams-caktus-consulting-group-hires-fueled-by.html" target="_blank" rel="noopener noreferrer">Triangle Business Journal&lt;/a> recently featured Caktus’ addition of seven full-time jobs to the local economy. This growth is a direct result of increasing interest in Django powered web applications as well as a grant from the National Institutes of Health. It’s no secret we’re filling up our new Morris Street building with &lt;a href="http://www.caktusgroup.com/about/" target="_blank" rel="noopener noreferrer">smart, sharp, passionate people&lt;/a>.&lt;/p></description></item><item><title>Caktus Libya Project Makes Top 10 Stories of 2014 for Technology Tank</title><link>https://www.caktusgroup.com/blog/2015/01/06/caktus-libya-project-makes-top-10-stories-2014-technology-tank/</link><pubDate>Tue, 06 Jan 2015 18:07:44 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2015/01/06/caktus-libya-project-makes-top-10-stories-2014-technology-tank/</guid><description>&lt;p>Technology Tank, a communications and tech think tank, recently ranked their &lt;a href="http://technologytank.org/2015/01/01/tech-tank-top-10-for-2014/" target="_blank" rel="noopener noreferrer">top 10 stories of 2014&lt;/a> and Caktus made the cut. Earlier this year, we shared a story about &lt;a href="http://technologytank.org/2014/07/02/how-libyas-election-process-is-better-than-the-united-statess/" target="_blank" rel="noopener noreferrer">Libya’s SMS voter registration system&lt;/a>. We’re happy to learn that other people were just as excited about our work enfranchising Libyan voters as we are! The list is based on number of visits to the story.&lt;/p></description></item><item><title>Caktus Hosts Lightweight Django Book Launch with Girl Develop It</title><link>https://www.caktusgroup.com/blog/2014/12/03/caktus-hosts-lightweight-django-book-launch-girl-develop-it/</link><pubDate>Thu, 04 Dec 2014 03:13:42 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/12/03/caktus-hosts-lightweight-django-book-launch-girl-develop-it/</guid><description>&lt;p>With &lt;a href="http://www.meetup.com/Girl-Develop-It-RDU/" target="_blank" rel="noopener noreferrer">Girl Develop It RDU&lt;/a>, we celebrated the launch of &lt;em>Lightweight Django&lt;/em> (O&amp;rsquo;Reilly) with the authors, Caktus Technical Director &lt;a href="http://www.caktusgroup.com/about/mark-lavin/" target="_blank" rel="noopener noreferrer">Mark Lavin&lt;/a> and Caktus alum Julia Elman. Sylvia Richardson of Girl Develop It MCed. The event was open to the public and so popular we kept recounting the RSVPs and fretting over the fire code. But, phew, we were good. In attendance were friends, family, fellow Cakti, and Django fans from around the Triangle.&lt;/p></description></item><item><title>Q4 ShipIt Day: Dedicated to Creativity</title><link>https://www.caktusgroup.com/blog/2014/11/20/q4-shipit-day/</link><pubDate>Thu, 20 Nov 2014 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/11/20/q4-shipit-day/</guid><description>&lt;p>This October, nearly everyone at Caktus took a break from their usual projects to take part in Caktus’s 8th ShipIt Day. Apart from a few diligent individuals who couldn’t afford to spare any time from urgent responsibilities, nearly everyone took a break to work and collaborate on creative and experimental projects, with the aim of trying something new and ideally seeing a project through from start to finish in the space of a day and a half.&lt;/p></description></item><item><title>Supporting Increased Healthcare Access with NCGetCovered.org</title><link>https://www.caktusgroup.com/blog/2014/11/13/supporting-increased-healthcare-access-ncgetcoveredorg/</link><pubDate>Thu, 13 Nov 2014 16:53:49 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/11/13/supporting-increased-healthcare-access-ncgetcoveredorg/</guid><description>&lt;p>We’ve launched &lt;a href="http://www.ncgetcovered.org" target="_blank" rel="noopener noreferrer">NCGetCovered.org&lt;/a>, a site dedicated to helping North Carolinians gain access to health insurance. As many know, enrolling in health insurance can feel daunting. NCGetcovered.org aims to simplify that process by centralizing enrollment information and great resources like live help. The site is launching ahead of the November 15th open enrollment period for the federal healthcare exchange (&lt;a href="http://www.healthcare.gov" target="_blank" rel="noopener noreferrer">healthcare.gov&lt;/a>).&lt;/p></description></item><item><title>Open Data Project in Durham - Thumbs Up to Open Government!</title><link>https://www.caktusgroup.com/blog/2014/11/13/open-data-project-durham-open-government/</link><pubDate>Thu, 13 Nov 2014 14:59:56 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/11/13/open-data-project-durham-open-government/</guid><description>&lt;p>In exciting local news, Durham and Durham County are launching a new site dedicated to centralizing public data in Summer 2015. Their press release mentions a health sanitation app Code for Durham built as a model of civic engagement with open data. Our own co-founder and CTO, &lt;a href="http://www.caktusgroup.com/about/colin-copeland/" target="_blank" rel="noopener noreferrer">Colin Copeland&lt;/a>, is co-captain of Code for Durham, a volunteer organization dedicated to building apps that improve government transparency.&lt;/p></description></item><item><title>We've Won Two W3 Awards for Creative Excellence on the Web!</title><link>https://www.caktusgroup.com/blog/2014/11/12/weve-won-two-w3-awards-creative-excellence-1/</link><pubDate>Wed, 12 Nov 2014 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/11/12/weve-won-two-w3-awards-creative-excellence-1/</guid><description>&lt;p>We’re honored to announce that we’ve won two W3 Silver Awards for Creative Excellence on the Web. The awards were given in recognition of our homepage redesign and DjangonCon 2014. Many thanks to Open Bastion and, by extension, the Django Software Foundation for selecting us to build the DjangoCon website. Also many thanks to our hardworking team of designers, developers and project managers that worked on these projects: &lt;a href="http://www.caktusgroup.com/about/dan-poirier" target="_blank" rel="noopener noreferrer">Dan&lt;/a>, &lt;a href="http://www.caktusgroup.com/about/daryl-katz-riethof" target="_blank" rel="noopener noreferrer">Daryl&lt;/a>, &lt;a href="http://www.caktusgroup.com/about/david-ray" target="_blank" rel="noopener noreferrer">David&lt;/a>, Michael, &lt;a href="http://www.caktusgroup.com/about/rebecca-muraya" target="_blank" rel="noopener noreferrer">Rebecca&lt;/a>, and Trevor!&lt;/p></description></item><item><title>Using Amazon S3 to Store your Django Site's Static and Media Files</title><link>https://www.caktusgroup.com/blog/2014/11/10/Using-Amazon-S3-to-store-your-Django-sites-static-and-media-files/</link><pubDate>Mon, 10 Nov 2014 16:28:11 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/11/10/Using-Amazon-S3-to-store-your-Django-sites-static-and-media-files/</guid><description>&lt;p>&lt;em>Editor's note: This post was updated in September 2017.&lt;/em>&lt;/p>
&lt;h2 id="using-amazon-s3-to-store-your-django-sites-static-and-media-files">Using Amazon S3 to Store your Django Site's Static and Media Files&lt;/h2>
&lt;p>Storing your Django site's static and media files on Amazon S3, instead
of serving them yourself, can improve site performance. It frees your
servers from handling static files themselves, lets you scale your
servers easier by keeping media files in a common place, and is a
necessary step to using Amazon CloudFront as a Content Delivery Network
(CDN).&lt;/p></description></item><item><title>Webcast: Creating Enriching Web Applications with Django and Backbone.js</title><link>https://www.caktusgroup.com/blog/2014/11/04/enriching-web-apps-django-backbonejs/</link><pubDate>Tue, 04 Nov 2014 15:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/11/04/enriching-web-apps-django-backbonejs/</guid><description>&lt;p>&lt;strong>Update: The live webcast is now available at &lt;a href="http://www.oreilly.com/pub/e/3154" target="_blank" rel="noopener noreferrer">O&amp;rsquo;Reilly Media&lt;/a>&lt;/strong>&lt;/p>
&lt;p>Our technical director, Mark Lavin, will be giving a tutorial on Django and Backbone.js during a free webcast for O’Reilly Media tomorrow, November 6th, 1pm EST. There will be demos and a discussion of common stumbling blocks when building rich client apps.&lt;/p></description></item><item><title>Celery in Production</title><link>https://www.caktusgroup.com/blog/2014/09/29/celery-production/</link><pubDate>Mon, 29 Sep 2014 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/09/29/celery-production/</guid><description>&lt;p>(Thanks to &lt;a href="https://www.caktusgroup.com/about/mark-lavin/">Mark Lavin&lt;/a> for significant
contributions to this post.)&lt;/p>
&lt;p>In a &lt;a href="https://www.caktusgroup.com/blog/2014/06/23/scheduling-tasks-celery/">previous post&lt;/a>, we
introduced using Celery to schedule tasks.&lt;/p>
&lt;p>In this post, we address things you might need to consider when planning
how to deploy Celery in production.&lt;/p></description></item><item><title>Improving Infant and Maternal Health in Rwanda and Zambia with RapidSMS</title><link>https://www.caktusgroup.com/blog/2014/09/19/rapidsms-africa/</link><pubDate>Fri, 19 Sep 2014 21:19:06 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/09/19/rapidsms-africa/</guid><description>&lt;center>&lt;p style="font-size: 80%;">&lt;i>Image courtesy of &lt;a href="http://unicefstories.org/2013/11/13/the-mobile-phone-rwandas-key-weapon-in-making-maternal-deaths-history/">UNICEF&lt;/a>, the funders of this project.&lt;/i>&lt;/p>&lt;/center>
&lt;p>I have had the good fortune of working internationally on mobile health applications due to Caktus&amp;rsquo; focus on public health. Our public health work often uses &lt;a href="http://rapidsms.org" target="_blank" rel="noopener noreferrer">RapidSMS&lt;/a>, a free and open-source Django powered framework for dynamic data collection, logistics coordination and communication, leveraging basic short message service (SMS) mobile phone technology. I was able to work on two separate projects tracking data related to the &lt;a href="http://www.thousanddays.org/" target="_blank" rel="noopener noreferrer">1000 days&lt;/a> between a woman&amp;rsquo;s pregnancy and the child&amp;rsquo;s second birthday. Monitoring mothers and children during this time frame is critical as there are many factors that, when monitored properly, can decrease the mortality rates for both mother and child. Both of these projects presented interesting challenges and resulted in a number of takeaways worth further discussion.&lt;/p></description></item><item><title>Q3 Charitable Giving</title><link>https://www.caktusgroup.com/blog/2014/09/17/Q3-2014-Charitable-Giving/</link><pubDate>Wed, 17 Sep 2014 20:11:36 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/09/17/Q3-2014-Charitable-Giving/</guid><description>&lt;p>Our client social impact projects continue here at Caktus, with work presently being done in Libya, Nigeria, Syria, Turkey, Iraq and the US. But every quarter, we pause to consider the excellent nonprofits that our employees volunteer for and, new this quarter, that they have identified as having a substantive influence on their lives. The following list represents employee-nominated nonprofits which we are giving to in alphabetical order:&lt;/p></description></item><item><title>DjangoCon 2014: Recap</title><link>https://www.caktusgroup.com/blog/2014/09/08/djangocon-1/</link><pubDate>Mon, 08 Sep 2014 17:44:43 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/09/08/djangocon-1/</guid><description>&lt;p>Caktus had a great time at DjangoCon in Portland this year! We met up with old friends and new. The following staff gave talks (we’ll update this post with videos as soon as they’re available):&lt;/p></description></item><item><title>DjangoCon Ticket Giveaway!</title><link>https://www.caktusgroup.com/blog/2014/08/14/djangocon-2014-ticket-giveaway/</link><pubDate>Thu, 14 Aug 2014 18:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/08/14/djangocon-2014-ticket-giveaway/</guid><description>&lt;p>&lt;strong>Update: Congratulations to @dmpayton for winning this giveaway!&lt;/strong>&lt;/p>
&lt;p>Caktus is giving away a &lt;a href="http://www.djangocon.us/" target="_blank" rel="noopener noreferrer">DjangoCon&lt;/a> ticket valued at $850! DjangoCon is the main US Django conference and it’s returning to Portland this year, August 30 - September 4th. Meet fellow Django developers, learn what others are doing, and have a good time!&lt;/p></description></item><item><title>PyOhio Recap: Celery with Python</title><link>https://www.caktusgroup.com/blog/2014/08/11/PyOhio-Recap-Celery-with-Python/</link><pubDate>Mon, 11 Aug 2014 11:07:39 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/08/11/PyOhio-Recap-Celery-with-Python/</guid><description>&lt;p>&lt;a href="http://www.caktusgroup.com/about/caleb-smith" target="_blank" rel="noopener noreferrer">Caleb Smith&lt;/a> recently gave a talk, “Intro to Celery,” at PyOhio (video below). Celery is a pretty &lt;a href="http://www.caktusgroup.com/blog/search/?q=celery" target="_blank" rel="noopener noreferrer">popular topic&lt;/a> for us here at Caktus. We use it often in our client work and find it very handy. So we were happy Caleb was out in the world, promoting its use. We sat down with him to hear more about &lt;a href="http://www.pyohio.org/" target="_blank" rel="noopener noreferrer">PyOhio&lt;/a> and Celery.&lt;/p></description></item><item><title>Caleb Smith to Guest Lecture at Iron Yard Academy</title><link>https://www.caktusgroup.com/blog/2014/08/06/caleb-smith-to-guest-lecture-at-iron-yard-durham/</link><pubDate>Wed, 06 Aug 2014 20:24:48 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/08/06/caleb-smith-to-guest-lecture-at-iron-yard-durham/</guid><description>&lt;p>&lt;a href="http://www.caktusgroup.com/about/caleb-smith/" target="_blank" rel="noopener noreferrer">Caleb Smith&lt;/a>, a developer at Caktus, will be guest lecturing tomorrow to the inaugral class at the &lt;a href="http://academy.smashingboxes.com/" target="_blank" rel="noopener noreferrer">Iron Yard&lt;/a> in Durham. Iron Yard is a code school that trains its students in modern programming practices and prepares them for immediate hiring upon graduation. Tobias, our CEO, is on the school’s employer advisory board. Caleb will be speaking on his experience as a Python developer. As an exclusive Python shop, we here at Caktus naturally think it’s the best language for new students&amp;ndash;&lt;a href="http://www.javaworld.com/article/2452940/learn-java/python-bumps-off-java-as-top-learning-language.html" target="_blank" rel="noopener noreferrer">28 of the top 30 universities agree&lt;/a>.&lt;/p></description></item><item><title>OSCON 2014 &amp; REST API Client Best Practices</title><link>https://www.caktusgroup.com/blog/2014/08/04/oscon-2014-rest-api-client-best-practices/</link><pubDate>Mon, 04 Aug 2014 11:36:53 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/08/04/oscon-2014-rest-api-client-best-practices/</guid><description>&lt;p>&lt;a href="http://www.caktusgroup.com/about/mark-lavin/" target="_blank" rel="noopener noreferrer">Mark Lavin&lt;/a>, Caktus Technical Director and author of the forthcoming &lt;a href="http://shop.oreilly.com/product/0636920032502.do" target="_blank" rel="noopener noreferrer">LightWeight Django&lt;/a> was recently at &lt;a href="http://www.oscon.com/oscon2014" target="_blank" rel="noopener noreferrer">OSCON 2014&lt;/a> in Portland where he gave a talk on improving the relationship between server and client for REST APIs. OSCON, with over 3000 attendees, is one of the largest open source conferences around. I sat down with him to ask him about his time there.&lt;/p></description></item><item><title>Website Redesign for PyCon 2015</title><link>https://www.caktusgroup.com/blog/2014/07/31/django-python-website-redesign-pycon-2015/</link><pubDate>Thu, 31 Jul 2014 20:14:48 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/07/31/django-python-website-redesign-pycon-2015/</guid><description>&lt;p>PyCon 2015’s website launched today (a day early!). PyCon is the premiere conference for the Python community and one we look forward to attending every year. We’re honored that the Python Software Foundation returned to us this year to revamp the site. We were especially happy to work again with organizer-extraordinaires Ewa Jodlowska and Diana Clarke.&lt;/p></description></item><item><title>A Culture of Code Reviews</title><link>https://www.caktusgroup.com/blog/2014/07/28/culture-code-reviews/</link><pubDate>Mon, 28 Jul 2014 11:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/07/28/culture-code-reviews/</guid><description>&lt;p>Code reviews are one of those things that everyone agrees are worthwhile, but sometimes don’t get done. A good way to keep getting the benefits of code reviews is to establish, and even nurture, a culture of code reviews.&lt;/p></description></item><item><title>Contributing Back to Symposion</title><link>https://www.caktusgroup.com/blog/2014/07/21/contributing-back-to-Symposion/</link><pubDate>Mon, 21 Jul 2014 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/07/21/contributing-back-to-Symposion/</guid><description>&lt;p>Recently Caktus collaborated with the organizers of PyOhio, a free regional Python conference, to launch the &lt;a href="http://pyohio.org" target="_blank" rel="noopener noreferrer">PyOhio 2014 conference website&lt;/a>. The conference starts this weekend, July 26 - 27. As in prior years, the conference web site utilizes Eldarion’s &lt;a href="http://eldarion.com/symposion/" target="_blank" rel="noopener noreferrer">Symposion&lt;/a>, an opensource conference management system. Symposion powers a number of annual conference sites including &lt;a href="http://www.pycon.org" target="_blank" rel="noopener noreferrer">PyCon&lt;/a> and &lt;a href="http://djangocon.us" target="_blank" rel="noopener noreferrer">DjangoCon&lt;/a>. In fact, as of this writing, there are &lt;a href="https://github.com/pinax/symposion/network" target="_blank" rel="noopener noreferrer">78 forks of Symposion&lt;/a>, a nod to its widespread use for events both large and small. This collaboration afforded us the opportunity to abide by one our core tenets, that of giving back to the community.&lt;/p></description></item><item><title>What was being in Libya like?</title><link>https://www.caktusgroup.com/blog/2014/07/15/what-was-being-in-libya-like/</link><pubDate>Tue, 15 Jul 2014 21:11:29 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/07/15/what-was-being-in-libya-like/</guid><description>&lt;p>Election day voting on June 25th. Image courtesy of HNEC.&lt;/p>
&lt;p> &lt;/p>
&lt;p>&lt;em>Since this interview was done, Libya&amp;rsquo;s capitol began experiencing more
violence. As of today, militias are &lt;a href="http://www.reuters.com/article/2014/07/14/us-libya-violence-airport-idUSKBN0FJ2F420140714" target="_blank" rel="noopener noreferrer">fighting over control of the
Tripoli international
airport&lt;/a>,
the primary way in and out of this section of Libya. We&amp;rsquo;re keeping our
friends and colleagues in Libya in our thoughts in these truly difficult
times. This post speaks to the energy and talent of the Libyans we&amp;rsquo;ve
worked with during this challenging democratic transition.&lt;/em>&lt;/p></description></item><item><title>July 2014 ShipIt Day Recap</title><link>https://www.caktusgroup.com/blog/2014/07/14/july-2014-shipit-day/</link><pubDate>Mon, 14 Jul 2014 21:28:13 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/07/14/july-2014-shipit-day/</guid><description>&lt;p>This past Friday we celebrated another ShipIt day at Caktus. There was a lot of open source contribution, exploring, and learning happening in the office. The projects ranged from native mobile Firefox OS apps, to development on our automated server provisioning templates via Salt, to front-end apps aimed at using web technology to create interfaces where composing new music or &lt;a href="https://www.youtube.com/watch?v=HzS-7-bT9g4" target="_blank" rel="noopener noreferrer">performing Frozen’s Let It Go is so easy anyone can do it&lt;/a>.&lt;/p></description></item><item><title>Removal of Mural</title><link>https://www.caktusgroup.com/blog/2014/07/11/removal-mural/</link><pubDate>Fri, 11 Jul 2014 15:12:20 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/07/11/removal-mural/</guid><description>&lt;p>
We have recently heard complaints about the painting over of the mural on the side of 108 Morris, the building we purchased and are restoring in Downtown Durham. I am personally distressed at this response. I see now, in retrospect, where we needed to work harder to discuss our decision with the community. In our enthusiasm to bring more life to Downtown Durham via ground-level retail space and offices for our staff, we were blind to what the public response might be to the mural. Its removal was not a decision taken lightly and one done in consultation with the Historic Preservation Commission. However, we handled this poorly. We apologize for not making more efforts to include the community in this decision.
&lt;/p></description></item><item><title>Announcing Q2 Caktus Charitable Giving</title><link>https://www.caktusgroup.com/blog/2014/07/09/q2-caktus-charitable-giving/</link><pubDate>Wed, 09 Jul 2014 10:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/07/09/q2-caktus-charitable-giving/</guid><description>&lt;p>
Caktus participates in social impact projects around the world, but we believe in starting local. We’re proud of the many ways in which our staff contribute to local organizations, each making the world around us just a little better. To further support our employees, Caktus asks employees to suggest donations every quarter. This quarter, we’re sending contributions to the following five non-profits:
&lt;/p></description></item><item><title>Tips for Upgrading Django</title><link>https://www.caktusgroup.com/blog/2014/07/07/tips-upgrading-django/</link><pubDate>Mon, 07 Jul 2014 10:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/07/07/tips-upgrading-django/</guid><description>&lt;p>From time to time we inherit code bases running outdated versions of
Django and part of our work is to get them running a stable and secure
version. In the past year we've done upgrades from versions as old as
1.0 and we've learned a few lessons along the way.&lt;/p></description></item><item><title>Chapelboro.com: Carrboro Firm Develops Web App to Register Voters in Libya</title><link>https://www.caktusgroup.com/blog/2014/07/01/chapelborocom-carrboro-firm-develops-web-app-register-voters-libya/</link><pubDate>Tue, 01 Jul 2014 15:56:31 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/07/01/chapelborocom-carrboro-firm-develops-web-app-register-voters-libya/</guid><description>&lt;p>&lt;a href="http://chapelboro.com/news/business/caktus" target="_blank" rel="noopener noreferrer">Chapelboro.com&lt;/a> recently featured Caktus’ work in implementing the first ever voter registration system via text message.&lt;/p></description></item><item><title>O'Reilly Deal: 50% Off Lightweight Django</title><link>https://www.caktusgroup.com/blog/2014/07/01/oreilly-deal-50-lightweight-django/</link><pubDate>Tue, 01 Jul 2014 10:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/07/01/oreilly-deal-50-lightweight-django/</guid><description>&lt;p>O'Reilly Media, the go-to source for technical books, just let us know that they're having a 50% off sale on eBook pre-orders of &lt;a href="http://shop.oreilly.com/product/0636920032502.do">Lightweight Django&lt;/a> today. Use coupon code: DEAL.
&lt;/p></description></item><item><title>Caktus + Durham Bulls Game!</title><link>https://www.caktusgroup.com/blog/2014/06/30/caktus-durham-bulls-game/</link><pubDate>Mon, 30 Jun 2014 10:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/06/30/caktus-durham-bulls-game/</guid><description>&lt;p>Is there a better way to celebrate the first day of summer than a baseball game? To ring in summer, the Caktus team and their families attended a Durham Bulls game. It was a great chance to hang out in our new city before relocating later this fall.
&lt;br />
&lt;center>
&lt;img alt="Caktus @ Durham Bulls Game" src="https://farm6.staticflickr.com/5487/14520402184_00fcc9942a.jpg" class="img-responsive"/>&lt;br />
&lt;img alt="Caktus @ Durham Bulls Game" src="https://farm4.staticflickr.com/3848/14541941453_fc236cbec2.jpg" class="img-responsive"/>&lt;br />
&lt;img alt="Caktus @ Durham Bulls Game" src="https://farm3.staticflickr.com/2929/14518444841_d58d9c4692.jpg" class="img-responsive"/>&lt;br />
&lt;img alt="Caktus @ Durham Bulls Game" src="https://farm3.staticflickr.com/2901/14541941463_476b445a5b.jpg" class="img-responsive"/>&lt;br />
&lt;img alt="Caktus @ Durham Bulls Game" src="https://farm4.staticflickr.com/3908/14335251708_00a1b8e901.jpg" class="img-responsive"/>&lt;br />
&lt;img alt="Caktus @ Durham Bulls Game" src="https://farm6.staticflickr.com/5278/14521822565_586295b516.jpg" class="img-responsive"/>&lt;br />
&lt;img alt="Caktus @ Durham Bulls Game" src="https://farm4.staticflickr.com/3841/14520764442_9079cc7e59.jpg" class="img-responsive"/>&lt;br />
&lt;img alt="Caktus @ Durham Bulls Game" src="https://farm4.staticflickr.com/3888/14335381317_93fa469cba.jpg" class="img-responsive"/>&lt;/p></description></item><item><title>TechPresident: Libya Uses World's First Mobile Voter Registration System</title><link>https://www.caktusgroup.com/blog/2014/06/26/techpresident-libya-uses-worlds-first-mobile-voter-registration-system/</link><pubDate>Thu, 26 Jun 2014 10:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/06/26/techpresident-libya-uses-worlds-first-mobile-voter-registration-system/</guid><description>&lt;p>Caktus team members from our Libya mobile voter registration team recently spoke with &lt;a href="http://techpresident.com/news/wegov/25151/libya-rolls-out-worlds-first-mobile-voter-registration-system">TechPresident&lt;/a> about the context and challenges of implementation.&lt;/p></description></item><item><title>Triangle Business Journal: The Triangle technology fueling Libya's election</title><link>https://www.caktusgroup.com/blog/2014/06/25/triangle-business-journal-triangle-technology-fueling-libyas-election/</link><pubDate>Thu, 26 Jun 2014 02:30:21 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/06/25/triangle-business-journal-triangle-technology-fueling-libyas-election/</guid><description>&lt;p>The &lt;a href="http://www.bizjournals.com/triangle/blog/techflash/2014/06/the-triangle-technology-fueling-libyas-election.html">Triangle Business Journal&lt;/a> recently featured our work in Libya on the first ever SMS voter registration system.&lt;/p></description></item><item><title>Caktus Supports Libya Elections with World’s First SMS Voter Registration System</title><link>https://www.caktusgroup.com/blog/2014/06/25/caktus-supporting-libyas-elections-worlds-first-sms-voter-registration-system/</link><pubDate>Wed, 25 Jun 2014 17:16:19 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/06/25/caktus-supporting-libyas-elections-worlds-first-sms-voter-registration-system/</guid><description>&lt;p>Today’s election in Libya, the second general election for a governing body since Gaddafi’s ouster, is being supported in-country by our Caktus team. Caktus developers created Libya's SMS voter registration system, the first of its kind in the world.
&lt;/p></description></item><item><title>Getting Started Scheduling Tasks with Celery</title><link>https://www.caktusgroup.com/blog/2014/06/23/scheduling-tasks-celery/</link><pubDate>Mon, 23 Jun 2014 11:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/06/23/scheduling-tasks-celery/</guid><description>&lt;p>&lt;strong>UPDATE:&lt;/strong> &lt;a href="https://www.caktusgroup.com/blog/2021/08/11/using-celery-scheduling-tasks/">A newer version of this blog post is available for Celery
Version
5.0.x&lt;/a>.&lt;/p>
&lt;h2 id="getting-started-using-celery-for-scheduling-tasks">Getting Started Using Celery for Scheduling Tasks&lt;/h2>
&lt;p>Many Django applications can make good use of being able to schedule
work, either periodically or just not blocking the request thread.&lt;/p></description></item><item><title>Reflecting on Challenges Faced by Female Developers</title><link>https://www.caktusgroup.com/blog/2014/06/18/reflecting-challenges-faced-female-developers/</link><pubDate>Wed, 18 Jun 2014 11:36:28 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/06/18/reflecting-challenges-faced-female-developers/</guid><description>&lt;p>
&lt;a href=”https://www.caktusgroup.com/about/karen-tracey/”>Karen Tracey&lt;/a>, a Django core committer and Caktus Lead Developer and Technical Manager, recently participated in TriLUG’s panel on Women in Free and/or Open Source Software. Karen was one of five female developers who discussed challenges women face in joining the open source community. We recently caught up with Karen to discuss her own experience.
&lt;/p></description></item><item><title>CTO Copeland Featured on WNCN for Open Government App</title><link>https://www.caktusgroup.com/blog/2014/06/10/cto-copeland-featured-wncn-contribution-government-transparency/</link><pubDate>Tue, 10 Jun 2014 19:17:18 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/06/10/cto-copeland-featured-wncn-contribution-government-transparency/</guid><description>&lt;p>Colin Copeland, our Chief Technology Officer, recently spoke to
&lt;a href="http://www.wncn.com/story/25569848/website-launched-to-make-durham-sanitation-ratings-more-transparent" target="_blank" rel="noopener noreferrer">WNCN&lt;/a>
about a new web application,
&lt;a href="http://NCFoodInspector.com" target="_blank" rel="noopener noreferrer">NCFoodInspector.com&lt;/a>, that lets Durham
County visitors know the cleanliness of nearby restaurants. Colin helped
build the application in his spare time as captain of &lt;a href="http://codefordurham.com" target="_blank" rel="noopener noreferrer">Code for Durham
Brigade&lt;/a>, an all-volunteer group dedicated to
using technology to improve access to publicly available sanitation
scores. The group leverages open source technology to build
applications.&lt;/p></description></item><item><title>Caleb and Rebecca at this Month’s Girl Develop It Intro to Python Class</title><link>https://www.caktusgroup.com/blog/2014/04/25/caleb-and-rebecca-months-girl-develop-it-intro-python-class/</link><pubDate>Fri, 25 Apr 2014 17:35:45 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/04/25/caleb-and-rebecca-months-girl-develop-it-intro-python-class/</guid><description>&lt;p>One of Caktus’ most pedagogically focused developers, Caleb Smith, will be teaching a class to a group of local budding Pythonistas tomorrow, Saturday 26th, and Caktus’ Rebecca Lovewell will be contributing as a teaching assistant. You can read more about it, and sign up via the &lt;a href="http://www.meetup.com/Girl-Develop-It-RDU/events/173715312/" target="_blank" rel="noopener noreferrer">meetup page for the event&lt;/a>. The class is run by the local chapter of Girl Develop It, a group focused on improving the landscape of women in tech via women focused (but not exclusive) educational opportunities.&lt;/p></description></item><item><title>Caktus Attends YTH Live</title><link>https://www.caktusgroup.com/blog/2014/04/17/caktus-attends-yth-live/</link><pubDate>Thu, 17 Apr 2014 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/04/17/caktus-attends-yth-live/</guid><description>&lt;p>Last week Tobias and I had a great time attending our first &lt;a href="http://yth.org/ythlive/about/" target="_blank" rel="noopener noreferrer">Youth+Tech+Health Live conference&lt;/a>. I went to present along with our partners Sara LeGrand and Emily Pike from Duke and UNC respectively on our &lt;a href="http://www.caktusgroup.com/blog/2013/10/16/unc-duke-team-carrboro-based-caktus-group-hiv-gaming-app/" target="_blank" rel="noopener noreferrer">NIH/SBIR funded game&lt;/a> focused on encouraging HIV medication adherence. The panel we spoke on &amp;ldquo;Stick to it: Tech for Medical Adherence + Health Interventions&amp;rdquo; was rounded out by Dano Beck from the Oregon Health Authority speaking about how they have used SMS message reminders successfully to increase HIV medication adherence in Oregon.&lt;/p></description></item><item><title>Caktus is going to Montréal for PyCon 2014!</title><link>https://www.caktusgroup.com/blog/2014/04/10/caktus-going-montreal-pycon-2014/</link><pubDate>Thu, 10 Apr 2014 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/04/10/caktus-going-montreal-pycon-2014/</guid><description>&lt;p>Caktus is happy to once again sponsoring and
attending &lt;a href="https://us.pycon.org/2014/" target="_blank" rel="noopener noreferrer">PyCon&lt;/a> in Montreal this year.
Year after year, we look forward to this conference and we are always
impressed with the quality of the speakers that the conference draws.
The team consistently walks away with new ideas from attending the
talks, open spaces and working on sprints that they are excited to
implement here at Caktus and in their personal projects.&lt;/p></description></item><item><title>Caktus has a new website!</title><link>https://www.caktusgroup.com/blog/2014/04/09/caktus-has-new-website/</link><pubDate>Wed, 09 Apr 2014 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/04/09/caktus-has-new-website/</guid><description>&lt;p>It&amp;rsquo;s been a few years since we last updated our website, and we gave it
a whole new look!&lt;/p>
&lt;p>With the new site, it&amp;rsquo;s easy to see just what
&lt;a href="http://www.caktusgroup.com/services/" target="_blank" rel="noopener noreferrer">services&lt;/a> we offer, and our
&lt;a href="http://www.caktusgroup.com/process/" target="_blank" rel="noopener noreferrer">processes&lt;/a> for bringing our
client&amp;rsquo;s ideas to life. The new layout allows for more in-depth reviews
of our &lt;a href="http://www.caktusgroup.com/casestudies/" target="_blank" rel="noopener noreferrer">projects&lt;/a>, and also
highlights our talented and growing
&lt;a href="http://www.caktusgroup.com/about/" target="_blank" rel="noopener noreferrer">team&lt;/a>. We also wanted to share more
information on our commitment to the open source community and social
good. And the updated structure makes finding out about
&lt;a href="http://www.caktusgroup.com/events/" target="_blank" rel="noopener noreferrer">events&lt;/a> and reading our
ever-popular &lt;a href="http://www.caktusgroup.com/blog/" target="_blank" rel="noopener noreferrer">blog&lt;/a> posts simple.&lt;/p></description></item><item><title>New for PyCon: App for Group Outings + Giant Duck</title><link>https://www.caktusgroup.com/blog/2014/04/08/new-pycon-app-group-outings-giant-duck/</link><pubDate>Tue, 08 Apr 2014 14:57:52 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/04/08/new-pycon-app-group-outings-giant-duck/</guid><description>&lt;p>For PyCon 2014, we&amp;rsquo;ve been working for the past few months
on &lt;a href="http://duckling.us" target="_blank" rel="noopener noreferrer">Duckling&lt;/a>, an app to make it easier to find and
join casual group outings. Our favorite part of PyCon is meeting up with
fellow Pythonistas, but without someone rounding everyone up and sorting
the logistics, we&amp;rsquo;ve found it difficult to figure who&amp;rsquo;s going where and
when. Our answer to this age-old conference conundrum is
&lt;a href="https://duckling.us" target="_blank" rel="noopener noreferrer">Duckling&lt;/a>! &lt;/p></description></item><item><title>Caktus Implementing New Policy Modeled on Foreign Corrupt Practices Act</title><link>https://www.caktusgroup.com/blog/2014/04/04/caktus-implementing-new-policy-modeled-foreign-corrupt-practices-act/</link><pubDate>Fri, 04 Apr 2014 21:23:59 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/04/04/caktus-implementing-new-policy-modeled-foreign-corrupt-practices-act/</guid><description>&lt;p>Caktus&amp;rsquo; successful growth in mobile messaging applications overseas has
been a wonderful point of pride for us. The work we&amp;rsquo;re doing
internationally has real impact on burgeoning democracies, HIV/AIDs
patients, and others where technology makes all the difference.&lt;/p></description></item><item><title>Caktus Presenting HIV mHealth Gamification App for Adherence in San Francisco</title><link>https://www.caktusgroup.com/blog/2014/04/01/caktus-presting-hiv-mhealth-gamification-app-adherence-san-francisco/</link><pubDate>Tue, 01 Apr 2014 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/04/01/caktus-presting-hiv-mhealth-gamification-app-adherence-san-francisco/</guid><description>&lt;p>We&amp;rsquo;re pleased to announce that Caktus will be presenting Epic Allies, an
mHealth Gamification App to improve ART drug adherence for HIV patients,
at this year&amp;rsquo;s YTH Live in San Francisco.&lt;/p></description></item><item><title>Caktus Just Bought a Building in Downtown Durham!</title><link>https://www.caktusgroup.com/blog/2014/03/26/caktus-just-bought-building-downtown-durham/</link><pubDate>Wed, 26 Mar 2014 15:00:04 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/03/26/caktus-just-bought-building-downtown-durham/</guid><description>&lt;p>After sustained growth that has us packed in six suites, we have spent the past year and a half seeking new space. We’ve found it! I’m pleased to announce that Caktus has bought a historic 1910 building with nearly 11,000 square feet of space in Downtown Durham. We&amp;rsquo;ll be right near five points at 108 Morris St. The new building will be completely renovated from top to bottom to create an open workspace that’ll make it even easier for us to collaborate and share ideas.&lt;/p></description></item><item><title>Herald Sun: Carrboro Tech Firm Plans Move to Downtown Durham</title><link>https://www.caktusgroup.com/blog/2014/03/25/herald-sun-carrboro-tech-firm-plans-move-downtown-durham/</link><pubDate>Tue, 25 Mar 2014 21:05:25 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/03/25/herald-sun-carrboro-tech-firm-plans-move-downtown-durham/</guid><description>&lt;p>The &lt;a href=”http://www.heraldsun.com/business/x2025290969/Carrboro-tech-firm-plots-move-to-downtown-Durham”>Herald Sun&lt;/a> covered Caktus’ planned move to a historic building in Downtown Durham.&lt;/p></description></item><item><title>Triangle Business Journal: Carrboro Tech Company Moving to Downtown Durham</title><link>https://www.caktusgroup.com/blog/2014/03/25/triangle-business-journal-carrboro-tech-company-moving-downtown-durham/</link><pubDate>Tue, 25 Mar 2014 21:03:31 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/03/25/triangle-business-journal-carrboro-tech-company-moving-downtown-durham/</guid><description>&lt;p>&lt;a href=”http://www.bizjournals.com/triangle/blog/techflash/2014/03/carrboro-technology-company-moving-to-downtown.html”>Triangle Business Journal&lt;/a> covered Caktus’ purchase of downtown Durham building.&lt;/p></description></item><item><title>Congrats to PearlHacks Winners (Including Our Intern, Annie)!</title><link>https://www.caktusgroup.com/blog/2014/03/25/congrats-pearlhacks-winners-including-our-intern-annie/</link><pubDate>Tue, 25 Mar 2014 14:01:01 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/03/25/congrats-pearlhacks-winners-including-our-intern-annie/</guid><description>&lt;p>&lt;em>Caleb Smith, Caktus developer, awarding the third place prize to TheRightFit creators Bipasa Chattopadhyay, Ping Fu, and Sarah Andrabi.&lt;/em>&lt;/p>
&lt;p>Many congratulations to the &lt;a href="http://pearlhacks.com/" target="_blank" rel="noopener noreferrer">PearlHacks&lt;/a> third place winners who won Sphero Balls! The team from UNC’s Computer Science department created &lt;a href="https://www.hackerleague.org/hackathons/pearl-hacks/hacks/therightfit" target="_blank" rel="noopener noreferrer">TheRightFit&lt;/a>, an Android app that helps shoppers know what sizes will fit them and their families among various brands. Their prize of &lt;a href="http://www.gosphero.com/" target="_blank" rel="noopener noreferrer">Sphero Balls&lt;/a>, programmable balls that can interact and play games via smart phones, was presented by Caktus developer and Pearl Hacks mentor Caleb Smith as part of our sponsorship. PearlHacks, held at UNC-Chapel Hill, is a conference designed to encourage female high school and college programmers from the NC and VA area.&lt;/p></description></item><item><title>Caktus is Sponsoring Pearl Hacks</title><link>https://www.caktusgroup.com/blog/2014/03/20/caktus-sponsoring-pearl-hacks/</link><pubDate>Thu, 20 Mar 2014 13:41:49 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/03/20/caktus-sponsoring-pearl-hacks/</guid><description>&lt;p>Caktus is excited to further encourage young female programmers through
our support of PearlHacks, a two-day hackathon and conference hosted by
the University of North Carolina - Chapel Hill. This weekend, March
22-23rd, over 200 young women from local high schools and universities
in Virginia and North Carolina will arrive for the conference.&lt;/p></description></item><item><title>FastCompany: 10 Most Innovative Companies in Local</title><link>https://www.caktusgroup.com/blog/2014/02/14/fastcompany-10-most-innovative-companies-local/</link><pubDate>Fri, 14 Feb 2014 21:59:21 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/02/14/fastcompany-10-most-innovative-companies-local/</guid><description>&lt;p>
FastCompany named Caktus client, UNICEF, as one of the &lt;a href=”http://www.fastcompany.com/3026361/most-innovative-companies-2014/the-worlds-top-10-most-innovative-companies-in-local”>Top 10 Most Innovative Companies in Loca&lt;/a>l. UNICEF received this honor for their launch of RapidSMS, an open source platform for quickly building SMS applications.
&lt;/p></description></item><item><title>Caktus Completes RapidSMS Community Coordinator Development for UNICEF</title><link>https://www.caktusgroup.com/blog/2014/02/05/caktus-completes-rapidsms-community-coordinator-development-unicef/</link><pubDate>Wed, 05 Feb 2014 14:12:35 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/02/05/caktus-completes-rapidsms-community-coordinator-development-unicef/</guid><description>&lt;p>Colin Copeland, Managing Member at Caktus, has wrapped up work,
supported by UNICEF, as the Community Coordinator for the open source
&lt;a href="http://rapidsms.org" target="_blank" rel="noopener noreferrer">RapidSMS&lt;/a> project. RapidSMS is a text messaging
application development library built on top of the Django web
framework. It creates a SMS provider agnostic way of sending and
receiving text messages. RapidSMS has been used widely in the mobile
health field, in particular in areas where internet access cannot be
taken for granted and cell phones are the best communication tool
available. This has included projects initiated by UNICEF country
offices in Ethiopia, Madagascar, Malawi, Rwanda, Uganda, Zambia, and
Zimbabwe.&lt;/p></description></item><item><title>Managing Events with Explicit Time Zones</title><link>https://www.caktusgroup.com/blog/2014/01/09/managing-events-explicit-time-zones/</link><pubDate>Thu, 09 Jan 2014 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/01/09/managing-events-explicit-time-zones/</guid><description>&lt;h2 id="managing-events-with-explicit-time-zones">Managing Events with Explicit Time Zones&lt;/h2>
&lt;p>Recently we wanted a way to let users create real-life events which
could occur in any time zone that the user desired. By default, Django
interprets any date/time that the user enters as being in the user&amp;rsquo;s
time zone, but it never displays that time zone, and it converts the
time zone to UTC before storing it, so there is no record of what time
zone the user initially chose. This is fine for most purposes, but if
you want to specifically give the user the ability to choose different
time zones for different events, this won&amp;rsquo;t work.&lt;/p></description></item><item><title>Caktus is hiring a Web Designer-Contractor</title><link>https://www.caktusgroup.com/blog/2014/01/08/caktus-hiring-web-designer-contractor/</link><pubDate>Wed, 08 Jan 2014 11:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2014/01/08/caktus-hiring-web-designer-contractor/</guid><description>&lt;p>Caktus is actively seeking local web design contractors in the North Carolina Triangle area. We’re looking for folks who can contribute to our growing team of designers on a per-project basis. Our team is focused on designing for the web using HTML5, CSS3, LESS, and responsive design best practices. We take an iterative approach with our clients involving them early and often. So, if you’re a designer looking for some extra work and want to sit in with our sharp team check out &lt;a href="http://www.caktusgroup.com/careers/#op-27541-frontend-web-developer-contractor">the job posting&lt;/a>. It has more information about the types of projects you would be working on and some of the skills we hope to find in your toolbox. If it sounds like a good fit, drop us a line—we’d love to chat!&lt;/p></description></item><item><title>Using strace to Debug Stuck Celery Tasks</title><link>https://www.caktusgroup.com/blog/2013/10/30/using-strace-debug-stuck-celery-tasks/</link><pubDate>Wed, 30 Oct 2013 19:56:31 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/10/30/using-strace-debug-stuck-celery-tasks/</guid><description>&lt;p>&lt;a href="http://www.celeryproject.org/" target="_blank" rel="noopener noreferrer">Celery&lt;/a> is a great tool for background
task processing in &lt;a href="https://www.djangoproject.com/" target="_blank" rel="noopener noreferrer">Django&lt;/a>. We use it
in a lot of the custom web apps we build at Caktus, and it's quickly
becoming the standard for all variety of task scheduling work loads,
from simple to highly complex.&lt;/p></description></item><item><title>ShipIt Day 4: SaltStack, Front-end Exploration, and Django Core</title><link>https://www.caktusgroup.com/blog/2013/10/29/shipit-day-4-saltstack-front-end-exploration-and-django-core/</link><pubDate>Tue, 29 Oct 2013 16:51:54 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/10/29/shipit-day-4-saltstack-front-end-exploration-and-django-core/</guid><description>&lt;p>Last week everyone at Caktus stepped away from client work for a day and a
half to focus on learning and experimenting. This was our fourth ShipIt day at
Caktus, our first being almost exactly a year ago. Each time we all learn a
ton, not only by diving head first into something new, but also by hearing the
experiences of everyone else on the team.&lt;/p></description></item><item><title>UNC, Duke Team up with Carrboro-based Caktus Group on HIV Gaming App</title><link>https://www.caktusgroup.com/blog/2013/10/16/unc-duke-team-carrboro-based-caktus-group-hiv-gaming-app/</link><pubDate>Wed, 16 Oct 2013 20:46:13 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/10/16/unc-duke-team-carrboro-based-caktus-group-hiv-gaming-app/</guid><description>&lt;p>The following is a press release posted in partnership with our team
at &lt;a href="http://globalhealth.unc.edu/2013/10/unc-duke-team-up-with-carrboro-based-caktus-group-on-hiv-gaming-app/" target="_blank" rel="noopener noreferrer">UNC&lt;/a>  and &lt;a href="https://globalhealth.duke.edu/media/news/unc-duke-team-carrboro-based-caktus-group-hiv-gaming-app" target="_blank" rel="noopener noreferrer">Duke&lt;/a>.&lt;/p>
&lt;hr>
&lt;p>The web application development company Caktus Group has teamed up with
researchers at the UNC Institute for Global Health &amp;amp; Infectious Diseases
and the Duke Global Health Institute to develop a mobile phone app that
may help patients better adhere to their medication regimens.&lt;/p></description></item><item><title>Skipping Test DB Creation</title><link>https://www.caktusgroup.com/blog/2013/10/02/skipping-test-db-creation/</link><pubDate>Wed, 02 Oct 2013 12:48:59 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/10/02/skipping-test-db-creation/</guid><description>&lt;p>We are always looking for ways to make our tests run faster. That means
writing tests which don't preform I/O (DB reads/writes, disk
reads/writes) when possible. Django has a &lt;a href="https://docs.djangoproject.com/en/stable/topics/testing/overview/#provided-test-case-classes" target="_blank" rel="noopener noreferrer">collection of TestCase
subclasses&lt;/a>
for different use cases. The common &lt;code>TestCase&lt;/code> handles the fixture
loading and the creation the of &lt;code>TestClient&lt;/code>. It uses the database
transactions to ensure that the database state is reset for every test.
That is it wraps each test in a transaction and rolls it back once the
test is over. Any transaction management inside the test becomes a
no-op. Since [TestCase]{.title-ref}[ overrides the transaction
facilities, if you need to test the transactional behavior of a piece of
code you can instead use
]{.title-ref}[TransactionTestCase]{.title-ref}[.
]{.title-ref}[TransactionTestCase]{.title-ref}` resets the database
after the test runs by truncating all tables which is much slower than
rolling back the transaction particularly if you have a large number of
tables.&lt;/p></description></item><item><title>Central logging in Django with Graylog2 and graypy</title><link>https://www.caktusgroup.com/blog/2013/09/18/central-logging-django-graylog2-and-graypy/</link><pubDate>Wed, 18 Sep 2013 14:00:12 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/09/18/central-logging-django-graylog2-and-graypy/</guid><description>&lt;p>Django's &lt;a href="https://docs.djangoproject.com/en/1.5/topics/logging/" target="_blank" rel="noopener noreferrer">logging
configuration&lt;/a>
facilities, which arrived in version 1.3, have greatly eased (and
standardized) the process of configuring logging for Django projects.
When building complex and interactive web applications at Caktus, we've
found that detailed (and properly configured!) logs are key to
successful and efficient debugging. Another step in that process &amp;mdash;
which can be particularly useful in environments where you have multiple
web servers &amp;mdash; is setting up a centralized logging server to receive
all your logs and make them available through an easily accessible web
interface. There are a number useful tools to do this, but one we've
found that works quite well is &lt;a href="http://graylog2.org/" target="_blank" rel="noopener noreferrer">Graylog2&lt;/a>.
Installing and configuring Graylog2 is outside the scope of this post,
but there are plenty of tutorials on how to do so accessible through
your search engine of choice.&lt;/p></description></item><item><title>Caktus Participates in DjangoCon 2013</title><link>https://www.caktusgroup.com/blog/2013/09/02/caktus-participates-djangocon-2013/</link><pubDate>Mon, 02 Sep 2013 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/09/02/caktus-participates-djangocon-2013/</guid><description>&lt;p>Caktus is happy to be involved in this
year&amp;rsquo;s &lt;a href="http://www.djangocon.us/" target="_blank" rel="noopener noreferrer">DjangoCon&lt;/a> hosted in Chicago.  We are
pumped about the great lineup of speakers and can&amp;rsquo;t wait to see some of
our old friends as well as meet some new folks. Beyond going to see the
wonderful talks, Caktus is participating as a sponsor and Tobias McNulty
will be speaking on scaling Django web apps. Come stop by our booth or
see Tobias&amp;rsquo; talk to connect with us.&lt;/p></description></item><item><title>Raspberry IO Open Sourced</title><link>https://www.caktusgroup.com/blog/2013/08/14/raspberry-io-open-sourced/</link><pubDate>Wed, 14 Aug 2013 14:40:39 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/08/14/raspberry-io-open-sourced/</guid><description>&lt;p>Back in March, at &lt;a href="https://us.pycon.org/2013/" target="_blank" rel="noopener noreferrer">PyCon
2013&lt;/a>, the &lt;a href="http://pyfound.blogspot.com/" target="_blank" rel="noopener noreferrer">PSF&lt;/a> provided
each attendee with a &lt;a href="http://www.raspberrypi.org/" target="_blank" rel="noopener noreferrer">Raspberry Pi&lt;/a>, a tiny
credit-card sized computer meant to be paired with the Python
programming language. The power and portability of the Raspberry Pi has
stimulated an explosion of interest among hobbyists and educators. Their
uses seem to be limited only by our collective imagination.&lt;/p></description></item><item><title>Migrating to a Custom User Model in Django</title><link>https://www.caktusgroup.com/blog/2013/08/07/migrating-custom-user-model-django/</link><pubDate>Wed, 07 Aug 2013 13:10:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/08/07/migrating-custom-user-model-django/</guid><description>&lt;p>&lt;strong>UPDATE: Read a&lt;/strong> &lt;a href="https://www.caktusgroup.com/blog/2019/04/26/how-switch-custom-django-user-model-mid-project/">&lt;strong>newer blog post on this
topic&lt;/strong>&lt;/a>.&lt;/p>
&lt;p>The new &lt;a href="https://docs.djangoproject.com/en/1.5/topics/auth/customizing/" target="_blank" rel="noopener noreferrer">custom user model
configuration&lt;/a>
that arrived in Django makes it relatively straightforward to swap in
your own model for the Django user model. In most cases, Django's
built-in &lt;code>User&lt;/code> model works just fine, but there are times when certain
limitations (such as the &lt;a href="https://docs.djangoproject.com/en/1.5/ref/models/fields/#emailfield" target="_blank" rel="noopener noreferrer">length of the email
field&lt;/a>)
require a custom user model to be installed. If you're starting out
with a custom user model, setup and configuration are relatively
straightforward, but if you need to migrate an existing legacy project
(e.g., one that started out in Django 1.4 or earlier), there are a few
gotchas that you might run into. We did this recently for one of our
larger, long-term client projects at Caktus, and here's an outline of
how we'd recommend tackling this issue:&lt;/p></description></item><item><title>Mark &amp; Julia Speaking at OSCON. “Developers + Designers: Collaborating on your Open Source project”</title><link>https://www.caktusgroup.com/blog/2013/07/23/mark-julia-speaking-oscon-developers-designers-collaborating-your-open-source-project/</link><pubDate>Tue, 23 Jul 2013 14:20:01 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/07/23/mark-julia-speaking-oscon-developers-designers-collaborating-your-open-source-project/</guid><description>&lt;p>On Wednesday, Mark and Julia are teaming up to deliver their talk
&amp;quot;&lt;a href="http://www.oscon.com/oscon2013/public/schedule/detail/28590" target="_blank" rel="noopener noreferrer">Developers + Designers: Collaborating on your Open Source
project&lt;/a> &amp;quot;
at OSCON 2013. We&amp;rsquo;re thrilled that their talk got accepted and know that
they have a lot to contribute to the Open Source conversation which too
often lacks the voice of designers. Julia and Mark will be discussing
how it is important to start collaborating early on your ideas before
writing code. We&amp;rsquo;re happy to have such adept developers and designers
here at Caktus pushing each other to work outside of their strict job
titles and collaborate to build projects that couldn&amp;rsquo;t be built anywhere
else. If you are at OSCON this week, stop by and hear Mark and Julia&amp;rsquo;s
talk. Or, if you miss their talk, they will be around all week and are
excited about meeting new people.&lt;/p></description></item><item><title>Factory Boy as an Alternative to Django Testing Fixtures</title><link>https://www.caktusgroup.com/blog/2013/07/17/factory-boy-alternative-django-testing-fixtures/</link><pubDate>Wed, 17 Jul 2013 14:30:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/07/17/factory-boy-alternative-django-testing-fixtures/</guid><description>&lt;p>When testing a Django application you often need to populate the test
database with some sample data. The standard Django &lt;code>TestCase&lt;/code> has
support for fixture loading but there are a number of problems with
using fixtures:&lt;/p></description></item><item><title>Caktus is hiring a Design Visionary and User Experience Virtuoso with a Knack for Coding</title><link>https://www.caktusgroup.com/blog/2013/07/15/caktus-hiring-design-visionary-and-user-experience-virtuoso-knack-coding/</link><pubDate>Mon, 15 Jul 2013 12:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/07/15/caktus-hiring-design-visionary-and-user-experience-virtuoso-knack-coding/</guid><description>&lt;p>Do your mornings usually consist of reading design blogs and drinking coffee? Are you obsessive about fonts? Are you constantly seeking out new inspiration to make your designs better? As a Front-End Developer + Designer at Caktus, you’ll be able to put your passion for design and development to work by creating beautiful designs for complex websites. You will work closely with clients to bring their visions to life and help lead the branding and design process. Our designers take ownership of the user experience and design process from the beginning and collaborate with our development team to implement the vision. You should be passionate about the open source community and the philosophy behind it. If you’re interested in becoming part of and contributing to a creative, dynamic team, here’s an idea of what you’ll do:&lt;/p></description></item><item><title>Caktus and Python Software Foundation Collaborate on PyCon 2014 in Montreal Site</title><link>https://www.caktusgroup.com/blog/2013/07/10/caktus-and-python-software-foundation-collaborate-pycon-2014-montreal-site/</link><pubDate>Wed, 10 Jul 2013 15:36:12 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/07/10/caktus-and-python-software-foundation-collaborate-pycon-2014-montreal-site/</guid><description>&lt;p>[Caktus is proud to be a part of the launch of
the]{style=&amp;ldquo;color:#000000; background-color:transparent; font-style:normal;&amp;rdquo;}
&lt;a href="http://us.pycon.org/2014/" target="_blank" rel="noopener noreferrer">PyCon 2014 in Montreal&lt;/a>[ website. We were
delighted to be selected as this year&amp;rsquo;s partner for software development
and brand updates. In the past, we've enjoyed working with the
]{style=&amp;ldquo;color:#000000; background-color:transparent; font-style:normal;&amp;rdquo;}&lt;a href="http://www.python.org/psf/" target="_blank" rel="noopener noreferrer">Python
Software Foundation&lt;/a>[ as a collaborator for
the
]{style=&amp;ldquo;color:#000000; background-color:transparent; font-style:normal;&amp;rdquo;}&lt;a href="http://raspberry.io/" target="_blank" rel="noopener noreferrer">Raspberry.io&lt;/a>[
branding and development and are excited to help out with the PyCon
website.]{style=&amp;ldquo;color:#000000; background-color:transparent; font-style:normal;&amp;rdquo;}&lt;/p></description></item><item><title>MEDIA_ROOT and Django Tests</title><link>https://www.caktusgroup.com/blog/2013/06/26/media-root-and-django-tests/</link><pubDate>Wed, 26 Jun 2013 14:54:30 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/06/26/media-root-and-django-tests/</guid><description>&lt;p>If you&amp;rsquo;ve ever written a test for a view or model with associated
uploaded files you might have noticed a small problem with those files
hanging around after the tests are complete. Since version 1.3, Django
won&amp;rsquo;t delete the files associated with your model instances when they
are deleted. &lt;a href="http://stackoverflow.com/questions/5372934/how-do-i-get-django-admin-to-delete-files-when-i-remove-an-object-from-the-datab" target="_blank" rel="noopener noreferrer">Some work-arounds for this
issue&lt;/a>
involve writing a custom delete for your model or using a post_delete
signal handler. But even with those in place the files would not be
deleted during tests because the model instances are not explicitly
deleted at the end of the test case. Instead, Django simply rolls back
the transaction and the delete method is never called nor are the
signals fired. This can be quite an annoyance when running the tests
repeatedly and watching your &lt;code>MEDIA_ROOT&lt;/code> (or worse your S3 bucket) fill
up with garbage data. More than annoyance, this introduces something you
always want to avoid in unittests: global state.&lt;/p></description></item><item><title>Making your Django app more pluggable</title><link>https://www.caktusgroup.com/blog/2013/06/12/making-your-django-app-more-pluggable/</link><pubDate>Wed, 12 Jun 2013 12:08:27 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/06/12/making-your-django-app-more-pluggable/</guid><description>&lt;p>This blog post is about ways of doing things in your Django app, and
pitfalls to avoid, so your app is easier to plug in to other sites.&lt;/p></description></item><item><title>Caktus Teaches mHealth to Fulbright Enrichment Students</title><link>https://www.caktusgroup.com/blog/2013/05/30/caktus-teaches-mhealth-fulbright-enrichment-students/</link><pubDate>Thu, 30 May 2013 15:03:53 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/05/30/caktus-teaches-mhealth-fulbright-enrichment-students/</guid><description>&lt;p> &lt;/p>
&lt;p>[As part of the Fulbright Enrichment [From Lab to
Market]{style=&amp;ldquo;font-style: italic;&amp;rdquo;} seminar, Caktus hosted 16 Fulbright
students from around the world on Wednesday, May 29th. The participants
were engineering and science students with an interest in Public Health
and Mobile Health
innovation.]{#docs-internal-guid&amp;ndash;15dfdd3-f622-293e-da9c-340d4c5b5818}&lt;/p></description></item><item><title>AngularJS to PyGame: Caktus’ 2nd ShipIt Day</title><link>https://www.caktusgroup.com/blog/2013/04/30/caktus-2nd-shipit-day/</link><pubDate>Tue, 30 Apr 2013 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/04/30/caktus-2nd-shipit-day/</guid><description>&lt;p>We had our 2nd ShipIt Day at Caktus last week. ShipIt (coined
by &lt;a href="http://www.atlassian.com/company/about/shipit" target="_blank" rel="noopener noreferrer">Atlassian&lt;/a>), in case
you don&amp;rsquo;t know, is an exercise that allows your team to work on
alternative projects in a 24-hour hackathon. We brainstorm ideas related
to Caktus, break into small groups and try to build a project by the end
of the day on Friday. It&amp;rsquo;s a lot of fun and provides an opportunity to
work on internal tools, try something new and collaborate together. \&lt;/p></description></item><item><title>Managing Django Translations with Transifex</title><link>https://www.caktusgroup.com/blog/2013/04/25/managing-django-translations-transifex/</link><pubDate>Thu, 25 Apr 2013 15:51:27 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/04/25/managing-django-translations-transifex/</guid><description>&lt;p>We manage a number of open source Django apps here at Caktus. While many
of us here are proficient in a number of programming languages, the same
can&amp;rsquo;t be said for our ability to read or write in languages other than
English. The Django community is global and we want our apps to support
other languages. For that we&amp;rsquo;ve turned
to &lt;a href="https://www.transifex.com/" target="_blank" rel="noopener noreferrer">Transifex&lt;/a> which it the same tool Django
itself uses for translations.&lt;/p></description></item><item><title>Time Magazine: 100 Most Influential People of 2013</title><link>https://www.caktusgroup.com/blog/2013/04/18/time-magazine-100-most-influential-people-2013/</link><pubDate>Thu, 18 Apr 2013 21:09:57 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/04/18/time-magazine-100-most-influential-people-2013/</guid><description>&lt;p>UNICEF clients Erica Kochi and Christopher Fabian were listed among &lt;a href=”http://time100.time.com/2013/04/18/time-100/slide/christopher-fabian-and-erica-kochi/”>Time Magazine’s 100 Most Influential People of 2013&lt;/a> for creating text-message based applications in the developing world. They spearheaded RapidSMS, the open source web framework used for applications like sending &lt;a href=”http://www.caktusgroup.com/case-study/Project-Mwana/”>infant HIV results via text in Zambia&lt;/a>. Caktus worked directly with Kochi and Fabian and were instrumental in the core development of RapidSMS, the creation of &lt;a href=”www.rapidSMS.org”>RapidSMS.org&lt;/a> on behalf of UNICEF, and initial &lt;a href=”http://www.caktusgroup.com/case-study/Project-Mwana/”>RapidSMS applications in Africa&lt;/a>.&lt;/p></description></item><item><title>Caktus sponsoring and speaking on mobile health at SwitchPoint 2013</title><link>https://www.caktusgroup.com/blog/2013/04/18/caktus-sponsoring-and-speaking-mobile-health-switchpoint-2013/</link><pubDate>Thu, 18 Apr 2013 14:13:21 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/04/18/caktus-sponsoring-and-speaking-mobile-health-switchpoint-2013/</guid><description>&lt;p>SwitchPoint is a one-of-a-kind conference and a unique opportunity to
learn, share ideas, and hear about global and mobile health efforts
around the world. We had a great time at SwitchPoint last year. I&amp;rsquo;m
excited to announce that Caktus, for the second year in a row, is
sponsoring &lt;a href="http://event.switchpointideas.com/" target="_blank" rel="noopener noreferrer">[SwitchPoint
2013]{style=&amp;ldquo;color: rgb(17, 85, 204);&amp;rdquo;}&lt;/a>.&lt;/p></description></item><item><title>A helper script for runserver</title><link>https://www.caktusgroup.com/blog/2013/04/11/helper-script-runserver/</link><pubDate>Thu, 11 Apr 2013 16:17:37 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/04/11/helper-script-runserver/</guid><description>&lt;h4 id="my-django-runserver-shortcut-script">My Django runserver shortcut script&lt;/h4>
&lt;p>This is a little shell script I save as &lt;code>rs&lt;/code>, put on my path, and use as
a shortcut to start the Django development server. It has several
features that make me more productive:&lt;/p></description></item><item><title>PyCon 2013 Recap---Teaching and Learning with the Python Community</title><link>https://www.caktusgroup.com/blog/2013/04/04/pycon-2013-recap-teaching-and-learning-python-community/</link><pubDate>Thu, 04 Apr 2013 14:30:47 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/04/04/pycon-2013-recap-teaching-and-learning-python-community/</guid><description>&lt;p>Caktus had a wonderful time at this year&amp;rsquo;s PyCon conference.  We believe
strongly in supporting our developers in their quest to become the best
coders that they can be and think that being at PyCon is a great way for
them to learn about what&amp;rsquo;s going on in the Python community.  We sent
ten people to the conference to work at our booth and attend conference
events.  The organizers of PyCon, headed by Jesse Noller, put on an
amazing event that created a space for people to meet face to face in
order to work and learn together.&lt;/p></description></item><item><title>Raspberry IO announced at PyCon</title><link>https://www.caktusgroup.com/blog/2013/03/13/raspberry-io-announced-pycon/</link><pubDate>Wed, 13 Mar 2013 16:51:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/03/13/raspberry-io-announced-pycon/</guid><description>&lt;p>&lt;a href="https://us.pycon.org/2013/" target="_blank" rel="noopener noreferrer">PyCon&lt;/a> is one of our favorite conferences
here at Caktus. We&amp;rsquo;ve been attending for the past 4 years now and it is
amazing to see how much the community has grown. This year is especially
special because Jesse Noller and the Python Software Foundation (PSF)
came to us to help them build &lt;a href="http://raspberry.io/" target="_blank" rel="noopener noreferrer">Raspberry IO&lt;/a>. The
site features work from the Python community and their adventures in
using Raspberry Pi with Python.&lt;/p></description></item><item><title>Caktus is hiring a Web Project Manager</title><link>https://www.caktusgroup.com/blog/2013/03/06/project-manager/</link><pubDate>Wed, 06 Mar 2013 22:10:24 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2013/03/06/project-manager/</guid><description>&lt;p>Caktus is currently hiring for a full time Web Project Manager to be a
part of our awesome team. We&amp;rsquo;re a diverse team of smart, sharp
developers and designers with a passion for creating customizable,
content rich sites and web applications using Django. As one of the
project managers at Caktus, you&amp;rsquo;ll have the opportunity to develop your
professional skills and also get the chance to work with some very
capable and nice people.&lt;/p></description></item><item><title>Caktus Celebrates 5 Year Anniversary</title><link>https://www.caktusgroup.com/blog/2012/12/12/caktus-celebrates-5-year-anniversary/</link><pubDate>Wed, 12 Dec 2012 15:02:35 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/12/12/caktus-celebrates-5-year-anniversary/</guid><description>&lt;p>Caktus celebrated the end of our fifth year in business recently.  We
threw ourselves a party and invited our local friends who helped us grow
from our infancy through our awkward phases into a successful and
sustainable small business.&lt;/p></description></item><item><title>django-scribbler, a lightweight front-end interface for Django template editing</title><link>https://www.caktusgroup.com/blog/2012/10/30/django-scribbler-a-lightweight-front-end-interface-for-Django-template-editing/</link><pubDate>Tue, 30 Oct 2012 13:36:44 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/10/30/django-scribbler-a-lightweight-front-end-interface-for-Django-template-editing/</guid><description>&lt;p>&lt;a href="https://github.com/caktus/django-scribbler/" target="_blank" rel="noopener noreferrer">django-scribbler&lt;/a> is a new
open-source project published by the team at Caktus. Its goal is to
create a seamless way for authorized end users to make edits to specific
blocks of content in their Django template.&lt;/p></description></item><item><title>PyCarolinas' Logo Design by Caktus</title><link>https://www.caktusgroup.com/blog/2012/10/18/pycarolinas-logo-design-caktus/</link><pubDate>Thu, 18 Oct 2012 13:39:54 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/10/18/pycarolinas-logo-design-caktus/</guid><description>&lt;p>Having creative freedom is an important part of any good design job.
From time to time, you'll get those projects where you are really
confined in what you get to do. It's important to have those creative
outlets available to you and to be able to work on projects where you
have the freedom to create.&lt;/p></description></item><item><title>PBS' Half the Sky Documentary Site Developed by Caktus</title><link>https://www.caktusgroup.com/blog/2012/10/05/pbs-half-sky-documentary-site-developed-caktus/</link><pubDate>Fri, 05 Oct 2012 19:03:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/10/05/pbs-half-sky-documentary-site-developed-caktus/</guid><description>&lt;p>Earlier this year Caktus had the honor of working with Sonnet Media and
PBS&amp;rsquo; Independent Lens on the documentary, &lt;a href="http://www.pbs.org/independentlens/half-the-sky/" target="_blank" rel="noopener noreferrer">[&lt;em>Half the Sky: Turning
Oppression into Opportunity for Women
Worldwide.&lt;/em>]{.underline}&lt;/a>
Originally a best-selling book by Nicholas Kristof and Sheryl WuDunn,
the book adapted into a two part documentary series. The documentary
gives a voice to oppressed women around the world and brings a greater
awareness to their struggles to the rest of the globe. Half the Sky also
highlights a few of the amazing women who are directly making a change
in their countries by community organizing and advocating for women&amp;rsquo;s
rights through non-governmental organizations.&lt;/p></description></item><item><title>Planning Our First ShipIt Day at Caktus</title><link>https://www.caktusgroup.com/blog/2012/10/01/planning-our-first-shipit-day-caktus/</link><pubDate>Mon, 01 Oct 2012 16:10:33 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/10/01/planning-our-first-shipit-day-caktus/</guid><description>&lt;p>I'm delighted to write that last Friday, we announced we'll be trying
our first &amp;quot;ShipIt Day&amp;quot; at Caktus in October. ShipIt Days, also known
as FedEx Days, provide a time for the team to set aside what occupies us
most days&amp;mdash;building fantastic &lt;a href="https://www.caktusgroup.com/services/custom-web-applications/">web
applications&lt;/a> using Python and
Django for our wonderful &lt;a href="https://www.caktusgroup.com/portfolio/">clients&lt;/a>&amp;mdash;and pick up something
new or scratch an itch that's been bugging us for awhile. We got the
idea from the book &lt;em>&lt;a href="http://www.danpink.com/drive" target="_blank" rel="noopener noreferrer">Drive&lt;/a>&lt;/em> by Daniel
Pink, and it was also suggested independently by a number of &lt;a href="https://www.caktusgroup.com/about/">team
members&lt;/a>.&lt;/p></description></item><item><title>Project Mwana featured in the BBC</title><link>https://www.caktusgroup.com/blog/2012/09/25/project-mwana-featured-bbc/</link><pubDate>Tue, 25 Sep 2012 14:20:13 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/09/25/project-mwana-featured-bbc/</guid><description>&lt;p>Caktus has had the opportunity to work on the infrastructure of
RapidSMS, an application framework that allows data collection and
logistics coordination using mobile phone text messages for
communication. The BBC World News recently posted an article,
&lt;a href="http://www.bbc.com/future/story/20120803-saving-a-life-in-160-characters/" target="_blank" rel="noopener noreferrer">&amp;quot;RapidSMS: Saving a life in 160
characters&amp;quot;&lt;/a>
detailing the effects of RapidSMS technology is having on HIV/AIDS
treatment in the developing world. The article focuses on work being
done to combat the HIV/AIDS epidemic in Malawi where there is one of the
highest rates of infection in the world.&lt;/p></description></item><item><title>Talking About RFPs: NC Tech 4 Good</title><link>https://www.caktusgroup.com/blog/2012/09/21/talking-about-rfps-nc-tech-4-good/</link><pubDate>Fri, 21 Sep 2012 17:29:38 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/09/21/talking-about-rfps-nc-tech-4-good/</guid><description>&lt;p>Yesterday evening I delivered a brief talk to the meetup members of the
&lt;a href="http://www.meetup.com/NCTech4Good/" target="_blank" rel="noopener noreferrer">NCTech4Good meetup&lt;/a> in RTP on the
topic of interpreting a RFP.&lt;/p></description></item><item><title>Thoughts after attending Djangocon</title><link>https://www.caktusgroup.com/blog/2012/09/11/thoughts-after-attending-djangocon/</link><pubDate>Tue, 11 Sep 2012 13:50:02 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/09/11/thoughts-after-attending-djangocon/</guid><description>&lt;figure style=" padding: 25px; margin-left: 25px; width: 400">
&lt;img src="https://farm9.staticflickr.com/8039/7976379747_78565496e1.jpg"
 width="350" >
&lt;figcaption>&lt;b>The Caktus team attending and having a great time at Djangocon!&lt;/b>&lt;/figcaption>
&lt;/figure>
&lt;p>It&amp;rsquo;s been one week since I posted my &lt;a href="http://www.caktusgroup.com/blog/2012/09/05/live-djangocon-2012-notes-first-day/">wrap-up of the first day at Djangocon&lt;/a>, and although I didn&amp;rsquo;t get the chance to cover each day individually I wanted to post a quick conference wrap up.&lt;/p></description></item><item><title>Djangocon 2012 First Day</title><link>https://www.caktusgroup.com/blog/2012/09/05/live-djangocon-2012-notes-first-day/</link><pubDate>Wed, 05 Sep 2012 15:24:10 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/09/05/live-djangocon-2012-notes-first-day/</guid><description>&lt;p>The Caktus team arrived in DC for Djangocon on Monday evening, 9/3 and
I've been keeping notes about what the presenters have been discussing
and generally what the mood and experience have been like. I am taking a
few minutes out of my Tuesday schedule to share with everyone how
Djangocon 2012 is shaping up! I stayed in Track 1 throughout the day, so
I can only report on talks given there.&lt;/p></description></item><item><title>Caktus Team Members Presenting at DjangoCon 2012</title><link>https://www.caktusgroup.com/blog/2012/09/03/caktus-team-members-presenting-djangocon-2012/</link><pubDate>Mon, 03 Sep 2012 14:00:13 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/09/03/caktus-team-members-presenting-djangocon-2012/</guid><description>&lt;p>Caktus is proud to announce that four of our developers will be
presenting at this year&amp;rsquo;s &lt;a href="http://www.djangocon.us/" target="_blank" rel="noopener noreferrer">DjangoCon&lt;/a>. We are
also happy to announce that we will be sponsors of DjangoCon, taking
place in Washington D.C. on September 4th through the 7th. In addition
to the four Caktus team members who will be presenting this year, our
entire development staff will be in attendance enjoying the conference
and city.&lt;/p></description></item><item><title>Caktus is hiring a Web Project Manager</title><link>https://www.caktusgroup.com/blog/2012/08/23/caktus-hiring-web-project-manager/</link><pubDate>Thu, 23 Aug 2012 12:51:37 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/08/23/caktus-hiring-web-project-manager/</guid><description>&lt;p>Caktus is currently hiring for a full time Web Project Manager to be a
part of our awesome team. We&amp;rsquo;re a diverse team of smart, sharp
developers and designers with a passion for creating customizable,
content rich sites and web applications using Django. As one of the
project managers at Caktus, you&amp;rsquo;ll have the opportunity to develop your
professional skills and also get the chance to work with some very
capable and nice people.&lt;/p></description></item><item><title>Thoughts after attending the UNICEF Rwanda mHealth Conference</title><link>https://www.caktusgroup.com/blog/2012/08/08/thoughts-after-attending-unicef-rwanda-mhealth-conference/</link><pubDate>Wed, 08 Aug 2012 17:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/08/08/thoughts-after-attending-unicef-rwanda-mhealth-conference/</guid><description>&lt;p>This past July, I had the pleasure of attending the UNICEF Rwanda
Conference in Kigali, Rwanda. The conferences focus was on developing a
comprehensive eHealth suite for numerous nations to implement.&lt;/p></description></item><item><title>Caktus is Sponsoring PyOhio 2012</title><link>https://www.caktusgroup.com/blog/2012/07/26/caktus-sponsoring-pyohio-2012/</link><pubDate>Thu, 26 Jul 2012 19:44:24 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/07/26/caktus-sponsoring-pyohio-2012/</guid><description>&lt;p>Caktus is proud to announce that we are a sponsor of this year&amp;rsquo;s
&lt;a href="http://pyohio.org/" target="_blank" rel="noopener noreferrer">PyOhio&lt;/a> conference taking place in Columbus, Ohio
on July 28th and 29th! This is the 5th year for this regional conference
and each year it continues to grow in size and scope. A great perk about
PyOhio is that all of the talks are released for free online and also
there is no charge to attend the conference. It is great to see more
regional Python conferences throughout the nation and we are very
excited to be a part of this growing trend. I will be attending the
conference on behalf of Caktus, so make sure to seek me out and say hi,
I will be wearing a Caktus t-shirt and would love to speak with you
about what we do and of course any neat projects you&amp;rsquo;re building or
working on in Python!&lt;/p></description></item><item><title>Django Training</title><link>https://www.caktusgroup.com/blog/2012/07/20/announcing-new-service-training/</link><pubDate>Fri, 20 Jul 2012 21:14:29 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/07/20/announcing-new-service-training/</guid><description>&lt;p>Caktus is proud to announce that we are now offering Django training
services. This new service includes both off and on-site training for
you and your team to become a Djangonaut.&lt;/p></description></item><item><title>Django Fundamentals Bootcamp Recap</title><link>https://www.caktusgroup.com/blog/2012/07/12/django-fundamentals-bootcamp-recap/</link><pubDate>Thu, 12 Jul 2012 20:34:03 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/07/12/django-fundamentals-bootcamp-recap/</guid><description>&lt;p>On June 8th and 9th, Caktus hosted its first
&lt;a href="http://www.caktusgroup.com/events/details/django-fundamentals-bootcamp" target="_blank" rel="noopener noreferrer">&lt;/a>Django
Fundamentals Bootcamp. The Caktus team developed the idea for the
course, which was a crossword drill application, and has been developing
the structure and content of the course over the past year. The bootcamp
was designed to teach programmers who have experience in programming
with different languages and introduce them to the fundamentals of
building a web application with Django. We created an interactive
environment where the instructors and students were able to communicate
with one another which solved the issue of how to begin developing in an
unfamiliar language.&lt;/p></description></item><item><title>Karen Tracey to Deliver Keynote at DjangoCon Europe 2012</title><link>https://www.caktusgroup.com/blog/2012/05/31/karen-tracey-deliver-keynote-djangocon-europe-2012/</link><pubDate>Thu, 31 May 2012 19:47:14 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/05/31/karen-tracey-deliver-keynote-djangocon-europe-2012/</guid><description>&lt;p>I am very proud to announce that &lt;a href="https://www.caktusgroup.com/about/#kmtracey">Karen Tracey&lt;/a>, Lead
Developer at Caktus and Django Core Developer, will be &lt;a href="http://2012.djangocon.eu/blog/announcing-our-final-keynote-speaker-karen-tracey/" target="_blank" rel="noopener noreferrer">delivering a
keynote
address&lt;/a>
at &lt;a href="http://2012.djangocon.eu/" target="_blank" rel="noopener noreferrer">DjangoCon Europe&lt;/a> next week. This will be
Karen's first speech to the Django community, of which she has been an
exemplary member since 2006.&lt;/p></description></item><item><title>Narrowing the Gender Gap in the Open Source community</title><link>https://www.caktusgroup.com/blog/2012/05/24/narrowing-gender-gap-open-source-community/</link><pubDate>Thu, 24 May 2012 20:44:57 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/05/24/narrowing-gender-gap-open-source-community/</guid><description>&lt;p>Diversity is important in a workplace environment. Having different
points of view from people with different life experiences brings
&lt;a href="http://www.brighthub.com/office/human-resources/articles/90910.aspx" target="_blank" rel="noopener noreferrer">creative new ideas and innovative
solutions&lt;/a>
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.&lt;/p></description></item><item><title>Caktus is Sponsoring SwitchPoint 2012</title><link>https://www.caktusgroup.com/blog/2012/04/19/caktus-sponsoring-switchpoint/</link><pubDate>Thu, 19 Apr 2012 19:45:24 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/04/19/caktus-sponsoring-switchpoint/</guid><description>&lt;p>I&amp;rsquo;m excited to announce that Caktus is a sponsor of the first
&lt;a href="http://switchpointideas.com/" target="_blank" rel="noopener noreferrer">SwitchPoint 2012&lt;/a> conference that is
being held in the Saxapahaw Ballroom in Saxapahaw, NC. It is being
organized by &lt;a href="http://intrahealth.org/" target="_blank" rel="noopener noreferrer">IntraHealth&lt;/a>, an organization
that mobilizes local talent for sustainable and accessible health care
around the world. The conference is bringing together a number of people
from different industries and disciplines to discuss how technology and
ideas can increase global health equity. There are quite a few great
speakers from RedHat, USAID, WorldBank and the United Nations. The
Caktus team is really excited to attend Switchpoint and sponsor this
incredible event.&lt;/p></description></item><item><title>Project Mwana in MobileActive</title><link>https://www.caktusgroup.com/blog/2012/04/16/project-mwana-mobileactive/</link><pubDate>Mon, 16 Apr 2012 13:52:51 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/04/16/project-mwana-mobileactive/</guid><description>&lt;p>This past week, Project Mwana was a featured article on the site
MobileActive. Project Mwana is a RapidSMS application that connects
rural health clinic workers in Zambia and Malawi to HIV testing centers,
increasing the collection and turn around time for results to over 50%.
Tobias worked with the UNICEF Innovation team on the ground in Zambia
and Malawi to assist with the systems architecture and training local
developers to maintain the system. The RapidSMS platform allows the
application to be easily scalable at a very affordable cost, making it
one of the most efficient ways to connect people and send data between
people. By the end of 2012, the goal is to have 250 clinics in Malawi
using Project Mwana and complete coverage in Zambia by three years.&lt;/p></description></item><item><title>Caktus' Django Fundamentals Bootcamp</title><link>https://www.caktusgroup.com/blog/2012/04/06/caktus-django-bootcamp/</link><pubDate>Fri, 06 Apr 2012 20:10:45 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/04/06/caktus-django-bootcamp/</guid><description>&lt;p>I&amp;rsquo;m excited to announce that on June 9th and 10th, Caktus will be hosting our first Django bootcamp. It will be a two day intensive bootcamp session where you&amp;rsquo;ll learn the basics of developing a web application using Django through constructing a crossword drill application, created by the Caktus staff. It will go over the architecture of Django and also different third party applications that will allow you to enhance the finished product. For more information regarding our bootcamp, you can check out the &lt;a href="https://www.caktusgroup.com/events/details/django-fundamentals-bootcamp/">schedule of the day&amp;rsquo;s events&lt;/a>.&lt;/p></description></item><item><title>Caktus seeking a Django Contractor</title><link>https://www.caktusgroup.com/blog/2012/03/28/were-hiring-web-developer/</link><pubDate>Wed, 28 Mar 2012 19:19:05 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/03/28/were-hiring-web-developer/</guid><description>&lt;p>I'm excited to announce that Caktus is looking for a developer to join
our team on a contract basis!&lt;/p>
&lt;p>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.&lt;/p></description></item><item><title>Front End Developer 2012 Summer Internship</title><link>https://www.caktusgroup.com/blog/2012/03/10/front-end-developer-2012-summer-internship/</link><pubDate>Sat, 10 Mar 2012 16:23:53 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/03/10/front-end-developer-2012-summer-internship/</guid><description>&lt;p>I'm excited to announce that Caktus is looking for candidates for our
front end developer/designer summer internship program. It is a 12 week
paid position in our Carrboro, NC office. We're driving distance from
UNC Chapel Hill, NC State Univeristy in Raleigh, and Duke in Durham, so
students from all parts of the NC Research Triangle are welcome to
apply.&lt;/p></description></item><item><title>Caktus is Sponsoring Pycon 2012</title><link>https://www.caktusgroup.com/blog/2012/03/08/caktus-sponsoring-pycon-2012/</link><pubDate>Thu, 08 Mar 2012 13:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/03/08/caktus-sponsoring-pycon-2012/</guid><description>&lt;p>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.&lt;/p></description></item><item><title>Using LESS with Django</title><link>https://www.caktusgroup.com/blog/2012/03/05/using-less-django/</link><pubDate>Mon, 05 Mar 2012 14:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/03/05/using-less-django/</guid><description>&lt;p>Lately, I&amp;rsquo;ve been working on creating a simplified work flow for my front end work here at Caktus. There are all sorts of new and helpful tools to optimize the creative process, allowing for faster iterations, and greater overall enjoyment. As with any new tool, there are a few options to choose from: LESS and SASS. Having read lots of reviews and reading through the documentation, I&amp;rsquo;ve decided LESS is more for me.&lt;/p></description></item><item><title>Configuring a Jenkins Slave</title><link>https://www.caktusgroup.com/blog/2012/01/10/configuring-jenkins-slave/</link><pubDate>Tue, 10 Jan 2012 13:50:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2012/01/10/configuring-jenkins-slave/</guid><description>&lt;p>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.&lt;/p></description></item><item><title>Class-based views in Django 1.3</title><link>https://www.caktusgroup.com/blog/2011/12/29/class-based-views-django-13/</link><pubDate>Thu, 29 Dec 2011 11:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/12/29/class-based-views-django-13/</guid><description>&lt;p>Django class-based views&lt;/p>
&lt;hr>
&lt;h3 id="introduction">Introduction&lt;/h3>
&lt;p>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.&lt;/p></description></item><item><title>OpenBlock Geocoder, Part 3: External Geocoders</title><link>https://www.caktusgroup.com/blog/2011/12/28/openblock-geocoder-part-3-external-geocoders/</link><pubDate>Wed, 28 Dec 2011 13:23:21 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/12/28/openblock-geocoder-part-3-external-geocoders/</guid><description>&lt;p>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.&lt;/p></description></item><item><title>Using Django and Celery with Amazon SQS</title><link>https://www.caktusgroup.com/blog/2011/12/19/using-django-and-celery-amazon-sqs/</link><pubDate>Mon, 19 Dec 2011 16:26:48 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/12/19/using-django-and-celery-amazon-sqs/</guid><description>&lt;p>Amazon's &lt;a href="http://aws.amazon.com/sqs/" target="_blank" rel="noopener noreferrer">Simple Queue Service&lt;/a> (SQS) is a
relatively new offering in the family of Amazon Web Services (AWS).
It's also an appealing one, because it proposes to quickly and easily
replace a common component of the stack in a typical web application,
thereby obviating the need to run a separate queue server like
&lt;a href="http://www.rabbitmq.com/" target="_blank" rel="noopener noreferrer">RabbitMQ&lt;/a>. While RabbitMQ &amp;mdash; the typical
favorite for Celery users &amp;mdash; is not necessarily difficult to install or
maintain, removing it from the stack of a web application means one less
component that might fail, offloading that service to AWS &amp;mdash; especially
for applications with a small to moderate queue volume &amp;mdash; might prove
financially advantageous.&lt;/p></description></item><item><title>OpenBlock Geocoder, Part 2: Text Parsing and Entity Extraction</title><link>https://www.caktusgroup.com/blog/2011/12/16/openblock-geocoder-part-2-text-parsing-and-entity-extraction/</link><pubDate>Fri, 16 Dec 2011 13:30:19 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/12/16/openblock-geocoder-part-2-text-parsing-and-entity-extraction/</guid><description>&lt;p>This is the second post in our &lt;a href="https://github.com/openrural" target="_blank" rel="noopener noreferrer">OpenRural&lt;/a>
series reviewing &lt;a href="http://openblockproject.org/" target="_blank" rel="noopener noreferrer">OpenBlock&lt;/a> and it's
geocoder. &lt;a href="http://www.caktusgroup.com/blog/2011/12/12/openblock-geocoder-part-1-data-model-and-geocoding/" target="_blank" rel="noopener noreferrer">OpenBlock Geocoder, Part 1: Data Model and
Geocoding&lt;/a>
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.&lt;/p></description></item><item><title>OpenBlock Geocoder, Part 1: Data Model and Geocoding</title><link>https://www.caktusgroup.com/blog/2011/12/12/openblock-geocoder-part-1-data-model-and-geocoding/</link><pubDate>Mon, 12 Dec 2011 16:17:20 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/12/12/openblock-geocoder-part-1-data-model-and-geocoding/</guid><description>&lt;p>As Tobias mentioned in &lt;a href="http://www.caktusgroup.com/blog/2011/12/06/scraping-data-and-web-standards/">Scraping Data and Web Standards&lt;/a>, Caktus is collaborating with the UNC School of Journalism to help develop Open Rural (the code is on &lt;a href="https://github.com/openrural">GitHub&lt;/a>). Open Rural hopes to help rural newspapers in North Carolina leverage &lt;a href="http://openblockproject.org/">OpenBlock&lt;/a>. This blog post is the first of several covering the internals of OpenBlock and, specifically, the geocoder.&lt;/p></description></item><item><title>Scraping Data and Web Standards</title><link>https://www.caktusgroup.com/blog/2011/12/06/scraping-data-and-web-standards/</link><pubDate>Tue, 06 Dec 2011 21:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/12/06/scraping-data-and-web-standards/</guid><description>&lt;p>We're currently involved in a project with the &lt;a href="http://jomc.unc.edu/" target="_blank" rel="noopener noreferrer">UNC School of
Journalism&lt;/a> that
hopes to help rural newspapers in North Carolina leverage
&lt;a href="http://openblockproject.org/" target="_blank" rel="noopener noreferrer">OpenBlock&lt;/a>.  The project is
called OpenRural, and if you're a software developer you can find the
latest code &lt;a href="https://github.com/openrural/openrural-nc" target="_blank" rel="noopener noreferrer">on
GitHub&lt;/a>.&lt;/p></description></item><item><title>Django Without the Web</title><link>https://www.caktusgroup.com/blog/2011/10/24/django-without-web/</link><pubDate>Mon, 24 Oct 2011 16:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/10/24/django-without-web/</guid><description>&lt;p>One of the things I like best about Django is how easy its ORM makes it
to work with databases. Too bad Django is only for web applications.
Sure, you could deploy a Django app and then make use of it from a
non-web application using a REST API, but that would be too awkward.&lt;/p></description></item><item><title>Caktus 2012 Summer Internship Program</title><link>https://www.caktusgroup.com/blog/2011/10/12/caktus-2012-summer-internship-program/</link><pubDate>Wed, 12 Oct 2011 16:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/10/12/caktus-2012-summer-internship-program/</guid><description>&lt;p>I'm excited to announce that Caktus is looking for candidates for our
summer internship program. It is a 12 week paid position in our
Carrboro, NC office. We're driving distance from UNC Chapel Hill, NC
State Univeristy in Raleigh, and Duke in Durham, so students from all
parts of the NC Research Triangle are welcome to apply.&lt;/p></description></item><item><title>Caktus Hosts 3rd Django Sprint in North Carolina</title><link>https://www.caktusgroup.com/blog/2011/10/10/caktus-hosts-3rd-django-sprint-north-carolina/</link><pubDate>Mon, 10 Oct 2011 19:41:55 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/10/10/caktus-hosts-3rd-django-sprint-north-carolina/</guid><description>&lt;p>Here at Caktus, we love Django and use it to make all of our web
applications. To help support the Django community, we are hosting a
development sprint on November 12th and 13th at our office in Carrboro,
NC in preparation for the 1.4 release. The sprint is a great is an
excuse for people to get together and focus their undivided attention on
improving Django. You will be helping out by providing bug fixes,
improving the documentation and also adding features
to existing packages.   &lt;/p></description></item><item><title>Caktus Group Welcomes Designer and Front End Developer Julia Elman</title><link>https://www.caktusgroup.com/blog/2011/09/30/caktus-group-welcomes-designer-and-front-end-developer-julia-elman/</link><pubDate>Fri, 30 Sep 2011 15:52:22 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/09/30/caktus-group-welcomes-designer-and-front-end-developer-julia-elman/</guid><description>&lt;p>I'm delighted to announce that Julia Elman has joined our growing team
of web developers here at Caktus. Julia started her design career almost
10 years ago in an internal marketing group, and first learned about
Django at the SXSW Interactive Festival in 2008. Prior to joining the
Caktus team, Julia worked at the Lawrence Journal World (the birthplace
of Django) and as a freelance designer.&lt;/p></description></item><item><title>Bulk inserts in Django</title><link>https://www.caktusgroup.com/blog/2011/09/20/bulk-inserts-django/</link><pubDate>Tue, 20 Sep 2011 18:08:52 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/09/20/bulk-inserts-django/</guid><description>&lt;p>I recently found a way to speed up a large data import far more than I
expected.&lt;/p>
&lt;p>The task was to read data from a text file and create data records in
Django, and the naive implementation was managing to import about 55
records per second, which was going to take far too long given the
amount of data that needed to be imported.&lt;/p></description></item><item><title>Testing Web Server Configurations with Fabric and ApacheBench</title><link>https://www.caktusgroup.com/blog/2011/09/13/testing-web-server-configurations-fabric-and-apachebench/</link><pubDate>Tue, 13 Sep 2011 18:16:33 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/09/13/testing-web-server-configurations-fabric-and-apachebench/</guid><description>&lt;p>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:&lt;/p></description></item><item><title>Getting Started using Python in Eclipse</title><link>https://www.caktusgroup.com/blog/2011/08/31/getting-started-using-python-eclipse/</link><pubDate>Wed, 31 Aug 2011 19:05:53 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/08/31/getting-started-using-python-eclipse/</guid><description>&lt;p>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.&lt;/p></description></item><item><title>Caktus Consulting Group Sponsors DjangoCon 2011</title><link>https://www.caktusgroup.com/blog/2011/08/31/caktus-consulting-group-sponsors-djangocon-2011/</link><pubDate>Wed, 31 Aug 2011 14:13:49 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/08/31/caktus-consulting-group-sponsors-djangocon-2011/</guid><description>&lt;p>&lt;a href="http://djangocon.us/" title="DjangoCon 2011">DjangoCon 2011&lt;/a> is coming up next week and I&amp;rsquo;m excited to announce that Caktus is sponsoring the conference again this year! It is being held once again in beautiful Portland, Oregon from September 5th through the 10th. We&amp;rsquo;ve grown quite a bit from last year, there will be 9 team members-Colin, Tobias, Karen, Mark, Dan, Scott, George, Caleb and myself-attending the conference this year.&lt;/p></description></item><item><title>Lightning Talk Lunch: Service Page API</title><link>https://www.caktusgroup.com/blog/2011/08/17/lightning-talk-lunch-service-page-api/</link><pubDate>Wed, 17 Aug 2011 15:06:38 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/08/17/lightning-talk-lunch-service-page-api/</guid><description>&lt;p>Leading the second talk of our Caktus Lightning Talk Lunch series, Calvin Spealman presented on the Service Page API:&lt;/p>
&lt;blockquote>
&lt;p>The Service Page API is a prototype and proof of concept to deliver a wide range of browser plugins across multiple browsers and to extend the APIs available to websites a user visits by allowing plugins to extend the Javascript API with new libraries, integrate with external services, and more. It puts the power in the users hand to control which services can interact. This talk covers the problems with the current state of browser extensions and the difficulty in building them across multiple browsers consistently, and how the Service Page API is a solution to this, with code examples.&lt;/p></description></item><item><title>Managing Client Expectations Amid Shifting Deadlines</title><link>https://www.caktusgroup.com/blog/2011/08/11/managing-client-expectation-amid-shifting-deadlines/</link><pubDate>Thu, 11 Aug 2011 20:30:33 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/08/11/managing-client-expectation-amid-shifting-deadlines/</guid><description>&lt;p>Estimating development time is notoriously difficult, and when moving
deadlines are added to the mix, shift happens.&lt;/p>
&lt;p>Estimating development time for clients is difficult enough without
having to second guess deadlines. Yet despite the best efforts, if your
company has a healthy deal flow, it&amp;rsquo;s almost inevitable that you&amp;rsquo;ll
eventually have a project deadline shift.&lt;/p></description></item><item><title>Junior Django Developer Wanted</title><link>https://www.caktusgroup.com/blog/2011/08/09/junior-django-developer-wanted/</link><pubDate>Tue, 09 Aug 2011 19:03:01 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/08/09/junior-django-developer-wanted/</guid><description>&lt;p>Caktus is currently seeking a junior Django developer for our team. The
ideal candidate would have 6 months of experience of building dynamic
web applications in any language, at least 3 months of experience using
Python and Django, and also have a basic understanding of relational
databases such as PostgreSQL and MySQL. The junior developer position
will consist of data modeling complex business ideas, creating and
integrating Django applications in new projects, maintaining existing
Django projects and also assisting with Django deployments. &lt;/p></description></item><item><title>We're hiring a Front End Web Developer</title><link>https://www.caktusgroup.com/blog/2011/08/04/were-hiring-front-end-web-developer/</link><pubDate>Thu, 04 Aug 2011 21:36:33 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/08/04/were-hiring-front-end-web-developer/</guid><description>&lt;p>I'm excited to announce that Caktus is actively seeking a Front End Web
Developer. The position would entail creating wireframes and mock ups of
proposed designs and user stories, performing front end jQuery and
Javascript development, converting PSD's into standards compliant HTML
and CSS, and also cloning repositories and running Django sites locally
for development. The position would also consist of doing user
experience design for internal and client projects. This is a contract
for hire position with the potential to become a full time position with
benefits. For a more detailed description of what you'd do as a Front
End Web Developer here at Caktus, check out the full job posting
&lt;a href="http://www.caktusgroup.com/careers/front-end-web-developer/" target="_blank" rel="noopener noreferrer">here&lt;/a>. &lt;/p></description></item><item><title>An alternative RapidSMS router implementation (with Celery!)</title><link>https://www.caktusgroup.com/blog/2011/07/18/alternative-rapidsms-router-implementation-celery/</link><pubDate>Mon, 18 Jul 2011 18:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/07/18/alternative-rapidsms-router-implementation-celery/</guid><description>&lt;p>We've been using &lt;a href="http://www.rapidsms.org/" target="_blank" rel="noopener noreferrer">RapidSMS&lt;/a>, a Django-powered
SMS framework, &lt;a href="http://www.caktusgroup.com/mobile-health/" target="_blank" rel="noopener noreferrer">more&lt;/a> and
&lt;a href="http://www.caktusgroup.com/blog/2010/12/29/hiv-results-birth-reminders-and-clinic-communication-malawi/" target="_blank" rel="noopener noreferrer">more&lt;/a>
frequently here at Caktus. It's evolved a lot over the past year--
from being reworked to feel more like a Django app, to
&lt;a href="http://groups.google.com/group/rapidsms/browse_thread/thread/526a752d695e85d2/c1075330937e1791?lnk=gst&amp;amp;q=core#c1075330937e1791" target="_blank" rel="noopener noreferrer">merging&lt;/a>
the rapidsms-core-dev and rapidsms-contrib-apps-dev repositories into a
single codebase (no more submodules!), to finally becoming installable
via
&lt;a href="http://groups.google.com/group/rapidsms/browse_thread/thread/19820972177b7845/1d1886cae96eb0c8?lnk=gst&amp;amp;q=pypi#1d1886cae96eb0c8" target="_blank" rel="noopener noreferrer">pypi&lt;/a>.
The &amp;quot;new core&amp;quot; is in a great state now and is much easier to work
with. However, one particular aspect of RapidSMS, the route process, has
always been complicated and confusing to deal with. Tobias began the
conversation on this
&lt;a href="http://groups.google.com/group/rapidsms/browse_thread/thread/18b053d468e699f3#" target="_blank" rel="noopener noreferrer">issue&lt;/a>
after returning from a 6-week long UNICEF project in Zambia.
He &lt;a href="https://github.com/rapidsms/rapidsms/wiki/Router-decoupling-and-HTTP-message-processing" target="_blank" rel="noopener noreferrer">summarized&lt;/a> the
route process like so:&lt;/p></description></item><item><title>Caktus Lightning Talk Lunches</title><link>https://www.caktusgroup.com/blog/2011/07/13/caktus-lightning-talk-lunches/</link><pubDate>Wed, 13 Jul 2011 15:03:11 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/07/13/caktus-lightning-talk-lunches/</guid><description>&lt;p>Last month we hosted the first talk in our new Caktus Lightning Talk Lunch series. We started this series to get together and learn about new projects, different applications, and interesting topics that the Caktus team has been working on. Lunch was provided from Buns in Chapel Hill and Mark Lavin gave the first talk.&lt;/p></description></item><item><title>The Buddha Website Wins Two Webby Awards</title><link>https://www.caktusgroup.com/blog/2011/05/18/buddha-wins-two-webby-awards/</link><pubDate>Wed, 18 May 2011 19:20:03 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/05/18/buddha-wins-two-webby-awards/</guid><description>&lt;p>I am excited to announce that &lt;a href="http://www.pbs.org/thebuddha/" title="The Buddha">The Buddha&lt;/a> site won two Webby Awards! It was built in partnership with Sonnet Media as a companion to &lt;a href="http://video.pbs.org/video/1418075805" title="The Buddha">The Buddha&lt;/a> documentary directed by David Grubin that aired on PBS in April 2010. The site was built using Django to create a multi layered interactive experience to further explore the life and times of the Buddha.&lt;/p></description></item><item><title>The Buddha Website Nominated for Webby Award</title><link>https://www.caktusgroup.com/blog/2011/04/12/buddha-website-nominated-webby-award/</link><pubDate>Tue, 12 Apr 2011 16:09:44 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/04/12/buddha-website-nominated-webby-award/</guid><description>&lt;p>I'm delighted to announce that the &lt;a href="https://www.caktusgroup.com/portfolio/project/the-buddha-a-pbs-documentary/">PBS companion website for The
Buddha&lt;/a>
&amp;mdash; a site that Caktus helped build using the Django web framework &amp;mdash;
has been nominated for a Webby Award in the Religion and Spirituality
category! Online voting for the People&amp;rsquo;s Voice awards is now underway
and we would appreciate you &lt;a href="http://webby.aol.com/media_types/web?focused_on_category=973#cat_id_973" target="_blank" rel="noopener noreferrer">voting for the
site&lt;/a>
and encouraging others to do so as well. You can also view the entry
page directly
&lt;a href="http://webby.aol.com/entries/57606" target="_blank" rel="noopener noreferrer">here&lt;/a>.&lt;/p></description></item><item><title>Caktus 2011 Summer Internship Program</title><link>https://www.caktusgroup.com/blog/2011/03/25/caktus-2011-summer-internship-program/</link><pubDate>Fri, 25 Mar 2011 18:51:25 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/03/25/caktus-2011-summer-internship-program/</guid><description>&lt;p>I'm excited to announce that Caktus is launching its summer internship
program. It is a 12 week paid position in our Carrboro, NC office.
We're in driving distance from UNC Chapel Hill, NC State in Raleigh,
and Duke in Durham, so students from all parts of the NC Research
Triangle are welcome to apply.&lt;/p></description></item><item><title>Sprinting on Django: A Layperson's Perspective</title><link>https://www.caktusgroup.com/blog/2011/03/15/sprinting-django-laypersons-perspective/</link><pubDate>Tue, 15 Mar 2011 17:32:37 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/03/15/sprinting-django-laypersons-perspective/</guid><description>&lt;p>We just got back from another fun and successful PyCon. While we didn't
get to stay for much of the sprints we did get to spend some time in the
Django sprint Sunday and Monday. Monday morning I was there early and I
noticed a bit of confusion among the Django sprinters. While I'm not a
frequent contributor I've participated a few sprints at previous
conferences and
&lt;a href="http://www.caktusgroup.com/blog/2009/12/06/caktus-consulting-group-hosts-django-sprint-in-triangle-nc-area/" target="_blank" rel="noopener noreferrer">local&lt;/a>
&lt;a href="http://www.caktusgroup.com/blog/2010/03/16/caktus-consulting-group-hosts-2nd-django-sprint-in-nc-triangle-area/" target="_blank" rel="noopener noreferrer">sprints&lt;/a>
with Caktus. I shared with them my experiences and it seemed generally
helpful so I thought I would share them here as well.&lt;/p></description></item><item><title>New Job Posting: Linux Systems Administrator with Python/Django experience</title><link>https://www.caktusgroup.com/blog/2011/03/12/new-job-posting-linux-systems-administrator-pythondjango-experience/</link><pubDate>Sat, 12 Mar 2011 16:56:33 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/03/12/new-job-posting-linux-systems-administrator-pythondjango-experience/</guid><description>&lt;p>I'm delighted to announce that we've just published another job
posting for a Linux Systems Administrator at Caktus. The position will
involve maintaining existing Linux servers, designing and building
highly-scalable deployments, and assistance with Django deployment and
development as time permits. This is a full-time position, with
benefits, and is based out of our Carrboro, NC office (a short drive
from Raleigh, Durham, and Chapel Hill).&lt;/p></description></item><item><title>Caktus Consulting Group Sponsors PyCon 2011</title><link>https://www.caktusgroup.com/blog/2011/03/09/caktus-consulting-group-sponsors-pycon-2011/</link><pubDate>Thu, 10 Mar 2011 03:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/03/09/caktus-consulting-group-sponsors-pycon-2011/</guid><description>&lt;p>&lt;a href="http://us.pycon.org/2011/home/" target="_blank" rel="noopener noreferrer">PyCon 2011
Atlanta&lt;/a> is just
around the corner, and I'm proud to announce that Caktus is a gold
sponsor at the conference this year! We sponsored DjangoCon in both 2009
and 2010, and this year agreed to extend that support to the Python
community in general.&lt;/p></description></item><item><title>New Careers Page Inaugurated with Django Job Posting</title><link>https://www.caktusgroup.com/blog/2011/02/09/new-careers-page-inaugurated-django-job-posting/</link><pubDate>Wed, 09 Feb 2011 16:50:47 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2011/02/09/new-careers-page-inaugurated-django-job-posting/</guid><description>&lt;p>I&amp;rsquo;m pleased to announce that we just released a new &lt;a href="https://www.caktusgroup.com/careers/" title="Careers at Caktus">Careers section&lt;/a> of our web site here at Caktus. The section has been inaugurated with a new posting for a full-time Django developer position based out of our Carrboro, NC office (not far from Raleigh, Durham, or Chapel Hill), so kindly check it out and let us know if you or someone you know might be a good fit!&lt;/p></description></item><item><title>HIV Results, Birth Reminders, and Clinic Communication in Malawi</title><link>https://www.caktusgroup.com/blog/2010/12/29/hiv-results-birth-reminders-and-clinic-communication-malawi/</link><pubDate>Wed, 29 Dec 2010 23:52:00 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2010/12/29/hiv-results-birth-reminders-and-clinic-communication-malawi/</guid><description>&lt;p>I recently returned from a 6 week trip in Malawi, where I was heavily
involved in the implementation and deployment of &lt;a href="https://www.caktusgroup.com/portfolio/project/unicef-project-mwana/">Project
Mwana&lt;/a>, an Information and
Communication Technology (ICT) project focused on Maternal and Newborn
Child Health (MNCH). The project is currently running as a pilot in both
Zambia and Malawi. This post is a fairly technical overview of what the
project does and the way in which it was developed.&lt;/p></description></item><item><title>Simplifying the Testing of Unmanaged Database Models in Django (Updated for Django 4.2 in 2024)</title><link>https://www.caktusgroup.com/blog/2010/09/24/simplifying-the-testing-of-unmanaged-database-models-in-django/</link><pubDate>Fri, 24 Sep 2010 15:01:09 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2010/09/24/simplifying-the-testing-of-unmanaged-database-models-in-django/</guid><description>&lt;p>&lt;em>Editor's note: This post was originally published in September, 2010
and was updated in December, 2024 to incorporate changes in Django and
improvements suggested by our readers. It has also been tested for
compatibility as of the Django 4.2 release.&lt;/em>&lt;/p></description></item><item><title>Caktus Consulting Group Seeks Two Python/Django Web Developers</title><link>https://www.caktusgroup.com/blog/2010/09/03/caktus-consulting-group-seeks-two-python-django-web-developers/</link><pubDate>Fri, 03 Sep 2010 15:13:03 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2010/09/03/caktus-consulting-group-seeks-two-python-django-web-developers/</guid><description>&lt;p>I'm delighted to announce that &lt;a href="https://www.caktusgroup.com/">Caktus&lt;/a>
is looking for two Python and/or Django web developers to join our team
on a contract or part-time basis, with the potential for full-time work
in the future.&lt;/p></description></item><item><title>Caktus Consulting Group Sponsors DjangoCon 2010</title><link>https://www.caktusgroup.com/blog/2010/08/26/caktus-consulting-group-sponsors-djangocon-2010/</link><pubDate>Thu, 26 Aug 2010 17:50:45 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2010/08/26/caktus-consulting-group-sponsors-djangocon-2010/</guid><description>&lt;p>&lt;a href="http://djangocon.us" target="_blank" rel="noopener noreferrer">DjangoCon 2010&lt;/a> is just around the corner, and
I'm proud to announce that Caktus is sponsoring the conference again
this year!&lt;/p></description></item><item><title>Caktus Consulting Group Welcomes Lead Developer Karen Tracey</title><link>https://www.caktusgroup.com/blog/2010/08/12/caktus-consulting-group-welcomes-lead-developer-karen-tracey/</link><pubDate>Thu, 12 Aug 2010 19:10:43 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2010/08/12/caktus-consulting-group-welcomes-lead-developer-karen-tracey/</guid><description>&lt;p>I'm delighted to welcome Karey Tracey to our growing team of web
developers here at Caktus. Karen is a core developer of the Django web
framework and specializes in the development and testing of applications
for the web. She is also the author of &lt;a href="https://www.packtpub.com/django-1-1-testing-and-debugging/book" target="_blank" rel="noopener noreferrer">&lt;em>Django 1.1 Testing and
Debugging&lt;/em>&lt;/a>,
published by Packt Publishing in April, 2010.&lt;/p></description></item><item><title>Expanded services, portfolio, and more in the new Caktus web site</title><link>https://www.caktusgroup.com/blog/2010/06/07/expanded-services-portfolio-and-more-in-the-new-caktus-web-site/</link><pubDate>Mon, 07 Jun 2010 20:46:20 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2010/06/07/expanded-services-portfolio-and-more-in-the-new-caktus-web-site/</guid><description>&lt;p>We're pleased to announce the release of the latest and greatest Caktus
web presence yet. This edition features an enhanced &lt;a href="https://www.caktusgroup.com/services/">services
section&lt;/a> and &lt;a href="https://www.caktusgroup.com/portfolio/">portfolio&lt;/a>. Among other things,
the new site demonstrates how our &lt;a href="https://www.caktusgroup.com/content-management/">Django-based content management
system&lt;/a> can be used to connect related pages in
customized, innovative ways.&lt;/p></description></item><item><title>Basic Django deployment with virtualenv, fabric, pip and rsync</title><link>https://www.caktusgroup.com/blog/2010/04/22/basic-django-deployment-with-virtualenv-fabric-pip-and-rsync/</link><pubDate>Fri, 23 Apr 2010 00:46:37 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2010/04/22/basic-django-deployment-with-virtualenv-fabric-pip-and-rsync/</guid><description>&lt;p>Deployment is usually a tedious process with lots of tinkering until
everything is setup just right. We deploy quite a few Django sites on a
regular basis here at Caktus and still do tinkering, but we've
attempted to functionalize some of the core tasks to ease the process.
I've put together a basic example that outlines local and remote
environment setup. This is a simplified example and just one of many
ways to deploy a Django project (I learned a lot from Jacob
Kaplan-Moss'
&lt;a href="http://github.com/jacobian/django-deployment-workshop/" target="_blank" rel="noopener noreferrer">django-deployment-workshop&lt;/a>),
so I encourage you to browse around the Django community to learn more.
The entire source for this example project can be found in the
&lt;a href="http://www.bitbucket.org/copelco/caktus-deployment/src/tip/example-django-project/" target="_blank" rel="noopener noreferrer">caktus-deployment Bitbucket
repository&lt;/a>.&lt;/p></description></item><item><title>Caktus Consulting Group hosts 2nd Django sprint in NC Triangle area</title><link>https://www.caktusgroup.com/blog/2010/03/16/caktus-consulting-group-hosts-2nd-django-sprint-in-nc-triangle-area/</link><pubDate>Tue, 16 Mar 2010 16:36:31 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2010/03/16/caktus-consulting-group-hosts-2nd-django-sprint-in-nc-triangle-area/</guid><description>&lt;p>&lt;a href="http://www.djangoproject.com/" target="_blank" rel="noopener noreferrer">Django&lt;/a> is a tool we use every day to
build &lt;a href="https://www.caktusgroup.com/services/">fantastic web apps&lt;/a> here at Caktus, and a development
sprint is a concerted, focused period of time in which developers meet
in the same space to get things done on a project.&lt;/p></description></item><item><title>Decoupled Django Apps and the Beauty of Generic Relations</title><link>https://www.caktusgroup.com/blog/2010/03/11/decoupled-django-apps-and-the-beauty-of-generic-relations/</link><pubDate>Thu, 11 Mar 2010 21:18:02 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2010/03/11/decoupled-django-apps-and-the-beauty-of-generic-relations/</guid><description>&lt;p>Like just about everyone else, we've written our own suite of tools to
help with building complex content management systems in Django here at
&lt;a href="https://www.caktusgroup.com/services">Caktus&lt;/a>. We reviewed a number of the existing CMSes out
there, but in almost every case the navigation and page structure were
so tightly coupled the system broke down when it came time to add
additional, non-CMS pages.&lt;/p></description></item><item><title>Continuous Integration with Django and Hudson CI (Day 1)</title><link>https://www.caktusgroup.com/blog/2010/03/08/django-and-hudson-ci-day-1/</link><pubDate>Mon, 08 Mar 2010 15:58:48 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2010/03/08/django-and-hudson-ci-day-1/</guid><description>&lt;p>We're always looking for new tools to make our development environment
more robust here at Caktus. We write a lot of
&lt;a href="https://www.caktusgroup.com/blog/2009/05/26/testing-django-views-for-concurrency-issues/">tests&lt;/a>
to ensure proper functionality as new features land and bug fixes are
added to our projects. The next step is to integrate with a &lt;a href="http://en.wikipedia.org/wiki/Continuous_integration" target="_blank" rel="noopener noreferrer">continuous
integration&lt;/a> system
to automate the process and regularly check that status of the build.&lt;/p></description></item><item><title>Caktus Sends Team of Five to PyCon 2010 in Atlanta</title><link>https://www.caktusgroup.com/blog/2010/02/17/caktus-sends-team-of-five-to-pycon-2010-in-atlanta/</link><pubDate>Wed, 17 Feb 2010 18:08:30 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2010/02/17/caktus-sends-team-of-five-to-pycon-2010-in-atlanta/</guid><description>&lt;p>&lt;a href="http://www.python.org" target="_blank" rel="noopener noreferrer">Python&lt;/a> and
&lt;a href="http://www.djangoproject.org" target="_blank" rel="noopener noreferrer">Django&lt;/a> are tools we use on a daily basis
to build &lt;a href="https://www.caktusgroup.com/services/">fantastic web apps&lt;/a> here at Caktus. I'm pleased
to announce that Caktus is sending five developers--Colin, Alex, Mike,
Mark, and myself--to &lt;a href="http://us.pycon.org/2010/about/" target="_blank" rel="noopener noreferrer">PyCon 2010&lt;/a>!
PyCon is an annual gathering for users and developers of the open source
Python programming language. This year the US conference is being held
in Atlanta, GA. We'll be driving down tomorrow (Thursday) from Chapel
Hill, NC and staying for the conference weekend plus one day of the
sprints.&lt;/p></description></item><item><title>Caktus Consulting Group hosts Django sprint in Triangle, NC area</title><link>https://www.caktusgroup.com/blog/2009/12/06/caktus-consulting-group-hosts-django-sprint-in-triangle-nc-area/</link><pubDate>Sun, 06 Dec 2009 19:37:17 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/12/06/caktus-consulting-group-hosts-django-sprint-in-triangle-nc-area/</guid><description>&lt;p>&lt;a href="http://www.djangoproject.com/" target="_blank" rel="noopener noreferrer">Django&lt;/a> is a tool we use every day to
build &lt;a href="http://www.caktusgroup.com/services/" target="_blank" rel="noopener noreferrer">rock-solid web apps&lt;/a> here
at Caktus, and a development sprint is a concerted, focused period of
time in which developers meet in the same space to get things done on a
project.&lt;/p></description></item><item><title>Custom JOINs with Django's query.join()</title><link>https://www.caktusgroup.com/blog/2009/09/28/custom-joins-with-djangos-queryjoin/</link><pubDate>Mon, 28 Sep 2009 14:26:02 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/09/28/custom-joins-with-djangos-queryjoin/</guid><description>&lt;p>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.&lt;/p></description></item><item><title>Web Developer for Hire</title><link>https://www.caktusgroup.com/blog/2009/09/23/developer-for-hire/</link><pubDate>Wed, 23 Sep 2009 14:26:58 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/09/23/developer-for-hire/</guid><description>&lt;p>We're pleased to announce that &lt;a href="http://www.caktusgroup.com/" target="_blank" rel="noopener noreferrer">Caktus&lt;/a> is
looking for a developer to join our team on a contract basis!&lt;/p>
&lt;p>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
&lt;a href="http://www.carrborocoworking.com/" target="_blank" rel="noopener noreferrer">Carrboro Creative Coworking&lt;/a>) who
believe in face-to-face contact and employ agile development techniques
that emphasize teamwork and collaboration.&lt;/p></description></item><item><title>Open Source Django Projects from Caktus Consulting Group</title><link>https://www.caktusgroup.com/blog/2009/09/07/open-source-django-apps-from-caktus-consulting-group/</link><pubDate>Mon, 07 Sep 2009 23:48:44 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/09/07/open-source-django-apps-from-caktus-consulting-group/</guid><description>&lt;p>At Caktus we're big fans of reusing code. We leverage many open source
projects--especially Django apps--to accomplish a variety of tasks. In
addition, we've written quite a few pluggable apps over the paste two
years that we reuse over and over again for different projects. As a way
of giving back to the community, we've polished and released a portion
of that code as open source ourselves. While some of the projects have
been available on Google Code for awhile now, we just put together a
consolidated list of &lt;a href="http://www.caktusgroup.com/portfolio/community/" target="_blank" rel="noopener noreferrer">open source Django
projects&lt;/a> on our web
site to serve as a jumping off point for all the projects we like, we
contributed to, and we created. Enjoy!&lt;/p></description></item><item><title>Caktus Consulting Group, LLC sponsors DjangoCon 2009</title><link>https://www.caktusgroup.com/blog/2009/09/05/djangocon-2009/</link><pubDate>Sun, 06 Sep 2009 03:58:29 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/09/05/djangocon-2009/</guid><description>&lt;p>&lt;a href="http://www.djangoproject.com/" target="_blank" rel="noopener noreferrer">Django&lt;/a> is a tool we use on a daily
basis to build &lt;a href="http://www.caktusgroup.com/services/" target="_blank" rel="noopener noreferrer">fantastic web
apps&lt;/a> here at Caktus, and
&lt;a href="http://www.djangocon.org" target="_blank" rel="noopener noreferrer">DjangoCon&lt;/a> is the annual conference for
Django developers and other community members. We are proud to announce
that Caktus Consulting Group, LLC is sponsoring DjangoCon 2009!&lt;/p></description></item><item><title>Creating recursive, symmetrical many-to-many relationships in Django</title><link>https://www.caktusgroup.com/blog/2009/08/14/creating-recursive-symmetrical-many-to-many-relationships-in-django/</link><pubDate>Fri, 14 Aug 2009 18:10:43 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/08/14/creating-recursive-symmetrical-many-to-many-relationships-in-django/</guid><description>&lt;p>In Django, a recursive many-to-many relationship is a &lt;code>ManyToManyField&lt;/code>
that points to the same model in which it's defined &lt;code>('self')&lt;/code>. A
symmetrical relationship is one in where, when &lt;code>a.contacts = [b]&lt;/code>, a is
in &lt;code>b.contacts&lt;/code>.&lt;/p></description></item><item><title>Setting PostgreSQL's SHMMAX in Mac OS X 10.5 (Leopard)</title><link>https://www.caktusgroup.com/blog/2009/08/13/setting-postgresqls-shmmax-in-mac-os-x-105-leopard/</link><pubDate>Thu, 13 Aug 2009 11:46:08 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/08/13/setting-postgresqls-shmmax-in-mac-os-x-105-leopard/</guid><description>&lt;p>If you've ever tried to increase the
&lt;a href="http://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-SHARED-BUFFERS" target="_blank" rel="noopener noreferrer">shared_buffers&lt;/a>
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:&lt;/p></description></item><item><title>Towards a Standard for Django Session Messages</title><link>https://www.caktusgroup.com/blog/2009/06/19/towards-a-standard-for-django-session-messages/</link><pubDate>Fri, 19 Jun 2009 15:31:13 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/06/19/towards-a-standard-for-django-session-messages/</guid><description>&lt;p>Django needs a standard way in which session-specific messages can be created and retrieved for display to the user. For years we&amp;rsquo;ve been surviving using &lt;code>user.message_set&lt;/code> to store messages that are really specific to the current session, not the user, or using the latest and greatest Django snippet, pluggable app, or custom crafted middleware to handle messages in a more appropriate way.&lt;/p></description></item><item><title>Remote logging with Python logging and Django</title><link>https://www.caktusgroup.com/blog/2009/06/09/remote-logging-with-python-logging-and-django/</link><pubDate>Tue, 09 Jun 2009 12:47:10 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/06/09/remote-logging-with-python-logging-and-django/</guid><description>&lt;p>As part of my work on &lt;a href="http://www.everywatt.com/" target="_blank" rel="noopener noreferrer">EveryWatt&lt;/a>, our
fledgling energy monitoring web site, I needed a way to consolidate log
messages from all the data loggers we have running in a single place. If
you're not familiar with it, Python's &lt;a href="http://docs.python.org/library/logging.html" target="_blank" rel="noopener noreferrer">logging
module&lt;/a> is good stuff and
worth checking out. We already used it for logging to files locally, and
the module defines an
&lt;a href="http://docs.python.org/library/logging.html#logging.handlers.HTTPHandler" target="_blank" rel="noopener noreferrer">HTTPHandler&lt;/a>
that can deliver log messages to a remote server via HTTP.&lt;/p></description></item><item><title>Testing Django Views for Concurrency Issues (Updated for Django 4.2 in 2024)</title><link>https://www.caktusgroup.com/blog/2009/05/26/testing-django-views-for-concurrency-issues/</link><pubDate>Tue, 26 May 2009 19:59:25 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/05/26/testing-django-views-for-concurrency-issues/</guid><description>&lt;p>&lt;em>Editor's note: This post was originally published in May, 2009 and was
updated in December, 2024 to incorporate changes in Django and
improvements suggested by our readers. It has also been tested for
compatibility as of the Django 4.2 release.&lt;/em>&lt;/p></description></item><item><title>Explicit Table Locking with PostgreSQL and Django</title><link>https://www.caktusgroup.com/blog/2009/05/26/explicit-table-locking-with-postgresql-and-django/</link><pubDate>Tue, 26 May 2009 18:59:10 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/05/26/explicit-table-locking-with-postgresql-and-django/</guid><description>&lt;p>By default, &lt;a href="http://www.djangoproject.com/" target="_blank" rel="noopener noreferrer">Django&lt;/a> 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
&lt;a href="http://www.postgresql.org/" target="_blank" rel="noopener noreferrer">PostgreSQL&lt;/a> in most of our production
environments, so we can use the &lt;a href="http://www.postgresql.org/docs/8.3/interactive/explicit-locking.html" target="_blank" rel="noopener noreferrer">various lock
modes&lt;/a>
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 &lt;a href="http://www.postgresql.org/docs/8.3/interactive/sql-lock.html" target="_blank" rel="noopener noreferrer">SQL LOCK
statement&lt;/a>
within a transaction, and Django and PostgreSQL will handle the rest.&lt;/p></description></item><item><title>Parsing Microseconds in a Django Form</title><link>https://www.caktusgroup.com/blog/2009/05/26/parsing-microseconds-in-a-django-form/</link><pubDate>Tue, 26 May 2009 13:43:56 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/05/26/parsing-microseconds-in-a-django-form/</guid><description>&lt;p>There's currently no way to accept microsecond-precision input through
a Django form's DateTimeField. This is an &lt;a href="http://code.djangoproject.com/ticket/9459%20" target="_blank" rel="noopener noreferrer">acknowledged
bug&lt;/a>, but the official
solution might not come very soon, because the real fix is non-trivial.&lt;/p></description></item><item><title>Seamlessly switch off (and on) a Django (or other WSGI) site for upgrades</title><link>https://www.caktusgroup.com/blog/2009/05/25/seamlessly-switch-off-and-on-a-django-or-other-wsgi-site-for-upgrades/</link><pubDate>Mon, 25 May 2009 19:53:18 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/05/25/seamlessly-switch-off-and-on-a-django-or-other-wsgi-site-for-upgrades/</guid><description>&lt;p>In preparation for migrating the &lt;a href="http://www.everywatt.com" target="_blank" rel="noopener noreferrer">EveryWatt&lt;/a>
database from one machine to another, I wrote this little
&lt;a href="http://www.wsgi.org/wsgi/What_is_WSGI" target="_blank" rel="noopener noreferrer">WSGI&lt;/a> script to easily disable
the site while I copy the data. Since it doesn't depend on
&lt;a href="http://www.djangoproject.com/" target="_blank" rel="noopener noreferrer">Django&lt;/a> or really anything else (other
than a functioning WSGI server), you can use it for other upgrades, too.&lt;/p></description></item><item><title>Eclipse Ganymede and Subclipse on Ubuntu - JavaHL (JNI) not available</title><link>https://www.caktusgroup.com/blog/2009/05/21/eclipse-ganymede-and-subsclipe-on-ubuntu-javahl-jni-not-available/</link><pubDate>Thu, 21 May 2009 15:10:25 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/05/21/eclipse-ganymede-and-subsclipe-on-ubuntu-javahl-jni-not-available/</guid><description>&lt;p>I finally got around to updating my &lt;a href="http://www.eclipse.org" target="_blank" rel="noopener noreferrer">Eclipse&lt;/a>,
&lt;a href="http://pydev.sourceforge.net/" target="_blank" rel="noopener noreferrer">PyDev&lt;/a>, and
&lt;a href="http://subclipse.tigris.org/" target="_blank" rel="noopener noreferrer">Subclipse&lt;/a> environment today, which I use
for &lt;a href="http://www.djangoproject.com" target="_blank" rel="noopener noreferrer">Django&lt;/a> development.&lt;/p>
&lt;p>Formerly I was using the SvnKit (pure-Java) libraries. SvnKit &amp;quot;felt&amp;quot;
slow to me, compared to my command line SVN client, so this time I tried
to get the JavaHL (JNI) libraries working.&lt;/p></description></item><item><title>Downsizing an LVM/RAID root partition</title><link>https://www.caktusgroup.com/blog/2009/04/23/recovering-lvm-on-raid/</link><pubDate>Thu, 23 Apr 2009 20:04:03 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/04/23/recovering-lvm-on-raid/</guid><description>&lt;p>At Caktus we use
&lt;a href="http://en.wikipedia.org/wiki/Logical_Volume_Manager_%28Linux%29" target="_blank" rel="noopener noreferrer">LVM2&lt;/a> on a
&lt;a href="http://en.wikipedia.org/wiki/RAID_1#RAID_1" target="_blank" rel="noopener noreferrer">RAID1&lt;/a> device to ease disk
management on a number of our servers. Recently I needed to downsize the
root partition of one of the servers, so I rebooted onto an Ubuntu 8.10
LiveCD and attempted to load the RAID/LVM info.&lt;/p></description></item><item><title>Migrating from django-photologue 1.x to 2.x</title><link>https://www.caktusgroup.com/blog/2009/03/27/migrating-from-django-photologue-1x-to-2x/</link><pubDate>Fri, 27 Mar 2009 17:52:30 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/03/27/migrating-from-django-photologue-1x-to-2x/</guid><description>&lt;p>We're in the process of updating a web app for a client that was built
last year about this time using &lt;a href="http://www.djangoproject.com" target="_blank" rel="noopener noreferrer">Django&lt;/a>
and &lt;a href="http://code.google.com/p/django-photologue/" target="_blank" rel="noopener noreferrer">Photologue&lt;/a>. Needless
to say, there have been a lot of changes to both over the past year!&lt;/p></description></item><item><title>Solving NFS issues on embedded machines</title><link>https://www.caktusgroup.com/blog/2009/03/25/solving-nfs-issues-on-embedded-machines/</link><pubDate>Wed, 25 Mar 2009 16:07:27 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/03/25/solving-nfs-issues-on-embedded-machines/</guid><description>&lt;p>As part of my work on &lt;a href="http://www.everywatt.com" target="_blank" rel="noopener noreferrer">EveryWatt&lt;/a>, I setup an
NFS-based development environment for one of the data loggers we use for
energy monitoring in the Caktus office. The stock 2.4 Linux kernel in
the machine seemed to have some trouble mounting the file system root I
had exported from one of our servers. The symptoms included long delays
for most if not all activities that used the file system and lots of
messages like these in dmesg:&lt;/p></description></item><item><title>Overriding Django admin templates for fun and profit</title><link>https://www.caktusgroup.com/blog/2009/01/20/overriding-django-admin-templates-for-fun-and-profit/</link><pubDate>Tue, 20 Jan 2009 18:25:48 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/01/20/overriding-django-admin-templates-for-fun-and-profit/</guid><description>&lt;h4 id="motivation--goal">Motivation &amp;amp; Goal&lt;/h4>
&lt;p>I sometimes find the admin interface's lists of instances of models
overwhelming. The filters and searching helps, but it would be nice to
get an overview of the data that is being shown. Particularly I wanted
to generate a graph based on the filters selected by the user, so that
only items displayed after a filter would be graphed.&lt;/p></description></item><item><title>Why Caktus Uses Django</title><link>https://www.caktusgroup.com/blog/2009/01/13/why-caktus-uses-django/</link><pubDate>Tue, 13 Jan 2009 15:45:31 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/01/13/why-caktus-uses-django/</guid><description>&lt;p>Here at &lt;a href="http://www.caktusgroup.com/services/" target="_blank" rel="noopener noreferrer">Caktus&lt;/a>, we use the
popular &lt;a href="http://www.djangoproject.com" target="_blank" rel="noopener noreferrer">Django&lt;/a> web framework for a lot
of our custom web application development. We don't use Django simply
because it's popular, easy to learn, or happened to be the first thing
we found. We've written web apps in PHP, Java, and Ruby on Rails--all
before we discovered Django--but were never quite satisfied. Following
are just a few of the reasons that we both enjoy working with Django and
believe it gives you (the client) the best end-product.&lt;/p></description></item><item><title>minibooks: Small Business Bookkeeping</title><link>https://www.caktusgroup.com/blog/2009/01/07/minibooks-small-business-bookkeeping/</link><pubDate>Wed, 07 Jan 2009 15:49:06 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2009/01/07/minibooks-small-business-bookkeeping/</guid><description>&lt;p>Caktus released minibooks (open-sourced under the AGPL) as a bookkeeping
package for small tech agencies. Boasting a &lt;a href="http://en.wikipedia.org/wiki/Double-entry_bookkeeping_system" target="_blank" rel="noopener noreferrer">double-entry
accounting&lt;/a>
system, &lt;a href="http://en.wikipedia.org/wiki/Customer_relationship_management" target="_blank" rel="noopener noreferrer">customer relationship management
(CRM)&lt;/a>
and transaction reconciliation, minibooks provides a clean, multiuser
web-based interface to manage simple accounting needs for small
businesses.&lt;/p></description></item><item><title>Entering Contacts in CiviCRM</title><link>https://www.caktusgroup.com/blog/2008/11/05/entering-contacts-in-civicrm/</link><pubDate>Wed, 05 Nov 2008 20:29:51 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2008/11/05/entering-contacts-in-civicrm/</guid><description>&lt;p>One of our non-profit clients recently asked for help entering the
numerous business cards they get at trade shows, etc., into their
Customer Relationship Management database, a copy of
&lt;a href="http://www.civicrm.org" target="_blank" rel="noopener noreferrer">CiviCRM&lt;/a> that &lt;a href="http://www.caktusgroup.com/services/non-profit/" target="_blank" rel="noopener noreferrer">we setup and manage for
them&lt;/a>. The best path
for entering contacts isn't necessarily obvious from the get-go, but
the following procedure is the best we've found and has the lowest
up-front investment (you might be able to do something more efficient
with a Profile, but that doesn't seem as flexible with respect to
matching existing contacts).&lt;/p></description></item><item><title>Caktus' New Web Presence</title><link>https://www.caktusgroup.com/blog/2008/10/27/caktus-new-web-presence/</link><pubDate>Mon, 27 Oct 2008 14:11:22 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2008/10/27/caktus-new-web-presence/</guid><description>&lt;p>In honor of our recent one year anniversary (August 31st), we revamped
our web presence to address a couple concerns about the original site:&lt;/p></description></item><item><title>Asterisk CDR &amp; Django integration with ODBC</title><link>https://www.caktusgroup.com/blog/2008/10/13/asterisk-cdr-django-odbc/</link><pubDate>Mon, 13 Oct 2008 14:58:09 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2008/10/13/asterisk-cdr-django-odbc/</guid><description>&lt;p>Tobias already
&lt;a href="http://www.caktusgroup.com/blog/2007/12/15/is-asterisk-more-silent-than-youd-like/" target="_blank" rel="noopener noreferrer">mentioned&lt;/a>
how Caktus uses &lt;a href="http://www.asterisk.org/" target="_blank" rel="noopener noreferrer">Asterisk&lt;/a> as our PBX. He also
mentioned how we tested various frontends both for managing the asterisk
configuration and interacting with asterisk to, for example, check our
voicemail. We were inticed by some of the client management solutions
that we could plumb up with asterisk. Caktus has a loose administration
structure, which allows us to be flexible and not have levels of
managers between clients and coders. But, this flexiblility can leave
loose ends unchecked when the person in charge of a project is
distracted for a day or two. We saw this as an opportunity where Caktus
could add a level of group accountability and use some neat technology.
We also wanted a tool that would integrate well with our current
homegrown &lt;a href="http://www.djangoproject.com" target="_blank" rel="noopener noreferrer">Django&lt;/a>ERP/CRM as well as Trac,
our prefered tool for project management. So, we decided to write some
sweet code.&lt;/p></description></item><item><title>Free and Open Source security scanning software</title><link>https://www.caktusgroup.com/blog/2008/09/07/free-and-open-source-security-scanning-software/</link><pubDate>Sun, 07 Sep 2008 17:45:23 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2008/09/07/free-and-open-source-security-scanning-software/</guid><description>&lt;p>I was pretty disappointed when I discovered today that Nessus, the
security scanner I've used for many years now, had discontinued its
free plugin feed. The plugin feed is used to disseminate updated
security alerts in an automated fashion to the security scanner, as they
become available. The price tag on Nessus' new &amp;quot;Professional Feed&amp;quot;:
$1200.&lt;/p></description></item><item><title>Database Explained for the Business Professional</title><link>https://www.caktusgroup.com/blog/2008/02/22/database-explained-for-the-business-professional/</link><pubDate>Fri, 22 Feb 2008 08:23:58 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2008/02/22/database-explained-for-the-business-professional/</guid><description>&lt;p>One problem with marketing is that it introduces pseudo-false concepts,
arbitrarily divorces necessarily wed ones, and leaves out all the gory
details. We recently had a client ask us,&lt;/p></description></item><item><title>Is Asterisk More Silent Than You'd Like?</title><link>https://www.caktusgroup.com/blog/2007/12/15/is-asterisk-more-silent-than-youd-like/</link><pubDate>Sat, 15 Dec 2007 19:06:01 +0000</pubDate><guid>https://www.caktusgroup.com/blog/2007/12/15/is-asterisk-more-silent-than-youd-like/</guid><description>&lt;p>At Caktus, we use the &lt;a href="http://www.asterisk.org/" target="_blank" rel="noopener noreferrer">Asterisk&lt;/a> open source
telephony platform. While setting up Asterisk, we tested a number of
different system environments and configurations to help determine what
would best fit our telephone needs. This involved running Asterisk on
both real and virtual machines and testing several configuration front
ends, including &lt;a href="http://www.freepbx.org/" target="_blank" rel="noopener noreferrer">FreePBX&lt;/a> and
&lt;a href="http://destar.berlios.de/" target="_blank" rel="noopener noreferrer">DeStar&lt;/a>. This article discusses a fairly
technical problem we confronted while installing a basic Asterisk setup
on the Debian GNU/Linux operating system (on real hardware); namely,
when the ztdummy Linux kernel module was loaded, Asterisk was unable to
play back any recordings (even its own). When we unloaded the ztdummy
module, however, recordings would play back fine. The catch, of course,
was that we needed ztdummy loaded for conference room support.&lt;/p></description></item><item><title>Bare Metal and On-Prem Deployment</title><link>https://www.caktusgroup.com/services/bare-metal-on-prem-deployment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/services/bare-metal-on-prem-deployment/</guid><description>&lt;p>Deploy your software on servers that are fully within your control.&lt;/p></description></item><item><title>Complex Data Requirements</title><link>https://www.caktusgroup.com/services/complex-data-requirements/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/services/complex-data-requirements/</guid><description>&lt;p>Future-proof your applications by architecting your data models correctly.&lt;/p></description></item><item><title>Custom Web Application Development</title><link>https://www.caktusgroup.com/services/custom-web-app-development/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/services/custom-web-app-development/</guid><description>&lt;p>Our passionate, creative experts engineer solutions that are elegant and can grow with you. Our top-notch quality assurance practices ensure project requirement compliance.&lt;/p></description></item><item><title>DevOps / Cloud Services</title><link>https://www.caktusgroup.com/services/cloud-services/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/services/cloud-services/</guid><description>&lt;p>Cloud infrastructure scales depending on the demands of your business, so it’s a great option if you have fluctuating workloads. You can add or take away resources based on your needs. As you grow, your system grows with you.&lt;/p></description></item><item><title>Discovery Workshops</title><link>https://www.caktusgroup.com/services/discovery-workshops/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/services/discovery-workshops/</guid><description>&lt;h2 id="develop-the-right-product-the-first-time-start-with-a-discovery-workshop">Develop the right product the first time. Start with a discovery workshop.&lt;/h2>
&lt;p>Your project doesn&amp;rsquo;t have to feel complicated. Clarify the vision and build a shared understanding among stakeholders about what is being built, for whom, and the best way to build it. In our discovery workshops, we engage in customer-centric strategies, such as user story mapping or content modeling, as part of the requirements gathering process to help ensure that the user experience will be a good one, and the final product will be a success.&lt;/p></description></item><item><title>Offline Data Capture</title><link>https://www.caktusgroup.com/services/offline-data-capture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/services/offline-data-capture/</guid><description>&lt;p>Collect data reliably, wherever it is, whether you have access to the Internet or not.&lt;/p></description></item><item><title>Quality Assurance</title><link>https://www.caktusgroup.com/services/quality-assurance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/services/quality-assurance/</guid><description>&lt;p>Provide your users with the best possible experience using top-notch quality assurance practices. Caktus offers QA as part of our custom development projects and as a separate service. Our experts provide thorough testing and prioritize any defects to minimize the impact on the end product and meet the project&amp;rsquo;s requirements.&lt;/p></description></item><item><title>Team Augmentation</title><link>https://www.caktusgroup.com/services/team-augmentation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/services/team-augmentation/</guid><description>&lt;h2 id="feel-like-weve-always-been-a-part-of-your-team">Feel like we&amp;rsquo;ve always been a part of your team.&lt;/h2>
&lt;p>Extend your in-house development team or set up a new team within weeks. Caktus makes it easy. Since 2007, organizations large and small have turned to us to seamlessly integrate our developers into new and existing projects. Our experienced developers alleviate capacity constraints, improve code quality, and streamline development — while you stay in control of the development process.&lt;/p></description></item><item><title>Upgrades and Sustainability</title><link>https://www.caktusgroup.com/services/python-django-upgrades-and-sustainability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.caktusgroup.com/services/python-django-upgrades-and-sustainability/</guid><description>&lt;p>Continually improve your software products in areas of design and user experience by staying up to date. It’s imperative to think about both the front end and the back end simultaneously in order to keep your website running smoothly. Performing Django and Python upgrades increases security, reduces long-term development and maintenance costs, and ensures support for future growth.&lt;/p></description></item></channel></rss>