分类目录归档:思考与随感

南京再见!

去年五月份来到南京,在这里待了一年半,前两天回家了。本来是打算来南京找工作,顺便体验下城市生活,但是因为各种事情一再搁置找工作的事情:做外包和咨询项目、组织和参加技术大会、写书。一年后发现和呆在家里没有什么区别,反倒不如先回家,把书写完再做打算。

在这里挣的钱大部分都留在了这里,唯有房子里的东西却一件不落的带了回去。去时只有一个面包车的行李,回来时一辆小皮卡差点没装下。不过这一车的零零碎碎倒是并没有花什么钱,大部分家什尤其是大件都是二手货。除了买电子产品,大部分还是被住和吃掉了。

在南京的一年多里,和好朋友阿宽只见了三面,一直想去拜访高中在豆瓣认识的老郭也始终没能成行,去年参加黑客松约着要去东大微软学生俱乐部做关于 Flask 的分享,现在也只好暂时泡汤。而对这个城市本身,也没来得及完全熟悉它。钟山风景区去了大概有七八次,但是还没有完全逛完所有景点。在钟山风景区里骑自行车是非常舒服的事情,比这还舒服的事情是骑车下坡。最喜欢的下坡路线是从灵谷寺路和水榭路汇合点开始,先沿着灵谷寺路下坡冲到灵谷寺景区门前,然后右拐一路经过非常长的一段下坡冲到体育学院。陵园路梧桐树更漂亮但是红绿灯和路口太多,如果你走这里下坡的话,那么建议再费点力气向东爬上卫岗的大坡,然后就可以体验到另一个更陡峭的大下坡。说起来在长江大桥骑车到了江北也会有一段大下坡,但是那一段就没有那么舒服了,因为没有几米是平坦的水泥地,一路下去准会被颠得骨头散架,手脚发痒。

顺便提一句,去了灵谷寺景区发现灵谷寺是最没意思的地方(看到崭新的门面和门楹上挂的标语就没有进去的兴趣了),而无量殿(国民革命军阵亡将士祭堂)、淞沪会战阵亡将士纪念碑和灵谷塔(国民革命军阵亡将士纪念塔)才是参观的重点。我在爬上灵谷塔这一天(2020 年 9 月 19 日)才知道蒋中正就是蒋介石,中正是名,介石是字,可怜我在台北参观中正纪念堂的时候还一直以为蒋中正是蒋介石的儿子或孙子……

因为我大部分时间都呆在房间里,在南京郊区还是在徐州农村其实没有太大区别。既然用不到什么市政资源,那么都是一样的用水,用电,用连不上 Google 的网。除了拿快递和看电影比较麻烦外,回到家好处很多,生活空间更宽裕了,平时也不用小心翼翼担心吵到楼下。住在南京养宠物太麻烦,只能去逗小区里居无定所的的猫狗。而在家里的话,我们家的狗以及邻居、邻居的邻居的狗都是招手即来(挥手也不走)。奶奶家不仅有猫有狗,还有兔子和鸡。在村外走远一点偶尔还会遇到被赶着散步的羊群和牛群。在农村也不会有那么多密集、丑陋和无聊的政府宣传画。很多美食好吃便宜不用排队,物价很低,在超市和街上买东西不用犹豫。

过一段时间也许会怀念在南京的生活。怀念钟山风景区的梧桐树和栖霞山的枫叶;怀念孝陵卫地铁站旁罗汉巷的梅干菜锅盔;怀念南京东郊那间出租房里舒服但是没藏着音乐城的红沙发。

南京再见!或许哪天再回去。

我和 PyCon China 的故事

从参加 PyCon China 2018,到组织 PyCon China 2019,再到现在 PyCon China 2020 正式启动,我想这是一个很好的契机来记录下这两年我和 PyCon China 的故事。顺便也让更多的人了解 PyCon China,并且可以参与进来,让它变得更好。

这是一个小小的 PyCon China 私人切片,因为我已经退出筹备组,所以不代表官方立场。写起回忆来难免会有一堆牢骚不吐不快,为了避免让这篇文章变成一份扎手的手札,棘手的手记,我调整了抱怨浓度,牢骚大概只占一半,不会让你心烦。另外也因为我的视角有限,所以一些观点和想法或许有失偏颇,仅供参考,同时欢迎撰文补充和扩展。

参加 PyCon China 2018

2018 年 9 月 16 号,某位读者建议我去报名 PyCon China 演讲,这是我第一次知道 PyCon China。我一边推脱说我做不来,一边在想自己如果去的话要讲些什么好,结果当晚就报上了名,第二天又在组委会的「怂恿」下把演讲类型从快速演讲(10 分钟)换成了主题演讲。26 天后去北京参加了 PyCon China 2018,这是我第一次参加技术大会,回来后写了这篇总结文章,一半篇幅都是牢骚。

组织 PyCon China 2019

2019 年 4 月 20 号,在准备提交 2019 年的 PyCon China 演讲申请的时候,基于 PyCon China 2018 的体验向大会负责人辛庆老师提了一些改进建议,比如没有闪电演讲,演讲视频没有上传到网络上公开……然后聊着聊着就加入了筹备组。

2019 年从四月底到十月底这半年时间,我基本完整参与了 PyCon China 2019 的筹备。在整个筹备过程里,大部分事情都掺和了一些:协调规划各类事情、策划和实施闪电演讲、更新大会网站、翻译大会资料、审核宣传文章、创建和更新 Twitter 和 Facebook 账号、接待讲者、做主持人、整理上传幻灯片、写和改进各种表单/界面/措辞……在这段时间里,除了做各种杂务,我还完成了三个演讲:

这三个演讲花了很多时间准备,虽然完成的都不完美,但从收集到的会后反馈来看有很多人喜欢,这让我很开心。

在筹备工作里,我最主要的工作成果是策划闪电演讲,以及推动两个改进计划:「品牌形象建设计划」和「工作人员 Credit 计划」。

闪电演讲

