欢迎来 GOTC 大会听我的演讲

GOTC(The Global Opensource Technology Conference,全球开源技术峰会)是由开源中国(OSCHINA)和 Linux 软件基金会(The Linux Foundation)联合主办的开源技术大会。上海站(上海世博中心 SECC)在 7 月 9 日 ~ 7 月 10 日举办;深圳站(深圳会展中心)在 7 月 31 日 ~ 8 月 1 日举办。大会邀请到很多非常厉害的开发者,比如 Linus Torvalds。两个会场均免费开放,仅需报名即可。欢迎参加!

我的演讲主题是《基于 Python 的 OpenAPI 实践》,介绍如下:

OpenAPI(原 Swagger)是一个流行的 REST API 描述规范,围绕它有许多非常实用的 Web API 开发工具。而 Python 是一门流行的编程语言,使用它可以非常高效地开发 Web API。这个议题将会以 OpenAPI 的入门介绍开始,探索如何在流行的 Python Web 框架中实现 OpenAPI 支持,并在最后介绍一些现有的解决方案和工具。

这个演讲基本上是正在写的《Python Web API 设计与开发》第八章的内容概括 + 开发 APIFlask 的一些想法 + 周边项目(FastAPIConnexion 等)研究总结。暂定大纲为:

  • OpenAPI 介绍
  • Code-first 模式(从 Python Web 框架代码生成 OpenAPI spec)
  • Design/API-first 模式(从 OpenAPI spec 生成 Python Web 框架基础代码)

我的演讲在深圳站第一天分会场「编程语言艺术」专题论坛。如果你感兴趣的话,欢迎来听;如果对演讲内容有任何建议,欢迎提出。

中场休息

今天在捕蛇者说录制了第一个播客,聊得很开心,虽然有时不知道自己在说什么……一开始还有点紧张,感觉像是在进行一场面试,而且一次来了四个面试官(大概是因为我已经很久没有这样跟别人聊过天了)。这次节目也让我偶尔想象做一个自己的播客,它大概会叫做「真实人类计划」,专门随机采访各种陌生人(尤其是活得不开心的那些人)。经过这一阵疲惫之后,刚好一年过半,是时候来一个中场休息了。 [...] 

PyCon US 2021: FastAPI Seems Good, so Why Don’t We Build Something Similar For Flask?

Meta:

这是我第一次参加 PyCon US,也是第一次做英文演讲。也许会有一些语法和发音的问题,不过因为时间有限,我已经尽力了……这次开始准备的比较晚,演讲基本是在三天内完成的,演讲前一天花了一整天时间准备,从早上一直到第二天两点。总耗时 18 小时 41 分钟。相比之下,同样是五分钟的闪电演讲,在 PyCon China 2019 上海场的闪电演讲《Python 虚拟环境和依赖管理工具大乱斗》却花费了接近 40 个小时(大部分时间都用来做幻灯片了)。

这个演讲本来是一个比较深入的主题演讲,不过因为主题演讲申请惨遭淘汰,只好换成闪电演讲。演讲灵感来自前段时间的那篇《请不要把 Flask 和 FastAPI 放到一起比较》。

尽管是预录制演讲,但是不知道主办方哪里没弄好,实际大会直播的时候音画不同步,卡顿很严重(见官方发布的演讲视频)。

2020 年总结

2021 年已经过去四个月了,每次到某个重要的时间节点都想完成这篇 2020 年总结,结果总是有各种事情挤占时间,所以错过了元旦、错过了大年初一、错过了 26 岁生日、错过了植树节和愚人节,最后来到这一天。 [...] 

APIFlask:一个基于 Flask 的 Web API 框架

经常看到有人把 FastAPI 和 Flask 放到一起比较,但是却没有意识到这完全是两种东西——前者是基于 Web 框架 Starlette 添加了 Web API 功能支持的(框架之上的)框架,而后者是和 Starlette 同类的通用 Web 框架。你怎么能让小明和骑电动车的小军赛跑然后还夸小军好快好强?为了让框架 PK 爱好者们有一个更公平的比较对象,从一份 APIFairy 0.6.2 版本的 fork 开始,我实现了一个基于 Flask 的 Web API 框架——APIFlask [...] 

