MediTrak Update

Ehe splash screen for the Meditrak app I have just developed.

I finally made my latest app available to the public yesterday. I badge these things as “preview” releases simply because I don’t have any resources to test the thing properly, so I write my own scripts and test them myself, iron out as many kinks as I can find, and throw them out to the public to hopefully find the rest.

Continue reading “MediTrak Update”

Progress

Thought I’d post some screenshots of the app I’ve been working on. It seems to hang together but the next stage is to test it properly.

Another thing I need to do is prepare the web page for it, so I knocked up some ficticious records and this is what I came up with.

The main screen is split into two tabs. First, the meds you’re on currently:

and second, a list of all the meds you were *ever* on:

The way you add and remove meds from the list is using the “Add” dialog.

The neat thing about this dialog is that it allows you to part-type a name, then scurries off to find all matching meds in either the UK or the USA. I’ll probably add more countries as I go on – the EU is a prime candidate but right now, they’ll still be in sync with the UK. The drugs above, I haven’t a clue what any of them do, but they are all officially prescribed by our NHS.

This was actually surprisingly easy to write, but a real pita to search for the information. It is all publicly-available, but they don’t make it easy. One medical company quoted me thousands for just the UK data, and here I am bundling it into a piece of freeware. What good value 🤣

That’s basically it. It’s meant so that you can keep your own record on your own PC. But, if you do want to share the information with anybody, it has a PDF export function which produces the following kind-of thing.

So now I suppose I’d better start testing the bloody thing. Meh, tomorrow.

Curveball

I got the renewal through for my old domain name, the one I use to showcase some of the apps I work on now.

A couple years ago, I wrote a diabetes-tracking app for Windows, called it Diem, for no particular reason. When it got close to finishing it, I started thinking of a web site I could buy, to distribute it. As it happened, I haven’t really promoted it, although it is out there.

I had lots of don’ts:

  • The app was global, so I didn’t want a .uk domain name. My preference was for an established domain suffix such as .com.
  • While that particular project was a not-for-profit giveaway, they might not be in the future. And I wanted a domain name to fit both. So any kind of .org suffix was out.
  • Ditto, healthcare. That’s kinda what floats my boat nowadays, but I didn’t want to lock myself in.

In the end, I just branded the product as being made by Diem Solutions and bought the domain name diemware.com. But they were never names I was happy with. When it came up for renewal last year, if you remember I asked if anybody had any better suggestions, but no-one did, so I renewed.

This year, it came up for renewal again, and as soon as I saw the notice I put my thinking cap on. I decided to “rebrand”. I’m gonna let diemware expire and yesterday I bought the domain curveball.tech. .tech is one of a bunch of new domain names (like .blog) but I thought it fitted.

What do you think? In fact, I just ported the old web site to the new this morning, so you can tell me what you think of that, too, if you like. I rebranded the web site, because it was only a few pages, but I didn’t touch the actual app yet.

Just like Mr Bump, curveball is another allusion to the stroke, but certainly for hosting these apps, it’s just a name that I think is quite a good one. I tagged “Technologies” onto it because that fitted the suffix, plus there is already a company in the UK which trades as Curveball Solutions.

Teetering Progress

I finally had a chance to be taking this medical app idea forward today. It’s been quite frustrating because I’ve got a few projects going on which are all basically complete bar the shouting, and they all seemed to want a little bit of attention, all at once.

I pulled out the list of NHS medications (that’s a wavy definition, drugs and devices, commonly known as md + d) and stripped everything out, until I was just left with a list of names. Would you believe that, in the UK, there are 21,500 of them? I suppose I should add a just in there, because these meds serve 70 million of us. That’s just generic names like paracetamol, none of the specific brand names like panadol. Interested?

Oh, and this list gets updated every week, so I pity the poor sod… But I can’t imagine it changes much.

God knows what order these names are in – no doubt I’ll find out – but I just published this copy as a Word document so you can search and scroll etc. if the fancy takes you.

I bet to everyone else this is dull as ditchwater!

Next Steps

I mentioned the other week about my latest creation – just a tiny web site to keep track of COVID in my area.

I update this data daily, as fresh data is published by official sources. Only takes about twenty minutes, and frankly most of that is waiting for the official data to come through.

So ?I was thinking about what the next project will be. I think it’ll be another quite small one, centred around people’s meds.

The idea is just that it keeps a record – you started taking such-and-such on 1st January, you upped the does from 1 to 2 on 28th February, you stopped taking them altogether on 1st March.

I know, there are ways of keeping track of this stuff already, but I wanted to make it medicine-specific.

To this end, I spent today digging around the various medical sites, and now have a file which contains the name of every med licensed for use in the UK. There’s a load of superfluous stuff in there, too – so tomorrow’s task is to tidy it up. The idea is that when the user says “I want to add a new med onto my list”, then the app will give them a picklist, just to hopefully save them having to type.

It might be nice to write this as a web site, but the thing which puts me off is all the security nonsense – I want to concentrate on delivering the app itself rather than taking a big chunk of time out to worry about user security. So a desktop app is easier because that’s already taken care of. It might be something I could one day turn into a phone app, although phones aren’t my natural territory.

If it ever goes live, it will be free – I’m beyond the stage of life where I want to profit from stuff, and just want to help people manage their health.

So, that’s how I’m gonna be spending my days.

Why Didn’t I Just Leave It Alone?

It is just gone 5pm here and I have just stopped doing things for the day.
I had the bright idea after lunch of checking the family web site.

