我在 2018 年拿到了 Stack Overflow 上的 Flask 铜徽章。两年多过去,今天终于拿到了 Flask 银徽章,是第十个拿到这个徽章的人。

希望明年可以拿到金徽章,目前还只有四个人有。
这是我在今年 PyCon China 的闪电演讲,不过没有去年那么闪电:
Django 怎么读?十个 Python 程序员也许会有十种读法。如果这个你刚好会读的话,那么还有 Werkzeug、SQLAlchemy、Gunicorn、PyPI、Bokeh、Huey…… 根据可靠来源,因为错误的发音,两个 Python 程序员在交谈时平均每小时会浪费三分钟时间用来互相确认和纠正名词发音。为了减少整个 Python 社区因为错误的技术名词发音产生更多的熵,这个演讲带来了一个可信度 95% 的 Python 技术名词发音指南。
这是我第一次做线上直播形式的演讲,在提交演讲申请之后我一直在想不知道会有多少人来听。也一直在担心 Windows 会不会蓝屏,国产软件会不会弹广告,猫会不会拔掉猫的电源……后来才知道可以提前录制,那就没什么好担心的了,所以你坐在屏幕前看到的我,当时也正坐在屏幕前看自己。
准备的过程中发现这可能是很容易带来争议的演讲:有些读音没有标准,有些读音我自己也读错好久,再加上有些人觉得发音无关紧要,有些人觉得错的人多了就成了正确发音,有些人还会守着错误发音扯到文化自信……不过没关系,反正这个演讲总能让台球再转起来一次,至少也可以短暂的让大家再一次正视错误发音问题。这个演讲也是我自己的一个发音纠正练习。
你也许觉得发音正不正确无关紧要,不,这其实是一件很重要的事情。拥有正确一致的发音可以让大家见面聊天更顺畅一点,不用停下来确认说的是同一个东西,在听播客和演讲的时候也不用被错误的发音打断思绪。而且有些错误的发音并不好听,比如「Windows 叉屁」……你只要稍稍花一点心力就可以避免让错误的发音变成主流发音,最后变成「事实上的正确发音」。一旦你不在乎这一点对错,生活里的很多事情都会慢慢变成无所谓和差不多另一方面,这份指南也希望可以给技术演讲和播客提供一个参考,如果 Python 培训班和各种九块九的网课感兴趣的话,这个指南或许可以放在第一课的最后作为延伸阅读的内容。只此两项,就可以避免错误发音大范围传播。
请从今天开始重视发音吧!
演讲准备备注:
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 深圳会场安排:
议程安排如下:
(上午看线上主会场直播)
|
| 下午深圳线下会场议程安排 |
| 13:00-13:35 | 好好写代码:遗失的 Python 编程原则
|
| 13:35-14:10 | Nix for Pythoneer
|
| 14:10-14:45 | 利用 Python 在 Azure 上玩转机器学习
|
| 14:45-14:20 | Lightning — 现代的无代码 Admin
|
| 14:20-14:30 | 中场休息&茶歇 |
| 14:30-15:05 | 从 Django 历史漏洞看安全编码规范的重要性
|
| 15:05-16:40 | 用 Python 从 0 构建一个简单的脚本语言
|
| 16:40-17:15 | 智能问答系统在西山居中的落地
|
| 17:15-17:50 | K12 教育里的 Python 和 AI 刘敬韬 – 可可乐博科技 CTO |
| 17:50-18:00 闪电演讲 | 少儿编程课程设计中常用的库与工具
|
| 3 年 5 跳的遍历 Python 职业的踩坑之旅
|
去年五月份,在这里待了一年半,前两天回家了。本来是打算来南京找工作,顺便体验下城市生活,但是因为各种事情一再搁置找工作的事情:做外包和咨询项目、组织和参加技术大会、写书。一年后发现和呆在家里没有什么区别,反倒不如先回家,把书写完再做打算。
在这里挣的钱大部分都留在了这里,唯有房子里的东西却一件不落的带了回去。去时只有一个面包车的行李,回来时一辆小皮卡差点没装下。不过这一车的零零碎碎倒是并没有花什么钱,大部分家什尤其是大件都是二手货。除了买电子产品,大部分还是被住和吃掉了。
在南京的一年多里,和好朋友阿宽只见了三面,一直想去拜访高中在豆瓣认识的老郭也始终没能成行,去年
顺便提一句,去了灵谷寺景区发现灵谷寺是最没意思的地方(看到崭新的门面和门楹上挂的标语就没有进去的兴趣了),而无量殿(国民革命军阵亡将士祭堂)、淞沪会战阵亡将士纪念碑和灵谷塔(国民革命军阵亡将士纪念塔)才是参观的重点。我在爬上灵谷塔这一天(2020 年 9 月 19 日)才知道蒋中正就是蒋介石,中正是名,介石是字,可怜我在台北参观中正纪念堂的时候还一直以为蒋中正是蒋介石的儿子或孙子……
因为我大部分时间都呆在房间里,在南京郊区还是在徐州农村其实没有太大区别。既然用不到什么市政资源,那么都是一样的用水,用电,用连不上 Google 的网。除了拿快递和看电影比较麻烦外,回到家好处很多,生活空间更宽裕了,平时也不用小心翼翼担心吵到楼下。住在南京养宠物太麻烦,只能去逗小区里居无定所的的猫狗。而在家里的话,我们家的狗以及邻居、邻居的邻居的狗都是招手即来(挥手也不走)。奶奶家不仅有猫有狗,还有兔子和鸡。在村外走远一点偶尔还会遇到被赶着散步的羊群和牛群。在农村也不会有那么多密集、丑陋和无聊的。很多美食好吃便宜不用排队,物价很低,在超市和街上买东西不用犹豫。
过一段时间也许会怀念在南京的生活。怀念钟山风景区的梧桐树和栖霞山的枫叶;怀念孝陵卫地铁站旁罗汉巷的梅干菜锅盔;怀念南京东郊那间出租房里舒服但是没藏着音乐城的红沙发。
南京再见!或许哪天再回去。
从参加 PyCon China 2018,到组织 PyCon China 2019,再到现在 PyCon China 2020 正式启动,我想这是一个很好的契机来记录下这两年我和 PyCon China 的故事。顺便也让更多的人了解 PyCon China,并且可以参与进来,让它变得更好。
这是一个小小的 PyCon China 私人切片,因为我已经退出筹备组,所以不代表官方立场。写起回忆来难免会有一堆牢骚不吐不快,为了避免让这篇文章变成一份扎手的手札,棘手的手记,我调整了抱怨浓度,牢骚大概只占一半,不会让你心烦。另外也因为我的视角有限,所以一些观点和想法或许有失偏颇,仅供参考,同时欢迎撰文补充和扩展。
2018 年 9 月 16 号,某位读者建议我去报名 PyCon China 演讲,这是我第一次知道 PyCon China。我一边推脱说我做不来,一边在想自己如果去的话要讲些什么好,结果当晚就报上了名,第二天又在组委会的「怂恿」下把演讲类型从快速演讲(10 分钟)换成了主题演讲。26 天后去北京参加了 PyCon China 2018,这是我第一次参加技术大会,回来后写了,一半篇幅都是牢骚。
2019 年 4 月 20 号,在准备提交 2019 年的 PyCon China 演讲申请的时候,基于 PyCon China 2018 的体验向大会负责人辛庆老师提了一些改进建议,比如没有闪电演讲,演讲视频没有上传到网络上公开……然后聊着聊着就加入了筹备组。
2019 年从四月底到十月底这半年时间,我基本完整参与了 的筹备。在整个筹备过程里,大部分事情都掺和了一些:协调规划各类事情、策划和实施闪电演讲、更新大会网站、翻译大会资料、审核宣传文章、创建和更新 Twitter 和 Facebook 账号、接待讲者、做主持人、整理上传幻灯片、写和改进各种表单/界面/措辞……在这段时间里,除了做各种杂务,我还完成了三个演讲:
这三个演讲花了很多时间准备,虽然完成的都不完美,但从收集到的会后反馈来看有很多人喜欢,这让我很开心。
在筹备工作里,我最主要的工作成果是策划闪电演讲,以及推动两个改进计划:「品牌形象建设计划」和「工作人员 Credit 计划」。
闪电演讲
4 月和辛庆老师沟通的时候,我提议增加闪电演讲专场来让大会变活泼一点,并且自荐可以负责策划和实施落地。然后我就开始负责做这件事情,一直到九月结束,跟踪了整个流程:写策划案、写宣传文章、发布相关社交动态、和讲师沟通、组织试讲、做主持人、自己出闪电演讲、提前跟摄影师要录像、剪辑录像、上传幻灯片和录像。
闪电演讲的模式大致参考了 和 。做这件事的出发点是让 PyCon China 现场气氛不要那么严肃,稍稍有趣一点,而且作为大会的最后一个环节,可以让大家有一个热烈欢快的结尾。本来的设计是闪电演讲作为整个大会独占的最终环节,放到主会场。但事情的发展慢慢就超出了控制。一开始是因为酒店预算有限,主会场上午用完下午要拆成两个会场,所以原定的闪电演讲主会场就被换到了 Web 分会场结尾。接着因为酒店交还场地的时间限制加上上午开始时间延后导致闪电演讲独占场次变成和其他几个会场一同进行。尽管如此,我还是继续把它作为大会结尾来推行,保留了 PyCon China 2019 结束语部分(本想再加一个工作人员 Credit 环节,但是因为各种原因作罢了)。
最终效果和预想打了一些折扣,这个折扣是很多事情共同造成的。首先是大家都不熟练,我第一次做主持人,讲者们(包括我)第一次做严格限时 5 分钟的闪电演讲,许多听众大概也是第一次看闪电演讲。再加上大多演讲都比较严肃,讲者或许更关注专业性而不是有趣好玩,听众似乎也更期待和习惯前者。尽管前一晚和几位讲者试讲时一再强调 5 分钟限时,但是最终严格限时策略也受阻,Noah Chen 赖着不走我却没办法,打断严肃的演讲又看起来没礼貌。算起账来,场地也要背一口锅,讲台太高,观众离讲台太远,观众分隔距离太大,导致讲者和听众、听众和听众之间很难建立连接。从我几次演讲的体验来看,大学才是更好的技术大会场地,酒店还是更适合严肃无聊的企业会议。
最后一共收到 20 个闪电演讲申请,上海场留下 7 个:
我在闪电演讲开场说这是 PyCon China 第一个闪电演讲专场,但也有可能是最后一个。看了今年的宣传文章,啊,乌鸦嘴!演讲时间又变回了无聊的十分钟快速演讲模式,很显然我的设想「闪电演讲开放给现场听众,随便报名,投票决定要听哪个」也没成。我在想,假如闪电演讲继续像去年那样(乱搞),也许就可以通过活泼的演讲形式和外界宣传来吸引到气质相符的演讲和演讲者,进一步影响到参会者,最终让整个大会轻松活泼一点。