4 月和辛庆老师沟通的时候,我提议增加闪电演讲专场来让大会变活泼一点,并且自荐可以负责策划和实施落地。然后我就开始负责做这件事情,一直到九月结束,跟踪了整个流程:写策划案、写宣传文章、发布相关社交动态、和讲师沟通、组织试讲、做主持人、自己出闪电演讲、提前跟摄影师要录像、剪辑录像、上传幻灯片和录像。

闪电演讲的模式大致参考了 PyCon USPyCon AU。做这件事的出发点是让 PyCon China 现场气氛不要那么严肃,稍稍有趣一点,而且作为大会的最后一个环节,可以让大家有一个热烈欢快的结尾。本来的设计是闪电演讲作为整个大会独占的最终环节,放到主会场。但事情的发展慢慢就超出了控制。一开始是因为酒店预算有限,主会场上午用完下午要拆成两个会场,所以原定的闪电演讲主会场就被换到了 Web 分会场结尾。接着因为酒店交还场地的时间限制加上上午开始时间延后导致闪电演讲独占场次变成和其他几个会场一同进行。尽管如此,我还是继续把它作为大会结尾来推行,保留了 PyCon China 2019 结束语部分(本想再加一个工作人员 Credit 环节,但是因为各种原因作罢了)。

最终效果和预想打了一些折扣,这个折扣是很多事情共同造成的。首先是大家都不熟练,我第一次做主持人,讲者们(包括我)第一次做严格限时 5 分钟的闪电演讲,许多听众大概也是第一次看闪电演讲。再加上大多演讲都比较严肃,讲者或许更关注专业性而不是有趣好玩,听众似乎也更期待和习惯前者。尽管前一晚和几位讲者试讲时一再强调 5 分钟限时,但是最终严格限时策略也受阻,Noah Chen 赖着不走我却没办法,打断严肃的演讲又看起来没礼貌。算起账来,场地也要背一口锅,讲台太高,观众离讲台太远,观众分隔距离太大,导致讲者和听众、听众和听众之间很难建立连接。从我几次演讲的体验来看,大学才是更好的技术大会场地,酒店还是更适合严肃无聊的企业会议。

最后一共收到 20 个闪电演讲申请,上海场留下 7 个:

  • Connect to the World of Python’s Community – Noah Chen
  • 500 行 Python 写一个渲染器 – 谭啸
  • 基于 OwlReady2 的人机交互 – 宋从威
  • Byte Code 的革命 – 赵俊德
  • 使用 Sphinx 制作 Web 文档 – 陈照强
  • 一键将 C/C++ 代码转换为 Python 能调用的代码 – 韦泽华
  • Python 虚拟环境和依赖管理工具大乱斗 – 李辉

我在闪电演讲开场说这是 PyCon China 第一个闪电演讲专场,但也有可能是最后一个。看了今年的宣传文章,啊,乌鸦嘴!演讲时间又变回了无聊的十分钟快速演讲模式,很显然我的设想「闪电演讲开放给现场听众,随便报名,投票决定要听哪个」也没成。我在想,假如闪电演讲继续像去年那样(乱搞),也许就可以通过活泼的演讲形式和外界宣传来吸引到气质相符的演讲和演讲者,进一步影响到参会者,最终让整个大会轻松活泼一点。

如果你对这个不甚完美的最后一次 PyCon China「真 · 闪电演讲」感兴趣的话,可以移步 bilibiliYoutube 看现场录像。

品牌形象建设计划

在我加入之后,发现 PyCon China 的品牌形象很混乱:微博账号长久停止更新,也没有建立 Twitter 和 Facebook 账号,各个账号的名称和头像都不统一,所以我就想建设一个统一完整的品牌形象,让它专业一点。

先是推动确立了统一的官方 logo,当时确定的主 logo 据说是一位新加坡华人工程师设计的作品(具体姓名忘记了,看官若了解还请评论告知),我很喜欢这个 logo:

blank后续的大会 logo 基本都是这个图案的变种。对于文字版的 logo,我选了基于这个 logo 设计的 PyCon China 2012 版的带文字 logo(作者是陆卫锋):

blank

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

blank

大部分社交账号都统一使用这个 logo,官网上因为需要横向 logo,所以用了一个主 logo 横版的变体(由错姐设计)。只剩下两处没统一:新浪微博当时似乎是限制修改头像没改成,而 GitHub 组织大概是被漏掉了。统一了 logo 之后,接着结束了 PyCon China 没有 TwitterFacebook 账号的历史,并且推动恢复了新浪微博账号的运营。但是拜托今年不要放弃更新 Twitter 和 Facebook 呀!29 号在公众号和新浪微博发布动态,而 Twitter 和 Facebook 一直都静悄悄……直到五天后才在 Twitter 上同步消息,而 Facebook 依然没有更新。这时演讲征集截止时间只剩下两天(29 号开放 7 号就结束似乎有些太短了?)

顺便说一句,发现今年出现了一个新的 PyChina logo,建议配套使用:如果社交帐号名称是 PyCon China,那么就用 PyCon China 的 logo;如果名称是 PyChina,那么就用 PyChina 的 logo。bilibili 账号这样搭配就显得混乱,违背了统一品牌形象的初衷(今年或许可以继续完成统一 logo 这件事)。

工作人员 Credit 计划