I maintain a web site under my real name, just as a “Hello, I’m ….” kind of thing.

It’s got a Welcome page, a short page about work, and a contact form. There’s another page that just converts this form into an email. There are two tiny other pages, success/failure to submit the form. So, all told, not a big site.

After lockdown, one of the ways I got back into work was by looking at this site, and I was quite pleased because part of the “looking” was to bring it up to date, freshen it up etc.

So, this afternoon, I had the bright idea of running my site through one of these “semantic” tools. For example, it told me that certain tags were missing from my images – those tags would help someone who can’t actually see the image. Or it picked up on a few missing tags, which search engines look for.

One other thing it picked up on was that some of the files used by my site were out of date. Not surprising, I last brought the site properly up to date seven or eight years ago.

So, I set about updating things.

Suddenly, the update process reported an error! I tried my site, and the bloody thing would not load.

I spent a while looking for what had broken things, but to no avail.

Now, the saving grace here is that this was just my “test” site. My “live” site is sitting on a web server, happily running away, saying Hello if anybody visits it. So why am I worried? Just because it is a pain not to have it on my computer, so I can tweak it.

After a bit of thought, I decided that it was probably a good idea just to create a brand-new site from scratch and copy my five or six files onto it. At least then I should be all up to date, too.

I’ve copied two of them so far. Four more of the bloody things to go. So that’s the activity for the next few days. Just as well I didn’t have anything special planned! Grrrrr….

Math 101

Did you ever see one of those trivial sums on Facebook, which looked so easy and yet you knew there must be some trick going on? Something like:

3 + 2 × 6 = ???

Well, you’re right.

Because we, in English, read from left to right. But in math, you don’t. In math, you work certain sums out before others, and not necessarily in the same order that they appear on the page. This is a standard mathematical idea, usually called the order of precedence, Wikipedia talks about it here. So, something like a × happens before a +, and so on. Working in computing I’ve come across this a lot, and the rules in full are pretty verbose, but the basic thing is that you perform some operations before others. Left or right matters less. It matters for some things, like ÷, but mostly, no.

So, if somebody presented me with a line of computer code which said,

3 + 2 × 6

the first thing, I would probably fail its review, because it is ambiguous. In fact, it should be written as

3 + (2 × 6)

which gives the exact same result, but by introducing the brackets, you make it obvious. It’s easier for the reader to see what is going on, and that has always been my #1 aim when reviewing computer code.

The bracket says perform me first, so you can see we are no longer in the realm of left-to-right.

Once you realise that, the answer is trivial.

3 + 2 × 6 = 3 + (2 × 6) = 15

Easy, huh? But not so easy as you might think. Even Microsoft’s own calculator (on my PC) gets the sum wrong, unless I help it out by adding the brackets.

A Hot Date

Written for Fandango’s One Word Challenge (FOWC), engine.

I’m gonna post today about a component I once wrote in my professional life, which was a date engine.

For part of my professional life I was a consultant to an asset management company. Asset Managers run funds, hundrends of them. The way each fund is set up might be different. Half of it might be based on a commodity, like gold or silver, and half of it might be based on a spread of stocks in such-and-such a sector. Or, you might have a fund which is based on other funds. For example a fund might be based a third on Fund A, and two-thirds on Fund B. The possibilities are endless.

We use the term pension fund, and in fact the two are very similar ideas. The plan is just to invest into a fund, and allow the fund manager to grow the fund, without having to worry about too much detail. In fact, the funds we handled were popular with many pension companies.

Unlike the raw stocks or commodities themselves, each fund would only deal periodically. They tended to be long-term, rather than used by day-traders. In the simplest case, something might deal every day, but you could also have funds which dealt:

  • every Monday,
  • every other Tuesday,
  • the first Wednesday of each month,
  • the 2nd last Thursday of each month,
  • the 15th of each month,
  • once a year, on 31st December
  • once a year, on the first Friday

…and so on. The possibilities were pretty endless. Except that in practise, only a few tens of options were used.

The place I worked, they used to calculate these dealing calendars manually, for each fund, a year at a time. Just this process, over about 1,500 funds, took somebody about six months every year. And somebody else, another six months to check.

So they wanted to build a system which would automate the process. After all, it’s simple enough to have a computer just apply a set of rules and tag one date onto the last.

So I built an engine so they could do this. You needed to tell it the last dealing date, and once it had this, it would apply the rules for the fund and calculate the next dealinng date. So you can imagine, you could run this engine again and again, on each fund, to calculate dealing calendars years in advance.

The trickiest problem was in capturing all of these rules. Capturing them flexibly enough so as to allow many different types of rules to exist, but rigidly enough so the rule could be used to calculate a dealing date.

One of the oe other problem was, what if the engine came up with a non-banking day, for example a weekend, or New Year’s Day?

Plus, the funds were based in different countries/currencies. Different currencies have different ideas about what day is and isn’t a bank holiday. So straight away, you’re having to also capture bank holidays against all the currencies (although funds tended to be only set up in the main half-dozen currencies).

It had to take all of this into account, and more besides.

We got there in the end. It this sounds quite boring to you, that’s because it was. Working with banks was quite well-paid, but it wasn’t rocket science. The reason it paid well was because people had to be meticulous*. A lot of the time you would be working on something to improve a manual process. Either to make it quicker, or less error-prone (in this case, both). Banks are quite a specialised environment, in that respect. In later years, when I was hiring people, previous banking experience was always a big factor, just because it showed that somebody was used to that environment.

* some banks are more meticulous than others!