The ICT4D Corner
Members of our tech team share insights
about technologies we use for CommCare.
Beyond 'Wrappers' - Using Querysets to Compartmentalize Business Logic into the Django ORM
The Django ORM is an invaluable tool for querying your data. However, as a generic tool, it's often not a clean fit. This article describes a technique for extending Django querysets with methods specific to your models.
December 19, 2018
‘Offline First’ Is More Than a Download Button: Principles of Offline Data Collection
Dimagi builds software products for offline data collection. Learn the fundamental principles behind remote data collection.
May 14, 2018
Migrating a Legacy Codebase to RequireJS, Part 3
April 30, 2018
Migrating a Legacy Codebase to RequireJS, Part 2
April 16, 2018
Migrating a Legacy Codebase to RequireJS
April 2, 2018
Running Calabash Integration Tests with Amazon Device Farm
Our development and QA teams put considerable effort into implementing almost our entire Android test plan in Calabash.
March 26, 2018
A Non-Coder’s Experience with Calabash-Android
Taking the time set up Calabash framework has completely changed how we handle mobile testing for the better.
March 23, 2018
Dimagi Wins Elasticsearch Cause Award
Dimagi recognized as a winner of the second annual Elastic Cause Awards.
March 12, 2018
Communicating Changes Made to Your Software Product
Keep your users in-the-know about changes. Read this guide to communication changes made to your software product.
January 23, 2018
ICT4D News Roundup – June 23, 2017
Welcome to our weekly #ICT4D News Roundup! We are passionate about the intersection of technology and social good. Each week we look for the best articles that focus on the ICT4D industry, the issues that impact the sectors we work across, and interesting content for social enterprises. Highlighted articles this week: What are the
June 23, 2017
Why we made quickcache
One of the great things about Python is how easy it is to hit the ground running. The standard library is vast, and for every common problem people have, someone has written and published a library that you can download and install with pip. Often there is one right way to do things. Want to make
May 11, 2017
What Every Developer Should Know About CouchDB
A little more than five years ago, I started working with CouchDB. I had recently joined Dimagi, and before I arrived on the scene, Dimagi had found some success using CouchDB in one of our largest projects at the time, an offline EMR in Zambia. We chose CouchDB because of its replication capabilities, which let us keep data
March 29, 2016
Scaling Code Review
At Dimagi, we write a lot of code. In the last month on just our CommCare HQ repository, 25 people pushed 1,617 commits to master (and 2,270 commits to all branches) affecting 1,392 files and with over 175,000 additions and deletions. What that also means is that we review a lot of code. Every line
February 24, 2016
Frontend testing in Django with Grunt
January 22, 2016
Love in the time of Emojis - A tale of Github emoji usage
Dimagi Engineering spends a lot of time on Github, and with that, comes lots of comments and emojis. After one year at Dimagi, I’ve become an avid emoji user and relish the opportunity to use emojis in the most astute way possible. There’s just something great about being able to express your thoughts in a
January 15, 2016
Debugging a thread-related test failure
Recently I’ve been working on adding support for using nose to run the CommCare HQ test suite. Since CommCare HQ is a Django project, I’m using django-nose. This has been a tedious process of running the tests repeatedly and debugging each test failure encountered along the way. Typically on running the tests, I would see
November 25, 2015
From the (Open) Source: Introducing Dimagi’s New Tech Blog
Across all of our teams at Dimagi, we’re committed to sharing and building on top of one another’s ideas. It’s a big reason why we support and create open source software. This is especially true for our tech team, which consists of 29 people on our engineering, product and support teams. As part of the
October 9, 2015
Towards an errorless deploy
At Dimagi, we deploy our master branch at least once a day. As our codebase and dependencies grew, the time to complete a deploy increased—almost 45-minutes on some days. During this time, we’d implicitly declare that our site was unstable by letting people know that we were in the middle of a deploy. Even though
October 9, 2015
How to: stream through a pipe with python
This came up when I was trying to mail out lines appended to the apache error log as they came in. The essence of what I wanted to do could be written succinctly as: tail -f logfile | python email_lines.py Where email_lines.py is essentially for l...
November 6, 2012
Git commands I use all the time for dealing with branches.
This isn't anything new, but I use these all the time so it's nice to have something to point to for git newcomers.# create a new branch and check it outgit checkout -b BRANCH # list all branches---you should prune regularly to keep the list small...
September 25, 2012
Page 1 of 4
Showing 1 - 20 of 69 articles