如果你对这个不甚完美的最后一次 PyCon China「真 · 闪电演讲」感兴趣的话,可以移步 或 看现场录像。
品牌形象建设计划
在我加入之后,发现 PyCon China 的品牌形象很混乱:微博账号长久停止更新,也没有建立 Twitter 和 Facebook 账号,各个账号的名称和头像都不统一,所以我就想建设一个统一完整的品牌形象,让它专业一点。
先是推动确立了统一的官方 logo,当时确定的主 logo 据说是一位新加坡华人工程师设计的作品(具体姓名忘记了,看官若了解还请评论告知),我很喜欢这个 logo:
后续的大会 logo 基本都是这个图案的变种。对于文字版的 logo,我选了基于这个 logo 设计的 PyCon China 2012 版的带文字 logo(作者是陆卫锋):

然后用我最熟练的平面设计软件——Windows 画图删掉了「PyCon 2012」,调整了「CHINA」和图形的距离,让文字里东方明珠塔的塔尖收进图案内部,最终确立了文字版本的主 logo:

大部分社交账号都统一使用这个 logo,官网上因为需要横向 logo,所以用了一个主 logo 横版的变体(由错姐设计)。只剩下两处没统一:新浪微博当时似乎是限制修改头像没改成,而 GitHub 组织大概是被漏掉了。统一了 logo 之后,接着结束了 PyCon China 没有 Twitter 和 Facebook 账号的历史,并且推动恢复了新浪微博账号的运营。但是拜托今年不要放弃更新 Twitter 和 Facebook 呀!29 号在公众号和新浪微博发布动态,而 Twitter 和 Facebook 一直都静悄悄……直到五天后才在 Twitter 上同步消息,而 Facebook 依然没有更新。这时演讲征集截止时间只剩下两天(29 号开放 7 号就结束似乎有些太短了?)
顺便说一句,发现今年出现了一个新的 PyChina logo,建议配套使用:如果社交帐号名称是 PyCon China,那么就用 PyCon China 的 logo;如果名称是 PyChina,那么就用 PyChina 的 logo。这样搭配就显得混乱,违背了统一品牌形象的初衷(今年或许可以继续完成统一 logo 这件事)。
工作人员 Credit 计划
在 2018 年的大会网站以及我加入时 2019 年的大会网站上只列了一个出品人列表,这个列表更像是一个曾经参与、短暂参与和偶尔参与的混合列表。列表里有的人什么都做,比如李者璈(Manjusaka),和辛庆老师一样做各种协调和杂活,同时还全力支持多个城市的会务,兼职主持人(可塑性极强,如果讲者缺席了就可以当晚熬夜准备演讲第二天填空缺);有的人什么也不做,比如往届参与的成员和初创成员;更多的则是参与演讲议题评审的审稿人;而有的人做了很多工作,却没有被列到出品人列表里面,比如大部分真正处理各类具体筹备工作的工作人员其实大都不在这个列表里:
在自己负责的领域之外,这里的每个人都会帮忙做各种杂务,也在现场做各种会务支持。除了我比较熟悉的这些人,还有很多其他工作人员和志愿者也一样在背后默默支持。尽管如此,大部分听众却没法了解到这些。
让积极做事情的人感到被认可是一件很重要的事情,电影结尾的演职员表即便滚动的再快,也会有人仔细在里面找自己的名字。一个合理的 Credit 机制可以让工作的时候有明确的分工和职责,有了认可也会让大家更有动力参与和投入。基于这些考虑,所以有了这个「工作人员 Credit 计划」。这个计划的重点就是制作一个分类的工作人员列表放到官网上,也推动了为公众号文章署名之类的小改进。
经过大家的共同努力,下面就是最终整理出的工作人员列表(篇幅所限,出品人没有列出,完整的工作人员列表可以在大会网站的看到):
这个页面其实还是。有一些特殊贡献没能列出,比如刘玉龙和何翔宇上传了所有的演讲视频到 bilibili 和 YouTube(中间李者璈也有协助);王梦兰在做新浪微博账号的更新和维护,中间还帮我接管过一段时间的 Twitter 和 Facebook。现场志愿者列表始终没有整理出来,估计也永远不会整理完了。
2019 未完成
筹备过程漫长,许多事情等不到答复可以自己动手,实在等不到那就放弃或折中,而更多的问题是在现场会务上集中出现。因为有太多变数和不确定性,而且又没有足够的时间进行预演,再加上缺乏流程约定和验收,上海场遇到了太多问题,仅我自己见到和体验到的就有:连接线不够长,电脑没法放到讲台;现场网络很差;有道同传失灵;主会场屏幕幻灯片两边有一些看不到;翻页笔频繁失灵;翻页笔不支持左右翻页;(继 2018 再一次)幻灯片尺寸错误;两个会场临时隔断墙隔音不好,分会场变大杂烩场;摄影师拍照片手法单调,拍讲师看不到背景幻灯片,不抓拍开场等关键画面;摄影师录像漏拍,而且没有备用摄像,导致上午主会场 laike9m 的演讲录像不完整……问题远远不止这些,细说起来大概三天三夜说不完。关于上海场会务的诸多问题在郑天航写的《》里有很详细的介绍。
和大多数人类合作活动一样,PyCon China 2019 包含了各种妥协、事故和拖延,但是总有各种将就、补救和掩盖来让一切看起来还不错。对于观众来说看起来还不错就够了,但是对于组织者来说这远远不够,因为我们本可以做得更好,至少也要凭着这一次的经验,让下一次更好一点。
因为在筹备组这半年一直没工作,所以做什么事情都会慢慢变成全职,偶尔几天全职做外包,偶尔几天全职写书,偶尔变成全职参与 PyCon China(也因此被调侃家里有矿,所以筹备组里的人都叫我小李老板)。同样也是因为没工作,大多时间都花在了 PyCon China 筹备和准备演讲上,这半年除了拿过一次稿费做了一个外包项目外没有任何收入,生活也变得很混乱。为了让生活,所以决定不再参与 2020 大会的策划。2019 年 10 月 27 号,成都场结束,PyCon China 2019 组织工作进入尾声,我就在筹备组群聊和大家说了再见。
在 PyCon China 的这段时间里,认识了很多有趣的朋友,收获了很多快乐的时光,希望大家一切顺利!
2020 年 10 月 29 号,PyCon China 2020 宣布正式启动了,会议时间定在 11 月的 28~29 号。希望今年的 PyCon China 可以办得更好……
等等,官网哪里去了?不知道为什么,PyCon China 2020 已经开始筹备了,(不论是 还是 )。我认为官网是技术大会或者说任何现代品牌的最主要的网络门面,即使用户更喜欢关注微信公众号和新浪微博。对于一个技术大会来说,在网络上搜索关键词找不到官网,找到官网却打不开,这都会向观众传达一个很不专业的信号。修复并更新官网应该是在公开 PyCon China 2020 消息之前就应该做好的事情,也是现在的当务之急(上文提到官网时使用的链接指向的是我临时放到 下的网站存档,基于 生成)。
虽然不太可能实现,但我还是想说,我们应该有个博客……去年因为种种原因没能做成这件事,最终只是写了一篇文章放到 PyChina 的博客上,但我还是建议把 PyCon China 博客独立出来。有一个博客可以更方便发布各种消息给搜索引擎和超链接爱好者,而不仅仅是放到微信局域网里的公众号上服务微信用户。
尽管不再参与组织今年的 PyCon China,但是翻开去年写的《PyCon China 2020 规划》,还是有一些改进建议想一并写在这里,也许能够提供一些启发促成一些改进(不感兴趣请猛按空格键)。
首先是议题收集和审核流程需要改进。我在参与组织 时主办方使用的议题管理工具 很好用(议题收集、评审和日程表导出一体化工具),投票方式更简单合理,每个评审员独立完成投票,通过多重对比得出每个演讲的权重顺序,最终综合所有评审员的投票得出结果。这样远比微信群讨论和看板事项留言更高效,也比赞同反对式的投票方式更科学。而且可以调用其 API 生成网站议程时间表,不用投入大量精力手动同步议程变动。今年会议改线上刚好可以用 Sessionize 的免费社区版,但是考虑到今年演讲申请大都已经投递了,估计没法用(除非手动导入议题数据……),但是明年或许可以考虑。接着去年的想法,如果可能的话,取消工作人员页面的出品人概念,改为工作人员的子分类——议题审核组,只保留列表中该年参与的成员。
在议题申请上去年还有一个改进想法是在议题申请表里添加更多细化选项,比如「演讲难度」。标注演讲难度可以让听众有一个心理期待值预判,也可以让讲者不会有太多心理负担(担心话题太简单被人骂,担心话题太深奥也被人骂)。
另外,协作工具也需要改进。去年就尝试把全部工作沟通从微信转移到 Slack,但是过程并不顺利,不知道今年是不是又回到了微信群聊。我认为不应该互相迁就,而是要想办法让所有人都能正常上网,然后使用最好用的工具。
我在 19 年最后,花了很长时间来做的事情就是整理出一份《PyCon China 文档和资源导航》,收集了所有相关的资源和文档信息,以便能更好的利用这些文档,方便找到自己需要的资源和链接。同时也尽可能的扩充了大部分事项的检查清单,每一个事项都需要一个用来执行和验收的检查清单,这一点在会后总结时已经达成共识。同时我们也需要写更多的文档来规约和优化会议细节。比如分别交给讲者、听众、筹备组新成员、现场志愿者的入门指引和注意事项。这些东西再统统加入文档和资源导航以便于查找,并且逐年迭代和优化。
最后,PyCon China 2020 需要新鲜的血液、肺泡和脑细胞,欢迎,欢迎。
有钱的出钱,有力的出力,柴禾多了,火就旺了。祝 PyCon China 越来越好。
延伸阅读:
看到 PyCon China 2020 要开始筹备了,我想着赶紧把去年参与筹备的总结文章写完,再不写就过期了,然后就发现官网打不开了。不仅为了国内访问更快部署的 pyconchina.org.cn 打不开,连最正式的 cn.pycon.org 也打不开。前者就我有限几次访问来看,先是显示备案报错,接着是 SSL 证书过期,现在直接没有任何响应了。而后者此前只是图片加载慢一点,还是能正常访问的,现在无论直连还是绕路都没用。
没有博客就算了,官网打不开都不修了吗?作为一个技术大会,只在微信公众号和新浪微博发布动态太不正式了,而且也没有同步到 Twitter 和 Facebook。要是我还在筹备组的话……
我还是先自己做个存档吧 :P
https://greyli.com/archives/pyconchina
11/2 更新:cn.pycon.org 现在显示 Azure 的 404 页面了,前两天是长时间无响应。
11/7 更新:cn.pycon.org 恢复了。
2021 年更新:
今年 Frost Ming 帮忙做了一个漂亮又像样的官方网站,同时恢复了往年的站点历史。
2022/7/8 更新:
网站又访问不了了。似乎每年只有大会前后短暂的时间才能访问。
最后一次写暑假总结是在 ,之后因为不再上学,也就没有了暑假这个概念。今年夏天回家呆了一个月,算是自己给自己放的暑假。
农村像是冰箱下面的冷藏室,时间在这里不会产生多大作用。也正是这样,你一下子就能看出有哪些新变化。首先是家里的狗生了七只小狗,因为胎盘没及时去掉,死了三只。然后家里的蚂蚁似乎变多了,在院子里扔一小块饼干或西瓜,过一会就会看到密密麻麻的蚂蚁趴在上面(拔菜园里的花生时发现三个蚂蚁窝!)。除此之外,一切几乎都是老样子:狗总是热得吐舌头。西瓜甜不甜要看运气,但价格大都不到城里的一半。附近的工厂有时会在早晨制造噪音,半夜偶尔还会听到邻居用「古法洗衣」时棍子敲打衣服的声音*。
夏天全家人一起吹空调吃西瓜看电视是很幸福的事情,我试图想把我和瑶瑶都很喜欢的《》推荐给大家,但也许是每一集太长,或者是语言和文化差异的缘故,大家并没有表现出很大的兴趣。不过我们还策划了一次去水上乐园的短途旅行,这一次大家都玩得很开心。
暑假像是一年的短暂中断,一个可以喘口气的中场休息。上学的时候暑假让我从无聊痛苦的学校生活里抽离,而现在则可以临时放下各种喜欢和不喜欢的工作。我用这段时间清理掉了上半年积攒下来的一堆便签和纸片,整理了电脑上的各种笔记、杂乱文件和标签页。修正了年目标,因为一年过去大半,所以有些不切实际的目标自然就变得非常明显,现在只好先放弃掉。剩下的几乎就都是娱乐时间了。
《皇室战争》玩到了大师联赛,然后就有点厌倦,估计下半年都不会想再玩(不过无限圣水模式实在太容易沉迷了)。因为想找一个联机游戏和李家玩,又安装回了 Steam,找到大学时买的《兽人必须死 2》。结果他沉迷在 Epic 免费领的 《GTA 5》,我就只好自己玩。接着大学时的进度通了关,然后玩了很久的无尽模式(Endless)。像我这种喜欢整理和规划的人大概都会喜欢这种塔防游戏——可以把所有空间完美的利用好,天花板、墙和地面上每一个防具都摆放的整齐对称。但是无尽模式实在太消耗精力,每一局都会让眼睛和右手累的不行,最后止步于 44 波的最高成绩(放弃的另一个原因是解锁所有武器和技能太耗费时间)。玩的时候有时会想自己面对的敌人不过是每一波都增加了几个数字的难度变量,有一种被代码控制和愚弄的意味……
也不是完全没有成果。花了一些时间来更新 ,发布了 1.5 版本,接下来一段时间可以把它放一边了。给 的示例程序 加了一个验证码功能。从去年开始就有人在这里灌垃圾留言,直到现在才下决心清理和阻止(一共删掉了 9083 条)。说是验证码,其实只是加了一个验证输入值是否是「宝塔镇河妖」的文本输入框……不过在垃圾留言程序弄明白规则之前应该都没问题。最后还把大部分 Python 的 Web API 相关工具库的文档都看了一遍。
最近打开知乎的链接经常看到 404 页面:

