PyGotham 2019 参会笔记
原文由 Michael Lynch 于 发布,订阅该博客
概览
上周末,PyGotham 邀请我在曼哈顿举办的年会上做分享。为了最大化参会的收获,我整理了这次参会的所学所感,并分享出来,希望能对其他人有所启发或有所帮助。

整体评价
| 评价维度 | 评分 |
|---|---|
| 演讲质量 | C |
| 活动组织 | A |
| 场地 | A |
| 对自己演讲的感受 | B |
演讲质量
今年演讲的整体质量让我有些失望。也有几场我很喜欢(见下文),但不少演讲都没有达到我的预期。
部分原因在于我并不是目标受众。很多场次都是机器学习相关的内容,我觉得机器学习挺有意思,但工作中用不到,所以对这类入门级的机器学习分享已经有些审美疲劳了。
活动组织
要给 PyGotham 的组织者点个赞,整个活动运转得像一台精密的机器。作为演讲者,我在需要的时候总能及时拿到所需信息。我听的每场演讲,音视频设备都运行良好。所有环节都准时进行。食物美味且充足,只是碳水稍微多了点。
场地
宾夕法尼亚酒店是一个很适合办会的场地。三个会场座位充足,我想听的演讲从来没有出现拥挤或进不去的情况。各个会场彼此靠近,换场很方便,也有足够的空间供参会者在走廊里交流。
对自己演讲的感受
见下文“复盘我的演讲”。
最喜欢的演讲
在一切腐烂之前存档互联网
演讲者:来自 Monadical 的 Nick Sweeting
我以前从没意识到,围绕网页存档竟然有这么大的社区,工具链也如此成熟。Nick 指出,集中式的数据仓库丢失其实是常事。无论是亚历山大图书馆这样的古代典藏,还是 Geocities 和 Tumblr 这样的数字信息,无一例外。只有当普通人拥有存档和保存副本的工具时,这些资料才有可能留存下来。
Nick 介绍了可用于网页存档的各种工具,并盘点了致力于互联网存档的不同组织和线上社区。工具的成熟度超出我的预期,甚至有不少工具可以存档单页应用(SPA)——这类应用通过大量 JavaScript 和 RPC 动态生成 HTML。即使是一些常用工具里,也内置了强大的存档功能。
Nick 展示了下面这条 wget 命令,它可以完整下载单个网页,包括所有的 JavaScript、CSS 和图片:
wget \
--no-verbose \
--adjust-extension \
--convert-links \
--force-directories \
--backup-converted \
--span-hosts \
--no-parent \
-e robots=off \
--restrict-file-names=windows \
--timeout=60 \
--warc-file=archive.warc \
--page-requisites \
--user-agent="Lalala this is chrome I promise..." \
--load-cookies="mycookies.txt" \
--compression=auto \
--no-check-certificate \
--no-hsts \
"https://2019.pygotham.org"--compression=auto 参数,因为你的 wget 版本不支持它。其他让我印象深刻的地方:
- Nick 分享了 kiwix,这个项目我之前没听说过。它提供了维基百科、Stack Overflow 等大型内容网站的离线版本,可以在本地运行。
- Nick 还维护了一份存档资源与社区的目录。
当维护 Python 项目不是你的本职工作时
演讲者:Hynek Schlawack
Hynek 维护着几个知名的开源项目(attrs、structlog),审阅外部 pull request 的时间非常有限。他通过自动化工具来减少自己在审核上花费的时间,并让第三方贡献者自己发现问题。这与我做代码审查的第一原则不谋而合:让计算机去做枯燥的部分。
Hynek 是一位风趣活泼的演讲者。他开场就讲了个笑话:“大家好,我是 Hynek,你们那位素未谋面的欧洲朋友。”这为整场演讲定下了基调:内容轻松有趣,有时还带点调侃。
其他亮点:
- 介绍了几个我之前不知道的工具:
- isort:自动整理 Python 的 import 语句。
- 我已经把它加了进来,用在了我的 Python3 项目模板里。
- 这个工具的不足之处在于它只有两种模式:“自动修复”(这不是我在构建检查中想要的)或“给出一个没什么帮助的报错信息”。
- Black:格式化 Python 代码的空白。
- 挺有意思,但相比我更喜欢的格式化工具 yapf,似乎并没有带来什么实质性的提升。
- tox:在不同的虚拟环境中运行 Python 测试脚本。
- 我想我大概五年前用过 tox,但当时我是把它当作在单元测试中 mock 行为的工具来用的。现在这个项目已经完全变了样,所以我也搞不清是它在 mock 进入标准库后改变了方向,还是我记混了。
- 不管怎样,它看起来挺不错。我还没做过需要在多版本 Python 环境中运行的项目,但把它记在心里备用也挺好。
- isort:自动整理 Python 的 import 语句。
- 我很喜欢 Hynek 示例中的 pull request 检查清单和贡献者文档。
- 我以前从没见过有人为自己的演讲做一份公开的文字提纲,但Hynek 的那份很有帮助。
让你用好 Async,大有裨益!
演讲者:来自 Nexmo 的 Mark Smith
Mark 介绍了 Python 的 asyncio 模块——用于编写并发代码的 Python 库。他说自己是通过动手实现一个名为 mysyncio 的简化版来搞懂这个库的原理的。
让我印象深刻的是,Mark 用很少的代码就重新实现了 asyncio 的大量功能。他的实现省略了真正 asyncio 模块中的一些关键特性,最主要是线程安全和异常处理,但已经实现了其核心功能。并发编程往往难以理解,而 Mark 这种去除了“魔法”的实现让 asyncio 变得更直观了。
复盘我的演讲
演讲者:Michael Lynch(我本人)
我对自己的演讲感觉不错。对准备程度也比较满意(完整演练了 5 到 7 遍),只是有点后悔没有更早开始排练,而是拖到了会前那一周才临时抱佛脚。
在 PyTexas 演讲之后,我给自己总结的改进笔记是放慢语速、少低头看电脑。我觉得在 PyGotham 上,我过于专注于保持慢速,以至于语调听起来很平,好像对自己的内容都提不起兴趣。5 到 10 分钟之后有所好转,但以后演讲时我会提醒自己,记得在表达中注入情感。
我犯的最大错误是用 Google Slides 的“演示者视图”来投屏,而不是镜像屏幕。我本想靠屏幕上的计时器来把控节奏,却忘了这样我就看不到自己的幻灯片了。好在我对内容足够熟悉,光看演示者视图里的小缩略图也能讲完大部分内容,但还是有好几次不得不背对观众、转头去看大屏幕上的文字。
做得好的地方
- 我对演讲的内容感到得心应手。
- 我成功放慢了语速,并将注意力保持在观众身上。
需要改进的地方
- 记得镜像笔记本屏幕,而不是使用“演示者视图”。
- 说得慢不意味着要用平淡的语调。我其实很享受来参加这些会议,应该在演讲中更好地展现这份热情。
- 内容本身显得有点过于严肃——可以再轻松一些,多加点笑点。
- 更早开始排练,以免准备过程显得仓促。
花费
| 花费项目 | 金额 |
|---|---|
| 火车票 | $95.00 |
| 住宿(两晚) | $0(住在朋友家) |
| Uber 打车 | $9.08 |
| 餐饮 | $5.44 |
| 总计 | $109.52 |
对比一下,我去参加 PyTexas 大概花了约 1200 美元!要是所有会议主办方都把会场定在我开车或坐火车能到的地方,并且保证我在附近有朋友能提供一间空卧室,那就太方便了。
时间上,我花了 5 到 10 小时做准备。由于已经有了 PyTexas 的幻灯片,这次准备轻松了不少,不过我还是根据上次的反思对演讲做了一些修改。
其他感想
“我可以在哪些方面改进?”
在之前的会议上,当有人走过来跟我说喜欢我的演讲时,我总是简单地道谢。今年,我试着说:“谢谢!你觉得有哪些地方我可以改进?”大家对这个问题有点意外,但通常会思考一下,然后给出建议。
会议中反馈的缺失是个遗憾。每个人都可以在公开演讲和幻灯片清晰度上做得更好,但演讲者往往缺乏关于哪些有效、哪些无效的反馈。我在听演讲时,经常会发现一些演讲者犯了很容易改正的错误,很想提醒他们。但主动上前给人提建议显得很冒犯,尤其对方本来可能就为此感到焦虑。
以后再有人在演讲后来找我,我还是会道谢,但也会记得问问他们觉得我哪里可以做得更好。如果你看了我的演讲,也欢迎告诉我你觉得我可以改进的地方。
会议是产生想法的好地方
会议能激发创造性思考。每次都是直到坐在会场里我才想起这一点,但每参加一次会议都会有这样的体验。我在会上产生的一些想法,是在其他场合根本不会想到的。
我不确定是因为有时听演讲时会走神,还是因为演讲者在梳理他们的思考过程,触发了我平时不会有的联想。但每次参会结束,我都会带着关于业务或未来想做的项目的好点子离开。
我应该做一场关于窃取加密货币的演讲
举个例子,这就是一个要不是来参会根本不会想到的点子——在 PyGotham 上我意识到,应该把《我是如何偷走你的 Siacoin 的》做成一场会议演讲。这是个有趣的故事,用到了 Python,还涉及莱文斯坦距离和公钥加密等几个话题,我可以用有趣的方式来讲。以前我从没想过把它做成演讲,但一旦想到,就觉得再明显不过了。
也许我不该奢求什么
今年早些时候参加完 PyTexas 后,我意识到自己正在寻找新项目,而现场坐满了技术从业者,本该请大家来跟我聊聊他们业务中的痛点。每个人工作中肯定都有一些希望能外包给托管服务的环节。我(希望)已经证明了自己是个靠谱的开发者,他们完全可以请我去帮他们做点东西,所以我本该主动开口的。
在 PyGotham 上,我在演讲结尾邀请大家来跟我聊聊工作中觉得缺失的托管服务。结果,毫无回应。
我本以为,最差也能收获一些糟糕的点子,比如“我们想要一个 MailChimp,但希望它是免费且无限制的”。但没有,什么都没有。所以也许这个策略没什么价值。以后,我可能会尝试利用这个平台为 What Got Done 吸引一些新用户。
评审投稿提案很有启发
演讲者申请参会时,需要填写“CFP”,也就是征稿启事。要写几段话来说明你为什么应该在会上发言,以及日程手册里应该用什么简介来吸引听众来听你的演讲。
PyGotham 是我经历过的第一个让参会者能够看到并为每一份 CFP 投票的会议。我自己写过几份 CFP,但从未读过别人的,所以作为一个对哪些演讲能入选拥有一定的投票权(具体权重也不明确)的人,这种体验很有启发。
一些心得:
- 评审 CFP 真的很耗精力。
- 我记得大概有 300 份投稿。我分了 3 到 4 次来看,但肯定会因为精力不同,对其中一些更耐心、更宽容。
- 很难在个人兴趣和大众需求之间取得平衡。
- 比如,我个人对机器学习演讲不太感兴趣,但我知道其他人感兴趣。那我该投赞成票还是反对票呢?
- 在 CFP 里摆出傲慢的态度没有什么好处。
- 有些投稿者表现得好像填写 CFP 有失身份一样。有一个问题是“你的演讲是关于什么的?”,紧接着还有一个问题,大意是“听众应该从你的演讲中收获什么?”我看到好几个人对后一个问题敷衍地回答“见上文”或“这和第一个问题没有实质区别”。
- 当你已经审了 100 份 CFP,不得不淘汰掉 90% 的内容时,那些语气傲慢的投稿是最容易被刷掉的。
每年三场会议是个不错的目标
年初时,我定下目标要在 2019 年去三场会议做演讲。PyGotham 让这个目标得以实现:
- NERD Summit 2019
- PyTexas 2019(我的笔记)
- PyGotham 2019
回过头看,我觉得每年三场依然是个合适的目标。每场会议都会让我接下来一两周精疲力尽,但它们也能激发好点子,让我接触到原本可能不会发现的工具和技术。
随机一篇博客
评论
登录后参与讨论