Life Science Project

By Rein Ytterberg

Introduction

This is a summary of my contributions to a Life Science project I was responsible for, as CTO, between 2012 and 2014. I hope this text can give a good insight in what kind of experiences and skills I have, should they be of interest for anyone needing my services for similar jobs.

The story is intentionally a bit restrictive. I have no intentions to give away company secrets here. So the project description is very short, and not much of the technologies1 we've used are presented except in the footnotes, to keep the text short. I don't think this poses a problem though. The situations and solutions I describe here may be found in many other projects, Life Science related or not.

Short Product Description

The intention of this product was (and still is, I guess, when you read this text), to collect health status from a very large group of patients. Most of those patients suffer from diabetes or heart problems2, typically arising from a unhealthy life style. As the cost for treating these types of patients accelerates heavily in the western world, something has to be done to lower the pressure on the health care institutions and staff.

By constantly collecting patients' health status via smart phones, we wanted to be able to present it to our other types of users, the medical staff. In order to do so, there should be an algorithm3 which weighted the input parameters against each other, and then between the patients to finally present an ordered list sorted by importance. The patient in most urgent need to get treatment landed on top of the list. Once treated or examined, it would be possible to follow up the treatment or adjust the parameters to meet the patient's personal needs and conditions.

To save time for the medical staff, the smart phone application was also able to remind patients automatically of casual things such as maintaining their recommended diets and physical activities.

So there were two user interfaces. One to the patients, who reached the system via their smart phones. Another to the medical staff, using a web interface on an ordinary PC at the clinic.

Initial Status

The reason why they needed a CTO at this company at all, was to finish off the application and make it ready for the market. When I started in August 2012. The development had been going on for a couple of years, but there were still a lot of loose ends and problems to be addressed, solved and implemented. Some of those problems were just technical, some were architectural related, some were organizational and others concerned which tools and methods to use.

The time pressure was high, because the company expected to be able to release the product to the market "any time". Most problems were finally solved, and the product hit the marked in the end. The rest of this story explains what I had to do to bring it there.

I wasn't the only team member of course. We had some employees and some consultants also. My main responsibility was to steer the project in the right direction, although I sometimes had to do some hands on programming.

Actions Taken

Below, I only list results that origin from my own initiatives. Some of the listed solutions were implemented by myself partly or fully, while some others were just requested by me but implemented by others.

Footnotes

1. Some key technologies used were: Mercurial, jQuery Mobile, Twig, Ubuntu Linux, mySQL, JavaScript, Ajax, JSON, LaTeX, Bash, GIMP, CSS3, HTML5.

2. The initial system design was actually designed only for diabetes and heart patients. Since we had to re-factor the source code anyway, I suggested we could redesign the solution to make it more general without losing much time. So in the new design, health parameters are moved from source code to database, allowing us to add support for any health conditions in any combinations in a streamlined and normalized manner without any, or very little source code updates. This not just makes the application easier to extend and adapt to new environments and requirements, it also makes it easier to test and maintain.

3. This central algorithm was both very tricky and interesting. For example, questions like the following had to be considered: Which of those patients is most urgent: The one who gained 5 kg body weight, the one who just smoked two packets of cigarettes, or the one who hasn't worked out for three weeks and failed to take medicine X?. We also had to consider parameter changes over time. For example, a 170 kg heavy over-weight patient couldn't be told to drop to 90 kg directly. It had to go in steps. First maybe try to reach 150 kg and when that's achieved, change recommendation to 130 kg and so on.

4. I noticed that the planning meetings were often delayed due to misunderstandings or vague definitions of terms, so much time was spent on clarifying statements. Sometimes when developers were asked whether a task was finished or not, they couldn't produce a straigh answer because the requirement wasn't clearly stated. For example, it might not say whether Done just meant writing the code, or also test it. By adding DoD comments, things became much clearer and the daily scrum meetings could be shortened down to a minimum.

5. I have nothing against Arch Linux. But the reason for switching to Ubuntu is that it's more commonly used and known. I expected the company to grow, and more consultants to participate. By using Ubuntu, I estimated the start-up time for new developers to become shorter, and therefore, cheaper.

6. GIMP is a very good graphics tool, available on both Linux and Windows. I suggested it because then we'd have a common tool, as not all designers are using Linux. One mistake, where I'm to blame, is that the graphics were not vector based. A lesson to learn!

7. The feedback function saved users' comments together with the exact state of the application, and the data the user saw on the screen, so we could get a clear view of the context.

8. This simulator (which I gave the name Overdoze) is truly powerful. It has a simple command line interface to allow it to be easily called from other applications or graphical interface if needed. Among many things it is capable of, one was to populate the sandboxes with realistic data. So for example, it could be told to generate random names of patients and medical staff, or simulate medical status for a patient who gains weight over a period of several years.

9. The backup system became very convenient. The staff just plugged in their USB sticks to the port of a Linux computer, to load an updated archive. When the coping was over, the LED went out. Loss of the USB stick posed no problem, since everything was encrypted. There were also redundant archives. All backups were logged, so searching lost data and restoring it was quick and smooth.


Copyright © Rein Ytterberg. All rights reserved.