组织「编程一小时」活动失败记

编程一小时(Hour of Code)」是由非盈利组织 Code.org 发起的公益活动,会在每年十二月初举办(计算机科学教育周)。简单来说,类似「地球一小时」活动,「编程一小时」活动就是在中小学引导学生们学习编程一小时。使用的材料大都是一些图形化的编程游戏(比如《我的世界》编程一小时教程),在游戏里使用类似 Scratch 的拖拽式编程逻辑块来操纵游戏中的人物做各种事情。

中国的「编程一小时」活动主要由微软和苹果这些大公司发起和主办。月初的时候,微软 MVP 项目组开始召集 MVP 做活动的讲师。南京有好几个学校需要讲师,但是我已经不在南京了,所以就想着在当地(徐州某县级市某镇某村)的中小学组织一次。在网上找了一些往年的活动记录,发现也有在农村组织的,想着应该没什么问题。

先是给高中的老师发了消息,没回;然后去村里的小学找校长,爬了三层楼没找到校长室,找到校长的电话打过去,校长说电脑坏了;发消息给初中的老师,老师说他们学校没有电脑;去了乡里的小学,门卫大叔说校长刚走;趁还没放学,我又赶到邻村的小学,老师告诉我要有教育局的通知才行。

「你好,我是微软的社区专家,想在你们学校举办一场免费的编程科普公益活动,叫做编程一小时。微软会提供相关的物料,我来做讲师,你们只要提供计算机教室和组织学生就可以了。」——听起来的确有些像骗子,也许对方以为我是要来推销少儿右脑开发心算术或是人工智能 5G 学习机。按理说我应该在这里就放弃了,但是我有点不甘心。尽管已经有 3 小时 48 分钟的沉没成本,我还是打算再试一下。

第二天,我花了五十分钟车程到达教育局,但是没到五分钟就出来了——没成想连教育局的门都进不去。教育局门卫室的保安问我找谁,我说:「我是……我来……」。保安又问:「你到底要找谁?要去哪个科室?」。我说:「我想来咨询一下关于进学校做免费编程培训的许可问题」。保安说:「没有这个科室,你想去哪个学校直接去找学校谈」。我说学校让我来找教育局,保安说来教育局没用得去找学校。在来回进行了几遍类似的对话后,保安有点生气,气冲冲地说「你这个人年纪轻轻怎么听不懂话呢!」。我也有点生气,但也只能气冲冲说句「好,谢谢!」。

既然到了市里,就想着再碰碰运气,所以紧接着我又去了市里最好的初中。这所初中的北门离公交站近,所以先去了北门。门卫师傅说校长室在南门,办事都走南门。因为校园不让进,所以我只能绕墙去南门(两门相距 530 米)。到了南门后,门卫师傅说校长不在,去开会了。我说那我找年级主任也行,师傅问我找哪一个年级主任……沟通(扯皮)半天后终于让我进了门卫室,让我等等看,说校长兴许一会儿来。一阵沉默。沉默之后我多介绍了一下自己,拿出来更多的宣传材料。门卫师傅指着玻璃桌面下的某个电话,让我打到校长室试一试,没人接。又是一段沉默。接着我又详细介绍了自己要做的事情。师傅提议让我去找副校长,副校长室在北门八号楼五楼,让我去北门。于是我绕墙回到北门,北门师傅问我找哪一位副校长?打过电话没有?预约了吗?我说南门师傅让我走北门找副校长,北门师傅说办事都走南门,没有预约校园不给外人进,让我走南门。如此重复几遍,直到师傅不耐烦了,我又绕墙回到南门。和南门师傅说着说着,师傅又指了桌面下某位副校长的手机让我打,打不通。继续沉默,沉默是今晚的南京市长江大桥。过了一会儿师傅又翻出另一本电话簿,找到校长的手机让我打,依然没人接。我看了看崭新的教学楼,告别门卫师傅,再绕墙走回北门,准备坐公交车离开这冰冷的城市。不幸的是,因为太晚了,回乡下的公交车已经没了,我只好斥巨资打车回家。

