博文

为开源事业作了点贡献

CNCF这几年太火了,他的很多项目在云原生领域都有决定性的影响力,像著名的Kubernetes、Etcd、Containerd等等。最近刚好也在学习这些东西,也顺便想找个机会为这么多开源项目做点贡献。很巧地,在论坛里看到Kubernetes旗下一个项目正在呼吁社区帮忙维护一个项目,我马上就联系项目管理员加入了。 这个项目在这里: kubernetes/kompose ,在学习K8S期间,也考虑过怎样把自己机器上众多 docker compose 都交给K8S,比如开发中经常会用到的数据库、Nodejs、AI等,没想到社区已经有一个已经相对成熟的开源方案了,后来试用了一下效果还不错。如果要为这个项目做点什么,就应该先熟悉一下整个项目的架构和流程,然后从issues入手尝试解决一些小问题,最后再考虑去完善一些新的功能模块。 解决问题通常是比较简单的,但顺利走完整个流程还要费点劲,特别是第一次提交代码。我看到一个issue中有人希望能增加对fish shell的自动补全支持,就很快在代码中实现了,但第一次提交就出问题了,后来才知道,首先代码要fmt、lint等,一步都不能少,否则可能无法通过极其严格的CI,并且在提交代码之前要先签署CLA——Linux基金会的贡献者许可协议,再在commit的时候通过本地GPG签名自己提交的代码,最后才是push。这么复杂的流程应该是CNCF的项目特有的,对普通项目的贡献至少是不需要签CLA的。 支持开源项目对绝大多数人来说就是无私奉献,只有对社区产生了比较大的影响力了才可能会有额外的收获。作为普通开发者,对一个项目的贡献一方面是对社区的回馈,毕竟职业生涯中是肯定会借用别人肩膀的;另一方面通过贡献代码提升自己的技能和影响力。也有人已经习惯了伸手,但是请记住:没有什么理所当然,绝大多数人都是把业余时间投入开源项目的,所以应该多一点理解和尊重,毕竟,道德应该用来要求自己,法律才是用来要求别人的。

新冠疫苗——三思而后行

图片
从2019年新冠疫情在武汉出现,至今我还没有做过一次检测,更没有接种过疫苗,在可见的未来也没有接种的打算。2019年底前我们全家离开广州举家来到加拿大的时候还没有听说病毒,直到次年1月才开始得知武汉出现病例的消息,时至今日,全球已经有近2亿人感染、420万人死亡,这恐怕是人类有史以来最严重的疫情了。 首先,我不认为人类目前对冠状病毒有足够的了解。除了这次的COVID-19,一般人熟知的冠状病毒大概还有SARS和流感。前者于2003年在北京爆发过之后就销声匿迹了,所以没有太多关于它的数据,而流感是每年都会在全球爆发的流行病,为什么同为冠状病毒的流感能长年困扰世人至今没有彻底的解决办法,凭什么相信明显比它厉害很多倍的COVID-19能很快得到完全控制?截止目前,我们只知道COVID-19病毒会与肺部的ACE2细胞结合而感染人体,但具体免疫系统如何反应,如何突破血脑屏障,如何影响大脑、神经系统和生殖系统,是否明确有无ADE效应等等,因此我觉得有充分的理由相信人类目前对冠状病毒不了解;其次,所有人都要清楚一点,全球的新冠疫苗都是「紧急征用」的,并没有任何一款完整通过全部三期临床验证。疫苗的研发是非常耗时间、耗钱的事情,一般没有十年甚至更长时间的投入是不会有结果的,显然这次全球的疫苗都是在疫情紧急的情况下被逼迫出来的,在美国,包括辉瑞、强生都没有获得FDA正式的approve,这也就意味着不但疫苗的安全性不能像以往一般的疫苗那样得到尽可能大的保障,也意味着疫苗产生的任何后果只有自己承担,美国政府是没有法律责任的。所以很多国家的医疗机构都不但不会强制接种,而且非必要的岗位甚至不建议接种;最后,从已经接种的情况来看短期内副作用非常不乐观,长期的副作用更是未知数。不但出现大量接种后感染,甚至还有很多对人体造成直接伤害的案例。 其实,技术层面还有两个明显的漏洞,一个是至今还没有一位真正冠状病毒领域的专家(比如Malik Peiris?)出面解释这个事情,另一个是至今人们连确定的病毒来源还没搞清楚。 疫苗是政治正确的产物。在人们长期的生存经验中,疫苗就是预防病毒最好的武器,历史上许多非常凶险的病毒都因为疫苗而彻底从世界上消失,这让「疫苗」二字给人们带来了绝对的安全感,因此不论要消灭什么病毒,人们一定会寄希望于疫苗。所以在这么广泛的民意基础上,政府除了宣传和推广疫苗之外,并没有其他选择,

