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

开始找工作

在过去的几年里,虽然也有过几次找工作经历,但都是被别人推荐后去试一试,结果无一例外全失败。不过,除了学历、英语和申请时间点的问题,这些失败的职位大都不是我的强项所在(Python/Flask)。这一次我决定主动起来,以自己擅长的方向出发,努力在 2022 年之前找到人生的第一份正式工作。

我想是时候了。我在写书这件事上很难挣到足够多的钱,不应该再抱有写出畅销书的幻想(至少短期内不可能),所以找工作才是下一步应该要做的事情,这样才能让写书和做开源项目这些事变得可持续。

我会在拿到第一个 offer 的时候开下面的薯片庆祝!

P.S. 这盒薯片的过期时间是 2022 年 7 月 14 日。两个星期以来,它已经陪伴我经历四场面试,收到一封拒信。


2021/12/29 Update:

终于拿到了 offer,撒花!开吃!

拍抖音不尴尬

今晚出去散步,火车经过的时候我举起手机录像。身边有几个路人走过来,这让我感觉尴尬,像是手机烫手。但是当走过的大妈对身边的同伴说——“拍抖音的”,我一下就释然了。

想起以前经常拿着相机到处拍。骑着自行车在各种村子里闲逛,拍那些不一样的房子,破旧的,畸形的,门前有着小花园的,墙上写了毛笔字的。拍那些在门口发呆的老头老太太们。也会在某个城市暴走,拍躺倒在路边的工人(别担心,只是在午睡),破旧的没人注意的角落,旧市场沿街二楼趴在窗户边的孩子。这些时候就会很在意别人的眼光,感觉自己像是一个在人流里停下,让时间变慢的那个人;或者是升旗时迟到,需要穿过所有的人走到第一排的人。担心被被拍摄的人发现,也担心被路人发现。

一定是这种尴尬心理阻碍了我成为一个青年摄影家或是纪录片导演。当然,也可能罪魁祸首是高二偷走我装满照片的 U 盘的凶手,毕竟我青年时代的伟大作品都在那个 U 盘里 :D。

而有的人就可以完全做到不在意别人的眼光。在南京的时候,有一次步行去超市,在路上看到前面的人举着手机走路,走着走着就停住了,走过很远回过头看他还在那里,仿佛被人凭空点了穴一样。不知道他在那里站了多久,会不会一抬头发现天已经黑了。很显然,他有自己的世界和宇宙。我很羡慕。

我想这种不在意别人目光的能力是需要培养的。这样的锻炼我不常有,还记得我做的最大胆的一次。那是和女朋友刚刚认识的时候。那一天是 8 7 日,之所以记得那么清楚,因为我们把这一天叫做哑巴日,不过后来就慢慢丢失了这个传统。那天我们在车站见了面,见面之后不知道为什么我们都没有说话,就看着对方傻笑。于是我提议今天作为哑巴日,谁都不许说话,谁先说话就算谁输。我们到了肯德基,面对面坐着,不说话,憋着笑比划手势。然后我决定迎接更大的挑战,所以主动去点餐,对着菜单指着一个汉堡,比出「2」的手势,店员错愕后点头并且投来关切的眼神。我们在沉默中吃完了汉堡。不过那天谁先说了话我已经记不起来了。

和捕蛇者说聊聊自由职业

上一次参加捕蛇者说播客不仅聊了 Flask 和开源(见《和捕蛇者说聊聊 Flask 2.0》),也聊了自由职业。这个话题分为上下集,上集是和 Flask 那一期一起录的,下集对相关话题作了更深入和完善的补充。欢迎收听,希望可以给你带来一些启发和帮助:

算起来今年是我自由职业第五年了,尝试找过几次工作,但都没有成功,最终还是从毕业一直待业到现在。除了播客里聊到的内容,关于自由职业相关的话题我还有很多想法,有时间会写一篇文章来总结这几年的经历。

最后,感谢 laike9m 邀请,也感谢捕蛇者说给我机会学习和练习剪辑播客(感谢 laixintao 教给我很多剪辑技巧)。这三期播客的录制、剪辑(还有学习剪辑)加上写 show notes 以及两篇分享文章,一共花费了 64 个小时多一点。在第三期时,主播们还把播客后台权限开放给我,让我自己完成了播客的上架和发布。总之是一次非常有趣的体验。欢迎访问捕蛇者说的主页和 Twitter 了解关于它的更多信息。

中场休息

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

漫天的杨絮一飘完,天气就开始热了起来。西边的房间到下午就会被午后的太阳晒成桑拿房,所以我又搬回了冬天会被冻得头疼的东边的房间。院子外的蔷薇花开得非常鲜艳(不过下图里花已经快要谢了),我帮忙授粉的猕猴桃也结了非常多的果子,另外我还有幸参与了(一点点)今年的出蒜、种花生和种山芋活动。

blank

这半年来,家里的饮水机、洗衣机、楼下的莲蓬头和电视、厨房的灯泡都接连坏掉。因为爸不在家,所以我只好买了新的饮水机,但是洗衣机还是扔在一边,只能用来脱水。前段时间终于得知爸要回来了,我就去打印了一个欢迎横幅(「热烈欢迎李**同志回家!」),在院子里提前一周挂上,邻居们还以为我要结婚了。

虽然家人希望我有一个稳定的工作,但我如果可以一年写一本书,那就可以生活的很好不用找工作(基于暂时不结婚没孩子不买房和车的前提)。糟糕的是,我已经在一本书上耗了两年了,我想我可以给自己起一个新的笔名——「拖稿李天王」。两年里,大多数时间都偏离了写作这个主线,把精力过多的分散在了能够获得短期回馈的事情上,比如外包项目、演讲和开源。

我决定明天休息一天 ,然后开始专注写作。接下来的目标是:十月前完成《Python Web API 设计与开发》初稿,十月底交稿。

南京再见!

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

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

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

顺便提一句,去了灵谷寺景区发现灵谷寺是最没意思的地方(看到崭新的门面和门楹上挂的标语就没有进去的兴趣了),而无量殿(国民革命军阵亡将士祭堂)、淞沪会战阵亡将士纪念碑和灵谷塔(国民革命军阵亡将士纪念塔)才是参观的重点。我在爬上灵谷塔这一天(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 第一个闪电演讲专场,但也有可能是最后一个。看了今年的宣传文章,啊,乌鸦嘴!演讲时间又变回了无聊的十分钟快速演讲模式,很显然我的设想「闪电演讲开放给现场听众,随便报名,投票决定要听哪个」也没成。我在想,假如闪电演讲继续像去年那样(乱搞),也许就可以通过活泼的演讲形式和外界宣传来吸引到气质相符的演讲和演讲者,进一步影响到参会者,最终让整个大会轻松活泼一点。

blank

如果你对这个不甚完美的最后一次 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 左右。

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

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

这也就意味着:

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

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

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