在 Kiv Zone,所有无法汇集成篇的小段想法都会聚集在 Inbox。Inbox 上的条目可能会被选取,并发布在独立的 Post 中,称为“Inbox 合集”。 (我发现自己写 Inbox 的频率并不是很高)

 


Learn-Implement Cycle

学计算机的本质,都在这个循环以内。Learn-Implement Cycle 的本质就是学习能力和 Getting Things Done 的能力,具有很强的实操意味。遗憾的是,本专业给我最大的一个感觉就是,学习能力大大退化了,对知识的吸收甚至不如大一那么有干劲。

 


Python Async

AsyncIO 在 Python 中的存在就是一个语法糖,但是这个语法糖的结构并不是面向 Beginner 的,而是面向 Intermediate 的,让我走了很长的弯路

执行需要什么

  • 阻塞:asyncio.run_util_complete
  • 异步:.send 即可

gather 和 wait

功能上

  • gather 这个方法并不能用来“执行”,只能用来打包,例如:group1 = asyncio.gather(task1, task2, …),然后用 run_until_complete 执行。
  • wait 有多种模式,是 gather 的更下一层。比如:只等第一个,等 2 秒,然后返回 (finished_tasks, unfinished)

返回时:

  • gather 返回 [results]
  • wait 返回 (finished_tasks, unfinished),需要调用 corou.result() 获得结果

 


Android Studio Build Hacks

  • 最标准的构建目录是能够看到 app 文件夹和 gradle Configs
  • AndroidManifest.xml 会声明安装期间的 Permissions,但是使用还要申请权限。这是一个阻塞的方法,可以放在 onCreate 中,并且在接口中提供回调。和 iOS App 不一样的地方在于 iOS 鼓励在真正获取信息时再给权限的写法。
  • 在安装失败的情况下,Rebuild Project 通常是最简单有用的办法

 


XLA 在 Colab 上的运作

终于有了可用的 XLA 配置指南,今后应该可以在 Colab 上跑一些项目了。但是问题问的好:还有什么模型可以跑呢?

之前兴致勃勃做的一个框架,最后也没怎么用上哈……

 


泛型究竟怎么用?

我为了能让主文件看起来很酷,把泛型、接口和抽象类折腾了很久,但是都没有成功。这让我对概念的理解又深了一层。

  • Casting:类型控制的不过是暴露的接口,对象本身是一个 BearPopulation,那么该有的字段就都有了,只不过当你将一个编译时类型为 Object 的对象指向它时,这个 Object 对象没有 BearPopulation 特有的指针。
  • 接口,泛型和抽象:这些都不能创建新对象,只能保证新对象的流转。如果要创建新对象,必须写明类型来创建。
  • Static:静态的方法跟类的签名绑定,不接受任何继承。

 


Fake Hustle

不只是什么时候,这个词开始映入脑海 —— 这似乎在证明你进入了 2019 上半年曾经有过的状态。但是这段时间伴随的更多是失意、分裂和迷茫。

于是写下了 Fake Hustle 这个副标题,以表明这样一种,缺失、忙碌中又零星似乎有一点目标的感觉。

 


对于暴力,我到底在抵触什么?

事实上,我不欣赏任何形式的暴力 —— 我也承认暴力必然是用以对抗暴力的必要元素之一。

但是暴力背后是什么?暴力背后是冲突,冲突必然来自什么——也许是超越施暴者本身的一些什么。当这种冲突变得具有共性的时候,暴力本身就称为了一个壳子,我们在看待暴力的时候,就必须要考虑到冲突。

尽管如此,暴力具有这样的性质,它并不符合“理性”事物发展的规律,因此暴力无条件的需要得到控制。但是控制暴力并不等于控制冲突,当这个冲突达到了这样一种地步,它引起的暴力已经超过了发达文明社会的正常容忍度,我们会怎么看待它?

我们可以用暴力与之抗衡,将它扼杀到底 —— 在一个高度有秩序的秩序,这在技术上很容易做到。可是这没有解决冲突。问题在于,在发达的文明社会,暴力的天平总会在约束下尽可能的趋向平衡,所以在实际中,这一点很难做到。这是一件好事。只不过,假设这不是一件好事,那么它的副作用就是:我们会把更多的目光放向冲突。

针对个体的暴力,我们总是倾向于分析个人的动机,但是面对群体的暴力,我们用的又是另外一种方式。

 


《得意忘形》中提到的平台 M

播客的嘉宾提到的一个知名的独立媒体 I ,以及 I 的前(?)主编创立的一个平台 M(根据 M 的官网,它是“一個以分佈式網絡為基礎、加密貨幣驅動的公共討論平台”)。与区块链的关系密切,具体信息不明。

初步的判断,M 平台的读者和创作者有较大一部分来自目前(2019年11月)局势不安的城市 H,但也有不少人来自中文圈的大陆,话题大多围绕时政。有一些被自媒体转载(这里指空间相对自由的自媒体)的文章似乎在这里首发。

由于是一个去中心化的分享平台,这里的信息质量差距挺大的。平台的实际自由度等待查明。

 