我为什么反对技术团队大融合

在做技术工作的这些年,我经历过至少两次大的团队调整,就是把小团队打散,形成大的集团军,里面会按技能划分成不同的小组,一旦来了项目,不同技术背景的人就马上从这些技能小组里被抽调出来一起去完成这个项目。后来事实证明,这样的调整无一成功,而且造成人员流失严重,公司面临巨大动荡。传统行业未必如此,但在互联网行业这是普遍存在的现象。 不论在阿里、腾讯,还是Amazon、Google,内部都不会有这样的组织体系,当然,他们的体量比较大,组织成一整个技术团队会带来管理上的问题,但我不认为这是主要原因。从我的经历和观察来看,“大一统”的组织体系只是领导比较喜欢的一种方式,因为把人组织起来、管理起来,看上去井井有条、秩序井然,在面临需求的时候进行资源调配有一种指挥千军万马的感觉,只要一切按照预想的去发展,一定能解决所有问题。另外,这也是一种技术人思维的具体体现,领导创建资源池,哪里需要资源的时候就直接从资源池里抽取需要的资源,特别符合技术架构的理论。但是,这种组织体系有一个致命缺陷而且是无法解决的:人。工程师也是人,他们不能被当作资源进行管理,所以我强烈反对“人才资源”这个词语,人是有感情、有偏好、有温度的,把他们大规模当冰冷的资源进行管理,最后除了领导自己感觉良好之外,不会带来更好的结果。 做公司的人都知道团队不好建,一个好的团队效率可以特别高,还可以做到几十年员工零流失,那么这个团队就是公司最宝贵的资产。很多大佬说过类似的话,只要有团队,可以在任何地方重新复制一个新的成功的公司,就是这个道理。那一个团队是怎样变得如此有战斗力和凝聚力呢?还是我刚才的观点,工程师是人,他们有自己的感情,一个团队长期在一起工作,已经磨合过了,也会相互成长,成员之间也会有默契,一起去完成一个任务的时候会有更高的效率。这就是在搭建团队中最难也是最宝贵的过程,而大一统的组织体系远无法达到这个效果,因为临时根据项目需求凑起来的班子,成员之间可能连最基本的信任都还没有,更不要提一起去完成一个任务了,这也许就是之前数次组织调整均告失败的最主要原因。至于有些领导认为大技术团队效率高,哪里有问题就往哪里疯狂塞人就好了,实在不行就全替换成骨干,这真是愚蠢至极的想法,因为这是解决问题为导向的思维方式,根本不是在建团队。 技术团队大融合的调整中,很多工程师本人,包括领导,都往往没有清醒的认识,领导为了自我感觉良好去做这个事

拿到枫叶卡了,这一年真快

