Gothamgo 2015 Recap

昨天冒着纽约今秋的第一场凄风冷雨跑去老地方听了今年的GothamGo

因为去年的良好印象,加上今年公司几个人一起组团去刷,本来还挺期待,但是到后来却小有失望。

因为在我看来,Go本身足够简单,但是也足够年轻,所以对于这样的一门技术的会议,我其实最期待的是两种类型的内容:

  • 生产环境里的最佳实践,比如持续集成,性能测试,依赖管理等等
  • 新的工具或实用的package

遗憾的是,这次的议程12个演讲,给人感觉是:

  • 一部分是极易辨识的赞助商session以及公司产品炫耀贴,基本没什么营养
  • 一部分是方法论和哲学论述,听起来很爽,然并卵
  • 最后少数几个演讲有点有意思的内容。但能把它讲得有意思的,我觉得只有那么两个。

speakers

第一个演讲按照大会惯例还是女生讲解怎么学习Go,是来自赞助商的人,而且又是从ruby社区里转过来的,用比较欢乐的形式讲解了她们学习Go的各种基本概念的历程。 所以倒还算是个很有意思的开场。

第二个演讲是我认为今年最好的一个。演讲者Filippo来自CloudFlare,有着安全背景以及浓重的意大利口音。 主要的内容是利用go-fuzz这个package来发现程序的潜在bug,有些类似于网络安全人员拿nmap扫自己的网络。 因为前不久刚在Go1.5的release note里面读到过Golang team的人用go-fuzz发现了不少标准库的bug,所以也听得格外认真。

go-fuzz的主要用法是测试者给定一个函数的输入样本(必须是string,内部使用的是[]byte类型),利用go-fuzz生成各种变形, 然后在code coverage统计的辅助下,更有效率生成不同的随机测试用例,用来发现潜在的bug。

go-fuzz

这个方法对于正在探索如何提高代码测试覆盖率的我来说,是很开眼界的。 第一节过后马上去找他聊了聊具体的实践,虽然Filippo本人觉得开着go-fuzz在CI instance里面跑等程序crash就好了,但是我倒是觉得利用它来辅助单元测试的设计可能会让测试结果更可控更有效率。 而Fuzzing的过程可能在每个版本想要更新单元测试集的时候跑一跑就好了。

第三个演讲是来自Google的Alan Donovan讲go/types。跟去年他在gothamgo的kick off meetup上讲的oracle一样,依然是Go的code静态分析工具。 演讲的套路也一样,讲两句就开始在台上用emacs demo。

go/types

其实这个话题我是很感兴趣的,特别是怎么用Go自带的go/parser, go/printer, go/ast生成Go代码。可惜也不知道是他觉得大家听不懂还是就是没兴趣讲,在表面上挠了两下就自顾自的去demo了。 而在大屏幕上demo 命令行工具的效果是可想而知的…… 也难怪oracle到现在都还没有被广泛用起来。

第四个演讲的人JP Robinson来自纽约时报,听起来不是个很technical的公司,这人还确实讲的是他的一个side project,听过之后发现他还是花了不少功夫,也是一个很有技术热情的人。 不过因为对我感兴趣的东西涉及太少,也就没有做任何的记录。

上午剩下的两个演讲都没有什么值得回味的东西了,东西都很软,一个在博存在感,一个在吹嘘自己的influxDB,感觉都是跟Go这个主题在强拉关系。 特别是其中那个Verónica López,貌似是个培训机构推过来的人。临阵换演讲题目不说,最后讲的东西还是copy paste了一大堆之前其他人的slides然后毫无章法地乱侃了一通。 到最后还甚至没能回答上任何一个问题。

一想自己几个月前还愣愣地在他们的网站上提交了两个演讲题目地想要在这个会上分享一下我们自己的实践,现在想来真是呵呵了。 果然到最后看的还是名和利,要么演讲者有名,要么组织者得利,哪儿的技术圈都不例外……

中午冒着雨实在是没心思好好找吃的,随便吃了个美式Diner就回来了。

下午的开场演讲我很喜欢,虽然是讲哲学的,却是深入我心那种。

boring is beautiful

我一直认为Go是一门聪明人写的很蠢的语言,它的关键字极少,程序结构也很简单。 每次在golang-nuts讨论群里有人提需求,官方的回复总是说这样会带来什么样的复杂性,这样的功能不具有普遍适用性,十之八九就拒了。 甚至Go标准库的各种代码在我看来,也没什么技术含量。唯一的特点就是很容易看懂。 以至于习惯了之后看身边的新人拿Go写出各种花来内心居然还有些内心抗拒。

现在终于有人敢在所有人面前表达出对这一现实的欣赏了,我忍不住会心一笑。

nice slides!

随后又有一个人的演讲表达了类似的观点,这个人因为是顶了sqlx作者Jason Moiron因病缺席的空,所以我连名字都没注意,但是他的演讲实际上也很有趣。 他是一个只有两人的创业公司的CTO,他说的一句话跟上面这个Kyle很神似,那就是编程语言乏味一点是好的,乏味说明你不需要动脑子就能驾驭他,因而能让你有更多时间腾出来解决真正的问题。

然而紧接着又是两个节奏拖沓不知所云的演讲,拖沓到我总觉得他们超时了……

直到Nick Sullivan开始讲Go的crypto包的一些进展,他又是从CloudFlare来的,主要介绍了CloudFlare用Go做的几个产品,例如DNSSEC。然后列举了他们对Go标准库的贡献。 其中他反复提到他们公司一哥们把某某某加密算法用汇编写了一遍,于是把运算的速度提高了十几倍然后merge进Go标准库之类的,也是够神的。

不知道他们是不是有意的,不过今天之后,我的直观感觉还真是觉得CloudFlare这个公司既重视安全又拥抱开源,做东西还细致,值得一夸。

当天的压轴演讲是著名的澳洲Go blogger Dave Cheney。我觉得应该算是当天最重头的演讲者了。 估计也是知道自己是压轴的,他没有介绍自己新做的构建工具gb,而是非要高屋建瓴地谈论Go的非物质遗产……

legacyofgo

讲得挺好,值得一听,但是也就听听了事了。

最后还有一个小插曲,中午的时候跟Google的一个人聊天,我问他们是怎么做依赖管理的,我说我被go get坑了很久,他说:“哦我们从来不用那个,我们自己用bazel然后所有code都在一个tree里……”。

怪不得Go的团队在面对“go get的设计造成依赖管理以及reproducible build变得很困难”这种问题的时候在讨论区里很委屈地说他们从没考虑过这个问题……

comments powered by Disqus