Archive for the ‘Web dev & programming’ Category.

Mobile application development

Over the last few weeks we’ve been working on the development and design of several mobile applications for data collection, telediagnosis and for mLearning, especially to support Ethiopian Health Extension Workers. There are already many systems and toolkits available (especially for mobile data collection), but from the ones we have tested so far none do exactly what we need. So our first step is to review the existing systems against our requirements (see our wiki for more information), to find which would be most suitable taking into account how well designed and supported the system is, plus how much development work we’ll need to put in.

We’re also beginning to design a more integrated platform for the different components – reusing existing open source toolkits/components and standards wherever possible. It’s going to take a while to refine our ideas and then to actually build and test the system, but I’m going to start off by looking at how to create a mobile app for assessing the skills/knowledge of the HEWs.

Ruby on Rails developers needed for Ethiopia

Whilst I was in Mekelle Uni I met with a colleague from the Application Development Section. He’s looking for some experienced Ruby on Rails developers who could assist with one of their projects to create a web application, for their student management, finance, procurement and property administration system.

Please contact me for further information and I can explain more and send you contact details.

Jobs available

In the last couple of days I’ve received couple of emails about web/IT jobs which may be of interest to people reading this blog, one voluntary and one paid…

Firstly, a voluntary short term IT job (sys/network admin & web development) in Tanzania with Mpingo Conservation & Development Initiative. I’ve not got a weblink for the full job info, but can email on to you if interested.

Secondly, (paid) web developer job with Aptivate – international IT development company who I did some work with last summer in Cambridge, see Aptivate website for full details.

Video Content Management and Streaming with Kaltura and Moodle

Through the elearning training we are trying to encourage teachers to make more use of video and other multimedia content in their courses. This presents us with several issues, mainly because most video streaming sites are blocked by the University (to save bandwidth). This means we either don’t include the videos or we download to run them locally. So far we’ve just been uploading them into the Moodle course, which is fine for relatively low numbers of videos (or for very short videos), but is soon going to become unsustainable. Also, we’d like to suggest video content teacher may wish to use – so it wouldn’t be appropriate to have these filling up the Moodle server.

One solution is to use a multimedia management streaming server, so over the last few days I’ve been testing out Kaltura. It’s an open source video content platform and has plugins for Moodle, WordPress amongst others.

Installation was straightforward enough on my laptop, once I’d got the necessary prerequisite packages installed and settings. Couple of issues I did come across:

1) On my first attempt at installation, it installed on the root of my webserver, so I was unable to access my other web applications. This was because I specified ‘localhost’ as the domain. I tried to figure out how to move to a subdirectory (see: http://www.kaltura.org/moving-installation-new-directory) but haven’t got that one figured out yet. So I just set up a new host (http://kaltura.localhost) and used this instead. So now I can access Kaltura and my original webapps, with out switching configurations and restarting apache.

2) When the prerequisites say that you need a mail server, it really does mean that you need one! After installation, when creating publisher accounts, the login details are emailed only – so there’s no way to set the password except by following the link in the email. I assumed I’d be able to reset the passwords manually and so the mail server integration wouldn’t matter to much. Given that this is just running on my laptop, I haven’t got a mail server running, so then had to set about trying to get one configured. Fortunately I found these instructions on how to configure postfix to relay through a gmail account on Ubuntu (I’m running 10.10). I set up a clean/default postfix installation and used the settings/instructions posted in the comments by Michael M. I used a ‘disposable’ gmail account, so that if something goes wrong, I won’t get blocked from my normal gmail account, but seems to be working well so far. It’s also good now that I can have emails sent for all the webapps on my machine.

So after I had these 2 issues resolved, I was ready to start having a play. All seems to be working well, although I was hoping that people would be able to browse the uploaded content without having first logged in. I guess we’d just need to create a generic account. If anyone knows how to set this up then please let me know – or if there is a generic Kaltura content browser application that I could use?

I tried uploading a few flv and mp4 videos to embed onto a webpage, and seem to work well. A little slow on my machine, but then my netbook probably isn’t designed to be a media processing and streaming server!

