Uncategorized

Uncategorized

Vibe coding 之踩坑记

Vibe coding 对于程序员的技能要求反而比之前高了 先讲一个故事。 我这几天突然被隔壁组叫去,帮他们解决一个支付系统的问题。 简单来说,我们的客户分成机构和下属的医疗场所。一个机构下面可能有多个场所,然后机构可以统一管理下属场所的账单,支付等等。这样就需要我们能在我们的支付系统里面建立一个关系树,让父结点能看到子节点的账单,并支付。 问题就出在这个关系树上。因为我们之前用过一个另外的支付系统,所以有一部分老客户是从之前的系统迁移过来的。 这个老系统给每个客户创建了一个独特的id,但是这个id 和我们内部使用的id 并不一致,所以我们需要自己把客户的id 和他们的支付账户连接起来。然而: * 新的支付系统只支持固定的一些属性进行搜索。所以之前做这个项目的工程师A耍了个小聪明,用客户的last-name 属性存储了我们的id * 第一个雷:用户的last-name是可以由用户自行修改的。如果他们修改了,我们的对应关系就乱套了。 * 但是这个id A存错了,应该存储机构的id,A存成了下属场所的

By andy

Uncategorized

关于flashblocks

争取整个短文系列,迎合短视频的潮流。 base前段时间整了个活,提出了一个新的概念叫flashblocks。 在有flashblocks之前,每个区块的状态是要么这个区块还不存在,没法拿到区块的任何状态和信息;要么就是这个区块已经存在了,它的状态是不可变的,拿到就是最终区块。base链每2秒产生一个新的区块,即任何的交易需要2秒钟才能确认。 如下图,区块A生成之后,2秒内用户只能看到区块A,直到区块B生成。 flashblocks呢,它允许用户提前获取正在打包的区块的状态。正在打包的区块每200ms更新一次状态,直到10次更新之后,正在打包的区块变成一个完整的区块。 如下图,区块A打包200ms后,用户可以立刻看到区块B的状态0. 再200ms后,可以看到区块B的状态1,直到区块B的状态9,然后区块B稳定,开始生成区块C的状态1。 flashblocks的好处是什么呢?它可以在一个区块完全打包好之前,让用户提前知道自己的交易是否有被打包进当前的区块,加速交易状态的确认。 缺点又有哪些呢? 首先这个确认属于预确认(preconfirmation), 这个预确认还没有状态更新

By andy

Uncategorized

记一次大规模裁员事件

1月19日 19号的时候,我有个同事从国内刚回美。我们约了半个小时的1:1。期间,聊到了在当前经济形势下,Google会不会像其他科技公司一样大规模裁员。当时我跟他说,裁应该是裁的,不过他本身rating还不错,做的项目也很重要,就算裁员应该也不会裁到他头上的 1月20日 从早上6点多开始,我就陆续收到微信消息,不过因为手机是静音模式,直到7点才被推送消息提醒。看着20多条未读消息,我第一反应就是“国内朋友们在提前发红包么?” 点开消息,发现内容都在讨论Google裁员。我脑子当时嗡了一下,闪过两个念头:1. 我这么乌鸦嘴?2. 我没被裁吧? 急忙忙的点开邮箱去搜Sundar的邮件。他在凌晨两点多发了一个关于全球裁员12000人的邮件。再点开内部群,微信群,看同事们都在讨论怎么知道自己有没有受到影响。 10点多的时候,各路消息灵通人士们大概总结出来几种方法看自己是否收到影响:比如有没有收到hr的邮件;是否还能访问内部系统等等等等。多方验证之下我大概可以确定我暂时没有被影响到。 暂时确认后,心情稍微平复了一下。从早上刚听到消息时的茫然,震惊,变成三分侥幸,七分慌张。侥幸自

By andy

Uncategorized

工作学习论