超参数的选择:hyperopt

相见恨晚的神器 —— 如果我提前有这个项目经验的话,就不用重复造轮子了。果然,一个工程师在实现目标的时候还是要先从寻找工具做起啊。

目前看到的概念:

  • arg space:一个巨大的字典空间
  • trial:有一个例子是 MongoTrials,官方的解释如下
Storage for completed, ongoing, and scheduled evaluation points.  If
None, then a temporary `base.Trials` instance will be created. If
a trials object, then that trials object will be affected by
side-effect of this call.
  • 如果和数据集一起封装的话(比如说,根据名字选数据集,以及从头练数据集),可以预见:这个超参数的训练结果会非常强。大量人力可以因此被省下

 


Debug 谈:一个网络相关的项目

Debug 了很久,首先是一个端口问题,其次是一个字段填错的问题,然后就是在各种 Exception Handling 的混乱逻辑中挣扎,最后到各种 testing。中间走了太多的弯路。

所以在写程序的时候应该尽可能埋好 logging,然后第一步检查最有可能出现的问题。最好如此。

 


Crippled

我总是在各种机会之间徘徊不定,也只有在这个时候才理解有朋友跟我说过的:机会很多,但还是跟着自己的想法走。这真的不容易 —— 但是毕竟是现在,所以还是让内心追寻以往的塑造吧。

The big decision somehow puts me into a bigger picture or setting. It is definitely a big decision, but it is also somehow a decision that changes. It feels like the heart is wondering, putting oneself in a completely different picture. It is an adventure. A torturing one but a noble one. I would never forget this feeling after the decision is made.

 


Playback 2019 和 TO

我正着手写 Playback 2019,在收集素材。在回顾 2018 年 Kiv Zone 记录的内容时,我发现很多内容都有这样的倾向,我称之为 Trauma Oriented。

然而 Playback 的风格是理性的,我给自己定下的风格模板大概是郭家宝的《这一年来》,或者是类似的,更冷静分析的文章。18岁结束后的一个月本来也写过一篇文章,只是后期被阻断了。它也会被加入 Playback 2019 的合集。这一篇的特点是聚焦于身边的人,但倾向于将一个个人模糊为群像。

我已经写过 2018 的年终总结,云上两篇。某种程度上,17 年也被记录过了。然而这些内容都很可能被标记为 TO 类。 Playback 依然会淡化时间的概念,只描述这一年来的事,并且面向内容描述,涉及的时间参考系会被模糊。对比固然是一个很好的写法,但是一定是面向现实和未来的。

具有 TO 的记录,不久后会在 Kiv Zone 被取消可见。

 


finally的闭包和内部类的闭包有何不同

Method 中的 Inner class 可以访问 Method 的变量域,但是只能是 final 的。原因大概是:如果 inner class 有新的闭包(就是一个 callback 形式的代码,或者线程的执行体也可以),那就意味着 method 变量域被销毁之后,这个区域还可能存在。

我曾经把 finally 解释成一个 callback 形式的闭包,某种程度上它是的,但因为 Java 的运行机制,finally 是一个方法 return 之前会得到额外检查的闭包。也因为它的功能特性,方法在返回前会特别检查 Finally 闭包的存在,并给予它对变量域的最后访问权限。

但冲突总是戏剧性的,假如 try 和 finally 都是一个不会抛出错误的 return 呢?假如某个方法 try 了必定出错的代码,而唯一的返回在 finally 模块呢?

第一种情况:既然 return 的时候会先执行 finally 的钩子,那么返回的自然是 finally 内的值。第二种情况,本来异常被抛出无法处理,会自动触发 return,并对上一级抛出异常,但是在这种情况下,finally 会获取 return 的钩子来执行它自己的 return —— 程序自然 return 到上层,并且该异常会被认定为已处理,不影响后续代码的执行。

 


字段隔离与方法覆盖

问题出自这样的示例,这个示例证明了如下规则:

  • 编译类型确定了对象有多大的内存,但是如果它没有经过子类的初始化,子类的字段全部为 0 值。子类和父类的字段由两个分开的内存空间决定。
  • 父类的方法体内,只有父类的访问空间;编译时给对象分配的 reference table 中,也只有父类的访问空间存在。
  • 同名函数不存在访问空间的隔离,因为子类的函数指针总会覆盖父类。但是子类方法的访问域为子类的变量。举例,一个 Panel 可以接受多种多样的 Component,每个 Component 都可以画自己不同的样式,数据也可以由自己的方法掌控。
class Base{
  private int i = 2;
  public Base() {
    sout(this.i);
    this.display(); 
  } 
  public void display() {
    sout(i);
  }
}

class Derived extends Base  
{ 
  private int i = 22; 
  public Derived()  
  { 
    i = 222;
  } 
  public void display() 
  { 
    sout(i);
  } 
} 

 


当 DL 到了行业

当 DL 走出实验室,工具一下子就变得很多。Hovorod 这种实验室也会用的就不说了,DeepStream,TensorRT,NVEnc/Dec 这些工具用起来都是蛮费时间的,尽管已经被封装的差不多了。

