万字拆解斯普莱克斯豪宅奇案
斯普莱克斯豪宅 坐落在南加州的圣地亚哥,在2010年左右曾经因为「金坷垃」鬼畜视频而爆火。虽然不知道「金坷垃」原版广告为何要选择圣地亚哥作为公司的名称,但这里的农业的确很发达。在距离圣地亚哥不远处的尔湾,有个加州大学尔湾分校,原址是面积为94000英亩的尔湾农场。 同样在附近的加利福尼亚大学里弗赛德分校,前身是加州大学柑橘实验站,作为虫害生物防治研究及生长调节剂使用方面的先驱,其研究成果成功将加州柑橘的生长期从4个月延长到了9个月,听起来有「一袋能当两袋撒,零浪费、不蒸发」内味儿了。 南加州的农业历史,也许拍摄克拉克森的农场的Jeremy Clarkson会感兴趣。但我们还是先把目光聚焦在圣地亚哥的一个小岛上。这个名叫科罗纳多的岛,开车十分钟就能到达位于市中心的圣地亚哥国际机场。岛的北边是一个叫Point Loma的地方,从那里的卡布里约国家保护区,可以眺望科罗纳多岛。Point Loma有一家叫做Point Loma Seafoods的餐厅,售卖龙虾三明治,龙虾肉极其新鲜,而且座位是在海边,能看到海上的日落和停泊着的游艇。 我在南加州居住的时候,时不时会来岛上转转。最喜欢去的地方有两个,其一是轮渡码头,那里能看到圣地亚哥的天际线,有时还有人在栈桥上垂钓。我印象很深的一件事儿,是从码头出来的十字路口没有红绿灯,车流又十分繁忙,根本等不到过路口的机会。每次我都是找个空隙赶紧冲过去,在一片愤怒的司机的鸣笛声中扬长而去。 其二是岛上最出名的景点——科罗纳多大酒店。这个酒店的历史比较悠久了。1959年,梦露主演的《热情如火》就在这里取景。电影《国王的演讲》里,爱德华八世为了娶寡妇辛普森夫人而退位,乔治六世临危受命。有传闻说,爱德华八世和辛普森夫人夫人相遇的地点就是在科罗纳多大酒店。酒店一楼靠向海边的一侧,有一家冰激凌店,吸引了许多海边的游客。我也去过几次,里面的冰激凌物美价廉。 距离科罗纳多大酒店步行仅仅八分钟,就是另外一处比较有名的建筑——斯普莱克斯豪宅(Spreckels Mansion)。听名字,会让我这个推理迷联想到阿婆的第一本小说《斯泰尔斯庄园奇案》,也是大侦探波洛第一次出场的地方。1906年,地产大亨约翰斯普莱克斯(John D. Spreckels)主持了豪宅的修建。这栋建筑是Harrison Albright设计的,有意大利文艺复兴时期的风格。这座豪宅拥有10个卧室,11个浴室,一个私人庭院,一个游泳池和一个水疗中心。今天我们要讲的案件,就发生在这里。 下面两幅图,分别展示了2021年2月份的斯普莱克斯豪宅街景,和2022年经过翻新后的街景。 Max的意外死亡 从我开头的铺垫,应该能看出来这是个富饶之地。科罗纳多岛犯罪率极低,岛上的居民成为犯罪事件受害者的概率仅为千分之一,相比之下,纽约是这里的五倍。岛上最常见的治安事件是自行车盗窃,所以许多人都有夜不闭户的习惯。可想而知,在类似世外桃源的地方,发生一件谋杀案是多么的骇人听闻。 斯普莱克斯豪宅距离最近的警察局步行也仅仅十五分钟。但有时候良好的治安并不代表能消除罪案的发生。章莹颖的案子里,凶手作案的公寓距离FBI的办公室很近。甚至更久远一些的白银案,有一处案发现场就在派出所对面的宾馆里。 我们先从一个叫作Max Shacknai的小男孩谈起。他当时才六岁,他的父亲是医药公司Medicis Pharmaceutical的CEO,Jonah Shacknai,母亲是Dina Shacknai,两人在2008年离婚。离婚之前,双方都向警方投诉,说对方有暴力行为。「幸福的家庭都是相似的,不幸的家庭各有各的不幸。」聊到这里,对紫金陈的作品比较熟悉的读者可能会联想到《坏小孩》,因为案件的走向都涉及小孩子,不幸的家庭,和犯罪的嫌疑。 Medicis Pharmaceutical是一家医疗美容公司,主要生产用于治疗痤疮和面部皱纹的产品,市值大约在26亿美元。Jonah平时在亚利桑那打理公司的事物,夏天的时候会来科罗纳多岛度假。Dina Shacknai是Jonah的第二任妻子,她还有个妹妹Nina Romano。姐妹俩并非双胞胎,所以长相也不是很相似,比如Dina的头发是深棕色的,而Nina的头发是浅黄色的。头发颜色划重点,之后要考。 Max发生意外的时候,Jonah一家正在斯普莱克斯豪宅度假。Jonah的情人叫作Rebecca,32岁,Max四岁到六岁的两年里,Rebecca一直在照顾他。Rebecca和Jonah的孩子们关系并不融洽,尤其是Jonah和第一任妻子Kim的孩子Cindy,每次都是当众和Rebecca闹矛盾,让Rebecca很沮丧。...
使用相亲APP,请自备雨刷器
自从短片《吉巴罗》火出了圈,各种解读层出不穷。除了比较直白的殖民视角,比较有意思的是对于男女关系的探讨。短片导演阿尔贝托·米尔戈(Alberto Mielgo)还有一部作品叫《皆为爱》(Windshield Wiper,又名:雨刷器),获得了第94届奥斯卡奖的最佳动画短片奖。 一段采访中,导演透露了为什么片名要叫《雨刷器》。下雨的时候,雨滴在车窗上形成了一种模式,雨刷器每刷过一次,就把屏幕清空,一会儿后会出现一个不同的图案。爱也是这样一种关系,每个人的恋爱关系都不同。动画短片就像车窗,依次展现这些关系,又一次次的被雨刷器刷掉。 机器人 年过三十,恋爱的主要动力来自父母和亲朋好友的压力。我首先尝试的相亲APP是很出名的XX和XX。两者除了名字都是两个字之外,还有一个共同点是机器人超多。 给对方发信息,只聊了一句,对方就再也不回复的次数多的数不胜数。我寻思莫非对面是大侦探波洛那样的心证推理大师?一句话就能看出性格不合?也许是长相不合吧,难不成是性别不合… 有的对方倒是回了,不同的人一致回复问「哪里人?」,这难道是在跳野狼disco,全场动作整齐划一?我不理解相亲上来先查户口的用意,也许是我跳的普通disco和这群跳野狼disco的步调不匹配吧。我寻思下次回答「三体人」,会不会导致机器人AI算法瘫痪,或者炸出一个降临派。 还有的时候女生第一句话就是:才来?我平时不常用XX,加我微信XXXXXXX。以我的颜值,大多数女生都是左滑而过,很少有女生愿意和我多聊几句的,这种上来就加微信的肯定是一眼假。 雨刷器滑落,我直接卸载了这两个APP。 推拉 女生说:你是不是有病? 我当场尬住。 时钟拨回到一个小时前,我在某社交APP上和一个女生成功配对。快进跳过自我介绍,我们聊起了业余爱好。 我说:我最近在尝试搞副业,和朋友做播客。也开通了小红书和B站。 女生说:我也在用小红书,你的账号发给我看看? 我发了一个小红书笔记,是我制作的一个手工模型。 过了一会儿,女生说:哇!你的视频很有意思耶,那个模型好可爱~ 我说:虽然这个笔记获得了不少流量,可惜我小红书的粉丝还是非常少…我的B站也才只有六百多粉丝。 女生说:已经很厉害了~粉丝的积累需要时间的沉淀,不着急~ 我说:我已经经营了三年多B站,再沉淀就沉到底了…开始折腾副业才发现,我没什么才华可以作为卖点,越来越觉得自己非常普通。 女生说:你这样都算普通,那我比普通还不如了。 然后我们聊了附近的美食,还有近期的旅行计划,不知不觉时间来到了午夜。 我说:时间不早了~你早点休息吧~晚安~ 女生仿佛没有看到,继续聊着之前的话题。又聊了一会儿,我已经不能抵挡困意,而且明天有早会,所以需要结束对话。 我说:我明天还有早会,今天只能聊到这儿啦,bye~ 然后就来到了开头的一幕,女生说:你是不是有病? 我愣了一下,感觉自己走错了片场。 女生接着说:晚上不能说bye,要说晚安!你是不是傻! 刚才还说我很厉害,现在又说我傻,薛定谔式的对话彻底把我弄糊涂了。...
法兰克福记忆碎片
热饮 巴哈拉赫(Bacharach am Rhein)小镇在莱茵河边上,虽然毗邻现代化的铁路和火车站,不过同时也充满了古色古香的建筑。无论是河岸边,停车场上方的小山坡,还是小镇的山顶,都能看到用石头筑成的古堡,不过大多都已荒废。 我们本打算去参观「Mouse Tower」,这座曾经的瞭望塔只有在河水退去露出碎石步道的时候才能抵达。但九月底的莱茵河河水非常充沛,我们只能远远的观望。 在法兰克福处理完公事,又在沿途距离美因茨很近的一个超市购物后,才来的巴哈拉赫。时间已是傍晚,在太阳落山前抓拍了几张小镇的建筑,之后整座小镇就被黑暗所笼罩。 向上望去,山顶城堡的窗户中透出灯光,似乎还有人在那里居住。我回想起周董的《威廉古堡》,不知道城堡里是不是也有一个会说话的猪。 管家是一只会说法语举止优雅的猪 吸血前会念约翰福音做为弥补 拥有一双蓝色眼睛的凯萨琳公主 专吃 有AB血型的公老鼠 虽然小镇的美景秀色可餐,但还是无法满足饥肠辘辘的胃。连着问了好几家饭店,都是八点关门,看了看表,已是七点六十…… 只能继续顺着石阶往小镇深处漫步,终于找到一家还在营业的饭店。餐厅是一家宾馆所开,户外用餐的桌椅和铁轨仅仅相隔五十公分。 夜晚的气温在十度以下,我急需一杯热饮暖暖身子,于是点了一杯热巧克力,主食是面条和配菜。没想到热巧克力没喝几口就迅速冷却,凉掉的甜饮让胃部陷入不适,难受的像是中了女巫的咒语。 啤酒 有了热巧克力的教训,此后我都是喝啤酒了。虽然酒是冷的,但喝下去却是暖的。 德国的小麦啤酒比较好喝,常见的有Weissbier和Hefeweizen。Hefe是酵母的意思,发酵后的麦啤倒在杯中会有厚厚的泡沫,啤酒瓶的底部还有专门的标志线,指导倒出啤酒的合适体量。 「Paulaner Weissbier」早期是修道院的修士们所酿造,所以瓶身有修士的头像,背景里也有类似修道院的建筑。「München Weissbier Beer」中的「München」就是慕尼黑的意思,表明了啤酒的产地。 九月底来到法兰克福,正值「Oktoberfest」期间,到处都能看到横幅。在法兰克福球场,还偶遇了一个看起来像是嘉年华的活动,人们都是穿着巴伐利亚的传统服饰入场。 德国朋友告诉我,只有慕尼黑的Oktoberfest是真正的啤酒节,其他各处的Oktoberfest只是蹭热度,是虚假的啤酒节。在Oktoberfest上,啤酒的收费会贵很多,人们的酒量也很大,到处都能看到在桌子椅子上跳舞的人。 法兰克福当地的特产是苹果酒,我在Zeil街上的集市买过两欧元散装版本,用一个大桶装着,倒到一个杯子里喝,味道一般,既没有很苦,但也没有啤酒的香味。不过在集市里吃的午餐感觉还不错,一大根香肠和一盘土豆,加上苹果酒和一大盒草莓,一共才是欧元。集市里都是当地人,没有看到游客模样的人们。后来才听说这个集市还挺出名,而且每个月只举办两次。 据朋友说,他们喝的苹果酒很酸,非常难喝。宾馆附近有一家叫作「Zampano Pizza & Pasta」的披萨店,里面售卖玫瑰口味的苹果酒。喝起来农夫山泉有点甜,是我喜欢的味道。...
程序员生存指南
《软技能:代码之外的生存指南》书评 豆瓣链接 书品 市面上的编程技术类书籍不少,但本书另辟蹊径,为程序员的职业规划和生活的方方面面都提供了指导。 也许有不少程序员都经历过创业,或者有创业的念头,所以在做本职工作的时候难免有些躁动。作者提出把雇主当成是软件开发企业的一个客户,调动自己管理职业生涯的积极性,对职业规划提出了一种「企业级」的理解。 比如要跳出思维定势,像企业一样思考,不是一个个的去追逐客户,而是打磨出让人们关注的产品。我刚开始完全是为了面试而刷题,觉得力扣极其枯燥,而且做动规并查集等等那些平时工作中完全不会用到的数据结构和算法题毫无意义。 但后来转变了心态,开始借着刷题的机会提升自己对算法和数据结构的理解。以前因为工作中不会用到动态规划就特别排斥这种算法,但现在会主动去了解动规的步骤,并学会举一反三。我还发现学习数据结构是一件很有意思的事情,掌握了常规的队列和栈之后,又开始学习线段树,单调栈等有些进阶的数据结构。 自从发现了刷题的乐趣,就开始坚持做每日一题,如今已经刷了五百多道题。回想当初两年多都刷不够一百题,和现在已经把刷题当作一种习惯简直是云泥之别。之前看到过一句话,「心没有方向,在哪里都是流浪」。如今逃离大厂的声音此起彼伏,但如果缺少明确的目标,无论在哪家公司都会产生逃离的冲动。 作者说,「当想去某家公司工作的时候,关注公司员工的博客并且留下深入思考的评论,让员工认识你,并且关注你的博客」。这种观点在一位叫作「Aleksa Gordić - The AI Epiphany」的博主身上得到了应验。博主曾经分享过他的经历,想去deepmind工作,第一次面试挂了。后来他就苦心钻研机器学习算法,并且持之以恒的分享他的学习心得。后来他看到评论里出现了deepmind员工的身影,他去领英上陶瓷的时候,也有deepmind员工说看过他的视频,并且乐意为他内推,后来他再去面试,顺利进入了目标公司。 日剧《被捡到的男人》里,男主角在拍摄现场本来是没有任何特写的背景龙套。但他和一位比较资深的演员攀谈后,发现他们是同一个高中的校友,相谈甚欢。那位演员要演一出生气的戏码,本来应该打另外一个人耳光的,因为和男主相识的缘故,不由自主的打了男主,也让男主捞到了一个特写镜头。自我推销不一定非要生硬的植入广告,而是通过自己的学识和人情世故一点点积累,水到渠成。 「十步学习法」无意是本书的精华。正如作者所言,明确学习范围很重要。计算机视觉的鼻祖David Marr,在暑假带了一个博士生。他把相机连接到了电脑上,然后要求那个博士生解决计算机视觉的问题。现在人们已经知道计算机视觉涉及物体检测,分割,三维重建等等多个方面,但当时却无法正确的判断这个领域的范围到底有多广。 作者举了学习数码摄影的例子来讲解如何缩小范围。我也使用了同样的技巧,在去国外旅行之前开始学习手机摄影,主要目的是为了拍好人像和好看的欧式建筑。所以学习摄影主要关注的是人像和城市的拍摄技巧,目标清晰了很多,更好的利用了出发前有限的准备时间。 不过本书开头的几章太短了,关于职场的一些观点阐述的不够深入。感觉翻译成「章」会让读者误以为内容很多,不如翻译成「节」比较好。而且书里的插图有些简略,就连许多讲算法的硬核技术书都有很吸引人的插图(比如《图解算法》),这本偏软的书更应该在插图上多下功夫。
全方位覆盖实践项目的PyTorch入门书
《PyTorch深度学习实战》书评 豆瓣链接 很久之前学习过PyTorch和深度学习模型的训练,但不久后转去做了其他方向。最近又开始做物体检测之类的项目,所以拿起了这本书复习一下和PyTorch有关的内容。 因为作者之一的伊莱·史蒂文斯的医学背景,本书的项目是通过CT图像给肺部结节分类,并通过实践来介绍PyTorch的使用。如果正好做医学图像这个方向,本书会十分有用。也确实有不少的创业公司都在开发这方面的业务,我觉得比单纯的谈论猫狗分类和GAN生成人脸的例子更加具有实际意义。 第二章从一个有趣的例子CycleGAN入手,把照片里的马变成斑马,而不是一上来就讲张量和卷积之类的基础知识。先关注能做什么,而不是具体怎么做。之后作者们铺垫了一些关于张量和如何处理数据的基础知识,并且实现了一个简单的分类网络。 和其他泛泛而谈的入门书籍不同的是,本书从第九章开始,使用了较大的篇幅全方位的介绍了如何一步步搭建CT图片分类的项目,很多步骤都有很强的实用性。比如书里举了许多使用现有模型的例子,比如使用预训练的resnet,和开源的unet模型,在实际工程中有不少情形都是用预训练好的模型,而非从零实现一个模型,所以这部分对实践很有帮助。 除了一些常规的话题,比如tensorboard可视化,和衡量模型优劣的AUC指标等,本书还介绍了如何部署模型。我在实际开发中确实遇到了需要转成onnx,或者使用libtorch的情形,所以这部分内容的编排对我而言很有帮助。在工程中部署模型的时候,需要了解量化的概念,这在书里也有介绍。 书的呈现方式对新手也比较友好,手绘风格的插图有head first系列图书风格,很直观。书中的代码注释并不是常规的行内注释,而是单独写在了旁白的位置,更加醒目。有些页脚的备注非常有用,指出了实践会遇到的问题。比如可以使用nn.BCELossWithLogits()来替代nn.Sigmoid()和nn.BCELoss()。书的翻译总体而言还可以,有些译者注也补充了英文原版没有说清楚的地方。 在阅读本书的时候,也发现了一些可以改进的地方。翻译通常是中文版的外文科技书的软肋,本书翻译的句子,有些非常的长,而且有点儿翻译腔,有时候增加了理解的难度。技术类书籍中,代码的排版是另一大挑战。虽然书里对于代码的呈现不太影响阅读体验,但代码如果能够按照jupyter notebook那样带颜色的显示会更方便。 技术类的书籍,难免会遇到版本更新带来的滞后。PyTorch 1.12.1对一些API做了更新,和书里的用法已经不一样了,比如使用预训练模型的时候,用resnet50(weights=ResNet50_Weights.DEFAULT)来初始化参数,而不是之前的pretrained=True,不过大部分基础的API还是一致的,不影响对PyTorch的理解。 可能是为了把笔墨更多放在项目实践上。对于一些细节,书中并没有覆盖的很全面,比如讲解反向传播的时候只是用了一个简单的华氏温度到摄氏温度转换的例子,感觉不够全面,如果可以加上多层网络的反向传播讲解就更好了,这部分可以看看《深度学习的数学》(ディープラーニングがわかる数学入門)加深理解。还有介绍dataset类的时候,没有介绍在物体检测领域比较常用的collate_fn。本书结合Andrej Karpathy的A Recipe for Training Neural Networks食用,可以了解更多关于如何训练网络的细节。 最后医学图像的数据集太大了,最好提供一个小规模的数据集方便快速看结果,比如nuScenes提供的v1.0-mini数据集就是个很好的例子。如果能结合kaggle网站上已有的比赛来准备数据和输出格式更好,因为格式更加标准,数据也更易于获取。 总之本书适合新手入门,可以带领读者上手做一些简单的项目,比如简单的图片分类和分割。从如何创建数据集,训练和监督各项指标,到衡量模型的结果,再到模型的部署都有涵盖。但遇到大型的工程项目和比较新的架构,比如ASPP之类的,还需要多做项目,多看源码,在实践中学习。