14952 characters

What software will you trust when you get senile?

It's a sad time when you see a loved one descend into senility - what we think of as simple day to day tasks get harder for them to complete, and eventually impossible.



If you have been in this situation, you probably thought - there must be some software to help with this.



But the problem is that the current generation of older people havent really taken to technology.



What about us though? What will we do as we get older and unable to do basic things - could software help us? Would you trust an app that says "Don't walk out the door - it is 3:00am, you should stay inside"





This is quite a difficult issue. When we lose our cognitive abilities, we generally revert to things we know - there is no point giving a senile person a fancy phone with a pill taking reminder app, because most likely they will simply not use it - they have never *really* used apps and sure as hell don't want to start now.



But the current generation? Maybe it could work?



What needs to be done for this to be trusted though?

1. You would have to use it for years *before* you get senile for the rote learning, and to develop an instinctive trust of it

2. It cannot update itself with new features or a different interface

3. Open source from the start. Why trust something if their payment method is advertising





What would it do?

The idea is to have some software where you told it what you want to happen in the event of you losing your cognitive abilities



Who decides when you need to go into assisted living or an old folks home?



It is a sad reality that many of us will need to do this eventually, but overwhelmingly the person at the time does not want to do so. They insist they are ok to keep going as they are. Even with conditions such as dementia where harm is highly likely, they will not want to do it.



Who are we to say they need to go into a home? Look at yourself right now - you are young and functioning and have control over your life. Imagine if your family suddenly all got together and said "we are putting you in a home now because you might hurt yourself"



What?? Logically you know it is nonsense but they all insist. For older people in this position, they feel the same way - they might know they have issues doing some things, but a permanent life sentence to a "old folks home" often sounds terrifying to them. They might be old, but in their head they feel the same way as they always did - as we get older things get slower and stop working as well as they used to, but in our minds we are the same as we were at age 30.





So what do you want to happen when you are in that position?



It is worth thinking about this now - will you put full control of your life and destiny to your children, relatives, doctors or would you like to be part of the decision making process.



The big issue is that *you* may not know what is going on - perhaps you get dementia, or perhaps you really are a danger.



Would you want to keep living at home if you know you might forget to feed your pets for 4 days at a time, or take your tablets on a regular basis?



It is a tough choice, and the point of all this is to get you to think in advance what and when you should accept the fate that comes with it.





What exactly will the software do?





Requirement #1 - be secure so you trust it

The software needs to be completely secure so that you trust it.



This needs to happen over a long period of time, ideally 10+ years of you using it - and you need to keep using it





Requirement #2 - stay the same

The software is going to help you as you progress into old age with lessened cognitive abilities, so you will not want a new interface each year - the look / sound / feel must stay the same.



There are 2 reasons for this:

1. Old people generally don't like change, especially software changes with things moved around.

2. Fading memory. In a lot of cases, memory loss is for more recent events, but if you have used your software for 20 years there is a better chance that you will recognize it and trust its output





Requirement #3 - take into account your wishes and warn you of bad actors

Lets say you have the following wishes



1. I want to live at home for as long as possible 2. If I need assistance, I want a home nurse before considering moving out 3. Do Not resuscitate, in the event of an emergency 4. I want to continue donating to my charities as per current plan 5. Will to executed as normal, and there should be no changes (latest copy with laywers dated yyyy/mm/dd)



And what do we mean by bad actors? That is your choice. These might be people or organizations that you believe (rightly or wrongly) will do things against your best interests.



for example