在 2018 年的大会网站以及我加入时 2019 年的大会网站上只列了一个出品人列表,这个列表更像是一个曾经参与、短暂参与和偶尔参与的混合列表。列表里有的人什么都做,比如李者璈(Manjusaka),和辛庆老师一样做各种协调和杂活,同时还全力支持多个城市的会务,兼职主持人(可塑性极强,如果讲者缺席了就可以当晚熬夜准备演讲第二天填空缺);有的人什么也不做,比如往届参与的成员和初创成员;更多的则是参与演讲议题评审的审稿人;而有的人做了很多工作,却没有被列到出品人列表里面,比如大部分真正处理各类具体筹备工作的工作人员其实大都不在这个列表里:

  • 辛庆(辛姐/Cynthia Xin):协调各类事情,做了很多杂务,因为太多所以不知道列出哪件比较好,反正至少顶了 PyCon China 半边天。
  • 许银(许老板/Jamie Xu):协调现场会务,处理现场各种「火灾水灾」事件。
  • 晁倩(倩姨/啊Q/Queena Chao):PyChina 公众号主理人和现场志愿者负责人,2019 年大部分公众号文章的编辑,同时也帮忙做各种杂务。
  • 王梦兰(大猫/Alan Wang):身兼多职,主营财务、社交媒体维护和资料翻译。
  • 王晓珂(Nicoco Wang):负责物料采购和现场签到,除了买买买,也一起帮忙做翻译和文章审阅。
  • 吴妙璇(错姐/小错/Mxuan):大部分现场物料、文章配图、幻灯片主题、T 恤等纪念品的设计都出自错姐之手。更多她的设计可以在《PyConChina大会设计2017-2019》看到。

在自己负责的领域之外,这里的每个人都会帮忙做各种杂务,也在现场做各种会务支持。除了我比较熟悉的这些人,还有很多其他工作人员和志愿者也一样在背后默默支持。尽管如此,大部分听众却没法了解到这些。

让积极做事情的人感到被认可是一件很重要的事情,电影结尾的演职员表即便滚动的再快,也会有人仔细在里面找自己的名字。一个合理的 Credit 机制可以让工作的时候有明确的分工和职责,有了认可也会让大家更有动力参与和投入。基于这些考虑,所以有了这个「工作人员 Credit 计划」。这个计划的重点就是制作一个分类的工作人员列表放到官网上,也推动了为公众号文章署名之类的小改进。

经过大家的共同努力,下面就是最终整理出的工作人员列表(篇幅所限,出品人没有列出,完整的工作人员列表可以在大会网站的工作人员页面看到):blank

这个页面其实还是未完成的状态。有一些特殊贡献没能列出,比如刘玉龙和何翔宇上传了所有的演讲视频到 bilibili 和 YouTube(中间李者璈也有协助);王梦兰在做新浪微博账号的更新和维护,中间还帮我接管过一段时间的 Twitter 和 Facebook。现场志愿者列表始终没有整理出来,估计也永远不会整理完了。

2019 未完成

筹备过程漫长,许多事情等不到答复可以自己动手,实在等不到那就放弃或折中,而更多的问题是在现场会务上集中出现。因为有太多变数和不确定性,而且又没有足够的时间进行预演,再加上缺乏流程约定和验收,上海场遇到了太多问题,仅我自己见到和体验到的就有:连接线不够长,电脑没法放到讲台;现场网络很差;有道同传失灵;主会场屏幕幻灯片两边有一些看不到;翻页笔频繁失灵;翻页笔不支持左右翻页;(继 2018 再一次)幻灯片尺寸错误;两个会场临时隔断墙隔音不好,分会场变大杂烩场;摄影师拍照片手法单调,拍讲师看不到背景幻灯片,不抓拍开场等关键画面;摄影师录像漏拍,而且没有备用摄像,导致上午主会场 laike9m 的演讲录像不完整……问题远远不止这些,细说起来大概三天三夜说不完。关于上海场会务的诸多问题在郑天航写的《在 PyCon Shanghai 2019 中我该做什么》里有很详细的介绍。

和大多数人类合作活动一样,PyCon China 2019 包含了各种妥协、事故和拖延,但是总有各种将就、补救和掩盖来让一切看起来还不错。对于观众来说看起来还不错就够了,但是对于组织者来说这远远不够,因为我们本可以做得更好,至少也要凭着这一次的经验,让下一次更好一点。

因为在筹备组这半年一直没工作,所以做什么事情都会慢慢变成全职,偶尔几天全职做外包,偶尔几天全职写书,偶尔变成全职参与 PyCon China(也因此被调侃家里有矿,所以筹备组里的人都叫我小李老板)。同样也是因为没工作,大多时间都花在了 PyCon China 筹备和准备演讲上,这半年除了拿过一次稿费做了一个外包项目外没有任何收入,生活也变得很混乱。为了让生活重回正轨,所以决定不再参与 2020 大会的策划。2019 年 10 月 27 号,成都场结束,PyCon China 2019 组织工作进入尾声,我就在筹备组群聊和大家说了再见。

在 PyCon China 的这段时间里,认识了很多有趣的朋友,收获了很多快乐的时光,希望大家一切顺利!

期待 PyCon China 2020

2020 年 10 月 29 号,PyCon China 2020 宣布正式启动了,会议时间定在 11 月的 28~29 号。希望今年的 PyCon China 可以办得更好……

等等,官网哪里去了?不知道为什么,PyCon China 2020 已经开始筹备了,官网却处于下线的状态(不论是 pyconchina.org.cn 还是 cn.pycon.org)。我认为官网是技术大会或者说任何现代品牌的最主要的网络门面,即使用户更喜欢关注微信公众号和新浪微博。对于一个技术大会来说,在网络上搜索关键词找不到官网,找到官网却打不开,这都会向观众传达一个很不专业的信号。修复并更新官网应该是在公开 PyCon China 2020 消息之前就应该做好的事情,也是现在的当务之急(上文提到官网时使用的链接指向的是我临时放到 greyli.com/archives/pyconchina 下的网站存档,基于 2019 大会网站源码生成)。

虽然不太可能实现,但我还是想说,我们应该有个博客……去年因为种种原因没能做成这件事,最终只是写了一篇文章放到 PyChina 的博客上,但我还是建议把 PyCon China 博客独立出来。有一个博客可以更方便发布各种消息给搜索引擎和超链接爱好者,而不仅仅是放到微信局域网里的公众号上服务微信用户。

尽管不再参与组织今年的 PyCon China,但是翻开去年写的《PyCon China 2020 规划》,还是有一些改进建议想一并写在这里,也许能够提供一些启发促成一些改进(不感兴趣请猛按空格键)。