此外还有一点直觉:脱离了实验室之后,Python 在工业界的地位其实是有下降的,很多工具都要重新用 C++ 写一遍。但是很多 C++ 的工具真的头疼,而且 Java 通过阅读源码来理解的那一套搬过来根本没法用 —— 动不动就一个编译标签和定义类型,加上混乱的 Templates ✖️ OOP,还要跟 STL 的匪夷所思的设计打交道,太难了。

 


次学习聚会的 Outline – I

  • Database
    • 结合数据库讲关系代数
      • 重命名 rho 的用法
  • 探讨 103 Assignment
  • Java CW3
    • 讲解原则
      • 如何快速实现
      • 应该覆盖那些知识点
      • CW 的 Minimum 和 Excellent 要求
    • 讲解 hw9 的一些内容
  • Review
    • 感觉人多之后还是要提高一下大家的参与感
    • 一开始大家都熟悉的很快,但是群体壮大之后呢?
    • 项目制的分享环节会如何?比如各自说一下自己在做的科研项目。

 


逃走,逃回

两天的 day-off 更多的是为了养老而不是游历,还是很能补充能量的。J 城最美中不足的地方应该就是占据大半区域的 No Fly Zone 吧,我是相当的措手不及。

同样是南湖附近(对的CCP 第一次开会的南湖),北边是一言难尽的老城区,东南是宽阔的新城,中间的区域则充满了令我感到矛盾重重的历史感。在同一个城市中就能体验到环境的强大力量:刚到的下午,想的是“Grand Narrative”在不同阶层中的角色;前一晚上本来在咖啡馆尝鲜 TV+ 的独占剧,结果一回到住处,就想重刷一遍《大象席地而坐》;后一天却平静了不少,在欲罢不能的 Today at Apple 歌单中度过了聊聊写写的一个晚上,而且是在真的纸笔上完成的。

跟舍友聊到很有意思的一点。他说:刚入学的时候,晚上总会看到你在电脑上写程序,甚至能写到很晚还很精神;后来你晚上回来的时间越来越少了,再后来电脑也不放在宿舍,你回来的时候却是总是一副丧丧的模样。此时我已经从 J 城回来,对那个“丧丧的我”已经是一种回望的感觉,感觉也是一种 day-off boost 吧。

另外这两天的食欲是第一次感觉到回转。

杂乱的体会:

•  小时候爱写小说,我相信“叙事”本身的力量,但是如果把“叙事”的冲突和对抗再放在小说里,格局就完全不一样了。

•  终于想明白了一件事,即纸张和屏幕并不互斥,两者都是一个工作区或者窗口,只是功能和特性不太一样罢了。iPad + 纸张有时候是一件惬意的事。(当然,这也可能是因为我潜意识里认为 iPad 屏幕太小了 … )

•  刚入夜的时候,我是非常困顿的,这个时候很多事儿都不适合干,但是写点随笔还是一种很惬意的方法 —— 前提是你有东西可写。

•  进入平静的状态,比进入高负荷的状态其实要难得多。只是高负荷的状态更难以维系。

•  工作场所和 shelter 在很多情况下是要分开的,但很多时候,这个界限又要安排的模糊一点。

 


数组是最高效的数据结构

只要有 index,数组找元素将会是很快的一件事 —— HashSet 的高效也离不开数组 indexing 的快。

写最小不重复子串的时候,我在维护一个 Set 上花费了过多的功夫,导致运行效率很低。事实上根本不需要这样做,一个稀疏的数组就足够了。

 


为什么 Inbox 更适合表达

看了那么多文章,我觉得文章还是要有几点的。稍微长一点的感想性文字,表达的内容实在浅薄,绝对是不能撑起一片博客的。

因此细碎的内容还是 Inbox 表达好了。

 


C++标准库:字符串

正常情况下,我们使用的都是 C 风格的字符串 char[],包含如下标准库函数:

// concatenate s2 to the end of s1
char *strcat(char * restrict s1, const char * restrict s2);

// return last occurrence of c as a character
char *strchr(const char *s, int c); 

//  less than zero if the first is lexographically less than the second, a value greater than zero if the first is lexographically greater than the second, or zero if the two strings are equal.
int strcmp(const char *s1, const char *s2); 

// clear s1 and copy s2 into s1
char *strcpy(char *restrict s1, const char *restrict s2); 

但是 C++ 的 string  类提供了这样的一些选择,比如重载的 +,比如 indexing,reverse,size 这样的选项。

 


学集合类的一点思考

一点感觉:数据结构接口的设计是一个原则问题,不同的算法(Array,Linked,Hash 等)为的是给不同的数据结构赋予不同的性能优势。学数据结构工具,记住并理解规则还是很重要的。毕竟这背后是整个框架的设计原则。

今天 S 同学问了一个关于 Java 集合的问题。他发现 Iterator 在迭代的过程中调用List 类的方法进行修改(例如 List<E>.remove),否则会抛出 ConcurrentModificationException。我在当时并没有认真看过 Java 那节课的 PPT,仅仅是凭着对集合一些模糊的经验参与这场 debug。

