Oracle云工程师托德·夏普(Todd Sharp)有一个活泼可爱的13岁女儿。
但是最近的一系列状况,让夏普心绪不宁。
他发现平时活蹦乱跳的小棉袄,最近总是提不起精神,而且经常说自己看不清东西,喝了水但还是口渴。
“大概是因为夏天温度高吧。”他宽慰着女儿,但始终是不放心。
夏普带女儿去医院做了检查,结果印证了他的担心,女儿被确诊患有1型糖尿病。这意味着女儿必须终身注射胰岛素。(编者注:1型糖尿病,多发于儿童或青少年期,约占糖尿病患者总数的5-10%,目前1型糖尿病还无法治愈,患者需要终身注射胰岛素。来源:Wikipedia, Mayo Clinic)
这个结果对于夏普一家来说无疑是晴天霹雳。
在安抚了女儿和妻子之后,作为一名爱捣鼓的极客老爸,夏普冷静下来,坐在女儿的病床边,开始研究起病情,以及如何照顾女儿与糖尿病和平共处。
几周之后,他开发好了一个手机应用,将其命名为胰岛素助手(Insulin Helper)。
夏普设计的App可以利用图像识别、智能无线电子秤和营养数据来计算他女儿消耗的碳水化合物,以及对应比例的胰岛素剂量。
Oracle云工程师托德·夏普
“我们星期三晚上住进医院,星期五出院。在星期五下午,这个框架就基本构建好了。”夏普说道。
“我希望可以尽我最大的能力,让女儿生活得更轻松。”
极客老爸的极速创作
所有糖尿病患者都必须借助一组独特的数字来确定血糖水平是否正常。这些数字一天内会变化多次,具体取决于运动量、食物消耗和胰岛素摄入量等因素。
很多医药行业巨头早已注意到这个快速发展的市场,陆续推出了持续血糖监测仪、胰岛素泵等相关糖尿病管理设备。但作为一名富有探索精神的程序员,夏普对市场上的这些选择并不满意。
夏普的女儿借助这个App,先导入为她量身定制的治疗方案,以便全天定时提醒她注射胰岛素。然后在吃饭时使用App拍摄食物照片以进行称重。当图像识别功能识别出食物后,应用会自动检索出营养数据,并通过无线食物称重器计算出食物摄入量。随后,她需要再使用一个独立的血糖监测仪测量当前的血糖水平,并提交到App中。最后App会根据她消耗的碳水化合物的量来建议适当的胰岛素剂量。
夏普设计的App利用图像识别、智能无线电子秤和营养数据来计算他女儿消耗的碳水化合物,从而计算出精确的胰岛素剂量
Insulin Helper可以在电脑和手机上同时使用。该应用结合使用了多种常用的开发者工具,以及强大的云服务和开放数据。
以葡萄糖公式计算器为例,夏普在编写时使用了Node.js Javascript框架和多种服务,例如用于检索JSON数据的Simple Oracle Data Access(SODA)、Oracle REST数据服务(ORDS)、用于编写微服务的Micronaut Data and Helidon、用于无服务器调用的Oracle Functions,以及用于存储所有数据的Oracle自治数据库。
“最好的一点在于,Oracle自治数据库中支持你使用分布式微服务录入和提取数据,而且任何数据类型——无论是关系、JSON、XML还是图形——它都支持。”夏普表示。
“你可以在三种不同模式下使用所有这些数据,包括合并数据、查询数据以及基于数据创建报告和训练机器学习模型,当然这一切要依托于Oracle数据库。你不需要做事件寻源,也不需要通过传统方法将数据合并到一个统一视图中,这太方便了。”
这并不是夏普的第一次创作了。夏普平时通过Oracle云和Raspberry Pis等小型CPU,将自己在美国乔治亚州的农场实现了部分自动化
程序员的巨大能量
夏普的初步尝试表明,尽管医疗技术已经发展到足以控制糖尿病,但要满足每个患者的个体需求,仍然是不够的。而像夏普这样的程序员所拥有的技能,可以尝试填补这些缺失。
他希望最终将其解决方案开源,即使只是向其他开发者展示它的构建方式也不错。
夏普还希望之后能够引入机器学习技术来增强应用功能,让应用能够根据女儿的个人数据进行自我训练,在支持计算胰岛素剂量的同时提供预测功能。
事实上,夏普的开发实践揭示了一个意义重大的现象:类似程序员的大众科学家具备解决各种数据驱动型问题的潜力,只是尚未发挥出来而已。
类似程序员的大众科学家具备解决各种数据驱动型问题的潜力
这位极客老爸表示生活中仍有许多实际问题亟待解决。对于他来说,一些正向的改变,即便是解决一个小问题所获得的喜悦,会比薪水更能给人动力。
“我并没有发明什么具有突破性的东西。我只是将已有成果拼接起来,为女儿专门做了一个特定的解决方案。”夏普说,“比我了解糖尿病的大有人在。我只不过研究了一个月,而某些专业人员可能已经在这一领域深耕了20多年。”