0%

魔方速拧之路

走上魔方速拧路既是机缘巧合,也是冥冥之中天意使然。2022 年 8 月 28 日,我见到郑天晴坐在地上摔打奶奶给她买的玩具魔方,忽然回忆起高中班上有个小伙子能在 3 分钟内复原一个魔方,令同学们既赞叹又羡慕,我心中的少年之火在这一瞬间被点燃,决定也试上一试。于是我找到了博主 LeesRandomVids 制作的保姆级教学视频「How to Solve a Rubik's Cube, Step by Step Beginners Tutorial on Solving a 3x3 Rubik‘s Cube」,边看边学,很快便完成了人生首次三阶魔方复原!

在实现了大众最朴素的魔方复原梦后,我有些意犹未尽。首先,我真的很好奇像我这样的普通中年大叔经过刻意练习后能在多短的时间内复原一个魔方?其次,平时带娃的时间太琐碎,如何在这琐碎的时间中不靠手机来持续获得一点点满足感?魔方速拧一把不过数分钟,恰好能填补这些时光缝隙。于是我在 2022 年 8 月 22 日录下了第一个魔方复原视频,复原用时 2 分 34 秒。

阅读全文 »

有一个问题困扰了我很久:为什么公司里的团队要互相卷? 明明 X 团队已经造了轮子,为什么 Y 团队常常视而不见,吭哧吭哧地继续造?而且领导似乎也默许这种游戏规则?本来产研资源就贵,为什么要浪费在相似的工作上,而不节省资源去专心做业务?最近在这个问题上稍微有点心得,就先记录于此。

阅读全文 »

多数人高估他们一年能做的事,却低估他们十年能的事(Most people overestimate what they can do in one year and underestimate what they can do in ten years)。

大概在两年前,我开始酝酿「赤道计划」:在人生结束之前跑完 40075 公里,这个距离正是赤道的周长。毛主席的「坐地日行八万里,巡天遥看一千河」也来源于它。如果每两天跑一次 5 公里,大约需要 44 年。

阅读全文 »

每个互联网公司内部都有一些 Web 界面是为工程师开发,比如 CMDB、容器平台、应用发布系统、可观测性平台、配置中心、数据库管理平台等等。这些界面往往设计风格不一致,功能简陋,易用性差强人意,简单概括就是「能用,但既不好看,也不好用」。

阅读全文 »

平时,我习惯在跑步、散步或通勤时做一些口语跟读练习。散步或通勤时还好,在手机上来回播放、暂停音频即可,但这种方法不适合在跑步中使用。另外,北京入冬后,在室外这么干容易生冻疮。于是我就想:能不能让音频自动地播放一句,停留一段时间让我跟读,然后再播下一句?

阅读全文 »

前言

从 2022 年 10 月中旬开始到 12 月中旬,日拱一卒,终于把「Software Engineering at Google」通读了一遍。书中介绍的是每个软件公司都会遇到的问题:如何培养好的工程师文化?如何共享知识?如何组建和带领工程师团队?如何长期维持软件质量?等等。同样的问题,在不同的规模、时间范围下的挑战不同,思考角度、解决方案、落地周期也都不同。这本书介绍的正是这家拥有超过两万名工程师的软件公司在这些问题上的思考。

在过去的工作经历中,我作为新人、下属、导师与不同类型的工程师有过不同程度的合作,他们之中既有顶尖的工程师,也有敬业的技术经理;既有人菜瘾大的码农、也有性格孤僻的极客;既有刚毕业就躺平的新人、也有工作十多年依然精力充沛的老兵。在这些合作经历中,我最大的感触就是:一名优秀的工程师,在技术层面外,还得是半个心理学家,既要熟练控制计算机、也要擅长与人合作。书中多处阐述工程师容易陷入的思想误区,它们或多或少地会阻碍工程师们成长,我也是其中之一。今天恰好借着看完这本书的契机将关于它们的思考记录下来。

阅读全文 »

可能是太想排到车号了,最近上下班路上总是盯着过往车辆的号牌。盯着盯着就会下意识地思考:「怎么用上面的数字经过加、减、乘、除得到 24」,比如下面这个车牌:

阅读全文 »

没有屏蔽我朋友圈的人估计都知道,我有一只帅气的猫叫郑小钱,一个可爱的女儿叫郑天晴。小钱已经快 5 岁了,天晴刚刚 1 岁 3 个月,她们和我 (爸爸)、我媳妇 (妈妈) 以及我妈妈 (奶奶),4 人 1 猫生活在北京租住的一套小房子里。

都说养猫是养娃的演习,这话颇有道理。二者的确有很多相似的地方,比如我们会忍不住给她们买玩具,花时间陪她们玩耍,给她们准备饭菜与零食,管她们拉屎撒尿。最有意思的,也是我和媳妇经常讨论的一点就是「她们跟谁关系最好。」她们不懂任何人情世故,却好像知道所有人情世故。

阅读全文 »

在伴鱼的三年,我作为面试官参与超过 100 场面试,遇到许多风格各异的候选人;最近的两个月里,我也作为候选人参与将近 30 轮面试,见过不少形形色色的面试官。在参与这些面试的过程中,我心中逐渐累积了一些对面试的看法,本文我想站在面试官的角度,谈一谈面试官毁掉技术面试的三大法宝。

阅读全文 »

在最近的工作中,为了做数据分析,我开始写一些复杂的 HiveSQL。每次执行 HiveSQL 时,都会看到 Map/Reduce jobs 被调度、执行,直到最后展示出数据。渐渐地我心中多了两个疑问:

  1. MapReduce 引擎如何工作?

  2. SQL 是如何被翻译成 MapReduce job 的?

为了解决这两个疑问,我用比较熟悉的 Go 语言实现了一个玩具版本的 MapReduce 引擎,然后基于此实现基本的 select,join。

本文相关的源码放在仓库 ZhengHe-MD/pset · GitHub 中,欢迎查阅。

阅读全文 »