看到这个 Exception 我的第一反应是线程相关的 Concurrency 问题,然后囫囵吞枣的看错误信息,先查了 remove 函数的源代码。然后我才被提醒这是 next 方法抛出的错误,在查看的时候形成了初步的认知假设(H1):迭代过程中,不允许对被迭代的集合进行修改。我当时下了这样一个推断(H1-a):迭代的顺序在 Iterator 生成的时候,就确定了。

我想:这个封装是为了安全考虑吗?比方说,万一删掉的恰恰是下一个元素。但实际上,无论是 LinkedList 的引用迭代、引用增添还是 ArrayList 的 index 迭代、内存复制式增添,都不会获得空对象。因此,对 H1 的解释只能是 Java 具有像 Python 的 Least Surprise 原则(后来查到这在 Java 中叫做 Fail Fast),这在 ArrayList 等集合类(以及它们 Iterator)的源码设计中也能体现:它是通过外部机制(一对 modCount 计数器)而不是检查结果来抛出这个异常。但这个设定不够方便,对迭代的严格设定之下应该还是留了“后门”的。

后来得知调用 Iterator 接口的 Remove 函数不会抛出这个异常,但只能移除最后被迭代的元素。从 Iterator 的定义可知,remove 默认是不被迭代器支持的,支持移除当前元素是派生迭代器的选择;而边 iterate 边 add 或者 set 只存在于 ListIterator 的定义中,并且默认支持,但是 add 同时会把 index 进一位,意思是没有办法 iterate 刚 add 的元素。

*修正后的H1 :迭代过程中,只能通过 Iterator 围绕最后被迭代的元素进行修改。List 类支持 add set remove,而 Set 和 Map 只支持 remove,因为它们的内部原理(元素可能被添加到一个正被迭代的,稀疏散列数组的任意位置)无法有效率的支撑 H1-a 提到的特性以维持 Fail Fast 原则。 事实上 Set 和 Map 的

*修正后的 H1-a:迭代的顺序在 Iterator 生成的时候就确定了,但就算没有这个规则,程序也可以不 crash,但结果可能令人匪夷所思。

*验证的推断 H1-b:util 包直接包含的集合,修改不具有线程安全。并行(多线程)使用 Iterator 迭代没问题,可以进度不同,但只要其中一个做了修改,剩下 Iterator 继续迭代会报错。

另:C++ 标准库(2011)中的迭代器似乎不支持修改。但 Python 原生的 list (实现原理与 LinkedList 大致相同)迭代时没有 H1-a 的特性,可以边迭代边改,但检查器会给 Warning。

附:违反 Least Surprise 原则的例子

// a = [1, 2, 4, 4, 5]
for i, v in enumerate(a):
    if v == 3:
        a[i] = 4
// a = ?

 


色彩(一)

这栋楼给我的印象大概是色彩吧?

大厅是红色席卷而成的巨浪,前面是屏幕的漆黑和舞台的亮褐色。总是有一块大大的纸牌子,是白色相间着学校的渐变紫。走出来了,外墙的纯木色和玻璃蓝总是很养眼。

这时候,总是天晚了。抬头是苍蓝的天,脚下是沉灰的地,呼吸总会变得沉重,空荡而茫茫然的脚步总会提醒我这是生活。无比真实,无比深刻,一场梦一般的生活。


 


Holden Style

《麦田里的守望者》的原版书,累计看了近三个小时。

和自己玩了这样一场游戏:对杠,用霍尔顿式的语言把一切描述的暗无天日。不过这游戏太空洞而循环,我很快玩厌了。

Holden 认知中的世界的全貌尽是荒芜。他不知道最核心的自由为他拥有,而不需要为世界所赋予。书中寥寥几笔带过了他的弟弟。大概是因为意外夺去了他所认为最能象征正面的灵魂,他的成长陷入了一个长久的低谷。

我想,真正成熟的人,同样清楚这个世界最真实的模样。但正因为如此,他们才选择珍惜来之不易的光明。


 


We write stories of our own.

挣脱于无尽的 Reports,Lab,Projects,最终还是发现自己在这一方土地上,有了得以立足的点。也真心觉得身边的你们都好棒。

Life is simple. You make decisions and you don’t look back.


 


夜晚的情感

深夜的时候,情绪是最容易被激活的。这个时候的人最容易有诗意, 躺在轻柔如沙的回忆之吊床,将白天的辛劳置之脑后,但同时最容易沉溺于虚幻的美好,以至于现实变得那样苍白,全然没有了生机。


 


当写代码变成工作

当写代码变成被工作和项目所占据的一种活动,你给予它的动机就会小很多,你会开始摸鱼,但是你也更愿意把精力投入到别的工作中去。

紧接着,机会总是不等人,会有各种问题等待你去处理。目前算法的问题已经基本搁置了,工程问题才是最头疼的没有之一,让各种没有经过 bug fix 的程序成功跑起来,还真的就不容易。

哦对,这个工作站能够装 linux 吗,如果可以,我现在就要动手了,真是一刻也不想等啊。

(后记:忘了隐藏入口,被老师发现,然后卸了)


 


Transition

