I have had a thoroughly unproductive morning - I suppose to balance out my productive weekend. However, you cannot be productive all the time, because it is in those moments of unproductivity that provide the well springs of productivity.
I am about to break for lunch and will perhaps go to the market near the UNICEF building. It is a series of thatched stalls serving local delicaies that Sima and intestines, and of course sim cards. Down the street, there are about 300 worshippers dressed in white - a Christian sect I believe. They have been camping out in an open field for the past 3 weeks, and apparently will be staying another week. I wonder what the occasion is? I figure I could move to the hotel close by - the Sanctuary Lodge - and then walk to the office.It would take me about 15 minutes. I may actually do that.
I spent the weekend shoring up my datamodels, building the basic front end template system and building fixtures. I also joined the local IT listserv and I have already met developers in Blantyre doing SMS development. Will SMS work become obsolete once Africa gets wide GPRS penetration?
This morning I am praising the joy of fixtures.
There are all sorts of methodologies in place in order to control the quality of software. The intention is good. Something like 80% of all software projects fail (this may be an outdated number). I've seen pair programming, extreme programming, agile, object oriented design is supposedly a methodology, then you have aspect oriented design - and the list goes on .
Design patterns are good (Object oriented design for example). The main goal is to provide reusable chunks of code. So like - oh you figured out how to print something - good. I'll use that code in my application for the printing functionality. Design Patterns however also provide a a meta language with which to understand software in general. I write software in at least 5 languages at a given time, to say - oh this piece of code is decorator, or oh this is a singleton - is analogous to saying oh this is a noun, or this is in the subjunctive. It gives me a framework for cross-language comparision. It is a software grammar.
For quality control people are very excited about Unit Testing. Basically with Unit Tests you are writing bits of code that attempt to simulate how someone will use (or misuse a software ). Unit tests are for the smallest atomic element of your software project. For each atom, you write a unit test. The thing is, the person writing the unit test is not really the user. You will never anticipate the real world issues that crop up by writing a unit test.
I am a big believer in fixtures however (a part of unit test methodology). This is why I spent a few hours this weekend writing them. Fixtures are data that essentially 'Fix' your system at a certain state, so that you, or another user, can actually use and test the system. Essentially it is dummy data. The good thing about fixtures is that you see quickly if there are problems with your data model, and with the interactions between your datamodel. Sure there might be something wrong with a functional piece of your code - (ie you may want the maximum height for something but you are actually getting the minimum height). However, this will reveal itself in testing and iterative design. You cannot iterate if you have no data, and if you data models are buggy.
Software quality control is a thorny issue. Software is only as good as the programmer, and the way to become a good programmer is to be naturally talented or to find a good mentor, or to read good code (and perhaps contribute to an open source project), and of course to write code - in a variety of languages.
So this morning, while enjoying my Kiboko breakfast of eggs, fruit salad and tea (I have quit coffee!) I read a poem 'Stepping Westward' by Denise Levertov. When I first read it, I thought it was written by a man. I thought it was absolutely ghastly! Just a terrible poem. (I's about being woman / among other things). But when I went back and reread the poem, after discovering the poet was a woman, I absolutely fell in love with the poem. I often experience the same thing when watching one of my films with different audiences. Some audience make you love your film, and some make you want to go out and play in traffic - what is in the work and what is in your mind?
Some links of interest:
AfNog - african network operators group
Maker Faire Africa
Nubian Cheetah
Dream Manufactory
White African post on SMS vs GPRS in Africa
Monday, August 31, 2009
Sunday, August 30, 2009
Lilongwe Holiday
I have run across some linkings (mainly through other people's twitter) and I though i'd put them up:
- Malawi school girl studying at US prep school for the Summer
- Zinc combating diarrea in Africa
- Sex workers in Swaziland (sex work is legal in Malawi and currently there is a legislation attempting to criminalize HIV transmission - something for a future blog post)
- Git articles (I’ve been using this a lot to keep my code in sync)
I took another look at the original specifications for the RapidSMS/Malawi Health project as spec’d out by the SIPA students (aka Mobile Development Solutions). So now I have a good idea of the SMS protocol I need to use, and the UI look and feel. It also gave me data for stunting and wasting metrics - so I added that to my data models and I’m creating fixtures for those pieces of data. I am upgrading my jsonmedusa script because I see future deployments of RapidSMS will involve lots of data munging.
Right now, with the nutrition app as it stands (on the shoulders of giants by the way), I think RapidSMS could deploy a basic malnutrition alert and monitoring system ANYWHERE IN THE WORLD. I would like to do this somewhere in China, mainly because I am desperately craving Sha lum Bao/Soup dumplings (apologies for the non Pinyin transliteration).
Last night I went to a new night spot in the outskirts of lilongwe - ‘Sol Farm.’ We then drove back via the posh neighborhoods of lilongwe - enormous homes/beautiful. I took some pictures. So much of this trip cannot be captured on film (or sd card): the smells, the feel of the sun and the dust, the song of the birds and the call to prayer at 5:30 in the morning. I tried to record the call to prayer last week - but it sounded rather crappy. I may go out and play pool at ‘The Diplomat’ tonight, a bar with a modest amount of sex workers. I am feeling out of sorts so I may just stay in work, read a book, and watch one of the films I have on my hard drive. I did some meditation in the late afternoon, and then I fell asleep. It is sometimes hard for me to stay awake during meditation.
Can lists be poetry?
"We make out of the quarrel with others, rhetoric, but of the quarrel with ourselves, poetry." William Butler Yeats
I have finished the totally awful Globalization anthology - I think I may leave it in the hotel library, but then I feel that is unfair to future people who might pick it up. Many of the essays in Globalization brought up really interesting topics, but then became mired down in jargon and academic ass kissing. To cleanse my palate I picked up my copy of Mayes poetry handbook. A fantastic book that I usually travel with it. I always try to memorize poetry, so that when my mind starts to wander to negative thoughts I can have something beautiful (like a mantra) to focus my mind. Poetry reminds me of drawing, it involves intense focus on something and the recreation of that thing in your own likeness (to be biblical) but really - this is what lets the experience become integrated into your person.javascript:void(0)
It is weird - this time last year I was living in Hong Kong. Hong Kong was way more lonely than Lilongwe although there was more to do and the food was better (and my accommodations were nicer). I never feel alone in Lilongwe - although I do feel like I am at the ends of the earth lost in another time.
- Malawi school girl studying at US prep school for the Summer
- Zinc combating diarrea in Africa
- Sex workers in Swaziland (sex work is legal in Malawi and currently there is a legislation attempting to criminalize HIV transmission - something for a future blog post)
- Git articles (I’ve been using this a lot to keep my code in sync)
I took another look at the original specifications for the RapidSMS/Malawi Health project as spec’d out by the SIPA students (aka Mobile Development Solutions). So now I have a good idea of the SMS protocol I need to use, and the UI look and feel. It also gave me data for stunting and wasting metrics - so I added that to my data models and I’m creating fixtures for those pieces of data. I am upgrading my jsonmedusa script because I see future deployments of RapidSMS will involve lots of data munging.
Right now, with the nutrition app as it stands (on the shoulders of giants by the way), I think RapidSMS could deploy a basic malnutrition alert and monitoring system ANYWHERE IN THE WORLD. I would like to do this somewhere in China, mainly because I am desperately craving Sha lum Bao/Soup dumplings (apologies for the non Pinyin transliteration).
Last night I went to a new night spot in the outskirts of lilongwe - ‘Sol Farm.’ We then drove back via the posh neighborhoods of lilongwe - enormous homes/beautiful. I took some pictures. So much of this trip cannot be captured on film (or sd card): the smells, the feel of the sun and the dust, the song of the birds and the call to prayer at 5:30 in the morning. I tried to record the call to prayer last week - but it sounded rather crappy. I may go out and play pool at ‘The Diplomat’ tonight, a bar with a modest amount of sex workers. I am feeling out of sorts so I may just stay in work, read a book, and watch one of the films I have on my hard drive. I did some meditation in the late afternoon, and then I fell asleep. It is sometimes hard for me to stay awake during meditation.
Can lists be poetry?
"We make out of the quarrel with others, rhetoric, but of the quarrel with ourselves, poetry." William Butler Yeats
I have finished the totally awful Globalization anthology - I think I may leave it in the hotel library, but then I feel that is unfair to future people who might pick it up. Many of the essays in Globalization brought up really interesting topics, but then became mired down in jargon and academic ass kissing. To cleanse my palate I picked up my copy of Mayes poetry handbook. A fantastic book that I usually travel with it. I always try to memorize poetry, so that when my mind starts to wander to negative thoughts I can have something beautiful (like a mantra) to focus my mind. Poetry reminds me of drawing, it involves intense focus on something and the recreation of that thing in your own likeness (to be biblical) but really - this is what lets the experience become integrated into your person.javascript:void(0)
It is weird - this time last year I was living in Hong Kong. Hong Kong was way more lonely than Lilongwe although there was more to do and the food was better (and my accommodations were nicer). I never feel alone in Lilongwe - although I do feel like I am at the ends of the earth lost in another time.
Friday, August 28, 2009
RapidSMS is AWESOME
Many things have changed since I last posted.
1) I have decided to change my nutrition architecture and reuse the location app and the reporter app for locations, reporters and patients. I need to make some minor tweeks to this code to accomidate patient type things like gender and date of birth - which really all people have. I am trying to use rapidSMS to the fullest of its RAD capabilities - what this means is that I am spending time writing scripts to translate csv backdata to json to import as data into the RapidSMS databases. This is probably going to be a typical use case for RapidSMS implementation - as little reinvention of the wheel as possible.
I strongly urge developers/interested parties who want to use RapidSMS to look at the locations app and the reporters app - they are really well architected. I am going ahead with my malwai health app - eventually I think it would be useful to have an indicators app similar to the locations/reporter paradigm. But for now, I am going to stick with my explicit/non flexible model- which will work.
2) I have stopped drinking coffee
3) I can now identify malaria carrying mosquitoes
4) I have totally destroyed my local git hub repository and need to regenerate a ssh key. This is leading to massive ssh key proliferation that I need to stamp out.
5) I am on a good UNICEF bus pickup/drop off schedule
We end at 1:30 on Fridays - at which point - I think I am going to go and eat pizza at mamma mia. It is SOO good - I am dreaming about it- but pricey (I had to dig into my stash of gnu bars yesterday to save up for it)
Last night there was no bar volleyball -very sad. Instead I took myself upto the Kiboko bar, which is completely deserted, sat infront of a roaring fire (it is cold here), had a beer (a green one as we call Carlsberg in Lilongwe) - and cracked open 'Globalization' - the anthology I am reading. I think this book was written in 99, and it is a bit dated, however some of the articles are excellent (like the memory article from a few posts back). Last night there were two standouts, a piece on the Chinese Artist Wang Jin and his work 'A Chinese Dream' by Wu Hung and 'Inside the Economoy of Appearances' by Anna Tsing.
So the first piece was basically an analysis of this piece of artwork - a replication of a traditional chinese opera costume recreated entirely in plastic. Of course the author gives treatment to the artist as capitalist/cosmopolitian producer (the piece is manufactured by old ladies in rural china),artist reappropriating traditional forms - that are realy ersatz. (Chinese opera these days is akin to Disney world). I really was touched aesthetically by Wang Jin's artwork and its different manifestations (as performance art, as photograph, etc). I though the article was excellent as an thorough investigation into all aspects of the work: production, consumption, reappropriation,etc.
Second article, ok this one was bit long. In 13Bit filmmaking we would say it needed a little choppy choppy (ie editing). However,this was really an incredibly fascinating article and I recommend it to anyone interested in Gold, mining, and the markets. Basically it follows the rise and fall of Bre-X, a Canadian mining company as it attempted to look for Gold in Indonesia. The article touches upon how the 'scientific-izatio' of the field (now we have geologists exploring rather than miners), makes in palatable to wall street. How there was this transformation of part of Indonesia into frontier land fit for explorers and fortune hunters (like the Brazilian Amazon). How antropological tropes have been mapped on to this capitalist venture. How Bre-X was able to pull a magnificent swindle on the stockmarket - and yet how people were still able to make money from stock speculation. It is truly a rich article that is told in a narrative and entertaining fashion- I will probably reread it.
Caveat Emptor - I know I am discussing this book - however I dont recommend purchasing it. The quality of the articles are really uneven and I would probably be better off reading Shakespeare. That being said, if you still want to read it, borrow it from your local library.
So after my thinking and reading - I settled down into my queensize bed covered with mosquito netting, and listened to the philosophybites podcast - the most awesome podcast evar! http://www.philosophybites.com (well its a toss up between that and coverville)
OOp - just got the rest of the location codes from the Malawi ministry of health! They are really on top of things. More csv to json - via my jsonmedusa.py script.
Next time I hope to be reporting on my RapidSMS Malawi version2 test.
TGIF!
1) I have decided to change my nutrition architecture and reuse the location app and the reporter app for locations, reporters and patients. I need to make some minor tweeks to this code to accomidate patient type things like gender and date of birth - which really all people have. I am trying to use rapidSMS to the fullest of its RAD capabilities - what this means is that I am spending time writing scripts to translate csv backdata to json to import as data into the RapidSMS databases. This is probably going to be a typical use case for RapidSMS implementation - as little reinvention of the wheel as possible.
I strongly urge developers/interested parties who want to use RapidSMS to look at the locations app and the reporters app - they are really well architected. I am going ahead with my malwai health app - eventually I think it would be useful to have an indicators app similar to the locations/reporter paradigm. But for now, I am going to stick with my explicit/non flexible model- which will work.
2) I have stopped drinking coffee
3) I can now identify malaria carrying mosquitoes
4) I have totally destroyed my local git hub repository and need to regenerate a ssh key. This is leading to massive ssh key proliferation that I need to stamp out.
5) I am on a good UNICEF bus pickup/drop off schedule
We end at 1:30 on Fridays - at which point - I think I am going to go and eat pizza at mamma mia. It is SOO good - I am dreaming about it- but pricey (I had to dig into my stash of gnu bars yesterday to save up for it)
Last night there was no bar volleyball -very sad. Instead I took myself upto the Kiboko bar, which is completely deserted, sat infront of a roaring fire (it is cold here), had a beer (a green one as we call Carlsberg in Lilongwe) - and cracked open 'Globalization' - the anthology I am reading. I think this book was written in 99, and it is a bit dated, however some of the articles are excellent (like the memory article from a few posts back). Last night there were two standouts, a piece on the Chinese Artist Wang Jin and his work 'A Chinese Dream' by Wu Hung and 'Inside the Economoy of Appearances' by Anna Tsing.
So the first piece was basically an analysis of this piece of artwork - a replication of a traditional chinese opera costume recreated entirely in plastic. Of course the author gives treatment to the artist as capitalist/cosmopolitian producer (the piece is manufactured by old ladies in rural china),artist reappropriating traditional forms - that are realy ersatz. (Chinese opera these days is akin to Disney world). I really was touched aesthetically by Wang Jin's artwork and its different manifestations (as performance art, as photograph, etc). I though the article was excellent as an thorough investigation into all aspects of the work: production, consumption, reappropriation,etc.
Second article, ok this one was bit long. In 13Bit filmmaking we would say it needed a little choppy choppy (ie editing). However,this was really an incredibly fascinating article and I recommend it to anyone interested in Gold, mining, and the markets. Basically it follows the rise and fall of Bre-X, a Canadian mining company as it attempted to look for Gold in Indonesia. The article touches upon how the 'scientific-izatio' of the field (now we have geologists exploring rather than miners), makes in palatable to wall street. How there was this transformation of part of Indonesia into frontier land fit for explorers and fortune hunters (like the Brazilian Amazon). How antropological tropes have been mapped on to this capitalist venture. How Bre-X was able to pull a magnificent swindle on the stockmarket - and yet how people were still able to make money from stock speculation. It is truly a rich article that is told in a narrative and entertaining fashion- I will probably reread it.
Caveat Emptor - I know I am discussing this book - however I dont recommend purchasing it. The quality of the articles are really uneven and I would probably be better off reading Shakespeare. That being said, if you still want to read it, borrow it from your local library.
So after my thinking and reading - I settled down into my queensize bed covered with mosquito netting, and listened to the philosophybites podcast - the most awesome podcast evar! http://www.philosophybites.com (well its a toss up between that and coverville)
OOp - just got the rest of the location codes from the Malawi ministry of health! They are really on top of things. More csv to json - via my jsonmedusa.py script.
Next time I hope to be reporting on my RapidSMS Malawi version2 test.
TGIF!
Thursday, August 27, 2009
In the code
Score 1 for UNICEF Malawi - they picked me up from the hotel this morning.
Sadly, I was unable to visit the internet cafe and sync with github. The internet cafe opens at 8 and the unicef car picked me up at 7:10.
Today was also my first day without coffee, I drank tea instead. The only coffee here is nescafe and i'm not so into it. If I am able to kick my coffee habit - then a true miracle will have occured. I am now grumpy with a bad headache. I guess its a good thing I am half way around the world from people I could seriously alienate.
Another milestone today (today is very momentus it seems) I got my 'Malawi Health' RapidSMS version up and running. Exciting Exciting. For the next few days I will be editing templates to improve data display andd data navigation.
There is a big discussion in the RapidSMS world over apps. Where in the repository should apps go, are there core apps, where should 3rd party apps go, should some of this move to a library, what about projects- are projects apps?
Well - I will leave that to the list to figure out.
What I did was create a MalawiHealth app. I've attempted to make it exensible for future Malawi Health projects.
Classes:
Models.py - this contains 3 classes. a GMC class (that represents a health center). I inheret adam's Location model (from the location app). Then we have a Patient, this should probably inheret from something. Finally I have a INFSSS model that includes 5 heath indicators (muac, height,weight, oedema,diarrea) and calculators for age and malnutrition. 82 lines of code. Apparently this was originally written with the reporter app, but I think it is perhaps a good idea to build out a datamodel for clarity.
App.py - Here is where I parse the sms message. It is very brute force. I intend to spend my last few weeks working on this, especially as I get feedback from the field. Basically, I implemented a tokenizer and a bunch of conditionals that add data and send responses. It is not pretty, but not THAT ugly - and fine for v1 (74 lines).
It seems that many things I have been thinking about have already been included in RapidSMS - isn't RapidSMS awesome! I am very keen on using the Keyword parser (an app) to improve my message parsing in the coming weeks.
I have a urls.py, views.py and templates - and this will take most of my time over the coming days. I almost forgot - my fixtures - creating fixtures right now in order to backpopulate the data with data from 2003. Got this 2 days ago from the Malawi Ministry of Health.
Some other apps I will be using are the excel exporting app (although I think this is tag library), and perpahs the ajax app, and of course the admin app (I already mentioned the locations app). I will probably add a document app (I need a better name). This will associate documents with a rapidSMS project - e.g., a sidebar of relavent & downloadable reports/powerpoint presentation etc). We are hoping to turn the Malawi INFSSS system into a one stop shop for all things INFSSS related - so I am trying to aggregate as much useful content as possible.
In this case, since I am bulding the Malawi INFSSS rapidsms system for a particular scenario, I am going to sacrifice some reusability. As I build more health systems, I will probably be able to build out a health app, but perhaps this is a future project for the 13Bit Labs.
Final note on the documentation system:
RapidSMS uses sphinx for documentation. We copied Django. Sphinx is really powerful and an awesome document management system. According to the Sphinx documentation, autogenerating code documentation was an afterthough and that is really apparent when you use the system. Yesterday I build a directory walker that generates a rst file with the classes availabe explicitly stated. Perhaps when RapidSMS is done - I can take a look at the Sphinx code base.
I have been a hermit the last 2 nights. Staying in my room/internet cafe writing code and watching Kung Fu. Tonight though I will go and hang with some of my new friends, maybe we can play bar volleyball again!
I will try not to use demorgans law to reduce all my conditionals to booleans inorder to assign them to variables
Sadly, I was unable to visit the internet cafe and sync with github. The internet cafe opens at 8 and the unicef car picked me up at 7:10.
Today was also my first day without coffee, I drank tea instead. The only coffee here is nescafe and i'm not so into it. If I am able to kick my coffee habit - then a true miracle will have occured. I am now grumpy with a bad headache. I guess its a good thing I am half way around the world from people I could seriously alienate.
Another milestone today (today is very momentus it seems) I got my 'Malawi Health' RapidSMS version up and running. Exciting Exciting. For the next few days I will be editing templates to improve data display andd data navigation.
There is a big discussion in the RapidSMS world over apps. Where in the repository should apps go, are there core apps, where should 3rd party apps go, should some of this move to a library, what about projects- are projects apps?
Well - I will leave that to the list to figure out.
What I did was create a MalawiHealth app. I've attempted to make it exensible for future Malawi Health projects.
Classes:
Models.py - this contains 3 classes. a GMC class (that represents a health center). I inheret adam's Location model (from the location app). Then we have a Patient, this should probably inheret from something. Finally I have a INFSSS model that includes 5 heath indicators (muac, height,weight, oedema,diarrea) and calculators for age and malnutrition. 82 lines of code. Apparently this was originally written with the reporter app, but I think it is perhaps a good idea to build out a datamodel for clarity.
App.py - Here is where I parse the sms message. It is very brute force. I intend to spend my last few weeks working on this, especially as I get feedback from the field. Basically, I implemented a tokenizer and a bunch of conditionals that add data and send responses. It is not pretty, but not THAT ugly - and fine for v1 (74 lines).
It seems that many things I have been thinking about have already been included in RapidSMS - isn't RapidSMS awesome! I am very keen on using the Keyword parser (an app) to improve my message parsing in the coming weeks.
I have a urls.py, views.py and templates - and this will take most of my time over the coming days. I almost forgot - my fixtures - creating fixtures right now in order to backpopulate the data with data from 2003. Got this 2 days ago from the Malawi Ministry of Health.
Some other apps I will be using are the excel exporting app (although I think this is tag library), and perpahs the ajax app, and of course the admin app (I already mentioned the locations app). I will probably add a document app (I need a better name). This will associate documents with a rapidSMS project - e.g., a sidebar of relavent & downloadable reports/powerpoint presentation etc). We are hoping to turn the Malawi INFSSS system into a one stop shop for all things INFSSS related - so I am trying to aggregate as much useful content as possible.
In this case, since I am bulding the Malawi INFSSS rapidsms system for a particular scenario, I am going to sacrifice some reusability. As I build more health systems, I will probably be able to build out a health app, but perhaps this is a future project for the 13Bit Labs.
Final note on the documentation system:
RapidSMS uses sphinx for documentation. We copied Django. Sphinx is really powerful and an awesome document management system. According to the Sphinx documentation, autogenerating code documentation was an afterthough and that is really apparent when you use the system. Yesterday I build a directory walker that generates a rst file with the classes availabe explicitly stated. Perhaps when RapidSMS is done - I can take a look at the Sphinx code base.
I have been a hermit the last 2 nights. Staying in my room/internet cafe writing code and watching Kung Fu. Tonight though I will go and hang with some of my new friends, maybe we can play bar volleyball again!
I will try not to use demorgans law to reduce all my conditionals to booleans inorder to assign them to variables
Wednesday, August 26, 2009
Turn your computer into an SMS gateway
At about 8:30 I gave up on the UNICEF shuttle and decided today would be SMS gateway hacking day, along with RapidSMS programming day.
Tomorrow - I plan on taking a cab (thanks Chris).
Last week, during a RapidSMS demo, the AC adapter for my GSM modem blew out. Thankfully this is my only electrical malfunction in Africa to date (although I do lose electricity now and again).
What is a girl to do with RapidSMS but alas no modem with which to receive and send the SMS messages.? I figured that I would go look for a soldering iron and solder the AC adapter tip to an extra power supply. Perhaps think of some clever way to integrate it with my iGo power kit....
I did see some dodgy multi-tipped power adapters at the local market (see pictures), but they **really* looked dodgy. Would I be able to find a soldering iron in time?
This morning, I went over to the cellphone shop across the street and asked about his usb enabled phones. Amazingly, he had a wire that connects my crappy loaner Nokia 1110 to usb. I bought the wire - went back to my System76 ubuntu netbook - plugged the sucker in and guess what I see on my /dev. ttyUSB0 - Halleluja. Fantastic.
To celebrate I took myself to lunch over at mama mia and ate an entire margarita pizza - that was divine - and half a coke - there I banged out some emails, wrote some docs, and started work on the new INFSSS rapidSMS system.
I am creating two apps - a Malawi app and a INFSSS app
the Malawi app will hopefully be reusable with the Mother/Child HIV/AIDs Project.
First I am creating the data models:
patent ids, and HSA ids (finally got the IDs that the ministry of health uses) for Malawi app
muac, height, weight etc for INFSSS app
next I'm loading in the historical data - will be doing that in a bit - I just finished cleaning/rationalizing it.
then I am going to start working on the views.
I have some time to get the message parsing to work - since I am not going into the field for another week - However I want to get the web interface finished asap - so people can start navigating the data and feel good about the project.
In terms of messaging. I am thinking about building an app that uses regular expressions and callbacks - similar to Urls.py. There should be an elegant way that RapidSMS handles sms parsing. Another consideration is message flow. I remember back i the internet stone age, when I was programming in Java, and Tomcat did not exist and I had to use servlet exec in order to run servlets - anyway I used an xml doc that outlined application flow (most java web frameworks have this today). I am thinking of a way to adapt this for SMS messaging.
All this deep architectural thought is nice - but in the end - I just want something that works for the end user and looks nice for the web/data user - so who knows the app just be a rough and ready brute force app.
Time to load the fixtures
peas
Tomorrow - I plan on taking a cab (thanks Chris).
Last week, during a RapidSMS demo, the AC adapter for my GSM modem blew out. Thankfully this is my only electrical malfunction in Africa to date (although I do lose electricity now and again).
What is a girl to do with RapidSMS but alas no modem with which to receive and send the SMS messages.? I figured that I would go look for a soldering iron and solder the AC adapter tip to an extra power supply. Perhaps think of some clever way to integrate it with my iGo power kit....
I did see some dodgy multi-tipped power adapters at the local market (see pictures), but they **really* looked dodgy. Would I be able to find a soldering iron in time?
This morning, I went over to the cellphone shop across the street and asked about his usb enabled phones. Amazingly, he had a wire that connects my crappy loaner Nokia 1110 to usb. I bought the wire - went back to my System76 ubuntu netbook - plugged the sucker in and guess what I see on my /dev. ttyUSB0 - Halleluja. Fantastic.
To celebrate I took myself to lunch over at mama mia and ate an entire margarita pizza - that was divine - and half a coke - there I banged out some emails, wrote some docs, and started work on the new INFSSS rapidSMS system.
I am creating two apps - a Malawi app and a INFSSS app
the Malawi app will hopefully be reusable with the Mother/Child HIV/AIDs Project.
First I am creating the data models:
patent ids, and HSA ids (finally got the IDs that the ministry of health uses) for Malawi app
muac, height, weight etc for INFSSS app
next I'm loading in the historical data - will be doing that in a bit - I just finished cleaning/rationalizing it.
then I am going to start working on the views.
I have some time to get the message parsing to work - since I am not going into the field for another week - However I want to get the web interface finished asap - so people can start navigating the data and feel good about the project.
In terms of messaging. I am thinking about building an app that uses regular expressions and callbacks - similar to Urls.py. There should be an elegant way that RapidSMS handles sms parsing. Another consideration is message flow. I remember back i the internet stone age, when I was programming in Java, and Tomcat did not exist and I had to use servlet exec in order to run servlets - anyway I used an xml doc that outlined application flow (most java web frameworks have this today). I am thinking of a way to adapt this for SMS messaging.
All this deep architectural thought is nice - but in the end - I just want something that works for the end user and looks nice for the web/data user - so who knows the app just be a rough and ready brute force app.
Time to load the fixtures
peas
Tuesday, August 25, 2009
The Lilongwe Server Farm
Today brought me to the UNICEF/Lilongwe server farm/cage. I'll post a picture later.
Here I inspected the source of all that is good and holy in the Lilongwe RapidSMS project - the RapidSMS server.
This is the hardware system: One computer, 2 serial modems with serial to usb adaptors. There are 4 usb ports total so we can add 2 additional modems out of the box, without adding a usb hub.
There are some questions that we are asking about RapidSMS implementation. RapidSMS is going to support 2 different projects in Malawi, a Malnutrition project and a mother child HIV/AIDS project. I dont think these should run under the same rapidsms instance, but has anyone tried running 2 rapidsms projects at the same time,on the same port.... I've done this with Django - but media temple did all the heavy lifting.
I still need to do some more work planning the barcamp. My goal is to work on a RapidSMS based twitter app. Similar to the Naijapulse - Nigerian Twitter. I'm planning two barcamps here. My UNICEF collegue Sean suggested that I communicate with MobileActive and do some sort of NY-Mzuzu remote barcamp. I dont know if Malawi has the bandwidth for it.
Today I was also thinking of marriage. Is marriage a raw deal for women in developing countries?
I am a liberated western woman married to a liberated eastern man - and I think our marriage has advantages - FOR ME. My husband and I share work, pool income, share expenses, provide support - and my husband cooks delicious food for me and begrudgingly picks up my socks which I hide around the apartment. I'm trying to figure out what he gets out of the relationship, but I digress.
Professionally, as a working woman, I think some men find it easier to work with married women. Pehaps marriage seems to confirm a certain level of maturity or perhaps acceptability. I dont know, I have not conducted a scientific study, but I have experienced different treatment pre marriage vs post marriage.
Marriage is such a hot topic in the United States. People want the ability to get married (gay rights), there are tons of dating sites dedicated to finding the right match, and there is certain social pressure to be married if everyone in your social circle is married. When we go into the third world we assume these same circumstances exist.
DO NOT BE FOOLED, I think marriage is a raw deal for women in developing countries. Today I got a lift to the main UNICEF headquarters from a woman named Lindsay. I dont know her age, but she has 5 children, works a full time job, and her husband lives in a different city (Blantyre) 5 hours away. She is a no nonsense woman - we did share some laughs though. Lindsay has no time for nonsense, raising 5 children by herself. What has marriage given her - 5 kids, a full time job, and an absent husband.
Did she choose to get married? How old was she? Was it an arranged marriage? The woman that runs the front desk at my hotel signs her email with Mrs. Is this empowering or enslaving?
Marriage rights in the US, but lets also have Singles rights around the world.
The NYTimes - amazingly enough since I am really down on the nytimes - ran a great magazine issue on woman's rights in the third world. I recommend it.
Here I inspected the source of all that is good and holy in the Lilongwe RapidSMS project - the RapidSMS server.
This is the hardware system: One computer, 2 serial modems with serial to usb adaptors. There are 4 usb ports total so we can add 2 additional modems out of the box, without adding a usb hub.
There are some questions that we are asking about RapidSMS implementation. RapidSMS is going to support 2 different projects in Malawi, a Malnutrition project and a mother child HIV/AIDS project. I dont think these should run under the same rapidsms instance, but has anyone tried running 2 rapidsms projects at the same time,on the same port.... I've done this with Django - but media temple did all the heavy lifting.
I still need to do some more work planning the barcamp. My goal is to work on a RapidSMS based twitter app. Similar to the Naijapulse - Nigerian Twitter. I'm planning two barcamps here. My UNICEF collegue Sean suggested that I communicate with MobileActive and do some sort of NY-Mzuzu remote barcamp. I dont know if Malawi has the bandwidth for it.
Today I was also thinking of marriage. Is marriage a raw deal for women in developing countries?
I am a liberated western woman married to a liberated eastern man - and I think our marriage has advantages - FOR ME. My husband and I share work, pool income, share expenses, provide support - and my husband cooks delicious food for me and begrudgingly picks up my socks which I hide around the apartment. I'm trying to figure out what he gets out of the relationship, but I digress.
Professionally, as a working woman, I think some men find it easier to work with married women. Pehaps marriage seems to confirm a certain level of maturity or perhaps acceptability. I dont know, I have not conducted a scientific study, but I have experienced different treatment pre marriage vs post marriage.
Marriage is such a hot topic in the United States. People want the ability to get married (gay rights), there are tons of dating sites dedicated to finding the right match, and there is certain social pressure to be married if everyone in your social circle is married. When we go into the third world we assume these same circumstances exist.
DO NOT BE FOOLED, I think marriage is a raw deal for women in developing countries. Today I got a lift to the main UNICEF headquarters from a woman named Lindsay. I dont know her age, but she has 5 children, works a full time job, and her husband lives in a different city (Blantyre) 5 hours away. She is a no nonsense woman - we did share some laughs though. Lindsay has no time for nonsense, raising 5 children by herself. What has marriage given her - 5 kids, a full time job, and an absent husband.
Did she choose to get married? How old was she? Was it an arranged marriage? The woman that runs the front desk at my hotel signs her email with Mrs. Is this empowering or enslaving?
Marriage rights in the US, but lets also have Singles rights around the world.
The NYTimes - amazingly enough since I am really down on the nytimes - ran a great magazine issue on woman's rights in the third world. I recommend it.
Monday, August 24, 2009
In the data
Back at UNICEF after a relaxing weekend of lollygagging around lilongwe.
I am finally feeling myself, after a stressful morning of moving hotels, and looking for the UNICEF van.
I am moving back to the Kiboko - which seems like The Hong Kong Four Seasons after a weekend at the malarial swamp that is the Sunbird Lilongwe (servering real coffee and wifi enabled though it may be).
Today I am taking care of some administrativa - coordinating trips to the field, coordinating RapidSMS training sessions / barcamps at Mzuzu University and at Baobab. Soyapi - a local RoR developer at Baobab is going to add me to the local developer listserv! I am also specing out my interface changes to the templates.
In terms of rapidsms development - I am planning to make all the changes to django/rapidsms templates and then, time permitting, I'll move some functionality over to apps. I want to add a basic stats app, a graphing app, and a email app (does one exist), a scheduler app - in that order. I also have to check something on my cron job that builds the rapidsms documentation. It threw an error this morning - good thing no one is checking in documentation - or is it.
I am also backpopulating the malnutrition data from the Ministry of Health. This goes back to 2003. The idea is to make the RapidSMS Malnutrition - a one stop hub for Malawi Malnutrition data. This is one way to ensure that the system is continually referenced, used, monitored, updated, not abandoned - etc.. I am having some problems copying the data - I think the disk drive has a virus.
We are going to do fun stuff with data - scatterplot, bargraph,correlate, regress - Where is my Tufte book? We are also going to integrate the website with documentation about the project - oh another app - perhaps a document manager app. These are all simple apps - but you need to break them out so that other people can use them and integrate them into their own projects. There should also be a RapidSMS tag based template library for rendering responses on sms or other devices.
I am also thinking about looking at jython integration with RapidSMS. This might be a useful way to interface with Java libaries like OpenMRS and FrontlineSMS. I know that django supports jython. It has been a while since I did jython development - the last time was in 06 when I wrote a jython soduku app.
But enough shop talk - tonight I will return to my beloved Kiboko. I will resume the ancient practice of drinking alcoholic beverages and the modern practice of pulling code from adam's github rapidsms fork. Then perhaps some RapidSMS coding, some coding on DohRaeTweet perhaps some coding on my IB options strategy, some reading, tai chi and my malaria pill.
I am convinced I have malaria, although I am taking prophylaxis (malarone). It is grossing me out as I envision little parasites in my blood - a worm in the blood - did Spinoza have malaria. A scottish nurse that I met over the weekend, told me about her parasite. It was diagonosed by the local healthcare center as a sunburn. Apparently she is going to megadose on malarone and some anti parasite drug when she returns to UK.
I am finally feeling myself, after a stressful morning of moving hotels, and looking for the UNICEF van.
I am moving back to the Kiboko - which seems like The Hong Kong Four Seasons after a weekend at the malarial swamp that is the Sunbird Lilongwe (servering real coffee and wifi enabled though it may be).
Today I am taking care of some administrativa - coordinating trips to the field, coordinating RapidSMS training sessions / barcamps at Mzuzu University and at Baobab. Soyapi - a local RoR developer at Baobab is going to add me to the local developer listserv! I am also specing out my interface changes to the templates.
In terms of rapidsms development - I am planning to make all the changes to django/rapidsms templates and then, time permitting, I'll move some functionality over to apps. I want to add a basic stats app, a graphing app, and a email app (does one exist), a scheduler app - in that order. I also have to check something on my cron job that builds the rapidsms documentation. It threw an error this morning - good thing no one is checking in documentation - or is it.
I am also backpopulating the malnutrition data from the Ministry of Health. This goes back to 2003. The idea is to make the RapidSMS Malnutrition - a one stop hub for Malawi Malnutrition data. This is one way to ensure that the system is continually referenced, used, monitored, updated, not abandoned - etc.. I am having some problems copying the data - I think the disk drive has a virus.
We are going to do fun stuff with data - scatterplot, bargraph,correlate, regress - Where is my Tufte book? We are also going to integrate the website with documentation about the project - oh another app - perhaps a document manager app. These are all simple apps - but you need to break them out so that other people can use them and integrate them into their own projects. There should also be a RapidSMS tag based template library for rendering responses on sms or other devices.
I am also thinking about looking at jython integration with RapidSMS. This might be a useful way to interface with Java libaries like OpenMRS and FrontlineSMS. I know that django supports jython. It has been a while since I did jython development - the last time was in 06 when I wrote a jython soduku app.
But enough shop talk - tonight I will return to my beloved Kiboko. I will resume the ancient practice of drinking alcoholic beverages and the modern practice of pulling code from adam's github rapidsms fork. Then perhaps some RapidSMS coding, some coding on DohRaeTweet perhaps some coding on my IB options strategy, some reading, tai chi and my malaria pill.
I am convinced I have malaria, although I am taking prophylaxis (malarone). It is grossing me out as I envision little parasites in my blood - a worm in the blood - did Spinoza have malaria. A scottish nurse that I met over the weekend, told me about her parasite. It was diagonosed by the local healthcare center as a sunburn. Apparently she is going to megadose on malarone and some anti parasite drug when she returns to UK.
Subscribe to:
Posts (Atom)