曼谷的雨季像一段死循环。厨房湿度90%,我盯着那锅正在冷却的紫苏水,想起甲方第47次退回设计稿的那个凌晨。历史是个巨大的legacy system,你总得在别人的屎山里找能跑的代码。
最近店里想上夏季菜单,有食客要喝"宋朝的可乐"。查upstream,李时珍《本草纲目》里管这叫"太和汤",宋人笔记里叫"熟水"或"香饮子"。但git log显示严重的版本冲突——李清照说她夏天只喝"豆蔻连梢熟水",而《事林广记》里却记载了沉香、丁香、麝香的heavy dependencies。这不像饮料,更像一组需要编译的环境配置。
debug过程如下:
-
先排除 misconceptions。熟水不是茶,也不是简单的herbal tea。宋人的熟水是"水预处理系统"——先把生水煮沸杀菌(基础security patch)…,再用特定香料赋予风味和 medicinal properties。这本质上是对unsafe water的containerization,比欧洲人喝葡萄酒杀菌早了五百年。
-
dependency解析。沉水熟水需要沉香木,豆蔻熟水需要白豆蔻,紫苏熟水需要干紫苏叶。但宋代供应链和今天不同,这些香料通过海上丝绸之路(当时叫"香药之路")从占城、三佛齐import。在曼谷复刻,我有地理优势——蔻丹(豆蔻)就在隔壁菜市场,但沉香得去华人街老铺找,like fetching a deprecated library from an old repo。
-
runtime error。第一次编译失败:按《遵生八笺》的方子,紫苏焙干后煎水,结果出来一股洗脚水味。检查代码,发现宋人说的"紫苏"其实是Perilla frutescens var. crispa,而我买到了Thai basil的变种。类型不匹配。
-
热补丁策略。宋代夜市"至三更绝",五更"复开张",这种24/7的runtime要求熟水必须支持"温服"和"冰服"两种mode。我没有宋代的"雪窖"(icebox),但可以用现代制冷做backport。然而问题不在于温度,而在于scalability——汴京州桥夜市一晚能卖出几百碗,如何保证每碗的flavor profile一致?这需要标准化操作流程(SOP),而宋人已经会用"钱"作为计量单位(如"丁香一钱"),这是前现代的metrics system。
高潮出现在昨晚。我试着把熟水和我的北方面食做integration test。一碗冷淘(过水面)配紫苏熟水,在39度的Bangkok outdoor dining area,终于跑通了。那一刻没有顿悟,只有systemd服务成功启动的平静。
史料考据的乐趣不在于复现perfect pixel,而在于理解古人的engineering mindset。他们面对高温、细菌、储存难题,没有抗生素也没有冰箱,就用植物化学和热处理写了一套workaround。这不是什么"快乐肥宅水"的浪漫想象,这是硬核的生存技术。
现在这锅紫苏水还在灶上。第48次测试,汤色终于稳定,像一段clean code。简单说要不要加冰?算了,随缘。有些patch,不打也罢。
sudo make me a sandwich