I can hardly know what “endeavor” is.

But I will know about that anyway.

For me it costs so much to stay result-oriented, expensive enough to have me back drawing from my base to continue the challenge, not driving it to achieve my goal. That’s the greatest difference.

 


成年人和孩子的区别

成年人和孩子的区别有好几个,但是我想说的不是对情绪的控制力上有差别,而是对于世界。

见识到了这个世界的真相,并坚信这是真相——这是成熟。见识到了这个世界的真相,却依然用一套内心构筑的独立体系去驱使自我,这大概就不是成熟的表现。

而这个世界的真相决定的是:经营这个世界的不应该是孩子。但是孩子的成功是因为他们有着这个世界上大多数人所缺失或者希冀的属性——如果以一个“成人”倾向的视角去看待。

 


最近生活中的问题

  1. 技术栈不精。各种语言,前端后端算法统计运维,每个都有涉猎,但是每个感觉都不精,还在摸索阶段。到后期,就感觉难以专注,然后会去做所谓的一些玄学的东西。这个时候,应该是很需要老师指导的,但是又不知道从何做起。
  2. 项目多了,拖延也重了,而且是极度的拖延,反馈没有寻求反馈的动力也没有,就这样摸鱼下去。
  3. 见识的大佬多了,想追,但是鉴于 1)对个人特色、目标的把握不准以及基础不扎实 2)个人的不足有突破但是迟迟不够 3)大佬们都是各有千秋的,都想要但是都要不成
  4. 出现了规划无力的情况。生活没有规划是第一个,没有动力规划是第二个,对规划失去信心才最让人头疼。也许我现在缺少的是一个人,能够帮我从头梳理一遍要做的事情,不然这种危机感是没有办法摆脱的。
  5. 出现了大量书写文字,但是执行力低下的情况

真是羡慕之前认真学习技术,心无旁骛的那段日子。相比之下,这一段日子的项目虽然有进展,但是总会觉得学到的东西不如以前多,然后各种拖延的情况也不容多说。如果要把核心问题提炼出来大概就是:

处理多任务并行的问题还不够

处理多任务并行的需求有三个:1)Prioritization 2)日程的规划能力 3)专注和执行力。

Prioritization 在这个时候就显得尤其重要了:你手头上面起码有 4 个外部项目在同时运作,其中至少 1 个项目中,你背负的是核心责任。然后这个还好说,但是自我学习提升的这一块,还真的是困难重重,一个是:自我提升的这个概念,已经没有动力再继续下去了;第二个是,说到编程,不可避免的就会出现子目标太多的问题,比如实战要抓,深度学习要抓,ACM 算法也要抓,这样就会两相矛盾。

 


一份大佬图鉴(?)

要解决这个问题,就必须列出来这些:令我印象深刻的大佬,他们都在做什么?(时间有限,大佬只列出了方向相近的,而且太多只能举例不能列完。。。。。。)注意:这个 Inbox 有很大的延迟

成熟且受众极广的大佬(以姓氏首字母排序):出众的能力,鲜明的个人特色以及专长,符合无细分大众对心目中大佬的定义

  • _ . Cai:系统内核,应用向,非常钦佩。只是我无法复制这个模式。
    • 定位:Coding 行业
  • Q. Chen:社交平台的管理,技术的协调(?)和资源的整合
    • 定位:CEO 和产品经理
  • S. W_:主打科技、设计与人文的结合,以及广泛的技术栈
    • 定位:前端为主导(?);设计,人文与科技的结合
  • K. Z_:资源整合力,软硬件算法应用结合
    • 定位:Leader,软硬件结合开发,以及资源整合
  • X. Z_:应用向表现的很突出。同时,也是学生生涯中表现的很卓越的一个人。
    • 定位:Coding 行业(?)
    • (探明度不足)
  • Hao. X:统计、数学,等。表现出相对完美的能力均衡。

成熟的大佬:

  • R. W_:以 DL 和算法为主导的硬技术
    • 定位:算法或者深度学习工程师
  • Z_. L:游戏兼算法,生活向
    • 定位:纯软件的游戏 /算法 / 开发 / 科研 / 生活,个性化的现实主义
  • Y_. L:DL CV 向,生活向
    • 定位:DL CV 向,同时也是生活向的理想型
  • H. Xu:GPA,乐于分享,专注
    • (探明度不足)
  • _R_. Zhuang:前后端统筹应用向
    • 定位:应用

不同阶段的走向成熟的大佬:

  • T_. F:硬件结合的 CV,DL 向,资源整合
    • 定位:CV,DL 和硬件等等
  • K_. Y:CV,DL 和硬件向,资源整合能力非常令人钦佩
  • C. Z_,Hao_. L et al:专注力,个人提升的愿景,还有对艺术领域的执着
  • D. Li:商业,对社会的分析以及泛技术的结合
  • Foc. J,_Z_.Q,_Y_. Liu et al:开放性等等

 


有所收获

这些天,总感觉技术上的收获是越来越少,近乎停滞,而这个月的时间却不等人,匆匆而过。我能留下的,除了空洞的文字之外,并无其他。