想象一个这样的场景:一个不了解 404 含义的用户,访问某个知乎的网址,结果看到提示「你似乎来到了没有知识存在的荒原」。咦,原来知乎是没有知识存在的荒原?想想就很有意思。以前没有细想它的文案,现在发现这其实是一个预言:知识要么都被你的审查官删掉了,要么就被混进越来越多的垃圾信息里,这样下去知乎恐怕真的要变成知识的荒原了。
审查会造成信息的一元化,最终造成观点的一面倒,而知乎的审查会加强这种效果。知乎上有很多价值判断的问题(如何看待 XXX?)。正常来说,一件事情如果没法用常识大致区分对错,既然需要拿出来讨论,那么必然有人支持也有人反对。在所有回答里,如果持反对和批评态度的答案大都被知乎删除,那么后来的读者便会认为大多数人的观点都偏向支持,从而进一步认为支持才是正确的观点(如果没有独立思考和判断的习惯的话),于是也下意识的选择支持。再加上如果写答案的人都趋于使用简单粗暴的语言进行攻击和贴标签,读者也会被鼓动起来,变成不会思考只会攻击对立观点的傀儡。
当然,知乎的审查手段很多,比如现在用知乎的搜索框搜「李文亮」,只会看到几条知乎官方账号发布的致敬啦、悼念啦、怀念啦之类的官媒模板新闻,看不到一个问题,连相关用户也被一并屏蔽了(你要祈祷不会有和你同名的人成为国家主席或是变成「争议人物」)。大多相关的问题也被删的七七八八,而你通过各种犄角旮旯找到的问题里,回答以及回答的评论也都是过滤后的结果。再加上作者在答题之前以及在问题被建议修改后的自我审查。这种审查达到了极致。
在其他网站,比如豆瓣和新浪微博,也存在这种一体化的审查机制,但是对待一个广播、一篇日记或是一条微博提出的事件,用户的评论也许是反对或支持,也许是用户对事件本身的补充,也许只是无聊的灌水。因为评论很少有长篇论述,即使被审查筛选,你也不会把 100 条评论看得和 100 个回答一般重要。在知乎上,对于一个「如何看待」类问题,所有的回答天然都默认作为一种价值判断和立场选择。长篇大论看似有理有据但也许充满了逻辑漏洞和陷阱,但这种回答却让你下意识的认为其专业而正确,而问题下的「支持」和「反对」按钮更是加重了回答的价值判断意味。
这种特性也许会让知乎变成一个「超级高效的观念、立场和价值观塑造工具」,每一个没法独立思考的人,扔给他一个「如何看待」类问题,只要从上往下把回答刷上一遍,就完成了一个价值观改造流程。在正常情况下,这种工具有一定的益处,它可以让一个人看到更多元化的观点,甚至接受不同的观点。但是一旦搭配上同样高效的审查和专业的写手,知乎问题就变成了强有力的思想塑造工具,除了政府想要拥有它,其他想要塑造公众形象的明星公关公司和大企业也会非常喜欢(还可以搭配付费热搜调节一起使用)。
一个人、一件事的对错并不容易界定,非黑即白并不是唯一答案。我们要谨慎对待知乎上的价值判断类问题。
另一方面,理性的观点探讨、不同意见的互相碰撞正在从互联网上消失,不仅仅是因为承载这种信息的环境和平台也正在消失(即《中文互联网中“讨论”的消亡》中提到的「公共讨论空间消失」),除了审查的影响,这些理性的声音自身也逐渐被大量无意义的噪音和攻击冲淡,或是因此而退却和沉默。而事实上这不仅仅是知乎的问题,而是娱乐至上背景下整个互联网环境的问题。国内因为言论审查和无良大公司的存在,所以情况更加糟糕。西方世界的大部分人也许沉浸在赫胥黎的预言里声色犬马,而中国人则沉睡在赫胥黎和奥威尔的双重预言编织的梦魇里难以醒来。
如何抵抗这种变化?建立你自己的网站吧。一方面可以尽可能自由的发出自己的声音。另一方面,不用把自己的数据全部交到别人的手里,要不然一不留神知识变荒原,你写的文章和回答也就成了沙子和尘土。
昨天有人给《Flask 入门教程》书稿源码提交了一个 PR,主要的修改是在书中的链接前后添加了空格。比如:
改成了:
我一直对这个排版风格持观望态度。如果合并的话,那就要在以后的书稿更新甚至所有网络写作中保持这个习惯,再三考虑之下,我还是决定暂不这样做。最主要的考虑是添加空格会影响阅读体验,好像本来平淡无奇的超链接突然自带聚光灯。一来在观感上突兀,二来会影响阅读的流畅感(大多数情况下链接文字本身也是句子的一部分)。
不过话说回来,超链接也该被拎出来亮一亮了,因为超链接在国内的网络环境里一直处于被打压和控制的状态:微信公众号不允许插入超链接,新浪微博从下个月起要停止把 URL 解析成超链接(只为白名单内的政府、公司等网站提供链接渲染服务),而知乎也曾悄悄停止把用户主页一句话介绍里的 URL 解析成超链接。在网络世界里,超链接是再平常不过的东西。但这些公司却把互联网的基础设施垄断、控制起来进行牟利、打压竞争对手以及用来把用户尽可能的圈在平台内。
我在想,新浪微博之类的平台在以后也许可以尝试收超链接费或是超链接跳转费(比如推出一个超链接套餐,100 块钱可以发 50 个链接),然后再按照点击量收取超链接点击费或是超链接流量费。听起来就像是政府要征收空气税和重力税……
除了不被渲染为超链接,有时在手机上访问超链接也要跨过千难万险。如果你在微信上打开一个超链接,你首先要跟 GFW 打声招呼,接着或许还会被网络运营商搜身,最后才会经过微信的审查。如果微信发现你要打开的是淘宝之类竞争对手的网址,或是它「自己认为」危险的不适合访问的网址,你就只能通过长按复制网址的方式用浏览器打开。如果你很不幸安装的是国产浏览器的话,那恭喜你还要再面临一层国产浏览器厂商的审查。
想让你的网站被渲染成超链接并且可以被正常访问?好,那就申报,登记,填表,备案吧。
也许未来会有很多人忘记为什么网页上一段文字里某些文字会是蓝色和下划线样式。
在上下班高峰的公交车和地铁上,我才开始深刻的体会到「数字劳工」这个词的含义:大家辛辛苦苦上了一天班,结果下班了还要继续努力娱乐来训练大公司的推荐算法,观看他们的广告,认真在下班时间也给其他人创造财富。
今天下午去某地办理文件,去的时候还好,回来时刚好赶上了下班高峰,几乎站了一路。前面的大爷先是打开了微信,和几乎所有人一样,满屏乱七八糟的群聊(感谢张小龙的克制),先是看了微信群里关于龙卷风的视频,跳转到微信看一看,下滑了几条洪水的视频,接着开始翻订阅号里的文章列表,几乎每篇文章标题里都有至少一个感叹号(「最新!」、「震撼!」、「愤怒!」、「重磅!」),然后打开了拼多多,划了几条商品推荐,签到领积分,最后又回到微信,如此循环。右前方的女生看了一会儿抖音,然后切换到微信,接着关掉了屏幕。三分钟左右,又打开手机,进入微信,然后又打开抖音,这次开始专注起来。左边的人、右边的右边的人、右边的右边的前面的人,或许还有其他半车人都在看抖音(抖音俨然成为了一种新兴宗教)。
抖音、快手们以及各种抖音快手化的程序们争相接过了电视的接力棒,以一种更高效的方式来对人类进行信息投喂(他们称之为算法推荐)。我像躲避电视一样躲避这类被动灌输的信息流,我知道自己一样抵挡不住,所以只在偶尔出门的时候和公交地铁邻座的陌生人(偷偷)瞟两眼,不过大部分的抖音视频和配音都让人反胃。
我有一次下载了抖音想看看在经过筛选后会留下哪些视频。在筛掉一堆无聊的视频后(常常伴随着无聊的配音和字幕),剩下的都是晚霞和云、海浪、滑板、街道、动画电影。到最后这些重复的内容让我有些厌倦,而且不停的打断让我感到烦躁。相比于看一堆十几秒的夕阳、风景和精彩电影画面剪辑。我更希望看看真的夕阳,看一部完整的电影,亲自去外面走一走。
车里无聊,车外也一样。看窗外的店铺招牌和政府宣传画大多时候是进行审丑训练,字体和排版大都千篇一律,命名、措辞也都无聊透顶。最难看的总要数各种政府机构做的宣传画,第二名是那种政府给整条街布置的统一招牌背景板。作为城市景观破坏之王的横幅更不用说,要么是红底白字,要么是红底黄字,仿佛中国的布料工厂只生产红布。而政治宣传画大都是一种面孔:红黄白三色混合、群山、太阳、天安门、长城、国旗、白鸽、红色绸缎,几乎 80% 的宣传画都离不开这些元素。除了空洞的政治宣传画,其他的非政治宣传画也大都花里胡哨,字体混乱,设计水平低劣。或许政府宣传机构的大部分设计者从来就没有进行过任何现代的审美和设计训练,只要会用 PPT 贴艺术字就能评优秀职工。