My final experiment was to look at the Moodle plugin, unfortunately I had a few more issues with getting this working. When trying to register the module in Moodle, I kept getting the error that ‘Your Kaltura registration failed. Missing KS. Session not established’ when trying to enter the url, username and password for my Kaltura server. After a bit of investigation I found it was a bug with how the partnerId was(n’t) being passed. I found a hack around this, see: http://www.kaltura.org/config-moodle-mod-moodleadmin-page, but it’s not pretty!

Now I have the option to add a video resource in Moodle directly from my Kaltura server, or so I thought I had, currently whatever I seem to search for (tags, video titles, categories which I know exist in the account I have) returns no results. Next step is to try and figure out why I can’t seem to find any of the videos I have uploaded…

Playing with heatmaps

My 'hello world' heatmap

Over that past few days I’ve been playing around with creating heatmaps to overlay onto OpenStreetMap – the image on the left is where I’ve got to so far. My interest in this is for creating heatmaps from data collected during my colleagues health sciences research in Ethiopia.

There are already several programs and services available to create heatmaps, for example gheat and OpenHeatMap. But none of these quite suited me, gheat because I didn’t want to create a full tile server – just an image to overlay on a particular area of the map and OpenHeatMap because I wanted to have access to the code to tweak how I wanted.

I then found heatmap.py which (using a similar algorithm to gheat) did almost exactly what I wanted. There were only a couple of changes that I needed to make:

1) Update to account for the Mercator projection – I wanted my overlay to be on a view of the whole world (zoom level 2 in OpenStreetMap). When I first ran the program the areas over northern Europe (and others) were almost but not quite inline with the marker overlays, but this was due to the projection. I just edited the input script to convert my lat/lng coordinates into Mercator coordinates. I also hooked up the heatmap.py script to read the lat/lng coordinated from a MySQL database.

2) Allow the script to have weights against each point. The current script looks at the number of points in a particular area (or on top of each other) to generate the ‘heat’. I also wanted to allow for points to have a weight – as mentioned here. I’ve not yet implemented the weighting, but I’m not anticipating this to be too tricky. GHeat (as far as I can tell) doesn’t allow for weights on points, but OpenHeatMap does (please let me know if I’m wrong about this).

All has been much easier than I’d expected, I’ve learnt a little more about python and once I’ve got the weighting working how I’d like, then I’ll share the code back.

Peer Programming

For the past week or so, I’ve been over in Cambridge doing a some programming work for Aptivate (a not-for-profit IT development company). It’s been good to get back into doing some programming work after quite a long break – over the past couple of years I’d only really worked on a few personal projects. Quite surprised how much I’d forgotten, but more surprised how much I’d actually managed to remember.

At the moment I’ve been working on a survey application for health centres in Rwanda, to collect baseline information about the facilities and services they’re able to provide, with a view to better target resources and measure any improvements made.

What I have found interesting has been Aptivate’s use of peer programming and agile development methods. Rather than programming alone, pairs code together. At first you may think of this as being quite an inefficient way of working, especially given a limited number of programmers and many projects to work on. But actually, I’d argue the opposite is true. Whilst working alongside someone, there is far less temptation to get distracted by checking email or wandering off onto the internet.

Voluntary web development

Earlier this week I spent a few days working Cambridge doing some volunteer web development work for Aptivate. They are in the process of developing a new low bandwidth site for CDAC (Communicating with Disaster Affected Communities), this particular site is aimed at the victims of the Haiti earthquake and is to help ensure that aid and relief agencies are able to communicate well with local communities as they rebuild their lives. The site isn’t yet finalised, so can’t put the url up yet, but will do so once it’s ready.

As an aside, OpenLearn now has a course on “Using Voluntary work to get ahead in the job market“.

Much of the past couple of weeks have been spent making sure I’m ready to head off again to Ethiopia to work on the Digital Campus project. En route, I’m going to the eLearning Africa conference in Zambia, where I’m giving a presentation next Friday. Looking forward to getting back to Mekelle to see how everything it going there, seems like quite a lot of progress is still being made. My plan whilst I’m there is to help support the phd students and the ICT team, but also planning how the project can progress into the next academic year.

Hopefully I’ll be back blogging a bit more regularly over the coming few weeks!

Bandwidth measurement