第三天一早我试着加上了副校长的微信,这是我离成功最近的一次。我们聊得很顺利,直到校长告诉我他们新教学楼刚建成,学校计算机教室还没装配……擦干眼泪,我又去了乡里的小学,上次去校长刚走,这次去校长刚好在门卫室。我听到了熟悉的答案:「这个活动挺好,不过校外的培训要有教育局的批准才能做,你得去教育局申请」。至此,耗时 7 小时 54 分的「编程一小时」活动策划正式宣告失败。

本来还想着也许会让某个小朋友喜欢上编程,若干年后他在写职业生涯回忆录的时候可能还会提到我——「走上这条路是因为小时候某一天不知道从哪里来了一个人在我们学校上了一堂编程启蒙课……」。现在也好,万一他以后因为做程序员得了颈椎病和脱发,可能还要怪到我头上呢。

PyCon China 2020: Python 技术名词发音指南

这是我在今年 PyCon China 的闪电演讲,不过没有去年那么闪电:

Django 怎么读?十个 Python 程序员也许会有十种读法。如果这个你刚好会读的话,那么还有 Werkzeug、SQLAlchemy、Gunicorn、PyPI、Bokeh、Huey…… 根据可靠来源,因为错误的发音,两个 Python 程序员在交谈时平均每小时会浪费三分钟时间用来互相确认和纠正名词发音。为了减少整个 Python 社区因为错误的技术名词发音产生更多的熵,这个演讲带来了一个可信度 95% 的 Python 技术名词发音指南。

这是我第一次做线上直播形式的演讲,在提交演讲申请之后我一直在想不知道会有多少人来听。也一直在担心 Windows 会不会蓝屏,国产软件会不会弹广告,猫会不会拔掉猫的电源……后来才知道可以提前录制,那就没什么好担心的了,所以你坐在屏幕前看到的我,当时也正坐在屏幕前看自己。

准备的过程中发现这可能是很容易带来争议的演讲:有些读音没有标准,有些读音我自己也读错好久,再加上有些人觉得发音无关紧要,有些人觉得错的人多了就成了正确发音,有些人还会守着错误发音扯到文化自信……不过没关系,反正这个演讲总能让台球再转起来一次,至少也可以短暂的让大家再一次正视错误发音问题。这个演讲也是我自己的一个发音纠正练习。

你也许觉得发音正不正确无关紧要,不,这其实是一件很重要的事情。拥有正确一致的发音可以让大家见面聊天更顺畅一点,不用停下来确认说的是同一个东西,在听播客和演讲的时候也不用被错误的发音打断思绪。而且有些错误的发音并不好听,比如「Windows 叉屁」……你只要稍稍花一点心力就可以避免让错误的发音变成主流发音,最后变成「事实上的正确发音」。一旦你不在乎这一点对错,生活里的很多事情都会慢慢变成无所谓和差不多另一方面,这份指南也希望可以给技术演讲和播客提供一个参考,如果 Python 培训班和各种九块九的网课感兴趣的话,这个指南或许可以放在第一课的最后作为延伸阅读的内容。只此两项,就可以避免错误发音大范围传播。

请从今天开始重视发音吧!


