如果你现在访问我的 YouTube 主页的话,会发现一个 24/7 Live 的音乐直播(如果 VPS 上的程序还没炸的话),这就是一直想做的 fin.fm 的简陋版本了。大三开始一直想做一个个人的 24/7 个人电台,但没有时间真正做起来,这之间 Noon Pacific 都已经成为一个厂牌,YouTube 上借助直播功能的 Study/Relax radio 也是各种爆炸式出现,我也想办法终于试验性地跑起来了一个,姑且当作给自己的生日礼物吧。
之前想用 OBS + VNC 直接直播桌面,后来发现 VPS 没有显卡是不支持 OBS Studio 的,因此作罢,用了 Live Stream Radio 仓库。
2019.2.25
改了下 Nginx 配置,现在访问博客的 http:// 会 301 到 https:// 版本了,和 fincher.im 的行为一致。
在 Cee 的帮助下做了一份新的单页简历:网页版 + PDF。
事情没办成几个,有点垂头丧气。
花了一小会用之前那套 NSWindow 的办法写了一个半透明的 Demo,只有一个 DVD Logo 在屏幕里弹跳:
2019.2.9
和猫猫聊最近上映的《流浪地球》电影,给猫猫推荐了几本之前自己看过的小说,顺便翻出来了 07 年科幻大会的纪念册。纪念册是我大表姐当时在成都帮我带的。
我表姐是真的铁杆科幻迷,现在她家应该还有 02 年左右的科幻世界杂志,以前也经常借我科幻书看。后来我去读寄宿制学校,就渐渐不再看科幻了,而表姐作为家里这一辈的长女,自然压力也大很多,我作为排行最小的男生,大家庭里自然有允许我随意出去闯荡的共识,但在我表姐身上,就会有很多琐事和赡养的责任压着,也许因此到最后她回到了家乡定居结婚。小城市自然眼界受限,很久以前表姐经常追美剧,还带我看 Glee,现在自然时间没有以前多了。
很久之前我算是个原教旨主义的小科幻迷,对刘慈欣和三体系列火起来之后冒出来的各种妖魔鬼怪感到恶心,颇有点像是爆红的小众乐队的粉丝的心态,而后来我觉得原教旨是很难区分界限的,而对于本土科幻生态变好中出来的奇怪事物心态也不用如此严苛,我也没必要因为先看过什么就让自己显得高人一等。大学这几年我也在很多事情上表现出了类似的反省,加上我开始信奉时间都应该用于创造,因此最后我到了另外一个极端的态度,就是我几乎不表态,我觉得主动发声毫无意义,在朋友圈和推特上也不怎么说话了,有适合说出来的事情我就在博客上写写,有人想来看就来看,我也不会主动让别人接受我的主见。但最近半年我个人经历的事情之后,再想起来表姐之前的那些科幻杂志,我觉得我还有这么一个奢侈的接受外界事物和评论的机会,而很多人也许都没有我这样的闲时间去折腾什么服务器,Netflix 和 Youtube 或者在一个对新观念开放的城市呆着,因为现实的引力实在是太重了,而科幻这种东西怕是最脱离现实的一件事了。到最后,我也没必要对自己那么严苛,倒是可以对外界的表态更有主见一些。
2019.2.8
小学的时候在素描老师家学画画,在门口削铅笔时一个高中或者大学模样的女生上来探头看老师不在又走了,过会老师从屋内出来问我发生了什么,我说:“有个女的走了”。素描老师笑着说,“不要说女的,要说女生”。
2019.1.30
成绩出来了,没什么大问题的话就能结束延期毕业了,但是据说双证要等六月份才能拿,因此只好等着。如果真的能有什么文书证明我六月份才算毕业,我倒是可以今年再去投一次 WWDC Scholarship,项目功能我都想好了。
考完在家等待的这几天去了次北京见朋友们,去了次合肥见猫猫和高中同学。然后感冒了在家闷头打了几天游戏,主要在打 They are billions 和皇牌空战 7。答应朋友的一个项目到现在也没动工太多,自己的项目也都废着。就在下午还收到一封邮件,当前版本的 Google Places SDK 已经被宣布 deprecated,Skyline 2.0 在使用的 Place Picker 特性也一同废弃,暂时从文档来看谷歌还没有提供一个价格合理且方便的替代 API。虽然 Skyline 2.0 在编写的时候留了个心眼做了一个基于 Mapbox API 的 fallback,但这么一搞我真的头都要大了,而且新版 Places SDK 的计费简直就是抢钱,而我真正想花钱使用的 Google Maps Unity SDK 又不开放给独立开发者和小公司使用。
才考完学校的科目没多久,我就又要为面试而复习准备了。朋友帮我内推的岗位是 iOS 的,而我这一年间除了 WWDC Scholarship 项目貌似并没有写太多 iOS 相关的内容,反而是都在忙乎着写 Android,Unity,Vuejs 的应用,因此现在又要赶着看 iOS。
2019.1.18
考完了,也回到了家,在长沙的期间老师对我也多有关照,希望这次能一把过了。
把 Vortex 投递到了 Product Hunt 上,但这次运气不太好的是没有被归类到默认列表里,因此得到的 vote 少的可怜,结合之前提交的几个作品一起看,感觉 PH 对于移动软件和游戏类默认的权重会低很多,也不会显示在主页列表上。
考完了自然开始算计后面要做的事情,原本想先打上一两天游戏放松下,但是盘点了下自己的好几个项目都拖太久了:
- Skyline
- 目前软件部分的位置更新代码是基于 GMS 的位置订阅 + RxJava2 来做的,后来写 Vortex 的时候用了 WorkManager,感觉这种后台执行的效果更好也更灵活一些,因此打算迁移到 WorkManager 上
- 2.0 的官网目前的 Changelog 页面还是假的,我还在想这个页面是跳转到之前用户指南页面上比较好还是继续用 vue.js 和 markdown 解析器实现一个手动的生成器(即整个 changelog 就是一个 markdown 纯文本,使用
---
操作符来分隔每个 release,虽然用户端访问时 CPU 会高一点但是方便我自己不需要服务器存这些结构数据了) - 2.0 的官网目前的 Presents 页面二维码功能能用了,但三维查看器还没做,这部分其实就是把 1.0 的 three.js 官网移植过来,之前的 1.0 主要内容就是写了一个基于 three.js 的运行时的 terrain mesh 生成器,然后基于 render texture 做了一个手机模型的 mockup,屏幕贴图的内容动态从地形相机更新。2.0 在此基础主要的改进会是:1)会基于 url 的坐标参数动态生成 2)提供平板和手机两个手机 mockup 随时切换。
- Unity 的一些收尾问题,比如到目前 Present 状态下手势都是半禁用的,我需要在 Mapbox 之外自己再实现一个手势识别的逻辑接管这类动态的需求。
- 上次拆包 B-Reel 的 Pixel 3 自带动态壁纸,发现他们的 wallpaper.xml 里面有一个神奇的字段:
androidprv:supportsAmbientMode="true"
,关于这个 Ambient Mode 的文档近乎没有,只有 AOSP 的代码里能看出一点点相关的解释,即会在 Always On Display 的前几分钟展示动态壁纸,然后转为全黑的默认状态。我后来在 Vortex 里面也加了这个字段,感觉还挺棒,但 Vortex 是一个对解锁(UserPresent)事件不敏感的动态壁纸,而 Skyline 本身在这块就有一些相应的解锁动画,我不确定开启 Ambient Mode 后会不会对之前的解锁判断造成干扰,所以真要实现进去还是要费一些功夫。
- Flint
- 目前来看要做全平台同步最好的办法还是 Realm + Dropbox,这块之前只写了 iOS 的部分
- 之前用的邮件收发库不支持 Gmail 验证,因此需要做一些适配
- Shader Store
- 也算上架三个动态壁纸了(Android 俩 Windows 一个),现在想做一个一劳永逸的全平台动态壁纸库,服务器只存文本格式的 shader 文件,不需要其他的素材,mesh 尽量都在 shader 内过程生成(比如用 SDF)
- 客户端在展示的时候尽量调用手机能用的传感器传入 shader 的 uniform 里(比如 Android 上可以传入启动器的页面页码,电量,天气温度,陀螺仪,Windows / Mac 上可以传入鼠标坐标和网速之类),然后 shader 依据当前平台提供的可用数据做一些可视化
- iOS 端只有生成 live photo 的功能,毕竟 iOS 太受限了
- 为什么叫 Store 呢,因为和一个朋友聊了下后觉得这个东西也许可以做成类似于主题商店一样的东西
- Epoch
- 总感觉地形 Shader 太费资源了,但是目前自己又不会写,因此只能考虑在 overdraw 上下手把星球背面的 Mesh 找个办法在运行时 cull 掉,最近在看基于 SRP 的运行时解决方案
以及之前的博客里面提到过 Google Fi 送了一个 Google Photo Book 的兑换码,前几天终于寄到家了。照片集的名字填的是 Year of Pilgrimage,希望以后也能用这个名字做一款自传性质的游戏出来。
2019.1.11
又回到了长沙,如果考试过了延期毕业也就能结束了。
刚刚知道 Jason Mraz 今年五月份在上海有演唱会,然后 Yung Bae 貌似三月份北京上海深圳也有,再加上我已经买了五月份 Unite Shanghai 技术大会的票,总体感觉上海是个不错的地方,既然没办法密集地请假去上海不如直接在上海工作,因此来年工作估计主要往上海偏移看看了。
总体来说一月份到目前为止挺乱的,十二月不满股权最终分配和公司交涉未果,很不爽一月初办了手续就走了,然后在家复习考试内容,同时自己还有几个项目想做,受制于复习所以没动。然后中间也有朋友在和我聊外包和内推机会,我也很感激。面试也是要准备的,特别是我这种搭积木为特长的程序员,其实很难说出来到底自己的能力在哪里,而真的要刷算法这种硬通货也要等下半月了。
总的来说我的这三年就是不停地折腾,一时风光一时难过,一时高兴一时消沉,基本上每半年一个来回,倒也挺有趣的。
2018
想打开后台写一篇 18 年的总结,然后发现 17 年的还留在草稿里面,过的也真是快啊。不过再看 17 年的很多担心的确也都解决了,因此倒也无需担心未来的很多事情。
1 月 | 拿到了百度的离职证明。Skyline 在 Google Play Store 应用总榜前五呆了一周,赚了 1.5 万刀。
2 月 | 处理售后,一直在修 Skyline 的 bug。被拉到一个区块链的项目里面莫名其妙地做了一会 Logo 和网页设计。知道了要延期毕业的消息。
3 月 | 回学校,和同学做一个学校的外包。
4 月 | 拍毕业照。做毕设。宜家 hackathon 第一名。和学校关于分数的事情扯皮。学校外包做的一言难尽。获得了 WWDC 奖学金。
5 月 | 面签被审查。每天都在刷大使馆结果。和同学继续做学校外包。湖南大学 Hackathon 第二名。
6 月 | 答辩。院级优秀毕设。又接了一个外包。上了 61 的 interview。
7 月 | 正式延期毕业。去上海玩。去北京看了 FKJ 的演奏会。
8 月 | 在家。和猫猫去三亚玩。
9 月 | 一个让所有人都不开心的事情。毁约腾讯校招 offer。
10 月 | 来北京加入新公司。
11 月 | 去洛杉矶,咕咕咕了丁老板的设计聚会。碰到了加州山火,在宾馆看了一周的火灾报道。在写 Skyline 2.0。见到了 Cee。黑五购物了一下。
12 月 | 参加陈叔婚礼。新公司进入了 YC 19W。回长沙一趟处理学校的事情。和猫猫一起去了上海看展,然后也去 Unity 上海总部参加了活动。因为股权分配问题从新公司离开了。
2018.12.23
Vortex 上架了。Vortex 是一个数据驱动的漩涡粒子动态壁纸,数据从 Google Awareness API 拿到,影响粒子的速度,颜色和噪声参数等。上架了一天后获得了些好评,还是很开心的,感觉到了一些意义。
不出意外的话接下来一个月要各地到处跑了,还好之前买了一个和 Cee 在 RavenTech 时候背的一样的大书包,如果想的话甚至能把 15 寸的外星人塞进去,基本上短途旅行是不需要再带我那个 28 寸的箱子了。缺点是重,冬天还穿的比较多的话背起来就比较难受了。
最近花钱还比较多,考虑把之前没写完的 Flint 自动记账软件写了,沿用之前的读取消费邮件/短信做匹配记账的逻辑,但是也想顺便学习下机器学习相关的内容,后期把正则匹配给替换掉。
Google Fi 前几天送了一个 Google Photos 故事书的促销码,最后我把这几年在路上拍的景色放了进去,做了一本书准备转运给我爸妈,考虑是这几年我在路上见到的许多东西都没有和他们说过或者看过,有一本照片集以后也好对照着和他们讲述我这几年的生活大体是怎样的,而我是一直觉得这种消息上的同步是很有必要的,特别是经历了创业公司的一些事情,我觉得主动的消息同步更是一种比较好的做法。再之,谁不喜欢惊喜呢。
2018.12.14
事情颇多,个人的大项目一个都没来得及做,唯一做出来的是把之前写 Skyline 的时候验证想法的几个 Playground 套上了统一的 Skyline 2.0 风格 UI。水墨画风格的叫 Ink,星空长时曝光风格的叫 Vortex,这些配色还是挺可爱的。
好久没写自己听了什么了,最近值得一提的也就是 Ups & Downs 这首,之前在 Soulection 第 369 期里面听到过。算起来加上上个月的话也是看了几部电影,在电影院看了 Bohemian Rhapsody, 在小龙推荐下看了 Public Enemies 和 Lord Of War,然后重新看了遍 War Dogs,坐飞机的时候又重新看了十一/十三罗汉。这里面 War Dogs 和 Lord Of War 都是军火贩题材的电影,也是某天晚上和大家一起连着看的。我一直挺喜欢 War Dogs 这种放荡不羁的剧情,像是永远不会结束的旅行一样。时间一长我就发觉自己总是在复习之前的电影,每次我妈在发现我在家看《社交网络》或者《了不起的盖茨比》都会说重复看没意思,但对于我来说倒是挺乐在其中。
最近和某家公司的 Unity Leader 聊天说到 Unity 里架构设计的问题,我说自己就没怎么上过软件设计课,他说大学的时候没几个人会真正明白软件设计,真正的理解都是做项目踩坑理解出来的,做几个最后没办法维护的软件后自然就能真正明白当时软件设计课的内容。这个我倒是感触挺深的,毕竟大学初期写 iOS 外包怎么都写不死有大概率是因为 iOS 的 API 设计本身就足够周到同时也架构上避免了新手的错误,接触了 Unity 和 Android 编程后才发现一个写出后期无法维护的项目是一个多么容易的事情,然后自己就会重写,慢慢地让软件足够有条理地跑起来,对特定平台的编程模式也会有所见解。所以总的来说和看电影一样:其实写的平台和看的电影都没变,变的是自己罢了。软件架构和人物剧情也许没那么深刻,但自己的经历反射在上面,就让自己觉得历久弥新了。