「2016 与我的数字生活」年度征文入围作品
今年,我们在 2016 年度盘点 中举办了一次大型年度征文活动,鼓励大家围绕「数字生活」为主题,回顾刚刚过去的 2016 年。我们给予最开放的选题、最自由的投稿方式、有史以来最丰厚的 奖品,以及跨越春节的两个月充足时间,等你参与。你可以 点此查看 活动规则和奖品清单。
本文是「 2016 与我的数字生活」征文活动的第 32 篇入围作品,我们会在两个月的活动期内,不定期从收到的投稿中挑选发布优秀的文章,你可以 点此查看 之前的入围文章。所有经此发布的文章,即为已入围征文活动。本文仅代表作者本人观点,少数派仅对标题和排版略作调整。
每个人的一生,都会有几个对今后的人生影响深远的时间节点,比如高考填志愿的那一天。在志愿表的学校那一栏,我写下「华南理工大学」,但是,是读会计学?还是软件工程?一念之差,会计学成了第一志愿,后来我也如愿被录取了。但接下来的大学四年,我过得心不在焉,那感觉就像在和一个不喜欢的人谈恋爱。
但大学仍然是快乐的——我开始折腾数码产品,从诺基亚 5300 开始,到各主流系统机型都折腾个遍,泡论坛、下载 App、刷机……作为「搞机党」,进阶的道路在我眼前,但我不会写代码。
毕业后,我留在了当时实习的审计事务所,开始朝九晚五上班族的生活。在某些灵光乍现的晚上,我也想过,要不要自学编程呢?教材买了一大摞,但每次学不了几天就放弃了,倒是学会了几种语言的「Hello World」。
在这反反复复的过程中,当然会有自我怀疑——「我是不是根本就不适合做编程」 「现在开始可能太晚了」每当这时候,我的老婆小饭就会甩一颗「知乎牌鸡精」给我「种一棵树最好的时间是十年前,其次是现在」。
2016 年春节,我开始第 N 次重新学习写代码,依然从 Hello World 开始。
人生苦短 我用 Python
看了很多资料后,我发现对于我这样零基础的外行来说,Python 可能是上手的最佳选择:
- 语法简单直白,便于理解学习;
- 有大量开源的第三方包,能用已有方案快速解决问题;
- 学习资料丰富,你遇到的问题很多人也遇到过,只需 Google 一下就有解答;
如果门槛没那么高,就更容易坚持下去。当学会第一种编程语言后,就大致了解了编程的思路,之后再去学其他语言就不会无从下手了。
坚持的动力,来源于真正的需求
大家背英语单词可能有过这样的体验:从第一个单词「abandon」开始,背不了几页就真的abandon(放弃)了,过段时间又重新开始。学代码也是如此,这次我之所以能坚持下来,是因为我遇到了真正的需求。
看了一段时间的《Python 基础教程》之后,我想做个东西练手。正好那时候对现存的 Instagram 第三方存图 App 都不太满意(清晰度低、失败率高、广告烦人等等),于是就自己用 「正则模块」写了个小脚本。
QPython for Android
但这个小脚本只能在我自己的 Android 手机上用,小饭的 iPhone 用不了(当时还不知道 Pythonista 的存在)。那时的我连最「hello world」的 iOS App 也写不出来,于是我想到利用微信公众号的开发者接口,将这个功能在公众号上实现。这就是我的公众号「inskeeper」的由来。
2016 年 3 月 24 日,「inskeeper」上线,我在朋友圈告诉了朋友们,他们成了第一批用户。与 App 不同的是,公众号自带的对话框让我能收到很多来自用户的反馈。
比如,最开始的存图页面就是一张图片而已(因为啥也不会),后来有用户说想拷贝 ins 图片的配文,我就去 W3school 学习 HTML、CSS 做出来一个简单的存图页面,这样就能获取到相关文字。
当知道用户拷贝文字是为了完成翻译,我就继续去 W3school 学习 Javascript、Ajax,利用网易的接口做了个翻译按钮(但由于使用人数太多,免费 API 调用频率在第一天就用超了)没过几天 Instagram 官方也上线了类似的翻译按钮,于是我把翻译功能由按钮改成对话框式翻译,这样既能减少 API 使用次数,还能支持「中译外」。
后台经常有用户问「XXX(通常是明星)的 Instagram 账号你知道吗」,我灵机一动,可以建一个 ins 明星资料库!于是我去 菜鸟教程 学习 SQLite,现在用户只要回复明星的名字,就可以直接查看保存该明星的 Instagram。
我们在「inskeeper」的推文中有一个「今日壁纸」栏目,专门推荐 ins 上的美图博主。但 ins 的图片大多是正方形,经常会有用户留言「图片比例不对,不适合做壁纸」。某天我在朋友圈看到有人发了一张「正方形图片在前,背景高斯模糊」的壁纸,当时就觉得可以直接用 Python 做出这种效果,正好解决了 ins 图片比例不适合做壁纸的问题。
那时候刚好「十一」放假在老家,没带电脑,于是我用手机端的「Pythonista」学习了 Python 的 PIL 模块,开发出 inskeeper 的「自制壁纸」功能。除了上文提到的风格(下图左)之外,还增加了全新的 Expand View 模式(下图右)。
后来为了更好的体验,我将这个壁纸功能单独做成了微信小程序「IN 壁纸」。你可以看到,它的 UI 很简单,图标都是我用 PPT 上的简单几何图形拼接的,因为不会用 Sketch 等工具。这也是我现在需要恶补的一块(UI设计)。
许多个白天和夜晚,我坐在电脑前,一关一关去攻克那些陌生的「怪兽」。是用户不断的需求让我坚持了下来,有那么多人在用我的产品,我想让它变得更好。
随着「inskeeper」的成长,它的用户组成也越来越复杂:技术派、追星族、美图党、文艺青年、设计师……其中追星族这个群体的特点尤其鲜明,于是这个月我为他们开发了一个全新的公众号「ins 爱豆」,实现了之前由于个人号权限问题无法完成的「明星更新 ins,马上通知你」的功能:
当然,由于基础知识不牢,见过的场面少,自学也会走不少弯路:比如最近给「ins 爱豆」做用户数据存储,由于设计上的低级错误,导致访问量稍高一点就 CPU 飙升,折腾了好几天才发现错在哪里。
这些掉进去的坑,也是成长的过程。那些靠 Google 解决不了的超出经验外的问题,如果你周围有一两个程序员朋友可以请教,也许一个关键词的提醒就能豁然开朗。
从数字生活的消费者成为生产者
2016年,因为学习编程,我的生活也发生了很多变化:
做了公众号之后,我开始规律性地写文章:比如某些图像编辑 App(如 Snapseed、VUE)的使用技巧;比如 MacBook、AirPods 的使用体验;比如开发完一个小程序后,对小程序的看法……
我认识了一些志趣相投的朋友,还发现了「少数派」这个地方,也开始在这里分享一些更「少数派」的东西;有一位少数派用户表示我的文章对他有用,还特意发微信红包打赏。看到自己的创造得到别人的肯定,确实是一件开心的事情。
会写代码之后,「搞机」折腾就能玩出更多花样——用乐高 EV3 做的简易延时摄影小车:
用树莓派的和 HomeKit 搭建的,Siri 控制台灯:
如果你也想做这样的台灯,可以参考 JohnHarrod 这篇《智能宿舍搭建 1 | 借助树莓派与 HomeBridge ,将 YeeLight 彩光灯接入 Apple HomeKit》。
工作环境&生产工具
作为一个自由职业者,工作就是在自己家,下图是我的工作台和部分「生产工具」:
以下是我主要使用的设备清单(因为都是比较常见的品牌产品,就不作太多的介绍了):
- MacBook pro 15" with Touchbar 笔记本
- Filco Minila Air 机械键盘
- Magic Trackpad 2 触摸板
- LG 5K UtralFine Diskplay for Mac 显示屏
- Bose Soundlink mini 便携音响
- iPhone 7 plus 手机
- Apple Watch 2 手表
- AirPods 无线耳塞
- AKG K3003 有线耳塞
- iPad Mini4 平板电脑
- LG G5 备用测试机
- Sigma DP2Q 相机
重点推荐一个设备——「紫米」移动电源 + 移动 Wi-Fi 组合,配合运营商的日租卡*套餐,出门在外再也不用担心流量不够用了。
*具体套餐情况,致电运营商咨询,各地套餐情况不同。
PS. 上面的电路板是用 3M 胶把「树莓派 Zero + Wi-Fi 网卡」粘在上面,做成了一个便携 Linux 系统,可以随手练习 Python 等。
最后的一些话
直到现在,偶尔我也会想,如果十年前高考志愿表上的顺序反过来,会怎么样?也许我已经是个很厉害的程序员了?
但「悟以往之不谏,知来者之可追」,庆幸的是,我找到了自己喜欢并擅长的事,并且似乎有越做越好的迹象。2016 年也成为我人生中另一个重要的时间节点。
(如果你喜欢这篇文章,我们鼓励你在文末点赞和评论,这会成为 征文活动 最后评奖的参考之一,你可以 点此查看 之前的入围文章。 )