现在说起移民,已经不是新鲜事了,南方人家族里面多多少少都有海外关系,很多年前其实已经知道,自己早晚也会走上这条路。 在 上一篇文章 里面也提到了自己的一段经历,就是工作的前五年时间里处于攒经验的阶段,收获了不少技术经验,但也过得苦逼,于是开始打起移民的主意,当时觉得,移民应该是适合自己的,至少专业背景上,在所有国家的适应性都会非常好。 由于刚开始不是很自信,考虑到移民之后一个全新的环境也许一时无法适应,而且当时年龄不大,不如先留学就当缓冲一下,有当地的学历也许对以后的职业发展也有好处。于是开始物色合适的国家。在目标国家的选择上基本上只考虑过美国、英国、加拿大、澳大利亚和新西兰,因为它们都是比较主流的移民国家,所以相对路子会清晰一些。经过比较最后选择了新西兰,也许是信了网上那些中介的话,把新西兰说得像人间天堂、最后一块净土。新西兰最好的综合类大学是奥克兰大学,IT类比较好的还有怀卡托大学。于是委托了一家留学中介帮忙写文案以及提交申请,很幸运地,这两个大学的offer我都拿到了。只要我在三个月内能考出雅思A类6.5分就可以顺利入学,但还是很遗憾没有取得这个成绩,当时的英语基础实在是太渣了。错过新西兰,也许是命中注定的一次成功,就我现在的了解,如果当时留在新西兰,后面还会继续折腾移民到其他国家。 接下来就换了家公司,开始咨询顾问典型的“空中飞人”式的工作方式,经常需要飞全国各地去谈客户,移民大计就暂停了下来,但收集资料的工作一直在断断续续地进行,这期间了解了很多国家的各种移民政策,各个中介的套路等。这个过程的意义是决定性的,一方面,在我选择了移民途径方式的时候有了自己的判断力,让移民的可靠性得到了保证,另一方面是选对了一个移民律师,其专业程度让移民的过程少了很多问题和顾虑。 当我2018年真正开始准备的时候,美国最快的移民排期已经在五年之后了,澳大利亚关闭了主流的几个移民项目,并且大幅提高了移民门槛,特别是IT类已经上涨到惊人的85分以上才有可能被邀请,最后只有加拿大还在大量吸纳移民,所以几乎毫无纠结地选择了加拿大,这里也不得不感叹一下,移民确实要趁早。在与移民机构联系的过程中会发现,他们大多会不自觉地会将客户当作小白,站在信息差的高度上俯视客户。有些机构会直接推荐雇主担保移民,我知道这是他们最赚钱的一种方式;有些机构甚至没有自己的持牌顾问,会把客户打包卖给其他机构,自己

程序员工作五年后一般怎样了?

这是一个来自知乎的问题,我把自己回答转载了过来: 程序员工作五年后一般怎样了? 刚毕业的时候做了一年前端开发,接着做了三年Linux下的C++嵌入式项目,然后觉得每天写代码实在太闷了,闷到每天除了吃饭睡觉坐车就是写代码,暗无天日。后来一咬牙转行售前技术顾问了,终于感觉人生开始不再那么无趣了。 销售顾问的的职责就是了解自己公司的产品,了解客户的应用场景,再提出一个方案把自己的产品和客户的需求结合起来,卖服务卖产品。但这个工作做得并不长,因为公司业务调整就干脆裸辞了,那是让我转变最大的一段工作经历。然后就陷入了人生的迷茫,因为不知道下一步继续做什么,如果回头去写代码又将重新回到暗无天日当中,继续做顾问也不觉得有多么光明的前景。除此之外我觉得让我迷茫的还不只是职业,更多的是这个职业对我身体和性格的影响。当我沉迷在工作中的时候感觉不到时间流逝,脑子里面都是代码、架构、产品的事,忽略了外部世界,忽略了与人沟通……只关心自己,所以我意识到即便自己在行业事业上有多大的成就都无法填补对正常生活方式的需求。 辞职待业的那段时间开始想到了移民,我希望自己生活的环境是一个相互尊重且工作生活相对平衡的,不必为工作投入所有的精力时间,也不必为工作放弃兴趣爱好。然后我准备了雅思,联系了很多移民中介,比较了加拿大、美国、澳大利亚、新西兰和欧洲,终于来到了加拿大,完成了人生的一个小目标。 在这里的一段时间陪娃玩,收获了很多乐趣;也学习了很多以前想学又没精力学的东西,多点了几棵技能树;和家人在一起更多地沟通。

急诊亲身体验

