原来古代以色列就有拐卖人口

http://bible.com/48/exo.21.16.CUNPSS-神 「拐带人口,或是把人卖了,或是留在他手下,必要把他治死。

Advertisements

use small successes to build confidence and momentum

big CL is painful to get through, takes long reviewing time, too many feedbacks and changes and sometimes just didn’t get though, which is very frustrating

and frustration makes one sad, weak, loss confidence, moves slow, little sense of achievement

big projects usually fail

laozi: one thousand miles starts with a single step

breaking big tasks to many small tasks will make things much easier

small success is far easier than big success

it’s like using a ladder to climb

and such a ladder is essential for every learning activities as learning is like climbing.

三年前的代码

周末帮以前的老板干活儿。钱老板投了一篇paper,但是被拒了。不过老板还是觉得有戏。然我帮忙回一堆的comments。comments回了。老板还希望把程序再run一下,加一些修改。本来挺不情愿的,因为平时也忙。而且一想起来要钻到以前代码里去就觉得是个坑。开始两天心里想答应还是不答应。反复思量,觉得还是答应吧。作为基督徒应该submissive。因为凡事都有神美好的旨意。于是说周末可能有时间。

周末抽空干了一下。也没花太多时间,基本上也做完了。其实还学到一些东西,感谢主。

重新在以前的代码上做事是一件很诡异的事情。特别是在换了工作环境之后。特别是来了g之后。

以前碰到的问题又重新浮现出来。

比如最开始run一个script就报错。//就说是个坑

为啥呢,因为自己以前的代码一般都是螺旋式递进的。经常在旧代码上做一些小改动以适应新代码的需求。但是这些改动往往让老的代码break。以前用hg来管理代码,类似于git,喜欢把一个项目分解成很多小的repo。然后快速迭代。repo之间会有依赖关系。

好吧,问题说白了就是没有continuous integration,这个是来了g以后学到的。虽然很早就这道这些个概念,但是从来没实施过,没有环境,也没有动力。而且matlab代码怎么做continous integration?来了g之后,环境专业了很多。任何代码提交都有严格的审查。在提交之前就会检查是否会break已有的代码。这是个限制,但也是个祝福。这是antifragile。

还有release。之前的paper的结果需要更新。可是怎么知道哪个结果对应哪个程序?哪个参数?哪个数据?程序总是不断的在改动。旧的结果是否可以重现?新的结果在将来如何重现?

如果没有专业的release过程。这些都会对未来造成问题。

以前很少想过这个。即使想过也都没有太大在意。

现在回头看,能发现好多不足的地方。

另外说学到的东西。reviewer的comments本来我都觉得没什么意义的。不过,作为基督徒还是从了吧。就对应写了些代码,试了一下。发现果然有意义。比如pseudo inverse。reviewer说没有regularization么,那个white band是不是相当于regularization?我说不是。不过regularization这个idea值得一试。试了一下,发现竟然真有效,不仅仅是对synthesize出来的lowrank数据,而且对真实数据也有提升。中间实现的时候还碰到一个问题,不过想办法解决了。就是regularization factor不能常数。设置成s1e-5比较好,s是最大的singular value。

感谢主。