我和我学生背单词的7年岁月

有一天,我们决定开始背单词的这个游戏。之所以称为游戏,是因为要有奖励。

因为时间久远,日志回溯困难,微信聊天记录、红包记录、图片,都需要翻很久。记录到头了,从上下文看还不是开头。再转换成其他方法再回溯。经过艰难查询,找到了起始那一天。

这是我查到的咱们单词打卡游戏的第一次红包,那么,游戏的开始应该是2017年10月6日。奇怪,这天是假期,怎么会聚餐呢(后来换手机查到了,第一天是2017年9月1日)。不过,我确定记得是从某次聚餐开始的。印象里,是个周五的组会。我们在餐桌上聊起来背单词的事,不止一位同学正在用百词斩、扇背、墨墨背单词。谁提议的,忘了,我们确定以下规则。

每天背单词,在群里打卡。在这一周结束的时间,由教师我在群里发红包。如果参与者在本周没有任何一天遗漏,可以领红包。如果有任何一天遗漏,要在第二天在群里发红包。

使用的背单词软件不限,每天背多少单词不限,选哪本教材不限。

组会在以后的岁月换过不止一次时间,并不总是周五。能记得定下契约的时间是周五,因为我发红包的时间总是周五。这是我们每一周开始的日子,在这一天对上一周背单词回顾总结。

当时是不是所有同学都参加了?不记得了,应该是大部分。因为每天群里打卡蔚为壮观。最初我们都经常在午夜以前突然群体出动,纷纷打卡。也有人在午夜过后把第二天的卡先打出来。

既然是游戏,那参加是自愿的,绝不强迫,也不会对不参加的同学有负面评价。字面意思,并非阴阳。后来的同学,开始的几个届,研究生进组以后我会讲一下这个游戏,询问是否加入。再后来,发现师兄师姐们早就给新生讲完了,我仅需要按人数把红包的数量增加了就行。

为什么红包的数量是增加而不是增减?因为游戏并无退出机制,并且老学生在毕业以后,仍然在打卡领红包的也有。有的参与者从最初入盟就已经是毕业了的老学生。

起初,同学们加入时已经背了十几天,几十天。又一年,后来的新生加入时就已经有几百天的。

最近的记录是1626天,2916天,2118天。从最初参加游戏的元老,以及后来逐渐加入的各位新进,我们已经共渡2402天合343个星期。

在这其间,有过本组以外的老师、同学、前辈、同事觉得这种形式非常好,希望加入。我都拒绝了,因为我们打卡使用的是研究生的讨论群,每天怼人被怼不断,不足为外人道也。

XL同学有个亲戚群,组织了一群小孩天天英语打卡,他发红包鼓励。很多年过去,成果显著,有优秀人才成长起来了。

7年来,我们的打卡也在逐渐变化。过一了段时间,有同学不向群里打卡了,把打卡移到了朋友圈。再后来,看不到有的同学在任何地方打卡,但是仍领红包,一问,他能提供打卡满勤的截图。只有G同学明确说过,我不玩了。我说那么你差多少星期的打卡,得我们红包啊。他说,想想怎么办。后来不知道想得如何了,不过他送了我们一个大书架子,缓解了我们把书堆得到处都是的问题。也许这就是想的结果,不过他没有明确声明。

与G同学相比,其他同学的处理更为隐含。又过了很久,有的同学既不打卡,也没见领红包。在这个游戏里,失去了他/她的消息。

就这样一周一周过去了。我已经不关心大家的状态了,只是按当初的规则或者说契约执行。每周五发红包,然后自己领了。如果我偶尔差一天,就只发红包,不领。今年1月份,Z同学说,老师你别发红包了,红包只有咱俩在领。我说奇怪啊,没有人说退出游戏。有同学晒了打卡的记录,但是没有同学晒领红包的记录。

本周五,因为忙于俗世,我忘了发红包。回顾检点了几次红包,发现只有我一个人在领。这就是成年人的拒绝吧。我当年还相信吐口吐沫就是钉,后来这些年才知道大家可能对契约的记忆差异很大。当初我们没有立有文字,现今想拿着条款找同学们核对已不可行。

在群里宣布:以后不发红包了,游戏结束,感谢陪伴。

人类动机的表达经常含糊隐晦,再加上经常诸多掩饰,实在难以猜测。大家可能觉得心有灵犀、显然如此、不必多说、何必言明,因此渐行渐远、突然消失,按习俗,不宜深切追究,唐突询问。猜测无端,只能由他去吧。