图片
上个月中弄伤了拇指,当时伤势过重,我认为自己应该搞不定,于是立即就医。目前恢复得很不错,所以就顺便抽时间回顾了一下整个过程。 那天下午在家操作一台pasta maker,像往常一样,因为嫌按照机器规定的标准进行操作很繁琐,于是自己hack了一套骚操作,效率是上去了,但安全性就不能兼顾了。之前几次比较小心都没有遇到过问题,这次就放松了警惕,同时还在看着YouTube视频,然后就悲剧了。在我伸手的时候机器卡住了拇指,尽管我反应很快地拔出手来,但指头还是被狠狠地卡了一下。“血花四溅”是当然了,后来在捂住伤口的时候发现,伤的可能还不止皮肉,这才决定就医。后来发现机器里面那根小指粗的钢条都弯了。 由于从小身体好,几乎没有去过医院,中国医院那套就诊流程还是在两三年前老婆生产时刚刚学会的。现在在加拿大,就完全不懂了。只知道有些门诊接受walk-in,不用预约就可以。于是搜了几家附近的clinic,拿着健康卡就直接开车过去了。一家因为疫情没有开门,一家说只接收预约,都不能马上帮我处理。于是才想起来刚落地时本地的一个商业伙伴推荐的一家医院,说有事可以直接去急诊。至此离事发已经过去一个多小时了。 医院在市区,又刚好赶上下班高峰期,不远的距离走走停停半个小时才到。进门有一个接待护士,会看情况粗略估计严重程度进行安排。我如实交待说手指可能有骨折,而且一直在出血,于是被请到等待区第一排红色椅子先等候。观察了一会发现,等候区分成两个部分,左边我所在的区域是等待check in的,右边同样大小的区域是等待见医生的。很快就到我了,接待室里有两位护士,一个负责察看伤情,另一个负责信息录入,包括事发过程以及个人信息,包括查看了健康卡、紧急联系人等。在这里会根据受伤的情况分配具体的医生。接下来就是漫长的等待了,等候区有一台显示屏,会显示预计等待时间,当时看到是4个小时,这个时间估得靠谱。 医院等候区 进入医生的房间之后还是等,很久之后医生过来,聊了几句,又安排X-Ray,来来回回又是一个多小时。这时我才知道确切的情况:拇指受伤,指甲下有骨折。最后缝合伤口其实只用了半个小时就搞定了。过程中医生非常体贴又专业,不但会处处强调可能会疼、疼了要说,还会把专业的词汇比喻得“接地气”,比如麻醉会说成让手指睡着、冰冻。这么做的确有用,我至今还没记住麻醉这个单词是怎么拼写的。 术后恢复就比较简单,一个星期后被安排到另一

加拿大的移动通信费用有多高

图片
加拿大的通信费用可以说几乎是全世界最高的,很多人,包括来加拿大之前的自己都只知道它高,但对于它有多高是没有概念的。现在终于有体会了。 话不多说,先贴张图,可以看出来加拿大即便不是世界第一,也妥妥处于第一梯队: https://images.dailyhive.com/20200728103617/Screen-Shot-2020-07-28-at-10.34.24-AM.png 和中国差不多,加拿大本地主要的三大运营商号称“Big 3”:Bell,Rogers,Telus,都是有自己的信号塔的全国性大网。虽然我相信政府的本意也是希望这三家能形成良性竞争,但实际上并没有什么卵用,Big 3发现显然不如勾兑在一起挣得多,于是用户会发现一个无奈的现象:这三家移动套餐的档次和费用是完全一样的,我是肯定不相信他们没有商量过。 这一个层次的套餐几乎都是60加币每月起,提供无限的全国通话和短信,加上10G左右的LTE数据,签约手机的话一般是一次签两年,每个月再交一点相当于分期付款的费用。比如最新上市的iPhone 12,如果找他们签约大概每个月120加币左右,提供3-5G左右的数据。可以看出来,还是相当贵的。 其下各自有一些二线品牌,就如同中国移动下面有神州行和动感地带品牌一样,他们直接用母公司的网络,但是会提供相对低价的套餐。Rogers有Fido,Bell有Virgin,Telus有Koodo。 https://moving2canada.com/wp-content/uploads/2019/07/Canadas-Major-Phone-Providers-1.jpg 这一个层次的套餐大多是45加币每月起,包含无限通话和短信,以及2G的LTE数据,也有只包含基本通话和短信功能的35加币起的套餐,数据流量如果用超了或者单独买,大多是15加币每GB。毕竟还是独立的子品牌,所有他们大多有自己的一点特色,可以视为独立品牌最后的一点自由度和尊严。比如Fido比较有特色的是对老客户长期提供每月10加币4GB的平板计划,有些华为、中兴和三星的平板签约两年是免费送的;Virgin的网络质量相对好一点,并且提供免费的国际长途电话;Koodo的特色是不查征信,对信用不好或者没有信用记录的人来说相对友好。整体来讲,这一个级别的费用依然不低。 再下面就是Big3的三线品牌,以及本地品牌。比如Rog