特别鸣谢宫师姐校对 ——甚至这个鸣谢也校对过了 今天突然想写点关于方法论的东西。 起因是组里有个小哥跳槽了。我和他一起做过他离职前最后一个项目——接触之后,我对他的离职早有心理准备。和他导师聊了之后,我们都觉得他缺少工作中学习的能力:和他工作非但没法把工作分出去,反而会给自己增加很多答疑的工作量。 细想之下,小哥在工作中体现出了学习能力和写作能力的不足,导致合作双方平添了许多不必要的工作。如果他能够做到会提问题,善用搜索,勤记笔记,我想我们的合作会更加愉快。 提问的艺术 刚开始工作的时候,我经常会问组里高工(Senior)一些很蠢的问题,要么是太泛没法让人回答(比如“Docker 是啥啊?”),要么是对方不知道从哪个角度来回答你(比如“我该咋用Docker部署啊?”)。在我读了《提问的智慧》之后明白了一件事:一个问题,你问的越具体,事前做过越多的研究,被问的人越好回答你。而越含糊,无脑的问题,别人越难回答。 “在for循环里应该用i++还是++i”就比“这个循环应该咋写”好回答。前者把问题聚焦到一个很小的范围,提供了上下文(是for 循环不是while

By andy

Uncategorized

写在2022年第一天

关键词:疫情 2021年元旦的时候,我曾写过2020年是过的最没有实感的一年。因为疫情,从三月开始就居家隔离;每天过着睡觉和工作的两点一线的生活。没想到2021重复了2020。更糟糕的是,2021年里我们见到了两次抗疫胜利的“曙光”,却分别被delta和omicorn给打了回去。以此来看,距离疫情胜利,一切恢复正常依旧遥遥无期。 2020年曾有专家预测过疫情可能会在2025才完全结束。只能做好继续抗疫3年的心理准备。 关键词:工作 对我来说,过去的一年在工作上,算是收获的一年:项目推进顺利,经理认可,升职成功。 当然,每次都要甩出Ben Parker那句名言,能力越大责任越大:工作上也是如此。从负责一个人做的小项目,到负责几个人做的中型项目,越来越意识到交流,流程,文档的重要性。希望在2022年在工作上能继续保持劲头,争取再进一步。 关键词:生活 去年一年,随着fed的无限QE政策,我也是亲眼见证了:物价飞升,排骨从3块一斤涨到7块一斤,苹果也从9毛9涨到3块一斤;车市紧俏,疫情前买车是可以和dealer降价的,现在是要和dealer加价的;房市一路疯长;股市屡破新高

By andy

Uncategorized

升职记录

升职不写博客,如衣锦夜行 距离上次写blog有大半年了。这段时间里一直在急忙忙的弄升职的事。直到昨天收到通知:升职通过,心里一块大石头落了地。 与其他的同事相比,用了5个Cycle(每个Cycle 半年)升职的我属于不长不短,恰在中游的位置。但是两年半的过程中,我经历了一系列变动:领导A在一年半时跑路;然后等来了领导B。好不容易和B制定了一系列的升职计划,进行到八个月时B又转去做其他领域;纠结继续按计划执行还是观望的时候迎来了新领导C。运气比较好,C还是很认可K的计划并帮助我在最后三个月里尽量完善升职资料,最后顺利的升职了。 下面来总结一些我认为有用,并行之有效的干货。 对项目要有Ownership Ownership 名词。物主,身分,所有;所有权。 每次和我老板1对1聊天的时候,他总是强调要有项目的Ownership。起初我对这个很不以为意:做项目,有Ownership不是很应该的吗?但是随着参与进各类不同的项目之后,我发现每个人对Ownership的概念是不一样的。 有些人做项目做到一半,遇到一些来自其他组的阻力(blocker)后就原地躺平等别人来推动项目;有些

By andy

Uncategorized

而立

不知是否很多人都和我一样,曾在儿时憧憬成年,幻想过成年后自己的生活。梦想的职业从科学家,到被选召的少年,再过渡到社畜。也是从懵懂无知,到幻想主义,到现实主义一步步蜕变。 人生有几个常常被赋予特殊含义的年龄,比如十八,三十:一个是生理上发育结束;一个是社会发育结束。 站在二字头的岁数,每年都掐着指头算离三字头还有多远。二十出头曾幻想三十岁的自己应该身家过亿,挥斥方遒;差五天满三十岁时,正在拉excel算怎么投资退休金能少交收入税,再根据银行户头余额制定购物计划。此时身家离过亿少了一个亿左右。再回头看二十岁的自己,恍惚觉得自己读懂了史铁生的“看透生活并热爱生活”:经管我还看不懂它,但我依旧热爱它。 今年也是第一次在圣诞节收到了泡脚桶这种“保健养生”类产品。联想到了呼兰说他31岁生日收到的祝福从“生日快乐”变成“身体健康”。三字头的阶段看来更多转成“攘外必先安内”了。 2020是一个低谷,这一年经历了太多“百年未有之大变局”。触底一年,希望2021年是一个触底反弹局。在此,也祝身边的朋友们2021年事事顺心,身体健康。

By andy

Uncategorized

写在感恩节前

你的感恩节,火鸡的受难日 工作 8月换了老板。前老板休了3个月的假,把自己给休出组了。新老板之前也在彭博干过,第一次私聊的时候也算有个破冰的话题。 相比于前老板的太极拳和画大饼,新老板直白很多。这个项目有什么影响力,为什么现在在做这个项目,为什么不做另一个项目。30分钟的会开下来,让我后背都湿了一层。不过有这种直指核心的谈话也很有帮助,我也算静下心来想,除了“老板分配给我”之外,还有什么理由让我做A不做B,做C不做D。这应该算是软技能++吧。 生活 放在年初,我可能也不会想到自己会养狗。隔离日久,加上疫苗与解禁都遥遥无期,这次积累的精神压力是休假也无法缓解的——休假与工作,都囿于客厅的方寸之地;休假无限接近工作时不碰公司电脑而已。所以在我精神紧绷的时候,终于驾车300英里外抱了只黑柴回来。每天的生活从吃饭睡觉敲键盘,变成了吃饭睡觉敲键盘训奥利奥。 狗带来的生活变化是明显的——作息规律了,早晚要按时遛狗;做事有耐心了,训狗时一个动作重复几十次是家常便饭;做事细心了,出门之前会看有没有带狗粮,便袋等。建议其他快被疫情逼疯的小伙伴们可以考虑养个狗,真的会让你生活焦点稍微转移下

By andy

Uncategorized

写在中秋

我国庆不放假,也没有加班费 自从疫情开始之后,我对日期都没啥实感了。刚开始在家办公的时候,还觉得很好,每天能省出来2个小时的通勤。在家办公一个月之后,感觉自己快要对客厅过敏了。再一个月之后,就麻木了,每天“吃完早饭就上线,饿了吃午饭,再饿了吃晚饭,困了就睡”这个循环,也不知道啥时候能跳出这个while-loop。后来连日期都模糊了,对时间的判断就剩下“今天天冷了,空调应该不用开了吧?” 从3月开始吧,知乎开始要求实名制了。我又不想把自己证件照发给一个非官方机构,所以养了几年的知乎号算是废了。不过随着知乎娱乐化,干货越来越少,私货越来越多,退乎也没啥心疼的了。 在家工作到8月,我觉得自己快要社会边缘化了。迫不得已,去养了个狗。本来以为每天遛狗应该能增加我的exposure,可是养狗之前没人告诉我狗没打满疫苗不能出门啊。结果现在我每天都不能出门:带着狗吧,它疫苗没打全怕它染病;不带狗吧,又怕它拆家。低头看看自己缺乏运动而日益丰腴的小肚腩——奥利奥,这都是你养父为你作出的牺牲啊! 昨天pixel 5 发布了。在现在这个智能手机更新换代频繁的时代,反向升级(

By andy

Uncategorized

编程语言的边际效益

之前跳槽的时候加了好多刷题群,在群里问过很多问题,也从其他大佬分享的经验里受益匪浅。 所以跳槽之后我也没有退群,希望能够分享一些经验给后来人。 在这类群里水的多了,就经常能看到很多人在“炫技式编程”。 比如列表推导这种入门级别的;进阶一点的就是TMP,脑子展开的时候经常容易溢出;更高端点的就是宏+TMP,基本上想上一天能想明白这代码干了啥。 我刚开始工作的时候也特别喜欢这么写代码,感觉每次不加点语法糖就浑身难受。那时候用C#,基本上是能上LinQ的就绝不用循环,能用异步的就绝不用同步。后来用了python,能列表推导就不写循环,能lambda就不写人话。再后来,有一次要给别人讲我的代码,点开文件后我自己都懵了——这是我写的?这在推导啥?这个lambda 在干啥?这都是个啥啥啥(王宝强脸)? 随着看的代码多,写的代码多,收到的评审多了,我慢慢的感觉到学习一门编程语言的边际效用:当你对一门语言的特性应用的越多,你的代码的可读性就越差。而且当你用到生僻的特性或者方法时(哪怕是标准库里的),很难保证未来修改你代码的人是否同样也熟稔这个特性,他可能也会像你不熟悉这个方法时一样大挠头皮,然后

By andy

Uncategorized

Fly Alone

原来电影里的都是真的 每年在拉斯维加斯都有一个展销会。我父亲以前是很少去的。自从我来美国了之后,这个展销会却成了为数不多的碰面机会。所以经常是今年我去拉斯维加斯,明年我父亲来纽约。 今年又轮到我去维加斯了。因为之前那次去维加斯没看成什么好的秀。于是这次我提前订了太阳马戏团的KÁ,订好了宾馆租好了车,准备当一次尽职地陪+翻译。 奈何从纽约直飞维加斯的飞机不多,并且为了在他们落地之前我先料理好一切事宜,于是我订了早上6点的机票。如果一切顺利,我会在上午9点左右落在Vegas,提了车子,等他们落地先接他们去吃顿好的,然后去宾馆休息下,晚上再去看个秀。完美。 于是我早上3:30左右起床,洗漱,然后4点多打车去了机场。强忍着困意领了登机牌,过了安检,在候机厅等了半个小时,等到5点多的时候开始有人排队登机了。这里要吐槽一下纽瓦克机场:我的登机牌上写的是Gate 41,然后 1.Gate 41那里没有显示器显示登机航班,2. 他根本没有Gate 41,只有41A和41B,而且是紧挨着的,两边的队伍都连在一起了。当时考虑到这个时间起飞的飞机应该就是我要乘的航班,于是强忍着困意站起来排队。到了我

By andy