做一些项目罢?搭建一些模型罢?我总觉得自己失去了那种初心,尽管我知道屏幕的背后有着我的一整个世界,我还是无从下手,不知道从何开始,更不知道从何结束。按理说身边的人会给自己一些激励,但是由于目标的不明确,一切似乎又要停滞了。

我到现在才发现自己的动力和目标似乎已经被冲散了。我更宁愿去做的是无趣的生活,而不是实实在在的做点什么,然后把东西学到,像那些数学、深度学习等等需要钻研的东西,像新的技术栈(好吧我明早就有一个机会,但是不知道能不能等到自己)

现实残酷吗?在此刻,它显得残酷至极。


 


关于 Sayo Cast 纸条团队采访的笔记

To be honest about everyone mentioned

在采访中提及了不少人,和其中 Sayo,Sameul 和 Z. Zhao 有过交流,也见过学长 C. Fu,遗憾的是还没有见过学长 L. Chen(后来和 L 学长做了个项目,他也是个很厉害、很有生活的人)。他们都有着各自扎实的技术领域,和专注而执著的发展方向。

As a Technical Leader

在校园内,实施一个想法的技术成本相对来说确实不高,但是对于大多数持有想法的人来说,这极具门槛。但是如果要把大家凝聚在一起,还真的不容易。

如果只是想为一个简单的想法实现 MVP,那应该不难,一个有一定技术的同学牵头,大部分就可以完成。但是 MVP 毕竟只是第一步,一个需要长期维护的产品,需要的比这多的多。但是,我着实没有真正意义上做过一些领导型的技术工作,或者是组织过技术分享会或者技术交流会,从技术层面去推动一个产品的发展。

As a Motivator

(如何激励人心)


 


想清楚一个 Startup

今天在咖啡馆里想了不少问题,想的较平日要更深刻一些。当然,这些

我有时候会想,我是不是更适合做内容一些,但是这个想法被否决了——在这个喧嚣的时代,人们看到的 KOL 涨粉无数,并不是因为他们孜孜不倦的在实验室里用仪器得到一张复杂而精确的表格,而是因为长期、专注、有技巧和把握风向的运营。

在运营上面,我可以说是极其缺乏技巧的。更可怕的是我在内心上根本缺失争取流量的动力。

这篇博客有 n 个人看,行,毕竟是硬核技术文;这篇文章居然涨到了 3n 个人,这是为什么呢,是不是因为内容比较精彩;再看这篇博客,内容按理说会贴合快消费(其实就是带情绪、多图、碎片化和内容浅显),但是实际上看的人不多。

我也会想我是不是适合做产品,答案是:也许。可是我知道自己差的太多,技术,团队,teaming 还有种种,并不是简简单单就能弥补的。

创业咖啡馆里,各种职业的人在谈他们的职业路,谈“风口”“行情”还有各种各样的颓败。每一个带头人都在竭尽全力的把我时代的方向,每一个技术人都在构筑着哪一个隔阂着的点子,每一个整合资源的人每时每刻都在交流和权衡。

在这个学期,我可以说是重新收获了一个作为技术人的底气。诚然很多技术人成功的创造了一个新的世界,但是同时,技术人所面临的世界也是残酷的。


 


分析学术道路

今天搜了一些论文,顺便调查了一下学术界的一些事儿。

首先,同实验室的研究方向做了一些探明,确实主要是人机交互,然后就会涉及到:1. idea 2. 运用指标验证这个 idea 的可行性 3. 方法论总结。Paper 基本上都遵照这个格式进行发表。同时,再这里的研究生大多都是从 18 年开始进入高产出的状态,稳定拥有 2-3 篇 7-8 引用的论文,然后论文很多是串联的,你引用我我引用你。

其次,看了一些申研结果很不错的同学,发现他们都能够争取到一作,有的学长甚至能争取到 3-5 篇。学术方面争取机会看来也是一门学问,可怕的是这里面确实有很多人是真的想做学问,因此和那些只希望得到一些申请学校加成的人对比,确实让人头大。但是这个时候问题就出现了:机会就那么几个,真的是你申请的来的?还是老老实实的走行业这条道,做挤破头的后端(系统架构)或者数据科学?

我个人还是希望能够投身应用领域,但是学术方面该不该争取,这肯定也是要的。


 


学的是假的 DL?

今天跟林老板谈起 ResNet,然后就谈到了实现 ResNet 的 PyTorch 官方源码。然而,和当时浑水摸鱼学过去的 Keras 不同,ResNet 的源码中出现了很大的“条件生成”,是很难搞定的。

由于早睡计划的实行,今天还有一个小时就要结业了——在这一个小时内,我需要安排好明天做的事情,然后写一篇博客简单阐述一下 DL 的学习,然后刷一下 Coursera 的机器学习,然后就去玩板(美其名曰:Daily Fitness)

 


当代大学生的忙

真是无奈的感觉,不停的有项目压身,简直无法走开——真是泪的体验。当你同时有老板的项目,学校的项目,社团的项目,团队的项目,自己的项目和 Future Plans,但是并不是每一个人都能够平衡其中的啊。但是做成了的话,应该也会有蛮大的收获吧。怎么说呢?

