晚上的时候感觉什么都不想做,于是按照“睡一觉就好”的准则去床上瘫了会。十月的加州开始降温了,开着窗户透着百叶窗能感觉到凉气伸进来,但因为我的房间一直有电脑和显示器在散热,因此倒也不觉得很冷。就这样躺倒了一会,半睡半醒的时候能听到巨大的飞机低空飞过,过了一会又有火车发车的声音。住的离火车站和机场比较近可能就扰民这块比较烦,但反正潜意识里也不是什么要紧的事情,我也就一直没睁开眼,直到我妈一个 FaceTime 打过来,黑暗的房间里电脑手机手表全亮起来响着铃声。我再也没办法坐视不管,只能爬起来按掉,这才想起来因为睡的比以往早,勿扰静音还没打开,然后就觉得口渴。
摸黑喝了点水之后再躺倒,开始睡不着了。得,我心想,又提早睡了会,这下不到两三点肯定睡不着了。于是打开电脑去网站上下单了褪黑素,跟着一起的还有可乐,果汁,鸡肉,鸡蛋和其他琐琐碎碎的东西。然后我就在电脑前面敲这个博客来着,可能发布博客之后再去写写作业,最近作业实在是太多了。
2021.10.2
之前在推上提到过想要打印一本书的想法:
我:有个想法,把个人博客,Twitter 和其他地方的数据全 dump 下来,然后找发布书的平台做一本书,打印一本自己翻着玩
我朋友:出自传了相当是
我:如果能搞定的话,感觉可以当 24 的 yearly project 了,不过今年事情好多,不知道能不能
我朋友:我 24 的 yearly project:活到 25
我:草
我:有道理
倒也不是 “ego 爆棚” 之类的原因,只是最近我的 Google Play 开发者账号连续被封,让我挺焦虑的。花了那么长时间做的东西说没就没,搜索排名和用户的评价也一同消失,对于以用户认同支撑的独立开发者来说,可以算是毁灭性的了。我固然是没有办法对抗 Google Play,这部分也可以认为无法找回了,但我还有其他在网络上的 presence,希望能在这些地方都关停之前纸质化下来,这个博客尤为重要,因为我总有担忧哪天突然我就没办法续费服务器或者域名了,然后这个博客就在毫无维护的状态下慢慢挂掉。
2021.9.30
近况
- 暑假实习的全职 return 有了个口头的正面回复,虽然很多人和我说“只是口头”,但我觉得也够了,看什么时候能走到实际的流程里
- Google 因为乌龙事件拒了我的 new grad 申请,连个 OA 都没拿到。希望能邮件扯皮下让很迷的 HR 把我的申请再重新过一遍
- 投递了很多其他家,暂时都还没进展
- 重新上架 Diffuse 的二十天后,最后一个 Google Play 账号也就是 FinGameWorks 也因为 “prior violation” 封了。打算有空的时候写邮件给开发者关系,即使很大概率拿不回来,但至少要别人听到我对整个 flawed system 的不满
- 去开了卡丁车,还蛮好玩的,除了有点贵,然后脚因为一直踩踏板有点抽筋
- 闲的无聊的时候,用 wayback machine 读 Livid 的老博客来着
2021.9.25
周末了。想了下本周好像没在做啥,一大部分时间都在虚度。
因为学校 Practicum 有个 AR 的需求,研究了下怎么把 SwiftUI 嵌入到 SceneKit 里 Plane 的 material 里,并且怎么做触摸事件的支持。这部分暂时算是达到了,但键盘事件等等细碎的适配还完成,效果 也还行。得,我想着,我又开始做不受官方支持的 hack 了,但只要 Practicum 验收之前这个 hack 还能用,我好像也就无所谓。
上上周+上周的两个面试都无结果后,我就没怎么再投递和面了,看起来好像进展停滞了一样。空下来的一部分时间用来 Practicum 这门课的组队开会上了,另外一部分时间拿去写 Embedded 这门课的汇编程序。看看周末能不能多投递几家,保证十月份继续有面试面。此外也要 reach out 之前的蓝牙组,看到底 return offer 是什么意向了。
工作日的时候和现在在 Stanford 的一个老同学吃饭,提到 Stanford 内部创业氛围十分浓厚,社交局也蛮多。想了下好像 CMU 这边就更多的是找工作,然后日常就是赶作业,还挺不一样的。希望下学期我能闲下来做些课外的事情,这学期的话反正也开始上了,就不退了。
听了 Soulection 500,Change ya mind,Kaytranada (Dj Set) Live @ Boiler Room Montreal,Soul - Only One (Joe Kay's Slowed Sade Edit),Esta. - Only One (Love Is King),I Want You,后面这三个全是在 sample Sade 的歌,YouTube Music 还偶然给我推了 Sade 的
Frankie's First Affair,听了才发现小老虎的伤心者原来是在 sample 这个。看了基地的前两集,感觉设定还不错。
2021.9.19
大半夜的睡不着,拿起 iPad 在 HBO 上点播各种电影片段消磨时间,于是看了一会哈利波特,然后继续在软件内点点点,又看了一小段 1974 年版的了不起的盖茨比。这个版本的倒是挺还原小说,连 Gatsby 和 Daisy 见面的时候 Nick 出门在下雨的室外绕着自家走了一小会这种细节都还原了,Gatsby 在收入来源和个人奋斗上那种遮遮掩掩和自相矛盾也通过台词体现出来,这点好像新的那个版本反而弱化了。除此之外就是到处充满了老电影的感觉,包括运镜转场,比如某个场景要结束的时候,镜头就从人物慢慢移动到草坪上的积水,放大景色,然后渐变到黑色,挺像是 2000 年家庭 DV 的效果,至少我爸以前拍家庭录像老是喜欢这么干。总之就很年代感。
看了一会关了,然后又在软件里点点点找 2000 年的电影。想起来童年时代看过一部脑洞大开的儿童科幻片来着,名字全然忘了,只记得像是在玩游戏一样。反正睡不着,脑子一热就去搜到底名字叫什么,结果叫 Spy Kid 3D。再去看真的是惨不忍睹,但小时候看这个电影的感觉倒还记得,就只觉得很酷炫,现在看就觉得特效好粗糙,儿童演员好尬,到处充满着 2000 年 high tech 的感觉,YouTube 上还有人称之为 "Fever Dream",还挺贴切。
于是转战 YouTube 继续点点点,又看了遍迪斯尼 Fantasia 2000 里面的 Rhapsody in Blue,真的是经典一点也不过时。小时候看狂想曲两千,最喜欢的章节就是这个蓝色狂想曲,当时只觉得音乐好听画风也好玩,只是不懂为什么落魄男子喝咖啡的时候身后的入口一会人来一会人往的还超快不知道在赶什么。现在再看自然明白那个是地铁口,赶路的人超快也不是一定真的要快,而是在表现落魄男子喝一杯咖啡又续杯,在咖啡厅呆了很长很长时间,以至于地铁都开了好几遍了。重新看这些东西,再感受小时候和现在认知的落差,实在是有趣。
想到这里觉得其实好像我童年还挺幸福的,全靠当时家里有出游时录(还是磁带的) DV 和去影像店买 DVD 的习惯,我才能有这些奇奇怪怪的认知和记忆。这里面我爸功不可没,作为一个平日上班空闲时还买打口唱片,捣鼓录像机和功放的人,他可能算是当时那个十八线小城里少有的 geek 了。
2021.9.17
51 学分的威力逐渐显现出来了,本周忙成狗,或者说好像看起来没怎么忙但实际上很耗费心力,主要就是在不停地 context switching 上,和 sponsor 一起的团队项目要不停开会,经常这边塞一小时那边塞一小时的,然后自己还在忙两人合作的硬件编程作业以及个人的事情(做面试 take home,采购吃的喝的,买换季衣服,做饭刷锅,视频聊天),因此总之在不停地地开关相应的软件,材料,网页以及联系窗口上,脑子里也要不停回想下一个项目之前做到哪里了。fully loaded 的后坐力大虽大,也不打算退课,好像也过了退课的时间了,最多后面把一门课改成 pass / fail。
面试的准备也不太好。至此想去的两个组一个是被备胎,一个恐怕也没下一轮了,继续准备其他的罢。
能察觉到自己的心态会有微妙的变化,和朋友商量想要去做的事情的时候不知道要怎么宣告这种变化,只能随口提一嘴看大家的反应。但即使是我想要去做的事情,不管是出于爱好的,还是出于私心的,眼见着也都没时间去做,只一直在要去做的准备部分那扇门不停地跨进来跨出去,因此 context switching 的成本更大了。
2021.9.14

上一场面试结果出来了,意思是以后可以再聊 - 现在他们想要更强一些的人。反正秋招就是不停地投递然后面试,这个没过也没啥,继续面着,虽然这个组我其实还蛮喜欢的,要能 move forward 我就无脑签了。
从 Cee 那收了台 OSMO Action,没想好能干嘛,可能就拍拍然后试试能不能剪一个视频 - 不过后来发现这个东西可能更适合室内固定的地方用来做 devlog 或者 timelapse 之类的东西,出去的话一个是没有防抖,一个是广角镜头想要 telephoto 的效果只能后期数码 crop in,因此拍出来的素材比较棘手,可能目前我还没有思路怎么利用这些素材。至于又有变焦又有云台防抖的 OSMO Pocket,我另外一个朋友在打算买来着,准备回头看看他的使用心得。
听了好几集 Boiler Room 的 DJ Set,比如 Nic Fanciulli,Kaytranada,和 Ash Lauryn。最近想学 Houdini 来着,但作业太多了,又要准备面试,不知道还有没有时间。
2021.9.9
面了一场 all-day interview,希望周末或者下周一能出结果。
开始看 Intro to Embedded System 这门课的作业了,发现自己很多不懂,像是缺了什么前置课程没上一样。只能硬着头皮翻各种文档。再加上 Practicum 也开始事情多起来了,感觉这学期会和上学期一样忙。
Diffuse 被我用 FinGameWorks 的开发者账号重新上架了,因为之前的付费记录在封号后无法获取,为了避免重新付费的问题,以及自己也不图什么收入只求软件还在商店上,这次上架的版本是免费全功能的,即 Diffuse 变成了一个免费无内购软件。此外,Interseasonal 和 Contrail 都是因为 FinGameWorks 所谓的“多次违规”而封号的,但 FinGameWorks 至今仍未被封号并且还能提交新软件,可见要么并没有什么“违规”,要么整个风控系统的逻辑十分自相矛盾。
听了 Soul - Only One (Joe Kay's Slowed Sade Edit)。
2021.9.5

周一因为 Labor Day 继续放假,所以周日算是在一个三天假期的中间。
才发现黄金年代三人组(蛋堡 Soft Lipa,滿人 Manchuker,荊軻 Jnco)现在有了一个 YouTube 频道叫做有夠難約,于是连看了三集,分别是蛋堡自己,ØZI,9m88,十分有趣。
听了 Everybody,Little by Little,Miss Summer,Marigolds,Tenderly,峇里岛,幻视你,看了 Free Guy 和 Netflix 关于 911 的纪录片。
2021.9.1

开学第一周过半,事情没到忙不过来的程度但也不少,潜意识总觉得应该周五了才对,其实还只是周三的晚上,想起来丁丁历险记的那个 "what a week huh" 的 meme。
这周对我影响最大的就是,我的 Google Play 账号又被封了。要解释为什么被封很困难,因为似乎我的确有 violation 的地方,但整个封号流程又充满逻辑上自相矛盾的地方,更不用提 Google Play 一点也不透明的工单系统和充满疑问的永久封禁举措。
简单来说,我在今年之前一直使用的是 FinGameWorks 这个账户发布我的 Android 软件,这个账号在 15 年我刚注册的时候上架了一些很基本的软件,譬如 Stillness 这个小游戏和用 Processing 写的 METER clone。彼时 Google Play 的上架很简单,需要的 metadata 也极少,因此这几个软件毫无问题地上了架。18 年的时候 Google Play 开始要求更多的 metadata 信息譬如是否适合儿童使用,以及要求 privacy policy,而我当时正因为学校毕业和创业公司的问题处于 AFK 的状态,也就没再管 Google Play 的邮件,之后 Google Play 就因此把我的一些没有足够 metadata 的软件下架了,措辞也十分客气,读起来一点也都没有 violation 的感觉:
Hi developers at Justin Fincher,
Your app, Cyan, com.JustZht.Cyan, has been removed from Google Play because you have not made a child-directed declaration. Google Play developers are required to declare in the Play Console whether their app is primarily directed to children under the age of 13 as defined by the Children’s Online Privacy Protection Act (COPPA).
This app won’t be available to users until you submit a compliant update. If approved, your app will again be available with all installs, ratings, and reviews intact.
Action required: Declare whether your app is primarily child-directed
...
If you’ve reviewed the policy and feel this removal may have been in error, please reach out to our policy support team.
...
Thanks for helping us provide a transparent experience for Google Play users.
下架就下架呗,我的账号也并未因此受到任何限制,19 年至 20 年,我给我的一个软件推了大版本更新(Skyline),甚至在准备留学生申请期间连着发了五个新软件(UniLWP.Droid Tech Demo,Diffuse Free,Diffuse Paid,Metropolis,以及 Diorama),新增了大约 130k 的下载量,FinGameWorks 这个开发账户一直毫无问题。
接着在 20 年底,我的 UniLWP.Droid 框架成型,作为 Unity based LWP 计划的一部分,我注册了一个新的开发者账号准备专门分发相对简单,廉价,制作周期短的三维动态壁纸(相较于开发周期动辄 2-3 个月,全面采用 Material Components 原生界面的已有动态壁纸来说)来证明 UniLWP 的能力。这个新的账号,Interseasonal Software,在开始走第一个软件的上架流程后就突然被封了,原文如下:
尊敬的Interseasonal Software开发者:
您好!我们发送此电子邮件是为了通知您,您的 Google Play 开发者帐号已被终止。
终止原因:此帐号或相关帐号之前多次违反开发者计划政策和开发者分发协议(我们之前已向您在注册 Google Play 开发者帐号时所用的电子邮件地址发送电子邮件,其中做出了相关说明)。
根据我们违规处置流程的规定,如果您屡次或严重违反我们的政策,我们可能会终止您的 Google Play 开发者帐号及相关的 Google Play 开发者帐号。
您可以访问开发者政策中心,更详细地了解我们如何贯彻实施开发者计划政策。如果您已阅读相关政策,并认为此终止决定可能有误,请与我们的政策支持团队联系。
请勿尝试注册新的开发者帐号。我们目前不会恢复您的帐号。
我就很摸不着头脑,申诉后获得的回复也很套话:
After review of your appeal, we're unable to reinstate your developer account.
Your Google Play Developer account has been terminated due to multiple violations of the Developer Program Policies by an associated Google Play developer account. We’ve reviewed and confirmed this association.
行吧,此时我也准备动身去读书了,因此也就只当是 Google Play 算法的一个失误,没再去管。但考虑到学生身份的一系列问题,和我有关联的财务问题最好还是有一事少一事,还是需要一个新的开发者账号,托管在他人名下。于是我就注册了 Contrail Software 并将 FinGameWorks 的大部分软件转移至了这个账户下,并没再动过。这个账号也的确相安无事,在我读书的这半年维持着软件的上架状态。
接着就到了这学期开学前夕,看到 Diffuse 有 8 个月毫无更新的用户开始写信问我是不是放弃了这个项目,我也考虑给 Diffuse 修下 Android 12 上的一些问题,所以在结束苹果实习的那两周抽了点时间升级了下 LibGDX,Sentry,和 Material Componments 推了一个新的 beta 版本,然后就要开学了,索性我就把 beta 推到了 public release channel,开始了占总用户 10% 的渐进分发。
然后 Contrail Software 就被封了。这周二早上收到了一封和 Interseasonal Software 收到的措辞一样的信:
This is a notification that your Google Play Publisher account has been terminated.
REASON FOR TERMINATION: Prior violations of the Developer Program Policies and Developer Distribution Agreement by this or associated accounts as outlined in previous emails sent to the registered email address(es) of the Publisher account(s).
Google Play Publisher suspensions are associated with developers, and may span multiple account registrations and related Google services.
You can visit the Developer Policy Center to better understand how we enforce Developer Program Policies. If you’ve reviewed the policy and feel this termination may have been in error, please reach out to our policy support team.
Do not attempt to register a new developer account. We will not be restoring your account at this time.
都在说一个 “associated Google Play developer account” 的 “multiple violations”,但是不说哪一个账号的什么 violation,完全是让人猜的状态。我于是猜想是不是之前 FinGameWorks 那几个被 Google 下架的软件,于是去把那几个软件缺失的 metadata 全补上了,修改审核通过(也就是变为正常状态)后再选择了我自己下架,觉得这样应该就算是解决可能的 violation。值得注意的是,作为 Contrail Software 仅有的关联账户,FinGameWorks 此时直到今天仍然是活跃的,毫无被封号的迹象,这也是我不理解的一点,按理说如果按照邮件里说关联账号也就是 FinGameWorks 这么劣迹斑斑,不应该早就没了?但 Appeal 后结果还是一样:
After review of your appeal, we're unable to reinstate your developer account.
Your Google Play Developer account has been terminated due to multiple violations of the Developer Program Policies by an associated Google Play developer account. We’ve reviewed and confirmed this association.
Google Play Developer account terminations are associated with developers and may span multiple account registrations and related Google services. Do not attempt to register a new developer account. Any new accounts will be closed and your developer registration fee will not be refunded. We recommend that you use an alternative method for distributing your apps in the future.
仍然是毫无透明度的套话回复,和 Google Play Developer 的 Twitter DM 里也直说这个决定是 final,意味着似乎他们也不打算再多看一眼。
那么这意味着什么呢,首先包括 Skyline,Diffuse,Metropolis 在内的 Android 软件在 Google Play 上全部没了,也没有转移的选项,因为一旦封号,整个开发者后台就只有政策页面,而且一段时间内只能申诉一次,申诉被回复后就没有申诉按钮了。对用户来说比较麻烦,毕竟之前买的软件突然没了,像是跑路了一样。对我来说可能近期找工作也比较麻烦,Diffuse 算是我用 LibGDX 写 Kawase Blur 和 Domain Wrapping 的一个例子,原本还想用这个例子去面一些可能对图形学有要求的团队来着,结果现在用来示范的软件没了。此外简历上我还写着 Skyline 曾经是 Google Play 当日付费总排行第二名的软件来试图说明 Indie Business 上的成就,现在用来证明的软件也没了。
至于我准备怎么做,可能把这些软件改成完全免费甚至开源的版本,改包名后用 FinGameWorks 重新上架,至少保证我的独立开发 Portfolio 还在,找工作也好,保留作为独立开发者最后的骄傲也好,或者只是觉得“有人用我的软件我很开心” - 这倒不是被封之后突然开始求可怜起来,我在给很多用户的邮件里都是这么写的,如果不是这个心态,我也不会在 Reddit 上给用我盗版的人发正版的激活码了。至于 Google Play 的后续软件开发,比如 Diorama 或者几个还在 WIP 的项目,可能就完全不干了,因为我也不确定会不会因此又封我账号。
最后,至于我怎么想,我其实也没啥想法,我现在只是毫无波动地在这里记录整个过程,我也很累,觉得独立开发者这个爱好不太想做了。以前做独立开发者是觉得在创造而不是在消费,觉得自己能想用什么软件就自己做出来,这些都是好的 - 我也仍然相信这些,只是近期独立开发者的体验,很多时间并不是那么开心,受制于各种限制,或者是身份的原因,或者是实习条款的原因,我很长一段时间没办法更新或者发布软件,更多的时间是在和工单系统扯皮,获得类似于在政府机关能获得的套话回复,自己无能为力。当然也不是不可以再去发个 Medium 发个推,买个推广,给科技媒体发邮件求报道,采取一些媒体上的举措引起开发者关系的注意 - 去 Google 一搜,排名前几个的被封的账号都是这么要回来的 - 但我也没有这个时间和金钱去投入了,说到底,我也只是一个在 workload 据说很重的学校里里读研究生同时又在找毕业后的工作的普通学生罢了,与其继续在独立开发这个事情上挣扎浪费时间寻求账号解封,不如重新捡起来 hackathon 打打,又好玩又能 network,说不定还能拿点奖金。
最后,近期的很多事情,都更让我相信村上春树关于“站在鸡蛋一遍”的立场,这个怕是也不例外,不管 Google Play 造福了多少独立开发,里面的自动化系统一旦出了差错,接待我的工单人员也都像是傻子一样连个具体的原因都说不出来,对于他们来说只是上个班 another day another dollar,对我来说是这两年很多熬夜做出来的,我引以为豪的数字工艺品,突然就没了最官方的分发渠道,而没了官方渠道,基本上也就是没了。