好在,我们总是能不断换成新的身份继续相处。当年的学生,毕业后变成老学生。有的成为师弟师妹,有的成为同事,有的同为计算机领域的工程师。还有的会成为上级。也有的虽然我们从事的领域完全不同,也并不影响就共同知道的话题聊天扯淡。

以上,就是对我和我学生背单词7年岁月的总结。

AI的姓氏:与长春市十一高中学校同学的对谈

2024年3月29日,在长春市十一高中做科普讲座《AI的姓氏:与长春市十一高中学校同学的对谈》。以下是PPT,以及现场没有完整播放的suno作曲和演唱伴奏的歌曲。

已知错误:

1. 现场的同学不只高一的,还有高二的同学。现场同学已经纠正过了,在PPT中保留了这一错误。

所见:从冬天路滑到春天的公交车

1. 冬天路滑

看我拄棍,一位大妈说,"这天你登山?"

我说,"就是防摔。"

我走得急匆匆的,时速7公里左右,所以只来得及对话一句。

看我跑步赶公交,一位大爷说,"别摔着。"

怕摔着我头都没敢抬,想点个赞也没来得及。

2. 雕塑,孔子和苏格拉底

校园里的雕塑,孔子和苏格拉底分别携众弟子各据一方。孔子的学生,有一人鞠躬,另有一人面对教师,一人对着教师弹唱,两人交头接耳。苏格拉底(?)的学生,没有一个看老师的,看看都干啥呢,两两聊天的,自己看书的,站没站相佝偻着,靠椅子扶手的。那个看书的,脚都拿上来了,是不是抠脚丫子呐,啊?

学生们距离教师全两米以上,都偏好后排座位。这两位老师啊,唉。

3. 买葱

前一阵某天是个节,冬至吧,要包饺子,去买葱。老板娘正讨论吉林和缅甸电信诈骗间的关系,"不然他没事到咱们这儿来?你要大葱还是小葱?"

"不知道啊。"

"是不是包饺子?小葱,对,就那么一把就够了。四块。"

扫码付款。

"你是不是给了10块。四块,哪有那么贵。"

找了我现金。

我说,"你要不告诉我都不知道。"

"那我多亏心呐。"

4. 大吉普

一辆特别高大的白色大吉普车向左停在路边,没熄火,女司机下车,敞着车门。

前面不远的洗车小伙可能做了什么手势,她喊回去“不洗车!”

对面又喊了一句什么,轿车声音大我听不清。司机喊“停这咋地?”

这时我走得近些了,隐约小伙的声音,“警察贴条,这几天好几个了”

“我乐意!”她走向路边的店铺,车门和引擎仍然开着。

5. 春天,公交车

等公交车。

啪一声,是个瓶盖扔到马路上。银行保安大哥扭头看。一个姑娘的背影,挑染短发,蓝白牛仔裤,一只手扔瓶盖还没收回来,另一只手举起小半瓶饮料往嘴上凑。吨吨吨。啪踏,瓶子甩到马路牙子上,剩的底儿溅出来。头也不回,义无反顾,潇洒得像电影里向火药库甩出打火机的特工。全程动作行云流水,人已经绕过公交站点消失了,保安大哥好像还在犹豫要不要喊她。

一个胖小孩,"打车吧,这得等到什么时候"咬字很清晰而奇怪,哪里的口音呢,听不出来。"你出钱?"回应的是爷爷吧。奶奶说,"你买的……也养不活啊,现在还不是时候。等六月……我会在院子里养,不会在屋里养。"小胖子一个劲重复"有卖的有卖的有卖的",也不知道是在反对"不是时候,养不活"还是再重申诉求。

等了六分钟,公交车到了,上车。

坐对面的一位女士特别娇滴滴地语音,像是用鼻子说话:妈我跟你说我太厉害了。有个人特别气人,居然……我曝光他让大家出来谴责,才知道他……你说我是不是特别厉害?

一个小伙梳着马尾坐我旁边,一声不响地看着语音的女生,好像藏着笑意。

路过的公交站点广告是结婚通告,人名像真的。最近看到还有在报纸上通报结婚的宣传广告。感觉像鲁迅李大钊的时代。

公交车上有人打呼噜,但是都睁着眼睛,谁呢。大家你瞅我我瞅你。谁在逗乐呢吗?要下车时才找到,一位老爷子带个口罩,埋头在别人身后,刚刚挡住了。