Anyway,现在老板的项目最靠前。周一是 Deadline(没准是在下午,那还有喘息的时间),而且不能在周日晚上熬夜。现在剩下的时间,如果满负荷的话是 6 小时,没准可以扩充到 9 小时,期间要读 Paper,测试 Paper,搭建模型,训练模型,还是很烦的一件事情。

*此处的老板是 Academic 意义上的…… 被带坏了于是跟着推特上的人也这么叫……

 


对视频信息的重视

June 6th. Cloudy. It rained.

看一篇 Mask RCNN 的 Paper 可能要一个小时(才能读透),但是其中最应该弄懂的内容可以更快的在 Presentation 或者视频教程上得到解释。

 


IT 风口行业的小分析

PS:在当前的行业爬多了,也是会有一个瓶颈的。事实上在很多其它的领域,还是有很多丰富的东西可以探索,只是迁移起来会很困难。互联网和深度学习(CV, NLP, …)等等,是目前最吸纳资本的行业,但是它们的未来究竟会如何呢?

事实上,为了对整个 IT 行业有一个深度的调研,我觉得一些相关的书肯定是要读的。所有的细分领域都可以被继续细分,并且被依据不同的指标而分类,而这份市场调查报告将会有更好的实现方法。

比如社交类型的(《增长黑客》),比如云行业的,再比如“向深处钻研的 CV 向”,等等。

 


About the Startups in S-City

Todos:

  1. Tell Mr. Wang about it
  2. Have your certificate scanned and send relevant people a copy.
  3. Anything else?
  4. Call for two of your APs

在来之前,我对 S 城的这些项目都还是没有一个期望,只是:从参赛的团队和他们所属来说,我暂时还没有一个概念,即他们能做什么。

可以这么说:上了决赛的项目,都是已经运营至成熟的团队,任何没有经过第一波市场浪潮的团队大概都被筛了出来。也有一些科研起家的项目,技术成分也确实是有的,但是我尚不清楚他们的运营成果。我只能说:我觉得科研起家的项目还不适合这个城市,但是我会希望跟进。

另外的话,Z 老师也跟我们做过一个简单的分析:这跟学校的环境有很大关系,在本校,大部分人是奔着深造而去的,但是在那样的院校,他们都是奔着就业而去的,创业对于他们而言可以是背水一战的 Full Time,但是对于本校的大多数人而言,都只能是“玩一玩”。当然,本校也有很多有想法的人在做一些 tiny business 但毕竟不是所有人都有这个魄力。

我发现了这样一个事实,在场的 30+ 项目只有我们在把“互联网”做成产品,任何其它的项目都只把“互联网”做成工具。当然,我们的项目也不完全是“互联网”,

 


Write it, type it, walk it

这段时间的观察让我有了这样一个发现:Writing 和 Typing 是互斥的。

首先,写下的东西不一样——当我在进行 Writing 的时候,实际上已经很少实在写文章,我更多的实在列 Bullet Notes 或者是画图,是一个项目规划上的考虑。这是一种非常需要 Creativity 的行径。

但是 Typing 更多的是一种记录,周记,计划,或者整理自己的思路,是沉静而内敛的。更多的时候,Typing 是为了完成一项作业,写一些无味的报告,所以更多的是例行公事的成分。

Writing 和 Typing 的共同场景有很多,但是 Writing 的时候,我更喜欢呆在咖啡馆——安静一点的地方,更好的激发 Creativity。那样的东西总是要有灵性的,心灵要飘,要有敏锐的洞察,要对概念有丰富的情绪感知,要感受到不同的东西流过你的脑海,才能够激发出创造力。嗯不对,这段话描述的那么像嗑药体验…….

但是我决定还是要多出去走走,见识不同的地方,去体验,去记录,哪怕是一段带着工作的旅行,也总比漫天的 Business Planning 和 Project Planning 要好的,更何况,你并不清楚成果如何。

我不知道,该说这个暑假糟糕还是不糟糕。糟糕的是,我决定不能回到那个城市,因为有些东西一旦被触发,一定会很糟糕。另外一方面,

 


WWDC 2019 – Viewed by a Developer

BitCode

不久之前,App Store 的应用把上传 bitcode 作为要求,目的是“ to reoptimize the app binaries”。配合了 Swift 5 的缩库,App Store 应用分发的体积减少应该是必然的事情。

Project Catalyst

随着应用的逐步迁移,我想:ARM 和 x86 之争很快就能有一个结果。试想一下,同样是 Metal 渲染的游戏,在 iPad 和 macOS 上的性能差距能有多大?

ML 集合

看了一下 CoreML 的预设模型,明显是倾向移动端——都不是非常消耗性能的模型。

那么问题就来了,在 A12X 上它能跑多快?

RealityKit

我曾经想做一个 Sk8rNet 来追踪自己的滑板动作,结果发现 Person Occulation 正好切中了我的需求。