首先是议题收集和审核流程需要改进。我在参与组织 FlaskCon 2020 时主办方使用的议题管理工具 Sessionize 很好用(议题收集、评审和日程表导出一体化工具),投票方式更简单合理,每个评审员独立完成投票,通过多重对比得出每个演讲的权重顺序,最终综合所有评审员的投票得出结果。这样远比微信群讨论和看板事项留言更高效,也比赞同反对式的投票方式更科学。而且可以调用其 API 生成网站议程时间表,不用投入大量精力手动同步议程变动。今年会议改线上刚好可以用 Sessionize 的免费社区版,但是考虑到今年演讲申请大都已经投递了,估计没法用(除非手动导入议题数据……),但是明年或许可以考虑。接着去年的想法,如果可能的话,取消工作人员页面的出品人概念,改为工作人员的子分类——议题审核组,只保留列表中该年参与的成员。

在议题申请上去年还有一个改进想法是在议题申请表里添加更多细化选项,比如「演讲难度」。标注演讲难度可以让听众有一个心理期待值预判,也可以让讲者不会有太多心理负担(担心话题太简单被人骂,担心话题太深奥也被人骂)。

另外,协作工具也需要改进。去年就尝试把全部工作沟通从微信转移到 Slack,但是过程并不顺利,不知道今年是不是又回到了微信群聊。我认为不应该互相迁就,而是要想办法让所有人都能正常上网,然后使用最好用的工具。

我在 19 年最后,花了很长时间来做的事情就是整理出一份《PyCon China 文档和资源导航》,收集了所有相关的资源和文档信息,以便能更好的利用这些文档,方便找到自己需要的资源和链接。同时也尽可能的扩充了大部分事项的检查清单,每一个事项都需要一个用来执行和验收的检查清单,这一点在会后总结时已经达成共识。同时我们也需要写更多的文档来规约和优化会议细节。比如分别交给讲者、听众、筹备组新成员、现场志愿者的入门指引和注意事项。​这些东西再统统加入文档和资源导航以便于查找,并且逐年迭代和优化。

最后,PyCon China 2020 需要新鲜的血液、肺泡和脑细胞,欢迎加入志愿者团队和筹备组,欢迎报名演讲

有钱的出钱,有力的出力,柴禾多了,火就旺了。祝 PyCon China 越来越好。


延伸阅读:

 

2020 暑假总结

最后一次写暑假总结是在 2016 年,之后因为不再上学,也就没有了暑假这个概念。今年夏天回家呆了一个月,算是自己给自己放的暑假。

农村像是冰箱下面的冷藏室,时间在这里不会产生多大作用。也正是这样,你一下子就能看出有哪些新变化。首先是家里的狗生了七只小狗,因为胎盘没及时去掉,死了三只。然后家里的蚂蚁似乎变多了,在院子里扔一小块饼干或西瓜,过一会就会看到密密麻麻的蚂蚁趴在上面(拔菜园里的花生时发现三个蚂蚁窝!)。除此之外,一切几乎都是老样子:狗总是热得吐舌头。西瓜甜不甜要看运气,但价格大都不到城里的一半。附近的工厂有时会在早晨制造噪音,半夜偶尔还会听到邻居用「古法洗衣」时棍子敲打衣服的声音*。

夏天全家人一起吹空调吃西瓜看电视是很幸福的事情,我试图想把我和瑶瑶都很喜欢的《请回答 1988》推荐给大家,但也许是每一集太长,或者是语言和文化差异的缘故,大家并没有表现出很大的兴趣。不过我们还策划了一次去水上乐园的短途旅行,这一次大家都玩得很开心。

暑假像是一年的短暂中断,一个可以喘口气的中场休息。上学的时候暑假让我从无聊痛苦的学校生活里抽离,而现在则可以临时放下各种喜欢和不喜欢的工作。我用这段时间清理掉了上半年积攒下来的一堆便签和纸片,整理了电脑上的各种笔记、杂乱文件和标签页。修正了年目标,因为一年过去大半,所以有些不切实际的目标自然就变得非常明显,现在只好先放弃掉。剩下的几乎就都是娱乐时间了。

《皇室战争》玩到了大师联赛,然后就有点厌倦,估计下半年都不会想再玩(不过无限圣水模式实在太容易沉迷了)。因为想找一个联机游戏和李家玩,又安装回了 Steam,找到大学时买的《兽人必须死 2》。结果他沉迷在 Epic 免费领的 《GTA 5》,我就只好自己玩。接着大学时的进度通了关,然后玩了很久的无尽模式(Endless)。像我这种喜欢整理和规划的人大概都会喜欢这种塔防游戏——可以把所有空间完美的利用好,天花板、墙和地面上每一个防具都摆放的整齐对称。但是无尽模式实在太消耗精力,每一局都会让眼睛和右手累的不行,最后止步于 44 波的最高成绩(放弃的另一个原因是解锁所有武器和技能太耗费时间)。玩的时候有时会想自己面对的敌人不过是每一波都增加了几个数字的难度变量,有一种被代码控制和愚弄的意味……

也不是完全没有成果。花了一些时间来更新 Bootstrap-Flask,发布了 1.5 版本,接下来一段时间可以把它放一边了。给 Flask 书的示例程序 SayHello 加了一个验证码功能。从去年开始就有人在这里灌垃圾留言,直到现在才下决心清理和阻止(一共删掉了 9083 条)。说是验证码,其实只是加了一个验证输入值是否是「宝塔镇河妖」的文本输入框……不过在垃圾留言程序弄明白规则之前应该都没问题。最后还把大部分 Python 的 Web API 相关工具库的文档都看了一遍。

暑假里大部分时间都被随心所欲的花掉了,但我并不把这看作浪费,如果暑假时间也要全用来学习和工作,那生活就太无聊了。这样想的话,在小时候的暑假,写作业是浪费,玩游戏、在门前发呆和出去玩就不是。现在的暑假呢,为别人工作是浪费,做自己喜欢的事情就不是。