A relative who is always taking money and wants you to sell the house before you are ready. That doctor who is hypercritical of your diet and insists you cannot eat 'blah' (but your other Doctor said 'it's not great but it wont kill you') The door to door charity worker who is actually a scammer



Detecting bad actors, in the first sense is quite simple - you simple list the people you don't want to take advice from so when in crisis mode, it can alert you.







Requirement #4 - tell you what is going on

this is going to be quite a difficult thing to do. The software needs to be able to TELL you how you are actually going. eg

- "Your mental faculties are ok - 8/10 things remembered"

- "You forget to take your pills 7 times out of 10"

- "You usually forget to turn the oven off"

- "Your Auntie has been trying to call you for 4 hours"



The theory is - These sorts of revelations coming from a piece of software that you designed hopefully will be taken more seriously by you, than if someone else told you this.



As we get older it is not uncommon for parents / grandparents to dismiss issues raised by others for several reasons.

1. Denial - it is hard to admit we are losing control

2. Not entirely true - you may be nervous / distracted when others are around which causes you to forget things





Requirement #5 - recommend a course of action

This is the crunch - you have told the software what you want, it has logged what happens, and using this it can give recommendations, which if we trained it properly and have trained ourselves to use it consistently then hopefully we will believe the outcomes which may make our lifes no so much better, but at least respectful in that we are part of the decision making process.







What will this software look like?

I am not sure - I plan on making a start, but if you know of existing things like this, email me suggestions and I will post a follow up.





Risks

Having software that you trust - really trust to do the best result for you is going to be difficult.



At this stage, all commercial software is designed for profit - that isn't to say they are untrustworthy, in fact the big players like Google and Apple are only going to continue their dominance while they have the users trust.

Google gets its income from selling you adverts, so it collects a lot of data about you. For this software, that is not an issue and could be helpful.



What about a government controlled app - that is all well and good for most people, but do you have a criminal record, did you protest too loudly at a political rally. This is just for western countries with a democracy - countries where users privacy and personal rights are not a high priority would be fairly risky to run software like this.



What about a foundation based on open source - where everyone can read the source code. Sounds like the most plausible option, but considering that even today mentally coherent people (guessing 90%) simply use open source software without reading the code. There is a good reason for this - there are people who do read the code and most issues are quickly spotted and fixed (like the NPM library recently that suddenly used a library which spammed tweets).

Reading the source code as you grow old and spotting issues is going to be difficult, but there probably isn't a better option.





What about a really simple system?

The greater the complexity, the greater the risk - this is a no brainer





Is it possible to stop software updates

The main reason for new software is that people like new features, and a change of interface is nice [citation needed].



For this system, we absolutely don't want changes to the interface, and we don't need bells and whistles, because quite frankly if you need your senile assistance system to synchronize your TV guide to your phone then get a separate app to do that and leave the core functionality alone.



This software needs to build as if it is going to be sent to outer space where it should tick along forever, keeping track of you and giving you advice - it should not update itself, it should not change its interface. It is a pure functioning device with a SMALL set of functionality.





Getting technical - how to build it?

You can build a safe software system in any language, providing your team has the skill, specifications and your have a lot of time/money. There have been successful critical systems built in C, Java, Assembly (NASA space probes - still ticking along) and many others.



These successful projects had budgets for programming alone in the 10s to 100s of millions of dollars though.



Not something a single person can achieve, so I would guess a pure functional language like Haskell would be an appropriate choice. There are no side effects with a pure functional program and no exceptions (programming failures)





Why does it need to be a single person?

For trust. I trust software everyday because I know the risk - if my bank screws up I am out a few hundred dollars, if apple leaks photos, I am embarrassed, if my driver-less car fails badly I would be in a car accident but *probably* wont die (statistically) - but if this software fails - the risk is that it is acting as your brain, because you limited cognitive ability, it could say "sure walk out on the street", "you don't need that tablet now, "take 10 tablets"





So according to our requirements so far - it has to be a really simple system.

Perhaps the system should just be a way to process your stated objectives listed above.

The system needs a way of detecting what is happening around you - this looks trivial by today's standards (temperature, is the oven on, is it day time, facial recognition of who is at the door, is it raining, what objects are on the floor), but it probably needs to be open sourced into a standard safe and self contained library so people can use it without needing API calls, subscriptions, cloud services, etc.



The core of the software uses the information it has, along with your wishes to give to status reports - confirming what you are doing is ok, or suggest what you need to do.





What about the interface - what will it look like to the user?

The user interface will be a key 'make or break' in terms of user acceptance, so it stands to reason that there are likely to be several interfaces, and the user can choose the one they want





The standard phone App

Woke up drunk in a strange place and don't know where to go? Yes, there's an app for that! Cognitron2020 will tell you how to get home and it prevented you sending 14 drunken texts to your ex.





The watch

Great as it is always on you. This could be a smart watch, or small device with an Arduino / Raspberry PI micro controller





The speaker

Like Google home, or Amazon echo it would listen to your commands and give voice output





The robot dog or robot cat

Not as silly as it sounds - people get attached to things, and it would keep you company (ever play video games and gotten attached to your pet there?)



When a bad actor arrives, or you make a bad decision, the dog would growl or the cat would hiss at you. This probably has a better chance to get through to your in your state than a phone app.







What's Next

Expect to see a few apps like this in the future - it is a logical next step, and there certainly is a demand, though we dont really know it yet.

Also expect that the first few apps will suck - many will say "AI smarts" and some will say "links to you bank accounts for easy payments"



Sure, we will give them a test run, but really - it is going to take a few iterations for this to work *safely* for us, so don't be discouraged by initial offerrings that fail to deliver.



We need the failures - we need to see what doesn't work, so that we can build what does work.



Are you a programmer - great stuff - you need to code yourself a helper.





Summary - You choose to go out your own way

How we exit this world ought to be our choice, so thinking about how *you* want to go, might make the transition less stressful (it is never going to be nice, but such is life).

Mary, aged 68 chose not to go for the extensive treatments (with a 25% success rate) and passed away at home

Frank, aged 78 lived at home - he missed his wife Mary but sometimes forgot she was gone. He would call out her name and ask the empty house questions "what did you do with my shoes, Mary?". He slipped occasionally and was in and out of hospital - the kids didn't like that he stayed at home, but he'd be damned if he left his house.

His phone reminded him he had memory loss, and that Mary wasn't there - he chose that years ago, and Mary agreed to make short videos of herself answering his questions: "Your memory is shot, Frank - I'm not here", "The cleaner puts the socks in the top drawer", "Take your damn tablets Frank".

One day he slipped badly and woke up in pain - he didn't know where he was or what was going on. His sides hurt.

"Mary, help" he mumbled

The house stayed silent.

"MARY"

His phone played a short video - it was Mary, "You've fallen over you old coot - I told you not to have 3 glasses of cider!"

Frank smiled - "always nagging to the end, eh Mary"

He remembered now.

He closed his eyes for the last time











References

Examples of Safe Software Systems

Java - http://goedel.cs.uiowa.edu/MVD/talks/Vitek.pdf

Assembly - https://github.com/chrislgarry/Apollo-11

C - https://news.ycombinator.com/item?id=3943556

The Integrated Navigation and Weapons System (INWS) developed by ATE Aerospace for the Hawk Mk.120 was written entirely in C, was DO-178B-certified, ran to a million lines of code and cost approximately $100 million for the development of the software and hardware combined.





Research Papers

Safety critical systems: challenges and directions - ?Knight

http://users.jyu.fi/~mieijala/kandimateriaali/Safety_critical_systems.pdf



Anatomy of safety-critical computing problems - Swu Yih, Chin-Feng Fan,Behrooz Shirazi

https://www.sciencedirect.com/science/article/pii/095183209500074C