南京图书馆右侧的宣传画,左侧对称的是「社会主义核心价值观」
城市里到处都是这些视线污染源。来源五花八门:文明办、宣教局、市委宣传部、街道办事处,每个政府机构都想给城市景观插一脚,可是你好歹要有基本的文化、审美和设计修养。而且那么密集的宣传画完全就是一种破坏和滥用:仿佛只要哪里有几米空地,几面白墙,不立一块「讲文明,树新风」和「自由民主文明和谐」的牌子就难受。拜托,眼睛也要喘口气的好吧!再美的城市景观也抵不过这些宣传画的破坏。相比之下,我更情愿看商业广告和「乱涂乱画」,所以政府反倒不如把这些宣传位卖给商业公司们,政府里的设计专家们还是看看抖音刷刷朋友圈就好。
退一步说,他们真的认为把丑的要命的宣传画和低幼、空洞或谄媚的标语堆满城市就会让市民变得更文明更有教养?可是这些设计者似乎除了文明和谐之类的共产话语,就只知道三字经和二十四孝图。不知道中国还有多少地方没有这些空洞、不知所谓、丑陋的标语和宣传画?这些密集重复的东西浪费了多少资源?为什么这些东西可以随意的破坏城市景观,侵占人们的视线和思想?
我一直在想,如果可能的话,我提议每个城市增设一个市设计局(反正那么多各种办局处,多这一个也没关系),专管整个城市的标语和宣传画等具象的景观设计。先花一个月清理掉整个城市所有的劣质宣传画和不必要的标语,拆掉所有的统一招牌背景板,然后出台「XX 市城市景观设计风格指南和相关规定」。限制每个政府机构可以张贴的标语/宣传画数量、位置、措辞和设计,每个政府宣传机构在张贴标语和宣传画之前都要经过市设计办的审核和批准。这样一来,我们才能有一个真正干净的城市,我也才能没有障碍的爱这个城市。
看过美好之后的审丑训练并不完全没好处,但如果我有孩子的话,我不想让我的孩子在还没有了解到美和文明之前就读着那样的标语和宣传画、看着陌生人外放的抖音长大。
FlaskCon 是由社区举办的免费线上 Flask 会议,欢迎 Flask 的使用者和爱好者参加。这是一份非官方参会指南,希望可以帮到你。
基于演讲者优先的考虑(因为听众可以看录播),为了让演讲者不用半夜爬起来演讲,所以有了现在的日程时间:
一共收到 44 个议题申请,按照两天的时间安排,最终只保留了 18 个。大致分为下面几类:
这里的「我们」包括 Google Cloud、FEC(美国联邦选举委员会)、ScholarPack……
介绍 Flask 的灵活性、工厂模式、请求上下文、异步 Flask 实现——Quart……
先介绍这么多,完整的议题时间表各位可以在官方网站上的 Schedule 部分看到,议题信息里的时间即北京时间(GMT+8)。
前一天在晚上 11 点还会有两个小采访,不过看起来没什么意思。
会议会通过在 FlaskCon 的 YouTube 频道直播,录制的视频也会放到这里。如果你没法访问 YouTube,不用担心,墙外开花墙内也能闻得到,因为 PyCon China 的 bilibili 账号也会同时进行转播,后续视频也会放到这里。英语听不懂的话,YouTube 可以自动生成字幕,也可以实时翻译,如果你没法访问 YouTube,那你就要自己想办法了,试试重启路由器吧。
嗯……因为是免费活动,看直播就算是参加了。如果你想获得更多的临场感和参与感,可以加入 Pallets 的官方 Discord 服务器,在 #flaskcon 频道(会议期间开放)里参与讨论,向演讲者提问(每个演讲有 5 分钟的 QA 环节),记得用英语。另外也可以在这个非官方 Python Discord 服务器或是 Reddit 上的 Flask 节点参与讨论。如果你访问不了 Discord 和 Reddit,或者英语不好的话,天无绝人之路,你还可以在 PyCon China 的 bilibili 直播间刷礼物和发弹幕 :)
Update 2020/7/4 看起来 PyCon China 并没有转播 :/
Update 2020/7/7 PyCon China 没有转播是因为一个乌龙事件「They missed the date due to an error in our meeting notes」,最终改为 7/14 转播,并且(据说)会添加中文翻译字幕。
最近给 WTForms 提交了一个 PR,这个 PR 向源码、测试和本地化文件里添加了 537 个句号。听起来似乎很奇怪,为什么 WTForms 会需要增加 537 个句号?别着急,下面会慢慢解释(事实上我只完成了一部分的工作,还有大概 500 个句号需要添加)。我发现我似乎很喜欢提交这种 PR,这类开源贡献没有太多技术含量(基本就是体力活),但是能有效提高项目的整体完美度,让用户获得更一致和舒服的体验。下面是一些可以归到这一类开源贡献的 PR。
1. 给 WTForms 添加 537 个句号
https://github.com/wtforms/wtforms/pull/620
WTForms 从添加 CSRF 保护功能作为分界,之前定义的验证错误消息都包含结尾的句号,之后的错误消息都漏掉了句号。这会导致错误消息不一致(想象同一个表单显示两个输入框的错误消息,一个有句号,一个没有句号)。这个 PR 补齐了源码、测试、本地化文本(POT 和部分 PO 文件)中错误消息的句号,包括 506 个英文句号和 31 个中文句号。
本地化文件在翻译时大都按照源文本决定是否添加句号,所以也存在错误消息不一致的问题。因为精力有限,在 32 个本地化文件里,我只更新了简体中文、繁体中文、日文、德文和俄文。大概还有需要进行确认和更新,如果感兴趣的话,你可以考虑去做这件事。
2. 给 Flask 添加 96 个美元符号
https://github.com/pallets/flask/pull/2877
Flask 文档、和各类 README.md 文件里对于命令行命令的标识很混乱,有时没有命令提示符,有时用「>」,有时用「$」,有时用「#」。这个 PR 统一了所有命令行命令,统一添加美元符号作为提示符,仅在需要明确区分 Windows 命令的几处使用「>」。
3. 给 Flask 更换 13 个 URL
https://github.com/pallets/flask/pull/3427
Flask 去年陆续把文档迁移到了 palletsprojects.com 域名下, 访问旧的 pocoo.org 会进行跳转,这个 PR 更新了所有文档和源码里的旧 URL。
4. 给 和 压缩 119 张图片
除此之外,勉强能沾上边的还有给 和 的网站分别压缩了 105 和 14 张图片。因为缺乏规范,有些技术大会的网站图片在上传之前没有经过压缩和裁剪,这会让页面加载变得非常慢。这两个 PR(,)分别让两个网站的图片总大小从 25M 和 4M 降低到 5M 和 967KB。
给文档修 typo 是很常见的开源贡献类型,这也是很多人一开始参与开源的方式。有人甚至会走火入魔最后变成专业的「开源 typo 修复专家」,不停的用英文语法检查工具去检查每一个流行的开源项目文档……相比之下,上面这一类 PR 要比修 typo 更简单(在智力上),有时也更有价值。
我发现相对于技术实现,我其实更关注 API 设计和用户体验,总想要尽可能的追求设计的一致和美观。这也导致我会在写作和编程时花费大量时间在命名、文件组织、措辞、章节安排、排版、文案和彩蛋这些事情上。这大概就是我编程水平进步缓慢、写作速度缓慢的原因。
P.S. 文中的数字都是估算,大概会有 1~5 左右的偏差。精确的数字是为了让措辞看起来更一致和美观瞎编的。