Developing for Development
What's it like being a developer at Aptivate? I've been a developer at Aptivate for 10 years, and volunteered part-time in my evenings and weekends for 3 years before...
What's it like being a developer at Aptivate? I've been a developer at Aptivate for 10 years, and volunteered part-time in my evenings and weekends for 3 years before...
ElasticStack is a small Django app that adds useful features for developing applications with Django, Haystack and ElasticSearch.
Creating a custom M&E solution has very unique risks and rewards that are different from the approach of selecting a pre-built, solution out-of-the-box. IPAS presented a webinar on their development of a custom system using Microsoft Dynamics CRM. These are my notes.
We had an interesting session on Bandwidth Management at Apticon 2013. I raised the subject because I'm concerned that I think it's really important, but nobody's funding it and I don't know how to make it relevant and how to make a useful contribution. These are my notes from the session.
Automatic system administration tools like Puppet are extremely powerful. Like any such weapon, they can accidentally cause a lot of damage very quickly. Here's how to protect yourself from at least one way of shooting yourself in the foot.
Django together with Haystack adds a powerful free-text search capability to your applications, and is widely used. This article explains how to write safe, reliable, repeatable tests for the search features, and avoid a common gotcha with indexing objects that shouldn't be indexed.
Composer, the new dependency manager for PHP, works much better than PEAR for portably installing software with many dependencies.
I just ran into the fairly well-known problem where the Django Admin interface loads very slowly when you edit a record, that has a foreign key, to a big table (thousands of rows), because Django constructs thousands of objects to populate the dropdown lists. I tried out django-ajax-selects and it worked excellently to solve the problem and improve the user experience.
Antivirus software is always a contentious question. It seems that there are no right answers: nothing detects all viruses, and everything has an impact on the speed of the computers where it's installed. And there's a tradeoff between these two. My own subjective, biased choices are F-Secure, AVG at a push, and definitely not Kaspersky. Here's why, and some data to help you choose one for yourself.
Did some refactoring on the Intranet Binder monkeypatch library to enable temporary patches using Python's context objects. This is particularly nice for use in unit tests, where you might need to mock or stub out a component's dependencies, but you don't want those changes to be visible after your test finishes, or you only want them active for part of the test.
Django's database query builder doesn't detect if you query a relation using an object of the wrong type, but silently returns wrong results. A new monkey patch catches this programmer error and reports it.
For about a year I've been working on our Django Binder app. It was originally designed for use in intranet applications, but much of the code is useful in Django apps of all kinds.
I've just committed a bunch of improvements from my work on the iSchool project, which I'd like to highlight to anyone interested, partly as internal documentation.
Fixed a bug in Django Dynamic Fixtures where you have a model whose primary key is not called id. Merged same day, thanks Paulo Cheque.
Improving Network Management for Universities and SMEs
Chris Wilson Aptivate Ltd, UK My own opinions, not my employer's A presentation at AfNOG 2012
Download here: Improving Network Management for ...
I'm at the AfNOG Workshop 2012 in Serrekunda, Gambia as one of the instructors in the Scalable Services track (SS-E).
A local TV company has reported about us on ...
I'm in Ethiopia working with the ATA to help install their Intranet. (Aside: Ethiopia has great, cheap food and beer, and fairly bad Internet.) Because they really want to ...
Yesterday I wanted to send email notifications for document changes in the Generic Intranet. I found that the built-in Django method requires you to hard-code the email body. It doesn ...
For the Documents module of our new open-source Generic Intranet, we need to be able to extract the text content and metadata from various kinds of documents:
This post has three purposes, which I think overlap sufficiently to combine them: A User Guide for the system that we developed for UNICEF, IDS and RuralNet Zambia; A Developers' Guide for anyone wishing to build something similar, and...
Osama Manzar poses some very interesting questions about India's new $35 tablet computer "for the poor". However he doesn't attempt to answer these questions, leaving the reader in ...
Activities with sound are ideal for kids. Preferably lots of sound. Especially when it comes to teaching language, reading and writing.
When you have a classroom full of children with ...
I'm currently working on a project that's putting computers into Zambian schools to try to revolutionise education, making it more fun and interactive for kids, and reducing the ...
We usually use Linux firewalls for traffic shaping, because the power of the traffic control (tc) system exceeds FreeBSD's dummynet in most ways.
Dummynet can be used to create ...
AfNOG boot camp was absolutely massive this year. I think they had 75 people when they were only expecting 40. They took over half our classroom as well, which made ...
I'm in Dar es Salaam, Tanzania for AfNOG 2011. I arrived on Wednesday morning at 7am (on the red-eye flight from London Heathrow) and I'm here until Tuesday ...
As I'm at the Open Data for Development Conference, I thought I should write a quick note about some of our recent openness achievements:
Jon Thompson writes about Jeff Allen's interesting new work on tools for working with low bandwidth:
People have been trying to monitor their networks with pmGraph, without understanding how they might need to change the network topology in order for that to work.
I think it ...
I'm going to argue that EJB is insane, because it's trying to solve the wrong problem, an impossible problem. It's trying to keep your in-memory Java objects perfectly in sync with the database contents at all times, which is impossible even in theory. And if (when) it fails, it will throw an unrecoverable exception that breaks your application horribly.
I'm using Hibernate for a project, and sometimes I have problems with saving records because the values in the Java object don't fit within the database columns (e ...
Just attended a very interesting seminar on The Rural Information Economy and ICTs, hosted by the UN Food and Agriculture Organisation (FAO), a major actor in this area, at their ...
Michał Purzyński reported a problem with our pmGraph software, when using a PostgreSQL database:
I'd like to report a bug - pmgraph is unable to get data from postgresql database ...
Web designers who care about efficiency and speed might like to have a look at Sam Ruby's Blog.
All images are embedded SVG in the XHMTL. No bitmaps at ...
Many people think that digital photography on Linux is much harder than on Windows or Macintosh. This is a typical comment:
As a hobby I'm a photographer, so I ...
One of our fellow Humanitarian Centre organisations, Engineers Without Borders UK (EWB), asked for our help in setting up a virtual private network (VPN), so that their remote workers can ...
This is a copy of the notes that I wrote at AfNOG 2010 as a guide to using system imaging at future workshops. Unfortunately that wiki is not accessible without ...
We know mobiles are very useful in areas where desktop computer and communications infrastructure is not easily available or affordable. And we're very interested in mobile applications and scientific ...
We think that academic publishing is an area that's both critically important to development, and simultaneously becoming more and more inaccessible to the people who need it most. The average size of web pages has been growing much faster than the average speed of connections in developing countries. We built a low bandwidth simulator ourselves, and took it to INASP and the ACU's Publishers for Development conference in Oxford to persuade the journal publishers to optimize their sites to make them accessible to everyone.
No security is perfect. There will always be ways around any security measure that we implement. However, no workaround is perfect either. Once we understand how it works, e.g. what the requests that it makes look like, we can block it. This quickly turns into an arms race between the user and the administrator.
Describes how to develop and implement schema and data changes in Java applications backed by SQL databases, using version control and Migrate4J.
SSH port forwarding is not hard to do, once you get your head around how it actually works. It's not like a VPN and it's not magic. It's quite like a proxy server.
I saw an interesting request on the AfNOG mailing list:
How does one determine the number of users, a wireless network can support. I need to buy a wireless router ...
Marco Zennaro of ICTP writes: In regions where few people are able to pay market rates, there is little, if any, service without subsidies. However, when subsidies support telecommunications service, the funds are given to existing, typically monopoly, providers, and are often misused. This article defines a concept of how subsidy funds can be directed to consumers... I applaud the concept of giving consumers more power. I also haven't read the paper as I don't subscribe to expensive journals. However, I have to ask: what about the approach that is already widely tested and used in developed countries (and even India) of having a universal service obligation on telecomms license owners?
On Monday night, the power supply unit (PSU) in the server that hosts our mail server failed at around 2200 GMT. We don't have physical access to the server ...
Having decided on a local MediaWiki installation, I started working through the import process. I noticed a few things that may help others.
If one forgets to increase the MySQL ...
I'm working on making Wikipedia, the (in)famous free encyclopaedia, available offline, for a project in a school in rural Zambia where Internet access will be slow, expensive and ...
The consensus seems to be that Africa needs more land and submarine links to provide enough bandwidth for its long-term growth, and bring down satellite Internet costs.
East Africa currently ...