下车。人来人往,有穿羽绒服的,有穿光腿神器的。有的走得急匆匆的,有的扭成各种姿势拍照,拍照的比被拍的扭得更投入。树叶还一片也没有,冰雕和积雪也不见了,只有黄草和枯叶。路边蘑菇雕塑之下积了一摊水。春天要来了。

仓鼠的速度

养了一只熊类仓鼠,每天晚上疯狂跑轮。据我熬夜的时候观察,长达三四个小时连续不断。轮子有轻轻的嗡嗡声,小爪子打在跑轮的内壁上,嗒嗒嗒嗒。据二猫查资料,仓鼠每天要跑8.4公里,不然不舒服。据说有人录了视频,他家仓鼠跑了5个多小时。

那么,时速多少呢?我想实测一下。

1. 技术方案的逐步退化

最初考虑,在跑轮上贴张小纸片,当跑轮带动小纸片切断光源时,红外传感器检测到转了一圈。用树莓派,或者用 arduino 记录红外传感器的信号,然后显示在LED上并且上传到手机APP或者小程序上。最后一步,数据由树莓派上推到服务器,然后从APP或小程序周期下拉。

又考虑,这得把树莓派翻出来,arduino放哪了?得在PC机上安装开发环境,好几个G,只能干这个,没啥别的用处。

要不,不用树莓派或arduino,换成PC机?

红外传感器上行咋接PC?把红外传感器换成摄像头?那么,需要 OpenCV,也许训练AI识别小纸片?

摄像头,手机就有……

总之,从捕捉跑轮转动这个动机出发,考虑用手机,手动,一次性的解决方案。如此对付。

2.速度

求速度的话,可以从视频信号中抽取出仓鼠腿的移动。这样 步频 可以从视频中观察 每秒小腿儿倒腾的次数 得到,步幅,可以在整理箱或跑轮上粘贴坐标纸作为背景。但是如果亲眼看到仓鼠跑轮,就会放弃这个想法。因为小腿倒腾得实在太快了,在频闪50Hz的日光灯下看不太清楚。通过手机的摄像头看,有虚影。仓鼠无影脚。

所以,准备采用上节中提到的通过跑轮间接测量。

(1)跑一圈的位移

跑轮直径标称25cm。我把手掌张开比划了一下作为交叉验证,大致差不多。根据圆的周长公式可以求得周长为 25*3.14=78.5cm。仓鼠每驱动跑轮转一周,虽然事实上并无位移,简称 跑一圈,行进距离计为78.5cm。以下为跑轮大致侧视角度,直尺用于作为参照物,其量程不够测量25厘米。

(2)跑轮转速 跑轮每转一圈所花费时间的测量

在跑轮的外圈表面上用马克笔做明显标记,称为 mark。我打了3个加号“+”,排成一行,与跑轮的轴平行。以下为跑轮的顶视角度。

把手机摄像头近距离对准mark,开启视频录制功能。在仓鼠奔跑的中间阶段,速度较为稳定时,开始录制,十几秒后停止。保存视频。以上,录制多次得到多个视频文件。

把上述视频用 anlink 传到 PC 机,以下在PC机上操作。

用视频编辑工具 shotcut 打开视频文件中的一个。

在filters 中 选择 timer 加入。之所以选用这个过滤器的原因,是因为 shotcut默认的时间戳为 xx:yy:zz 格式,其中最后一个冒号后为30进制,而不是60进制,需要换算。我在最初使用的时间不知道那是30进制,算了几次时间感觉不对,逐帧查看时间戳才找到原因。

逐帧向后翻,找到如下图所示,mark刚刚显露出来的时候。

在 output 的 track 上打标记。

同时,由于 filter | timer 的效果,时间戳会显示在视频的当前帧上。

为每个要计时的时刻按如上方法打标记。把所有标记抄写到 excel 中,求出每两个时间戳的时间差。

求时间差的平均值 0.895333333 秒。

以上表明,仓鼠跑轮周圈0.9秒左右。不到1秒,25厘米,一“拿”多长的的跑轮,就要转一圈。快不快?

(3)速度

根据上述数据 周长 78.5cm,转速 0.90秒左右,求得仓鼠速度为

=3.14*0.25/0.895333333=0.876768429 米/秒。约每秒跑将近1米。