*比起在南京时楼上孩子练习长跑和玩积木的声音、楼下孩子半夜的哭闹和夫妻吵架的声音,家里的这两种倒更容易忍受,至少你知道什么时间能结束。

知乎——没有知识存在的荒原

最近打开知乎的链接经常看到 404 页面:

blank

想象一个这样的场景:一个不了解 404 含义的用户,访问某个知乎的网址,结果看到提示「你似乎来到了没有知识存在的荒原」。咦,原来知乎是没有知识存在的荒原?想想就很有意思。以前没有细想它的文案,现在发现这其实是一个预言:知识要么都被你的审查官删掉了,要么就被混进越来越多的垃圾信息里,这样下去知乎恐怕真的要变成知识的荒原了。

审查会造成信息的一元化,最终造成观点的一面倒,而知乎的审查会加强这种效果。知乎上有很多价值判断的问题(如何看待 XXX?)。正常来说,一件事情如果没法用常识大致区分对错,既然需要拿出来讨论,那么必然有人支持也有人反对。在所有回答里,如果持反对和批评态度的答案大都被知乎删除,那么后来的读者便会认为大多数人的观点都偏向支持,从而进一步认为支持才是正确的观点(如果没有独立思考和判断的习惯的话),于是也下意识的选择支持。再加上如果写答案的人都趋于使用简单粗暴的语言进行攻击和贴标签,读者也会被鼓动起来,变成不会思考只会攻击对立观点的傀儡。

当然,知乎的审查手段很多,比如现在用知乎的搜索框搜「李文亮」,只会看到几条知乎官方账号发布的致敬啦、悼念啦、怀念啦之类的官媒模板新闻,看不到一个问题,连相关用户也被一并屏蔽了(你要祈祷不会有和你同名的人成为国家主席或是变成「争议人物」)。大多相关的问题也被删的七七八八,而你通过各种犄角旮旯找到的问题里,回答以及回答的评论也都是过滤后的结果。再加上作者在答题之前以及在问题被建议修改后的自我审查。这种审查达到了极致。

在其他网站,比如豆瓣和新浪微博,也存在这种一体化的审查机制,但是对待一个广播、一篇日记或是一条微博提出的事件,用户的评论也许是反对或支持,也许是用户对事件本身的补充,也许只是无聊的灌水。因为评论很少有长篇论述,即使被审查筛选,你也不会把 100 条评论看得和 100 个回答一般重要。在知乎上,对于一个「如何看待」类问题,所有的回答天然都默认作为一种价值判断和立场选择。长篇大论看似有理有据但也许充满了逻辑漏洞和陷阱,但这种回答却让你下意识的认为其专业而正确,而问题下的「支持」和「反对」按钮更是加重了回答的价值判断意味。

这种特性也许会让知乎变成一个「超级高效的观念、立场和价值观塑造工具」,每一个没法独立思考的人,扔给他一个「如何看待」类问题,只要从上往下把回答刷上一遍,就完成了一个价值观改造流程。在正常情况下,这种工具有一定的益处,它可以让一个人看到更多元化的观点,甚至接受不同的观点。但是一旦搭配上同样高效的审查和专业的写手,知乎问题就变成了强有力的思想塑造工具,除了政府想要拥有它,其他想要塑造公众形象的明星公关公司和大企业也会非常喜欢(还可以搭配付费热搜调节一起使用)。

一个人、一件事的对错并不容易界定,非黑即白并不是唯一答案。我们要谨慎对待知乎上的价值判断类问题。

另一方面,理性的观点探讨、不同意见的互相碰撞正在从互联网上消失,不仅仅是因为承载这种信息的环境和平台也正在消失(即《中文互联网中“讨论”的消亡》中提到的「公共讨论空间消失」),除了审查的影响,这些理性的声音自身也逐渐被大量无意义的噪音和攻击冲淡,或是因此而退却和沉默。而事实上这不仅仅是知乎的问题,而是娱乐至上背景下整个互联网环境的问题。国内因为言论审查和无良大公司的存在,所以情况更加糟糕。西方世界的大部分人也许沉浸在赫胥黎的预言里声色犬马,而中国人则沉睡在赫胥黎和奥威尔的双重预言编织的梦魇里难以醒来。

如何抵抗这种变化?建立你自己的网站吧。一方面可以尽可能自由的发出自己的声音。另一方面,不用把自己的数据全部交到别人的手里,要不然一不留神知识变荒原,你写的文章和回答也就成了沙子和尘土。

超链接跳转费

昨天有人给《Flask 入门教程》书稿源码提交了一个 PR,主要的修改是在书中的链接前后添加了空格。比如:

  • 首先要注册一个 GitHub 账户,点击访问注册页面根据指示完成注册流程。登录备用。

改成了:

  • 首先要注册一个 GitHub 账户,点击访问 注册页面根据指示完成注册流程。登录备用。

我一直对这个排版风格持观望态度。如果合并的话,那就要在以后的书稿更新甚至所有网络写作中保持这个习惯,再三考虑之下,我还是决定暂不这样做。最主要的考虑是添加空格会影响阅读体验,好像本来平淡无奇的超链接突然自带聚光灯。一来在观感上突兀,二来会影响阅读的流畅感(大多数情况下链接文字本身也是句子的一部分)。

不过话说回来,超链接也该被拎出来亮一亮了,因为超链接在国内的网络环境里一直处于被打压和控制的状态:微信公众号不允许插入超链接,新浪微博从下个月起要停止把 URL 解析成超链接(只为白名单内的政府、公司等网站提供链接渲染服务),而知乎也曾悄悄停止把用户主页一句话介绍里的 URL 解析成超链接。在网络世界里,超链接是再平常不过的东西。但这些公司却把互联网的基础设施垄断、控制起来进行牟利、打压竞争对手以及用来把用户尽可能的圈在平台内。

我在想,新浪微博之类的平台在以后也许可以尝试收超链接费或是超链接跳转费(比如推出一个超链接套餐,100 块钱可以发 50 个链接),然后再按照点击量收取超链接点击费或是超链接流量费。听起来就像是政府要征收空气税和重力税……

