The ICT4D Corner
Members of our tech team share insights
about technologies we use for CommCare.
How We Saved Hundreds of Hours with Automation: A Non-Coder’s Experience with Calabash-Android
A Non-Coder’s Experience with Calabash-Android
March 23, 2018
Dimagi Wins Elasticsearch Cause Award for Patient Tracking in CommCare Platform
Dimagi recognized as a winner of the second annual Elastic Cause Awards.
March 12, 2018
Designing a Foolproof System for Communicating Changes Made to Your Software Product
At Dimagi, we are constantly making changes to our product that affect users...
January 23, 2018
Why we made quickcache
One of the great things about Python is how easy it is to hit the ground running.
May 11, 2017
What Every Developer Should Know About CouchDB
A little more than five years ago, I started working with CouchDB.
March 29, 2016
Scaling Code Review
At Dimagi, we write a lot of code.
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.
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.
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.
October 9, 2015
Towards an errorless deploy
At Dimagi, we deploy our master branch at least once a day.
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
What's a good replacement for long list comprehensions?
I’m going to preface this by saying that it might be more clever than useful, but I’ve already started using it code and gotten kind of addicted. Sometimes you have some really long list comprehension that starts spanning multiple lines, e.g. good...
September 13, 2012
How to: Use Django HTML utils
I'll often see things like this: username_in_html = u'%s' % (link, username)While it's not super great to be generating HTML in Python code all over the place, there are times where that's the simplest and cleanest thing to do. Even in those cases...
September 13, 2012
How to: Debug modems from kannel logs
(From Giovanni)Continue reading below only if you're interested in how to decode the hex strings and other info in the kannel bearerbox.log:These are the errors that keep showing up repeatedly: 2012-06-29 01:19:42   DEBUG: AT2[usb0-modem]...
July 2, 2012
More tips and tricks
if you ever get the dreaded mx.DateTime psycopg2 error when running django tests, (this is for psycopg2 == 2.4.1) this is because when you're in a virtualenv the python mx libraries don't transfer over some reason. quick fix is to pip install egen...
June 2, 2012
Some ssh and screen ninja sauce
SSH local port forwarding syntax: ssh [email protected] -L localport:targetserver:targetport any network traffic hitting localport on the local machine (the machine you’re ssh'ing from) will be forwarded over the encrypted ssh channel to remoteser...
April 20, 2012
How to: Auto-import common modules in ipython shell
if you use ipython, save yourself some typing by importing common modules automatically on load.edit your ipythonrc file (mine lives in ~/.ipython/) as such:import_mod math os os.path sys random itertools re json hashlib time urllib urllib2 urlpar...
April 9, 2012
Page 1 of 4
Showing 1 - 20 of 61 articles