5G 的调研

  • 速度:可以期望 4G 的十倍(大概的意思就是,在 4G 网络中的 10 MB/s 提速至 50 MB/s
  • 延迟
    • 4G: 大概是多个基站,先无线基站(高延迟,但是为什么?),后光纤骨干网络
    • 5G;基站和基站之间延迟在 1ms 以内
    • 自动驾驶在这样的延迟之下可以做到联网运作
    • 但是自动驾驶最大的瓶颈在于感知,而感知想要做好确实很难。
  • 和 ipv6 的关系
    • 地址分配足够充足——同一个设备换不同的地方,还是同一个 ip

 


不要试图找大目标,先从小目标做起

大学的期末其实最让人迷茫。

考试之外,就是成堆的空闲时间,对于有些科目,复习尚能得到满足感,可是对于另外一些来讲,实在就是一种浪费。

很多时候,我实在不想要一种所谓的计划。我只想收一下心,静下来做一些值得专注的事情。因为情绪问题还是很重要的。在专注的这个方面,我想你有必要树立两个原则:1. 先把手头上的事情做好 2. 如果出现新的焦虑,不妨先把它放下,然后做一些专注的学习,比如完成学习项目(基于 SSM 框架做一个爬虫类型的服务框架)等等。

 


“按需分配”

我曾经以为,“按需分配”是社会个体幸福的直接体现,但是我错了。

“按需分配”的概念并不是说,我想要一台保时捷,那么我就可以有一辆——这完全违背了经济的效率原则,因为想要保时捷的人不一定能发挥它的价值。

真正的按需分配,是一套理论上完美的经济制度,完美到不存在任何市场失灵的现象,所有的供给都能完美的对接无论多瞬息万变的需求。

这种经济制度自然是不可能存在的,但是这个概念上的问题,是一定要搞清楚的。真正有效而稳定的经济制度,绝对不可能允许天上掉馅饼的情况存在。

 


Into the Life

To be the lifeholder requires a wise observer, who goes to everyday life. However, it is always difficult to grasp the demand of the *people*.

Yeah they say the largest demand is laid in the big hands, and the small companies are taking the seams. The places determine view of certain people. I can see through that and know who has resources behind them and how has not

 


Focus, and the Drive

Thu. May 30th. Night.

要知道,在这个世上干什么都不易,学什么都很难。

专攻技术的人大概很早开始就攻打技术领域了,但是你需要补上的太多。哪怕你有你最敬佩的人那样的实力,也需要花费大量的时间才能有所进展。

专注和高效大概是最迫切的追求了吧,但是选对方向也会很重要。走哪一条路呢?这背后应该是什么来支撑你走下去,走到更高远的地方?

是诗人一样的理想主义?还是现实的利益诉求?还是禅师的 mindfulness?对于我这样一个可怜人,很多时候,应该还是要考理想来支撑一阵子才行得通呵。

从 Instagram 谈到信息源

Thu. May 30th. Cloudy. Sleepy

起码有一个月没有刷过 Instagram 了——首先是因为事务繁杂,再有就是代理的崩坏(怪就怪在,只崩 Instagram),最后,就是时间不够问题。

最大的感触就是自己的 Instagram Feed 多了很多不喜欢的东西,想要取关一大堆账号,然后寻找一些更合适的。

最大的改变,大概就是我不像以前那样追求虚无的光影了。相比每一张照片,我会更切实的想它的“原型”是什么,到底是什么样的手法塑造了“原型”之上的一切。

Inoreader 上的订阅源,也是时候换一批了。很多的大众媒体其实已经满足不了我的需求。很多真正有深度,值得阅读的文章,都分散在各处——某个知乎专栏或者 Medium 专栏,港媒 D. 的 App 独占,Podcasts 或者是微信公众号中的某一个。只是碎片化的知识体系,我尚没有形成一个足够稳定的体系,希望某一天能够弥补吧。

那将是一个真正的 All-in-One 入口,只是碎片化知识体系是否值得我花如此大量的时间去整理呢?我也不得而知了。

Inbox ✖ TG Channel

May 29th. Hace Sol.

微信是可以可以通过 web 获取接口的,而且很多获取型的操作都可以做,那么,telegram 是不是也能够做到呢?

如果是这样的话,Kiv Zone 的 Inbox 可以被设置为与某个 Telegram Channel 相互同步更新,省下很多麻烦。

在某一天,了解到 WordPress 的插件开发是基于 php 的,但是个人目前不希望朝着 php 这个技术栈发展,因此除了一些必要的钩子之外,很大概率还使用 JS 开发。

关于 Spotlight 的部分调研

May 27th. Rain? Cloudy?

macOS 的 Spotlight 是 MetaData 框架的一部分,核心服务是 mds (目测是 Metadata Server)。在 10.5 (Tiger)加入。Anyway, the spotlight launcher is just a shell.

  • 与 Finder 深度耦合,因此大部分的文件删改更新都会通过 fsevents (file system ~) 得到 Spotlight 的响应。
  • Terminal 下的 md 系命令可以与 Spotlight 交互
  • 使用 Node.js 与其接口交互的机理尚不明确
  • .metadata_never_index 隐藏文件可标记当前目录为不被索引 (e.g 多媒体)