合 3.156366345公里/小时。比我快速徒步6公里/小时或5公里/小时略慢,比我漫步时还要快一些。现在如果持续三四个小时,我不知道自己能不能走到3公里/小时这么快。

(4)关于精度和误差的讨论

我最担心的是测量精度不够,特别是亲眼看到仓鼠的小腿跑出虚影的时候。在跑轮上与在地面上不同,仓鼠的脚没有与地面保持相对静止的那个时间段,脚一直在随着跑轮的转动而移动,所以更难测量。当然,在地面上有另外的困难,可能需要镜头拉远,才能看到仓鼠的脚不止一次落地。

先做了个可行性的技术原型,用手机摄像头在暗光下,人手动转跑轮,速度差不多与仓鼠转得在相同数量级,能够明显看到mark标记在镜头里出现。那么,差不多能测出来。

大约1秒钟跑轮转1圈。1秒钟,手机视频采样30帧,因此测量的时间间隔,即时间分辨率为 1/30 约0.033秒。上述测得的每圈花费时间0.90秒左右,考虑到时间分辨率,应为0.90-0.03~0.90+0.03,即0.87秒~0.93秒。

以上是对测量精度的考虑。

测量误差我的考虑有问题。从跑轮正上方拍摄,计时的时机是mark出现在边缘,还是mark到达正中间?mark在正中间附近时,线速度在视野中投影的值 比 在边缘要 大。因此,相同的mark位移误差时,mark在正中间对应的时间误差更小。所以mark在正中间可以测得更精确的时刻。但是我测量的时间没有考虑到这一点。后来又考虑到,多次测量取平均值,在累加的过程中会把这一误差消除掉,所以保留了这一方案。

(5)小结

仓鼠奔跑每秒跑将近1米。

2.步频

仓鼠跑起来嗒嗒嗒,每秒多少步呢?求步频。想起来我练跑步的时候,tiger和zhumao分别告诉我,不要那么大的步子,对心脏压力太大,小步倒腾,倒腾的频率要高。仓鼠深得其中精髓。

(1)原理

观看仓鼠奔跑侧面的视频,同时听声音,可以知道仓鼠的两只前脚仅负责支撑,并且产生的声音较小;仓鼠两条后腿后蹬是主要动力,并且会产生“嗒”的一声。

我们测量这些嗒声音之间的时间间隔。

(2)音频

用 ffmpeg 把上述视频转为 mp3格式。

>ffmpeg -i 1.mp4 1.mp3

(3)测量嗒声的时间间隔

用 audacity 打开得到的mp3文件。

上图中,较亮颜色为选中的区段,3个红色箭头所指的,就是发出嗒嗒声的位置。因为声音轻微,所以看起来振幅不明显。上图中右下角是来自窗口下边缘的截图,需要注意的是选中部分时长为0.294秒。

可以看出,大约0.3秒,嗒声3次。即每0.1秒跑出一步。

为了现象更明显,对声音做 normalize ,得到下图。大约0.5秒,共5次踏步。

能够看出/听出,在每次嗒的时候,波形较密集地穿越了零点,即频率较高。转换成频谱可以看到,此处有几个与其他部分相比频率较高的峰。

再看一段,0.3秒左右3次踏步。

(4)小结

每0.1秒跑出1步,合每秒10步。

3.步幅

步幅可以用 速度/步频 大致算出。

0.9 (米/秒) / 10(步/秒) = 0.09米/步

9厘米!每步9厘米这么大的步子。耗子全身抻直了大约12厘米也没有多长啊,一步这么远么?

考虑到仓鼠行动时在跑轮上,而不是在地面上。所以,此时的步幅为每次跨步跑轮转过的边缘长度长,与地面上每两次跨步间的地面距离不同。人类在跑步机上和在地面上的跨步、步频,还有能耗,也是不同的。由于在跑步机上不需要推动身体,仅需要每步保持抬起身体,据说更容易一些。不过,仓鼠确实向身后以线速度推动了滚轮,转动惯量转换为线速度再与仓鼠的质量相比,不知道哪个更大,差多少。

4. 总结

周长接近1米的跑轮,仓鼠每1秒钟转1圈,这1秒钟1圈仅10步,每条后腿迈步5步。

无论速度1米/秒、步频10步/秒、步幅10厘米/步,都远比我原以为的要厉害。真快啊!每天看它跑个不停,我都觉得人生美好、积极向上、阳光开朗,它可真是享受生活。