演讲准备备注:

  • 耗时:48h 35m(加上后期写这篇文章和上传视频的时间)
  • 幻灯片工具:Marpit
  • 一共录了 9 遍,演讲前一晚匆匆录了最后一版,很努力也才把时长压缩到 15 分钟(要求 10 分钟长度和最多五分钟偏差),有点赶。今天下午又重新录了一版,放轻松刚好 20 分钟。
  • 感觉线上演讲有点无聊……没有观众反馈,也没有紧张和兴奋的感觉。
  • 这个演讲最后本来有一个恶搞。虽然是录播,但我原本打算在最后假装有问答环节,问「大家有没有问题要问?」,然后停顿一分钟,再说「好,那没有问题就拜拜啦」。因为这样会让超时更加严重,而且会有点让人讨厌,所以最后就去掉了。现在的结尾的意思是「用 Python 之杖赐予各位听众 Pythonic 原力」。
  • PyCon China 网站也太难看了……

欢迎来 PyCon China 2020 听我的演讲(附深圳线下会场日程)

11/23 Update:演讲日程已发布,详情见 PyCon China 2020 官网报名页面

今年 PyCon China 2020 因为疫情原因改为 70% 线上+ 30% 线下(时间为 11 月 28 号和 29 号两天)。线上票免费,线下聚会票 9 块 9(北京/上海/深圳)。如果你刚好在深圳的话,那么好消息是——深圳仍然保留了线下会场,演讲会在线下进行(文末有深圳场的详细日程),但票价仍然不变。

欢迎访问 PyCon China 2020 活动主页报名和购票(目前活动页面还没有给演讲日程安排,嘉宾列表也并不完整)。尽管线上票免费,你想花钱的话也可以通过买捐赠票和 VIP 票来支持 PyCon China。

今年我提交了一个十分钟演讲,内容虽然和 Python 相关,但其实是堂英语课——《Python 技术名词发音指南》。时间在 11 月 29 号下午一点。简介如下:

Django 怎么读?十个 Python 程序员也许会有十种读法。如果这个你刚好会读的话,那么还有 Werkzeug、SQLAlchemy、Gunicorn、PyPI、Bokeh、Huey…… 根据可靠来源,因为错误的发音,两个 Python 程序员在交谈时平均每小时会浪费三分钟时间用来互相确认和纠正名词发音。为了减少整个 Python 社区因为错误的技术名词发音产生更多的熵,这个演讲带来了一个可信度 95% 的 Python 技术名词发音指南。

附 Pycon China 2020 深圳会场安排:

  • 时间:11/28 上午 9 点
  • 地址:深圳市南山区科技园南后海大道 2378 号芒果网总部大厦 10 楼(入场需展示「i深圳」绿码),靠近地铁 9 号线深大南站(328 米)或软件基地公交站(305 米)
  • 停车: 5 元/小时,35 元封顶
  • 会场负责人:代少飞
  • 报名链接:https://www.bagevent.com/event/6975077

议程安排如下:

(上午看线上主会场直播)

 

下午深圳线下会场议程安排

13:00-13:35

好好写代码:遗失的 Python 编程原则

赖勇浩-广东天勤科技有限公司

13:35-14:10

Nix for Pythoneer

黄毅-福里斯信息技术(深圳)有限公司工程师

14:10-14:45

利用 Python 在 Azure 上玩转机器学习

卢建晖-微软技术社区区域总监

14:45-14:20

Lightning — 现代的无代码 Admin 

Jeff Kit – 深圳杰明科技与闪电数据管理创始人 

14:20-14:30

中场休息&茶歇

14:30-15:05

从 Django 历史漏洞看安全编码规范的重要性

杨文涛 YangWentao-奇虎 360 渗透测试工程师

15:05-16:40

用 Python 从 0 构建一个简单的脚本语言

廖茂文-《生成对抗网络原理剖析与 TensorFlow 实践》作者

16:40-17:15

智能问答系统在西山居中的落地

黄鸿波-西山居人工智能领域专家

17:15-17:50

K12 教育里的 Python 和 AI 

刘敬韬 – 可可乐博科技 CTO

17:50-18:00

闪电演讲

少儿编程课程设计中常用的库与工具

董轶-爱派森课程研发&讲师

3 年 5 跳的遍历 Python 职业的踩坑之旅 

李红睿 – 富途证券工程师