除了不被渲染为超链接,有时在手机上访问超链接也要跨过千难万险。如果你在微信上打开一个超链接,你首先要跟 GFW 打声招呼,接着或许还会被网络运营商搜身,最后才会经过微信的审查。如果微信发现你要打开的是淘宝之类竞争对手的网址,或是它「自己认为」危险的不适合访问的网址,你就只能通过长按复制网址的方式用浏览器打开。如果你很不幸安装的是国产浏览器的话,那恭喜你还要再面临一层国产浏览器厂商的审查。

想让你的网站被渲染成超链接并且可以被正常访问?好,那就申报,登记,填表,备案吧。

也许未来会有很多人忘记为什么网页上一段文字里某些文字会是蓝色和下划线样式。

被抖音、标语和宣传画占领的城市

在上下班高峰的公交车和地铁上,我才开始深刻的体会到「数字劳工」这个词的含义:大家辛辛苦苦上了一天班,结果下班了还要继续努力娱乐来训练大公司的推荐算法,观看他们的广告,认真在下班时间也给其他人创造财富。

今天下午去某地办理文件,去的时候还好,回来时刚好赶上了下班高峰,几乎站了一路。前面的大爷先是打开了微信,和几乎所有人一样,满屏乱七八糟的群聊(感谢张小龙的克制),先是看了微信群里关于龙卷风的视频,跳转到微信看一看,下滑了几条洪水的视频,接着开始翻订阅号里的文章列表,几乎每篇文章标题里都有至少一个感叹号(「最新!」、「震撼!」、「愤怒!」、「重磅!」),然后打开了拼多多,划了几条商品推荐,签到领积分,最后又回到微信,如此循环。右前方的女生看了一会儿抖音,然后切换到微信,接着关掉了屏幕。三分钟左右,又打开手机,进入微信,然后又打开抖音,这次开始专注起来。左边的人、右边的右边的人、右边的右边的前面的人,或许还有其他半车人都在看抖音(抖音俨然成为了一种新兴宗教)。

抖音、快手们以及各种抖音快手化的程序们争相接过了电视的接力棒,以一种更高效的方式来对人类进行信息投喂(他们称之为算法推荐)。我像躲避电视一样躲避这类被动灌输的信息流,我知道自己一样抵挡不住,所以只在偶尔出门的时候和公交地铁邻座的陌生人(偷偷)瞟两眼,不过大部分的抖音视频和配音都让人反胃。

我有一次下载了抖音想看看在经过筛选后会留下哪些视频。在筛掉一堆无聊的视频后(常常伴随着无聊的配音和字幕),剩下的都是晚霞和云、海浪、滑板、街道、动画电影。到最后这些重复的内容让我有些厌倦,而且不停的打断让我感到烦躁。相比于看一堆十几秒的夕阳、风景和精彩电影画面剪辑。我更希望看看真的夕阳,看一部完整的电影,亲自去外面走一走。

车里无聊,车外也一样。看窗外的店铺招牌和政府宣传画大多时候是进行审丑训练,字体和排版大都千篇一律,命名、措辞也都无聊透顶。最难看的总要数各种政府机构做的宣传画,第二名是那种政府给整条街布置的统一招牌背景板。作为城市景观破坏之王的横幅更不用说,要么是红底白字,要么是红底黄字,仿佛中国的布料工厂只生产红布。而政治宣传画大都是一种面孔:红黄白三色混合、群山、太阳、天安门、长城、国旗、白鸽、红色绸缎,几乎 80% 的宣传画都离不开这些元素。除了空洞的政治宣传画,其他的非政治宣传画也大都花里胡哨,字体混乱,设计水平低劣。或许政府宣传机构的大部分设计者从来就没有进行过任何现代的审美和设计训练,只要会用 PPT 贴艺术字就能评优秀职工。

南京图书馆的宣传画

南京图书馆右侧的宣传画,左侧对称的是「社会主义核心价值观」

城市里到处都是这些视线污染源。来源五花八门:文明办、宣教局、市委宣传部、街道办事处,每个政府机构都想给城市景观插一脚,可是你好歹要有基本的文化、审美和设计修养。而且那么密集的宣传画完全就是一种破坏和滥用:仿佛只要哪里有几米空地,几面白墙,不立一块「讲文明,树新风」和「自由民主文明和谐」的牌子就难受。拜托,眼睛也要喘口气的好吧!再美的城市景观也抵不过这些宣传画的破坏。相比之下,我更情愿看商业广告和「乱涂乱画」,所以政府反倒不如把这些宣传位卖给商业公司们,政府里的设计专家们还是看看抖音刷刷朋友圈就好。

退一步说,他们真的认为把丑的要命的宣传画和低幼、空洞或谄媚的标语堆满城市就会让市民变得更文明更有教养?可是这些设计者似乎除了文明和谐之类的共产话语,就只知道三字经和二十四孝图。不知道中国还有多少地方没有这些空洞、不知所谓、丑陋的标语和宣传画?这些密集重复的东西浪费了多少资源?为什么这些东西可以随意的破坏城市景观,侵占人们的视线和思想?

我一直在想,如果可能的话,我提议每个城市增设一个市设计局(反正那么多各种办局处,多这一个也没关系),专管整个城市的标语和宣传画等具象的景观设计。先花一个月清理掉整个城市所有的劣质宣传画和不必要的标语,拆掉所有的统一招牌背景板,然后出台「XX 市城市景观设计风格指南和相关规定」。限制每个政府机构可以张贴的标语/宣传画数量、位置、措辞和设计,每个政府宣传机构在张贴标语和宣传画之前都要经过市设计办的审核和批准。这样一来,我们才能有一个真正干净的城市,我也才能没有障碍的爱这个城市。

看过美好之后的审丑训练并不完全没好处,但如果我有孩子的话,我不想让我的孩子在还没有了解到美和文明之前就读着那样的标语和宣传画、看着陌生人外放的抖音长大。

