Mid-term review
The mid-term review is always a stressful time for Summer of Code students.We don’t know for sure whether we have done enough to ensure that our mentors will tick Yes to “Do you think this student deserves to receive the 2000 USD payment?” This leads to a flurry of activity from the students and increases the workload for mentors and administrators.
The Google Summer of Code team have opened up the process here which makes it easier for a student to guess what their mentor is likely to say about them. I really appreciate that the process is more open than it was last year and I am sure that other students are too. This should help students determine - during the course of their project - whether their contributions and effort are around the standard that should be expected.
I do not know what has been said about me and there is no way for a student to find out, short of asking Hamish and Darius what they wrote on the survey. The conversations that I have had recently have not caused me any significant alarm but you never do know!
To sum up what I wrote in my review: I interact with both of my mentors regularly through Skype and IM; I blog whenever I feel I have something significant worth saying - sorry to those who expect us to blog more than once a week… I just feel that distracts from what I am trying to achieve; I feel that the quality of the interactions with my mentors are what I would expect; I love working with the OpenMRS community and feel quite comfortable with the other students and mentors; I was not working to the best of my ability for a period of time due to de-motivation but I feel that has now passed and I am now progressing as I would expect to.
Draft 2
I have been working on the second draft of the drug order entry tool. The aim for this draft was to include an auto-completing search box; auto-filling form fields for commonly prescribed drugs; and to experiment with coloured highlighting of information.
As a side-effect I have spent a lot of this week experimenting with different ways to identify unique or partially unique data in JavaScript. Using classes to identify partially unique data - for example, a group of rows in a table that have a certain property associated with them - appears to be efficient. I am not sure if it is the correct way to achieve this or whether I should be looking at using exact or partial attribute value selectors.
I am quite aware that my coding patterns and style is not yet ideal for JavaScript and HTML programming but I feel that I am learning more about the approaches that I should be using and their is a wealth of information available on the internet.

The first image shows the JavaScript pop-up calendar that we have been using since draft 1. This is licensed under the GPL and it comes built in with a feature that autocompletes the end date field based on the entry in the start date field. A little bit of CSS hacking should result in a matching visual style with the rest of the system and a really flexible calendar.
The warning label which is only displayed if the drug is known to be harmful to the patient has been introduced. I am not sure about the placement or the strength of the colour so I will be experimenting with it.

This image shows the Creative Commons 2.0 licensed auto-complete text box in use. The Prescription History table uses a DHTML animation to colour the rows in the table when the status of a prescription changes. I think it is a really good way of conveying information to a physician but I am also aware that relying on colour is not a good idea because it could make the tool less useful for colour-blind sufferers.
VMWare vs 2.6.21
I use VMWare Fusion which recently reached RC1. I have always been pleased with the product but I recently came across a major problem with trying to use the latest Linux kernel in Debian testing - 2.6.21-5. I cannot install the VMWare Tools due to a problem with the kernel header files I have supplied and the currently running kernel. Perhaps the most recent VMWare Tools - 50460 - are not compatible with 2.6.21.
None of the pre-built vmmemctl modules for VMware Tools is suitable for your
running kernel. Do you want this program to try to build the vmmemctl module
for your system (you need to have a C compiler installed on your system)?
[yes]
Using compiler “/usr/bin/gcc”. Use environment variable CC to override
What is the location of the directory of C header files that match your running
kernel? [/lib/modules/2.6.21-2-686/build/include] /usr/src/linux-headers-2.6.21-2-686/include
Extracting the sources of the vmmemctl module.
Building the vmmemctl module.
Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-config0/vmmemctl-only’
make -C /usr/src/linux-headers-2.6.21-2-686/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.21-2-686′
CC [M] /tmp/vmware-config0/vmmemctl-only/os.o
SHIPPED /tmp/vmware-config0/vmmemctl-only/vmmemctl1.o
LD [M] /tmp/vmware-config0/vmmemctl-only/vmmemctl.o
Building modules, stage 2.
MODPOST 1 modules
CC /tmp/vmware-config0/vmmemctl-only/vmmemctl.mod.o
LD [M] /tmp/vmware-config0/vmmemctl-only/vmmemctl.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.21-2-686′
cp -f vmmemctl.ko ./../vmmemctl.o
make: Leaving directory `/tmp/vmware-config0/vmmemctl-only’
sh: line 1: 16972 Segmentation fault ‘insmod’ -p ‘/tmp/vmware-config0/vmmemctl.o’ >/dev/null 2>&1
Unable to make a vmmemctl module that can be loaded in the running kernel:
There is probably a slight difference in the kernel configuration between the
set of C header files you specified and your running kernel. You may want to
rebuild a kernel based on that directory, or specify another directory.
The memory manager driver (vmmemctl module) is used by VMware host software to
efficiently reclaim memory from a virtual machine.
If the driver is not available, VMware host software may instead need to swap
guest memory to disk, which may reduce performance.
The rest of the software provided by VMware Tools is designed to work
independently of this feature.
If you want the memory management feature, you can install the driver by
running vmware-config-tools.pl again after making sure that gcc, binutils, make
and the kernel sources for your running kernel are installed on your machine.
These packages are available on your distribution’s installation CD.
[ Press Enter key to continue ]
Until I can find a workaround to this problem I can either use a VM running at my preferred resolution with drag and drop of files enabled but no mouse-wheel scrolling or I can use a VM running in a 1024 x 768 screen which is extremely painful! Answers on the back of a postcard to the comments, please!
Goals Week 7
- Agree where to take the mock from here with Darius and Hamish - I am actually in the process of doing that today (yes, we are working on a Saturday!)
- Learn how to use the Dojo tools to allow for integration into the OpenMRS system
- Prepare my Google Summer of Code presentation for Campus Party in Valencia