For a project which I may be working on in the near future, I need to think about how I can measure user’s bandwidth. Although there are many tools available for doing this already (such as speedtest.net and many others), these generally all require java or a recent version of flash to be installed. Plus they appear mainly geared towards testing a broadband connection, rather than a dial up (or other slow type of connection). I’d like to avoid creating a program that needs to be installed on a users machine as I need to keep it as simple as possible.

My current thinking, avoiding any installation and as little effort as possible on the users part, is to use a simple webpage with a small piece of AJAX to download a file of fixed (known) size and just use javascript to calculate how long it takes to retrieve. I realise that there are obvious drawbacks to this approach:

  • hard to measure latency
  • accuracy of javascript timer
  • other processes running on the machine
  • proxy or caching servers getting in the way

However, I don’t need something extremely accurate, just something that is easy to use and gives a reasonable approximation of a users bandwidth (which will be dependent on a huge number of factors anyway, such as time of day, no of other users etc), is it 2kbps, 20kbps or 200kbps?

To get a better idea of the usual speed of a users connection, I can attempt to download several files of different sizes (from different servers), and take averages.

Is there anything I’m missing that would make this a really bad way to approach this? Or would it produce results so inaccurate they’d be useless?

Regex for replacing URL with anchor tag

Despite there being 1001 regexes on the web for matching a URL in a string and then replacing it with an anchor tag (commonly used in chat applications etc.), I couldn’t find one which did exactly what I wanted, so I thought I’d share my regex for replacing URLs with anchor tags.

Firstly, the problem with all the other regexs I found. Take for example the following text block:

you should have a look at <a href='http://example1.com'>http://example1.com</a>, and http://example2.com

All of the regexes I found for matching and replacing URLs with anchor tags would have transformed my text block into:

you should have a look at <a href='<a href='http://example1.com'>http://example1.com</a>'>http://example1.com</a>, and <a href='http://example2.com'>http://example2.com</a>

None of the example regexes I found coped with the possibility that some URLs may already be contained in an anchor tag, as in the example above, or in other instances where you don’t want to insert an anchor tag, such as: <img src='http://example.com/logo.png'/>

The regex and code I am now using to get around this problem is (in Javascript):

var mystring = "text with some URLs in";
var myregex = /(^|[^'">])((ftp|http|https):\/\/(\S+))(\b|$)/gi;
var newstring = mystring.replace(myregex ,"$1<a href='$2'>$2</a>");

All appears to be working well so far, but I’m sure my regex is far from perfect. This regex doesn’t check that the URL is really well formed, for example valid top level domain etc.

So please post any possible improvements below, in the meantime I hope it’s useful :-)

Chisimba framework

chisimbaRecently I was sent link to Chisimba, a ‘Web 2.0 enabled, Free Software development framework for creating web and distributed applications’, developed by African Virtual Open Initiatives and Resources (AVOIR). From the info on the site it looked an interesting project, although my first impression was that its trying to be all things to everyone, with modules for blogs, wikis, CMS, LMS and more. It appears to have taken elements from Moodle, Joomla, Drupal and Elgg and packaged them all into one application, which may or may not be a good thing.

On downloading and installing on my laptop, I soon found that this was still very much a work in progress, as there appeared to be lots of little bugs/annoyances that would probably have been resolved if it was a little more developed. A very minor example of this was the fact that the next/previous buttons on the installation were the wrong way round (for me anyway), with next being on the left hand side and prevous on the right, rather than the more usual arrangement. The installation itself was a little fiddly, however that was mainly because I had to upgrade my version of PHP, install some PHP libraries and some PEAR libraries too, before it would install.

A lot of effort seems to have gone into creating modules, 100′s of them by the looks of it, so thought I’d take a look at installing the blog module. Unfortunately the automatic ‘download and install’ kept giving me an error, so then tried an offline installation of the module – a 35Mb download of all(?) the modules is available – but I couldn’t find any info on how to install a module in this way. I’ve posted a query on their discussion forums, so hopefully I’ll get a reply to have this resolved soon.

Overall I was a little disappointed that I couldn’t have a proper play with the modules, but will come back to it once I get a resolution as to how to install them. Having said that I can’t see this framework taking off, there are many other established frameworks out there and I don’t think Chisimba offers anything different enough from these.