比修 Typo 还简单的开源贡献方式

最近给 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. 给 PyCon ChinaFlaskCon 压缩 119 张图片

除此之外,勉强能沾上边的还有给 PyCon ChinaFlaskCon 的网站分别压缩了 105 和 14 张图片。因为缺乏规范,有些技术大会的网站图片在上传之前没有经过压缩和裁剪,这会让页面加载变得非常慢。这两个 PR(PyConChina #3FlaskCon #7)分别让两个网站的图片总大小从 25M 和 4M 降低到 5M 和 967KB。

给文档修 typo 是很常见的开源贡献类型,这也是很多人一开始参与开源的方式。有人甚至会走火入魔最后变成专业的「开源 typo 修复专家」,不停的用英文语法检查工具去检查每一个流行的开源项目文档……相比之下,上面这一类 PR 要比修 typo 更简单(在智力上),有时也更有价值。

我发现相对于技术实现,我其实更关注 API 设计和用户体验,总想要尽可能的追求设计的一致和美观。这也导致我会在写作和编程时花费大量时间在命名、文件组织、措辞、章节安排、排版、文案和彩蛋这些事情上。这大概就是我编程水平进步缓慢、写作速度缓慢的原因。

P.S. 文中的数字都是估算,大概会有 1~5 左右的偏差。精确的数字是为了让措辞看起来更一致和美观瞎编的。

知乎专栏降级

2016 年 11 月创建了一个知乎专栏来写 Flask 相关的内容,到现在关注人数慢慢涨到了 10000。

blank

前段时间偶然看了下专栏,发现整个页面有很大的变化,原有的这些东西不见了:

    • 专栏头像
    • 专栏短介绍(被替换为关于页面内的长介绍)
    • 关于页面
    • 置顶文章
    • 关注人数
    • 专栏设置页面
    • 文章条目的作者和发布时间

页面上部去掉了很多信息,同时空间被压缩的很小,导致整体样式变得很难看。专栏介绍自动替换为长介绍加剧了这种情况,尝试修改介绍,发现字数限制和之前相比变得更严格了——只允许 25 个字符,这样原有的短介绍也没法使用,只好留空。

同时还发生了另外一个奇怪的变化:知乎账号的关注人数突然多出来 8000 左右。

查了一下,才发现原来这是知乎的一次专栏升级,而上面的这些变化属于这一条升级举措:

专栏升级后,过去喜欢和认可专栏的知友,将直接关注创作者本人帐号。对于升级完成后的专栏,「关注专栏」这一功能将会下线,专栏会完全属于创作者个人。

这也就意味着:

  • 不考虑专栏关注者意愿,强制专栏关注者关注作者。
  • 不考虑专栏作者意愿,直接去除关注等功能。
  • 要关注一个专栏就要关注这个作者,接收所有和专栏不相关的动态。

在我看来,这是知乎专栏的一次降级。

这让在互联网上想只接收自己关注的资讯变得更难了一点。

我不喜欢这个哪吒

前段时间去看了《哪吒之魔童降世》,但是过后总有一些不舒服的感觉。整部影片的观感还不错,尤其是剧情和对白以外的地方,总体上要比《流浪地球》那种烂片强得多。

让人讨厌的哪吒角色

哪吒的角色让我想起前段时间的《流浪地球》里刘启的角色,让人很反感。有时候未成年人的叛逆是值得鼓励和赞许的,比如你反抗不公平不合理的制度,和穿新衣的皇帝叫板,这些都是可贵的反叛。但是你喜欢说脏话、不懂礼貌、做事情不负责任,这就是另一种让人讨厌的幼稚叛逆。这时候如果你还声称要做自己,要打破别人的偏见,还要扯什么「我命由我不由天」,那我实在没法理解这其中的逻辑。

意思就是我欺负百姓,放火烧屋,不尊重长辈,但我其实是个好孩子?怪就怪你们当初否定我——你们说我坏,所以我就坏给你们看?为了证明自己并不坏,所以去抓妖怪,毁房烧屋也没关系,被误会和欺负就想杀人(几次差点杀死人)?

在我来看,这里的哪吒完全就是一个性情暴躁、品行恶劣、行为怪异的熊孩子。一个动不动就打打杀杀的暴力狂,大部分时间都是在发泄自己暴躁的情绪。很像《告白》里面那个发疯的杀人凶手少年 B。

从父母教育的层面看,如果我的儿子只有三年生命,我也会用正确的方式来教育他,而不是溺爱他,放任他胡作非为,不讲礼貌。即使白天再多妖怪要杀,晚上没时间陪孩子吗?怎么也不至于让他变成一个这么讨厌的野孩子……

空洞的反叛

电影的一些情节、对白和角色都让人感觉「很周星驰」,但是周星驰来拍的话,绝对不会加入那些煽情、说教和空洞的反叛口号。我认为这个电影想表达的反叛很空洞,完全是流于形式。

这里的哪吒满口「我命由我不由天」,给我的感觉只有虚伪和做作。明明就是混沌状态的熊孩子,一边做着各种不成熟的事情,一边还喊着这样的反叛口号,我真的没看出来这个哪吒在反叛什么。

按照我的理解,好的电影应该是一件雕塑,而不是一个箱子。既然没法合理的表达出反叛(在大部分值得反叛的东西没法通过审查的情况下),那就不要勉强。如果不能自然的搞笑,那就不要搞笑。不知道为什么国内的电影总是拼命塞进更多的笑料,不管是什么题材的电影,不管有些笑料多么低俗和无聊,就像是拼命塞满过时流行语的领导发言一样让人尴尬。

这种把电影当做箱子的另一个结果就是风格混乱,一会儿像周星驰(无厘头),一会儿像日漫(热血战斗)。如果不弄这些空洞的反叛,风格统一,就做一个完整的爆米花喜剧故事,应该会更好。

还有一些情节值得吐槽,但过去太久已经记不太清了,大概都是没有用心推敲的结果。比如最后老百姓围成一圈跪下来。为什么要跪?膝盖灌铅啦,中国影视剧里的古代普通民众总是动不动就要跪,皇帝和大官来了要跪,神仙和假装是神仙的妖怪来了要跪,不管是不是英雄,只要别人说是英雄来了也要跪。好像只要你走在街上,不管发生了什么事情,只要看到前面有人跪了,后面的人就要一个接一个的跪。虽然不知道古代人是不是真的这么喜欢跪,但在这个电影里,灾难本来就是哪吒带来的,他们都不知道吗?为什么要向自己害怕、厌恶和给自己带来灾难的人下跪?

最后,电影里哪吒一直想反抗的人类偏见消除了吗?我想并没有。所以这个电影拍到最后到底在表达什么?

哪吒不该是这样

我之所以想写这篇文章,是因为我在心里是珍视哪吒这个角色的。虽然他们有改编的自由,但这部电影在很多人心里毁掉了那个反抗权威和父权的哪吒形象(反而这部电影里敖丙才更哪吒)。

哪吒不像孙悟空那样无牵无挂,可以彻底的反叛和藐视一切。哪吒有父母,像是拴在身上的温柔锁链,这其实是现实里大多数人的状态。说起来也许有点幼稚,高中的时候我给自己起的英文名就是 Nalakuvara Li(李哪吒),Twitter 上的头像很长一段时间都是哪吒自刎的图片。相应的,那时候也很喜欢哪吒乐队和痛仰,不过前者早早的夭折,而在后者那里,哪吒最终还是双手合十,不再愤怒了。

blank

是呀,当你有家和孩子要养,有各种贷款要还的时候,谁还有时间、精力和勇气愤怒和反叛呢?


发现写影评好难,为了严谨你可能要重新看一遍甚至很多遍,要不然只能删掉不确定的内容。而且有的观点很难确认是自己一厢情愿的理解,还是电影本身想表达的东西。

再见小巴

小巴是我家的狗,大概两岁了。我从五月份离开家来南京就没再见过它,它现在失踪了。

这段时间,每天早上爸都会带它去散步,但现在早晨的田边却再也没有它的身影了。瑶瑶上周寄回家的一袋狗粮,大概还只吃了一点点。

blank

小巴小时候非常可爱

小巴在来我们家之前,有过一段挨饿的生活,所以养成了贪吃的习惯,而且在吃这件事情上非常自私。假如你给它一根鸡腿,但是它刚好不太饿,没有胃口,它就会坐在地上看着鸡腿。一旦你开始伸手去拿鸡腿,说着「不吃我要拿走咯」,它就会立刻开始吃起来。有时候,它还会把鸡腿藏到土里埋起来,等到哪天饿了却没东西吃,就把变了颜色沾满土的僵尸鸡腿拿出来吃,好像味道和新的没差别一样。

小巴还喜欢叼东西,大概是因为它可以把嘴长得很大,天分使然吧。它总是把任何可以当做玩具的东西叼到它的窝里面,网球(它的专属玩具)、水瓶(它的窝里通常都会堆着好几个水瓶)、鞋子(通常是我弟的,大概它比较喜欢有味道的东西……)等等各种能被叼起来的东西。

我们偶尔会把这个当做游戏逗它:把它的玩具偷偷从它的家里拿出来,然后丢到更远的地方,它一旦抢到就会飞奔带回去。次数多了以后,它一旦发现了喜欢的东西,就会立刻叼起来往家跑,所以有时它会从卧室偷偷叼起来拖鞋或袜子,然后爸妈就跟在后面追(不过小巴肯定以为在玩游戏)。偶尔它也会叼棍子回去,但是很多时候因为棍子比它的房门要宽,所以经常会卡在门口进不去……真是笨拙的可爱呀!

我们家对于养宠物这件事有一些共识,我们都不愿意把狗栓起来当做可怜的看门狗,所以我们家的狗都是自由的,而且伙食水平和其他邻居的狗相比简直就是天上地下的区别,所以每次要吃饭的时候总有很多邻居的狗围过来。在我们家的这段时间,小巴每天都可以和其他朋友到处疯跑,而家里永远提供水、食物、住宿和按摩服务。我想至少它快乐自由的生活了两年。

blank

和小巴在田里散步

在农村养狗真是一个风险很高的事情,除了做好疾病预防的准备,你还要避免让他吃太多,要不然长得太胖就会成为狗贩子的目标……我们都决定暂时不再养狗了,大家都不想再承受这种失去心爱宠物的痛苦。以前也有很多可爱的狗狗,我们都互相陪伴了一段时间,但总是它们先离开。写这篇文章,是想让这个世界多一些小巴的影子。

我不在家的这几个月,因为爸妈没时间好好照顾它,小巴瘦了很多,但是每天依然都玩的很开心,虽然没有我和瑶瑶陪它,但它还是有很多同类的朋友。不过不知道它会不会偶尔想起我来,会不会想,那个经常和我赛跑,抢网球,拿东西给我吃的人去哪里了?

blank

刚淋完雨回来的小巴

前后端分离?

有很多初学者因为受各种文章的吹捧而痴迷「前后端分离」这个词,刚开始学后端 Web 框架就想知道怎么实现前后端分离。就我目前有限的经验来看,前后端分离并没有那么重要,只是另一种程序架构(开发模式)而已。和传统的后端渲染的 Web 程序相比,并没有明显的优劣之分,两种方式都各有优缺点,也各有适合的场景。

没必要过分追捧任何一种语言、框架、工具、操作系统……都了解都能用最好,工具永远没有要做的事情重要。没有能胜任所有工作的完美工具,更多时候是按需选用最合适的工具。

囤积游戏

虽然一样都是没有时间玩,但购买实体游戏光盘和卡带要比数字版更让人感到幸福,至少你每天都可以看到一排花花绿绿的游戏放在那里,没事还可以拿过来换一换排列顺序……换句话说,实体游戏会让你有一种踏实的拥有游戏的感觉。等你有了一橱柜的游戏,还可以用来炫富(仅对游戏玩家有效)。