;-)

Welcome! 欢迎光临!

Research and Projects on the top exhibit what I am doing or what I have done. In "What Am I Thinking" on your right, you can read my latest tweets. The "Topics" on the right and the "My Role" on the top categorize my posts by the topics or the roles I involved for the issues. Most posts on this website are in both English and Chinese.

在上方导航条中的研究项目中,您可以查看我正在做什么;在右侧的“What Am I Thinking”中,您可以阅读我最新的推文;右侧的“Topics”和上方的“My Roles”则将我的日志按照题目和我在里面涉及的角色进行归类。本站大部分日志使用中、英文双语。

12/15

Almost two years ago, I've announced a small tool called Course Schedule Exporter, which exports the course schedule as ical format from BIT's internal banner system, based on a formerly private tool developed by myself to do such kind of exporting work. To bring it online, I've started a semi-private project called DPRBIT to bridge into the intranet of Beijing Institute of Technology so that our tool can access the data residing in the banner within the intranet.

DPRBIT provided an HTTP proxy as the interface to users. When a users tried to access any address via this proxy, our system would redirect the user to our authentication portal to verify the identity via the Central Authentication Service (CAS) maintained by the Network Service Center of BIT. After finishing up the authentication, the user would be granted to use the tunnel to access the intranet for 30 minutes. Course Schedule Exporter was based on this infrastructure with some minor exemptions mostly on the authentication part.

Both of them worked well. DPRBIT helped a number of exchange/study-abroad students that year to access the intranet to finish up their compulsory capstone project filings, as the university's VPN was authenticated based on the billing status of the student's campus Internet account, which is ridiculous as those study-abroad students would not be on-campus to use the campus Internet let alone paying the monthly fees.

These systems have been there for two years, while the public interface for DPRBIT had been taken offline shortly after a port scanning activity from our server reported to our ISP, which was suspected to be due to any potential backdoor residing in the front-tier of DPRBIT.

Recently, our link to BIT's intranet went off presumably due to a network topology change at BIT, and the CAS maintained by the Network Service Center is no longer open to any developer but restricted only to their "official" services without any other possibility to gain the access to the CAS. Since these two services have been running for two years and some of the designs have been proved to be lack of scalability, I've decided to terminate these two services.

The user interfaces to them are still left running, but the core services have been taken down permanently. I am happy to resume these services with any current BIT student who is interested in this project.

12/03

I've recently been working on the installation of a bio software called Whole-Genome Shotgun Assembler (wgs-assembler) on the cluster I am working with. This error took us a while to fix, so I am writing the details here hopefully to help other system administrators on installing this software.

As most research software does, wgs contains a bunch of bash scripts to call all the different bio software programs (we call as dependencies) to finish the processing on different stages. Research software projects are generally poorly documented, so it is very hard to figure out what is going on if any error message occurs. There is a tool script called PacBio Corrected Reads (PBcR) which yields the following error message on the user's execution:

ERROR: Overlap prep job /users/**/tempsciara/1-overlapper/correct_reads_part 1
FAILED.
ERROR: Overlap prep job /users/**/tempsciara/1-overlapper/correct_reads_part 2
FAILED.
...
8 overlap partitioning jobs failed.

This issue is hard to deal with because I couldn't reproduce it on my end, since the exact same command works on my end. There were apparently some funny things happening that were different on my run from the user's run. Reproduction is important in this case, as there is not much documentation to reference for research software and the error message didn't provide very useful information. The best way to deal with such kind of ad-hoc scripts is to debug the script which causes the trouble. By using debugger or simply tentatively modifying the script to get more information, we could figure out the behaviors of the scripts and then the direct causes of the failures.

Finally, we made to reproduce the error on our end, and it turned out that the script is hard-coding an absolute path for an external command `/usr/bin/time`. It is understandable in this case because `time` is a basic utility command distributed via core-utils package. For most Linux users, they should have `time` installed on their default executable path `/usr/bin`. However, the problem for clusters is that a clusters normally need to host as many compute nodes as possible. Putting too much thing in the core (i.e. storing too much time locally) would really obstruct this goal and slow down the system. Therefore, in our case, we installed some non-essential utilities somewhere else accessible via NFS. The user was running the job on a compute node that does not have `time` installed at `/usr/bin`, while we were attempting to reproduce on a fully-functional master node which has the command installed locally. The script did write the error message as the result from a problem called at an intermediate step, but it was not documented anywhere, so we couldn't only figure it out until going through the source code.

The fix for this issue would be replacing all `/usr/bin/time` in PBcR (or PBcR.pl in the installation source code) to `/usr/bin/env time`. A bug report has been created to the author.

In summary, from this issue, we can see the efficient steps to deal with the error of research software are:

  1. reproduce the errors;
  2. go through the source code and debug the code to figure out what those error messages mean and what causes the errors.

Another takeaway is that script software developers should not pose assumptions on the path of any command. `/usr/bin/env` is a great tool to help figure out the path of a desired command.

11/05

The Monkey has recently reinstalled the operating system on his personal laptop to deal with some resource depletion. After the re-installation, he was not able to utilize the SkyDrive feature builtin Microsoft OneNote 2010.

OneNote firstly complained about WebDAV, and later on, after a reboot, the software turned to show the following message at File->Open menu:

This service is disabled by policy. Contact your system administrator to enable it.

The Monkey started the WebDAV service and tried to edit the WebIntegratedEnabled and DisableSkydriveSetupOnFirstBoot in the registry as suggested by a post, but none of them worked out. He installed the "spamy" Microsoft SkyDrive client, which didn't resolve the OneNote issue at all.

Driven by the most naive idea, he decided to reinstall Microsoft Office, and it didn't help too much. However, this time the "policy" error message on OneNote disappeared, but he still could not open OneNote even through the "Launch in OneNote" links on the web UI of SkyDrive.

The SkyDrive client complained about "Internet Connectivity", but the Monkey is sure that the Internet was on and the firewalls were set to be open to the corresponding software, and his roommate was not Skyping or playing video games. Finally, it turned out to be a configuration issue. So, SkyDrive integration requires TLS to establish connections. However, for some reasons, some Windows installations have disabled TLS supports by default, which causes the weird connectivity issue.

The solution is to select the options to allow TLS under the Advanced tab in Internet Settings on the Control Panel. The problem resolved immediately when the Monkey made this change. Since he couldn't find any direct information about this issue related to OneNote, we are posting this report, and hopefully it would help others. The Monkey has denied to comment on this bad design though.

03/19

Recently, I am learning Web security issues. Cross-Site Request Forgery (CSRF) forges users behaviors to utilize stored Cookies to act as the users or steal information.

The same-origin-policies (SOPs) is a mechanism enforced by browsers to protect their users. However, I find that it is hard to get a clear English description of SOPs behaviors as well as what SOPs can give and what it cannot give. After struggling couples of hours on this mechanism, I am trying to put my understand here to request for comments or corrections.

Scope: Script-Initiated Requests

SOPs is only enforced on the requests initiated by client-side scripts. Therefore, those CSRFs initiated by resource references, such as loading an "image" or an iframe will not be enforced on this rule. That is also the reason why we can reference arbitrary images from arbitrary external websites on our websites.

Browser: Enforcement after Requesting

For each script-initiated request, the browser will request to the server. However, before delivering the response back to the initiator, the browser will check if this request violates the same-origin policies. If it violates, the browser will not deliver back the information to the script. Note that the request is actually made by the browser to the server.

Why browsers cannot stop those requests before sending them out? Because we may also want to allow someone to do such kind of script-initiated requests (for example, at client-side API calls), which is called as cross-origin resource sharing (CORS). When a server responds the request, it includes headers like Access-Control-Allow-Origin to tell browsers which origins the server allows. This information can only be retrieved after making such request. That's why browsers have to request the "suspicious" requests.

SOPs: Avoid Information Leakage

So, what is protected then? When I first time got this formal name of CSRF, I was very anxious about someone making HTTP requests on my behalf. However, now we see that the browser does not stop this.

Well, the browser is actually protecting us from information leakage. Whether the request is initiated by a resource reference or by a script without a correct response due to browser's SOPs, the malicious script does not get any information from the other website. So, it is defending us from utilizing the Cookies stored in the browser to do unauthorized access.

Server: Origin Headers and CSRF Tokens

So, what can protect us from making unauthorized requests? As a part of the CORS standard, all state-modifying requests (POST/DELETE methods...) should include a Origin header for the server. The server then can determine if it should execute the request with its accepted origin lists on the server-side.

However, in the real Internet, state-modifying happens also in GET requests. The standard does not require browsers to send Origin header to the server, so the server needs a way to protect itself. There are multiple options, such as adding CAPTCHA or checking Referrer. Unfortunately, none of them solves the problem without changing the user behaviors.

SOPs + CSRF Tokens: Avoid Unauthorized Requests

CSRF Tokens solves this issue by creating in a preliminary page a token which won't be stored in the browser. A malicious script cannot get any information from the victim website due to SOPs, so it cannot get the token by requesting the preliminary page. Therefore, it cannot pass the CSRF token checking on the server-side.

Now, we see that the browser protects users in their privacy aspects, while the server protects users from unauthorized request.

Remark: I am sure that there should be inaccuracy or mistakes, as CSRF is not my expertise. Please correct me if there is anything wrong.

07/09

学校在申报优秀军训,所以我们军训了一个月,而且我们在指挥部参与拍摄了很多细节性的东西。军训指挥部是在图书馆的报告厅里,报告厅的二层同传、转播室被用作值班老师的休息室,一层导播间被用作会议室,作为军训摄制组,我们的工位自然是在老师前面。我们隔壁是那栋大楼的电力、动力、空调、消防系统值班室,这个地方后来被我们抱怨了好长一段时间。

那个报告厅到图书馆的花园有一扇常年锁闭的门,门锁是在我们一侧,所以指挥部的人们经常为了抄小道从这扇门穿过图书馆去食堂。这个安保问题后来引起了图书馆馆长的注意,于是后来那个门的锁芯干脆被拆了——反正怎么也打不开了。军训各个连队每天都可以获得一定量的桶装纯净水,指挥部边上有一个纯净水的储存区用来分发纯净水,一些体质不适合军训的同学便在这里担任管理和送水的工作。指挥部经常出现几位领导,学工处处长、武装部部长、保卫部部长、分管副校长、团委分管副书记等人物,这也是后来校长接见本硕博班同学的时候才知道的。

我因为任务缘故,认识了水站的几个同学,包括大黄的同学相成,后来因为身高的缘故我们被征调到枪库,负责在分发模型枪支的时候清点出入人数和枪支数目。“枪库”是在一个宿舍楼的地下室内,阴暗的灯光下摆放着一排又一排的步枪模型,还有一些假的弹药箱。很有趣味。

军训自然是很快就接近了尾声,所有人都以为苦日子快熬出头了,班里同学决定去(良乡)镇上聚一次,于是我们一群人浩浩荡荡地在镇上闲逛,最后找到了一家“小肥羊”餐厅分两桌开吃。我一贯对于喝酒这个事情比较谨慎,很少在外面跟别人一起喝酒,班里的菜花同学后来还帮我挡了酒。只觉得大家聊天声音都很大,有的时候还冲着服务员喊——这在我看来是有些粗鲁的。

军训结束时有一个汇演仪式,我跟少帅在指挥部留守。少帅是水库那边的,因为有技术特长而在我们摄制组参与一些工作。中间一个老师跑回来,说军旗用的旗杆断了,鸡飞狗跳地找了找军旗旗杆。印象中我们军训时候大家经常一块儿去良乡2号食堂吃饭,还是很快乐的。

军训后是个周末,正好又赶上一个假期,图书馆没有开。我受大黄的启发,找了离宿舍最远的良乡2号教学楼(综合教学楼)四层一个角落看了看新学期的书,主要是在看《数学分析》,其间还跟高中同学张导电话咨询了这坨课应该怎么学。张导对我帮助很大,他数学造诣很深,而且很乐于跟别人将问题,总是讲得非常有趣。我数分这门课开始的时候上手快,一定程度上得谢谢张导的“启蒙教育”。

第一天上课前的那天早上,我在楼道里晃悠串寝,跟隔壁班长他们宿舍聊起是不是需要去占个座之类的。于是我们一拍即合,没想到居然掀起了本硕博三个班整整两年的占座狂潮!

大学第一节课是方教授的数学分析,是在良乡1-105那个小黑屋里,我们班人自然干练地把教室的前三排扫入囊中。我则找了第一排中区最左边那个最靠近老师的座位,因为我觉得如果要听课当然就要找一个最近的座位——听得最清也看得最清,有问题还能直接交流。后来这个座位成了我们三个本硕博班一起上课时候我的专座。

方教授讲课完全使用板书,不过印象中第一节课是例外,她说一般用板书是因为内容难,她怕讲得太快了学生跟不上。方老师讲课条理很清楚,跟书上的内容几乎一字不差——毕竟那本书是她自己写的。课下提问也怎么也问不到她,我们每周有一个助教答疑时间,那个吴学长对我们真是循循善诱,而且一脉相承了方老师的风格,怎么也问不到。有的时候一个简单的问题,吴助教能讲出来一系列相关的类似的理论出来,最开始答疑我是不去的,后来去过一次津津有味听过一次以后,就每次都不落了。可惜他只带了我们一个学期,后来换了一个很没意思的助教。

大一第一学期的课表还是很轻松的,很少有两节课连着上的情况发生——这在后来简直就是奢侈,因为从早上8点连着上到晚上9:30的情况很常见。我很快跟我熟悉的人——高中同学建博——会合,他带着他的室友冠群、宇航,我们几个人说去找个空教室写写作业,于是我们居然傻乎乎地跨过良乡东路跑到北校区的良乡2号楼顶层(似乎是我前一天看书的那个教室),然后就聊起课上老师讲的内容了。

我当时对集合的可数性质非常不理解,胆子可能也是当时那帮同学中最大的了(现在这帮同学里胆子比我大的多了去),直接给方教授去了条短信咨询。方教授居然打过来了,然后给我讲了好久,记得当时背景噪音很重,似乎是在等公交车。时间很快就过去了,我们快快乐乐地冲向食堂吃饭。

下午是高飞教授的C语言课,出乎我们预料的是高教授居然是女的……课堂上还有一位留学生,我当时比较羞涩,不过班里似乎有同学跟他关系搞得不错。还有几个上一届的来听课或者通过某种途径选上这门课的。这门课的上机是要在一个类似于OJ (Online Judge) 的系统上完成的,作为资深NOIP选手和资深NOI选拔赛选手,这对我当然不在话下。于是我吭哧吭哧地很快搞定了所有的上机作业题……然后飞设他们班的葛同学就主动认识我,然后给我起了“大神”这个外号。后来证明葛同学是他们班的大神。

晚上去我很早就回去了,因为作业我白天已经都搞定了——这是高三养成的习惯,我一般一有时间就先写作业,不然要么写不完,要么质量没有保证。结果宿舍居然一个人也没有,真的是空空的楼道一个人也没有!好吧,在宿舍无聊了一会儿,只好走到图书馆基础科学区(O类)去看书啦,然后在这里遇见了建博的室友冠群。这小子还穿了件衬衫,打扮得很是正式呢!我们就这么认识了,没想到他成了我前两年里最最重要的朋友,我们整整1年里每天一起上自习,后来虽然因为专业课程不同时间凑不上了,但是我们还是非常要好的朋友。

再说回占座,飞设和安工这两班被我们班汹涌的占座大军搞得忍无可忍了——我们班占座大师、我的室友主席同学每天早晨5点多爬起来,等到宿舍门一开就窜到教室去占好前三排……他们两个班的班长联合起来要跟我们班“谈判”,我们班自然是视而不见了,毕竟我们班还是很占优势的——这些是听那两个班的同学描述的。后来,他们两个班的辅导员(是同一个人)给我们三个班(我们的辅导员跟他们两个班的不是一个人,也不属于一个学部)定出了一条规矩,就是只能用课本占座。我们班出于礼节就接受了,不过主席总是能让这两个班“魂飞丧胆”,于是后面出现了隔夜占座、隔夜占座书被收、隔夜占座守着不让书被收之类的事情。

周二只有一节课——高等代数,是孙教授的课。当时孙教授很早就来教室了,看见我们三个班因为前一天数分课上的事情而占的满教室的座位,非常感动。孙教授上课前还跟我们这些坐在前面的同学聊了聊,因为是阶梯教室我就坐在了第二排。我问:“您是××老师吗?”孙教授说:“正是在下。”后面还有帮他调讲稿放映模式的事情,让我们感觉这个老师非常有意思,应该工作有年头了,而且在他们学院应该也算个领导。

孙老师积极性很高,他自己编了一套英文讲义,他说他用中文讲,英文讲义我们自己看一看可以作为参考。考试取讲义、他讲过的、教科书的交集。最后考试也是很厚道,第一学期到头来其实没奖多少内容,就是讲了讲矩阵的四则运算而已。结果我们三个班好多人都挂了——按照规定挂科是要退回普通班的,后来据说对孙教授打击也很大,第二个学期他再也不提那个英文讲义的事情了。不过平心而论,他的英文讲义还是很有用的,我学了很多数学词汇和表述方式呢!这在后来搞数学建模的时候,尤为明显。

这节课后是大学生心理课,这是恐怕是我大学中唯一一门自始至终都没听过讲的课了,我课上一直都在跟冠群聊天“交流感情”,于是期末成绩也很“漂亮”——唯一一门低于70分的课。马上要登场的另一个最重要的朋友楷哥貌似还比我第几分,这让我心里些许有些安慰(哈哈哈)。

我们学院第一学期开工程制图课,那是我头一次跟实验班、双语班的同学一起上课,大家都还不太熟悉。教我们的老师不但是教科书的编写者,还是国家标准的参与人,他不但能告诉我们应该怎么做,还会告诉我们为什么国家标准要求我们这样标注尺寸。这门课的期末考试是第一个出成绩的,当时普通班挂了一大片,我则拿了98分的好成绩。那门课的老师出成绩后跟我说,我那2分应该是属于从严扣掉的了,我整张卷子答得很好,他还说他特别欣赏我这种考完试还关心错在哪里的学生,说以后学习生活上有什么困难都可以去找他。

正是这次成绩刺激到了我,让我认识到并不是所有人都跟我一样的,有相当一部分人根本就不听课。因为我无非就是每节课认真听讲、按时上课、不早退、按时交作业、不抄袭,考前简单看了看书、考试的时候维持着一个稳定的心态。说起这门课的考试,我当时记得有道10分的大题我是怎么也搞不出来,根据高中惨痛的经验教训,我果断跳了过去,之后淡定地再回来做,当时还有些小紧张呢。监考老师不知道为什么老在我身边转悠,还不止一次的把我的证件拿起来仔细端详——后来我知道了,可能是我当时做的比较好、而且别人都卡住的时候我还按时做完了。

冠群、楷哥他们两个班是第二学期才开这门课的,居然很多人都挂了,包括我特别看好的同学曹老师——后来他只得退班了,最近两年一直没什么联系,据说后来是工作了。

我们学院还开了一个专业导论课,是我们学院上下两届本硕博班一起上的,于是我有机会认识上一届的学长和学院这帮老师们。第一节课下课后,我在教室里坐着等食堂人少一点儿再去吃午饭,教室里还有睿恒和一个学长凯成,于是我们跟学长聊起来,我便认识了他。再到后来寒假一起参加数学建模,我就又认识了晶阳学长等等。导论课内容还是比较有趣的,至少我大概知道学院都是在干些啥的了,我之前到处听讲座积累的知识面这时候发挥了作用,它们帮助我很快地接受了这些新的东西。不过当时好像只有我在认真听这个课…… 当时我还在犹豫是不是转学去滑铁卢大学读计算机,所以这门课也对我用处很大。

第一周很快就过去了,第二周就是十一黄金周了,于是我抽空回家玩了玩。据说冠群同学一个假期把整本高代给啃完了,十一回来以后我一听说就感到了压力山大啊!

第三周开始我们要开始上解析几何课了,是柱哥教。他是板书、幻灯混合大神,每次推导的时候都会好好板书,两个黑板上下换来换去的。忘了说了,按照本硕博的设计目标,我们的数学基础课是跟数学系相同标准的,我们院本硕博的物理基础课跟物理系也是相同标准的,所以我们证明做了很多很多,想当一些人说这些东西没用——但是现在看来,这些证明训练了我们的逻辑思维能力和严谨的态度,至少对于我是这样的。

柱哥非常敬业,我们当时在良乡,老师们上课都是要从市区坐班车过去,讲完课以后还要赶班车回市区。每次课后我们去找柱哥问问题,他总是不会打断我们,耐心地用黑板给我们解答完所有的问题,又一次甚至讲了整整一小节的时间,然后他自然是每次都赶不上班车了,但是他从来都不会说什么,甚至我们都不知道——直到后来我们专业课的老师拒绝回答问题我们才知道。

第一次解析几何课上,我们几个同学照例抓住宝贵的课间休息时间去找老师问问题,我观察到每次都会有个小个子的同学凑过来听一听,有时候还会参与一些比较有价值的观点、提一些有深度的问题,他就是楷哥,来自安工本硕博班,重庆江津人。这个人在我印象中总是一副卡通人物形象出现,有时候还偶尔卖个萌,每天都很开朗。我们前两年聊学术问题聊得不太多,后两年我们联系比较密切,有时候我会拉着他出来自习、拉着他去找外教练口语,上数值分析的时候还组队上去展示,他上魔电(模电)的时候我在考前给他讲过静态工作点的分析方法,我在国外的时候我们经常聊一些生活上的话题。可以他是我大学生活中最重要的朋友之一了。

外教课这时候也出现了,第一次课上老师问谁出过国,结果全班就我一个人出国(其实也就是那个假期,以前也没出过),后来在另一个高中同学Stanley的提示下,每周找外教练口语,后来还选了他夫人的选修课,在他家做过饼干,交换在国外的时候他们还曾经邀请过我去他们家。前几天听说他们下个学期要去越南教英语了,希望以后还能再见吧。他说他依然记得我在班上是非常“闪耀”、“聪颖”的学生,是他在我们班唯一一个两个学期都是A的学生。

就写到这里吧,四年的回忆怎么可能一下就写完呢?等我连载吧,要是有啥补充的,可以在原始链接下面评论、留言。

(未完待续)

06/27

手机上的倒计时提醒着我:距离毕业只剩下几天了,距离新的学期也不足两个月了。

四年前,也大约是这个时间,我就曾经来过中关村南大街5号的北京理工大学,看一看这所我未来将要上的大学究竟是什么样,最后决定报到、复读还是出国。那时,我还是刚刚拿到高考成绩,血气方刚,已经料想到自己的成绩录取我的第一志愿专业板上钉钉,此时的主动权在我手中。炎炎夏日,我在国家图书馆登上了特8路。只记得这个学校特别不好找,校园里脏乱差,设施特别破,标识混乱。我竟然相信了中心教学楼里面那个楼层标示牌,在那栋楼里撞来撞去。

几个月后,我还是决定来这里看看,至少先待一个学期,等有学上了再转学出去。报到那一天,我跟着我的高中同学大黄在家长的护送下,直奔北京市房山区良乡镇的北理工良乡校区。迎新自然一切都很美好,我认识了上一届实验班的理辰学长,也为信息工程这一大堆乱七八糟的分支感到纠结。室友略有些低于我的期望,可能是高中住校的缘故吧,当时觉得会挂科退回普通班的人最后都没挂,反倒是觉得靠谱的人最后挂了。因为当时没有打算真的在北理读下去,所以报到的时候也就没有拍照留念。

按照《兵役法》,我们必须参加军事训练。我在高中的时候有幸在军营里货真价实地训了一把,所以对这个军训真是一点儿兴趣也没有。报到之前,在QQ群里就听说军训宣传部门每年都会招募一些非线编辑人员;体检完了以后,我在教学楼里闲逛,搭讪认识了同听说这个事情的宏伟,于是我们一拍即合,互通有无。没想到我最后入选了,而他虽然没有入选,但却与我在另一个社团共事了。

说起军训,当时我们开一个大会跟辅导员和军训的指导员见面,因为两个教学楼名字很像,我们宿舍几个人过去找不到地方,然后就随便问了一个路人甲——于是我就结识了阳光辅导员昊哥,虽然当时只是因为他是软件、计算机专业的辅导员,但是他在后来给了我很大的帮助。我们开了很多很多的会,有的是介绍学院的、有的是介绍本硕博班制度的、有的是介绍辅导员和军训指导员的,已经都记不清了。

报到的第一天晚上,我拉着另一个北京的同学帆哥串寝,我们每进一个宿舍介绍一下自己,然后也让同学自我介绍一下,结果我们串寝队伍人数越来越多,最后我和帆哥总共自我介绍了不下七八遍!然后我们突然才想起来把所有人拉到大厅里围个圈圈自我介绍的办法。记得问题主要是自我介绍、个人兴趣、喜欢的运动、有什么打算,我跟帆哥开头说了不少,包括羽毛球什么的,结果到后面就都是“我就喜欢学习”这样的答案了,唯独有一个“我想要当官”的小坤给我的印象最深。

北京生源地的学生恐怕没有什么老乡会这一说,老家那边的同乡会当时也没有信息——其实应该参加一下的。于是,我们一帮高中同学就互相闲侃,消磨时光。

  • 跟同学讨论聚餐)我就打算开学再去了。我现在还有点酒精中毒的样子,意识还有点模糊……等我好受点再聊吧……现在浑身痉挛……
  • 激活学校发的银行卡)欢迎使用××银行网上个人银行专业版,请登录下载专业版并安装激活,激活授权码见申请回执,请妥善保存,切莫告知他人。[××银行]
  • 我去北理啊...你觉得还能去哪啊...?应该是去信息工程...我还没想好呢...还得再考虑考虑...
  • 没…我也想要有意思的事情…他们聊我被孤立~呃我还没找着北京的呢
  • 班主任通知开第一次会)九点半,体检后在校医院门口集合,请转告别的同学!
  • 给高中班主任说一说现在的情况)好孩子啊~好好学习,心态要好,将来的结果跟学校如何没有绝对关系,主要还看自己的本事…加油!
  • 怪不得高中不让用电~刚洗澡去了一个人都没有,因为他们打疫苗北京的不用~
  • 不是跟你说了...我们要排练晚会内容...然后就不用去了...还能拿到90多分的成绩啊~哦哈哈哈~
  • 体检先交费,105,大家速度;12:45图书馆旁广场集合领军装,互相提醒
  • 宏伟告诉我军训宣传部门招募信息)我是宏伟,13点去综合教学楼205教室(学生电视中心)。以后多多联系!
  • 认识了阳光辅导员昊哥)好的,以后多沟通:)
  • 跟军训指导员搭讪)你好,头发长度不要超过你的手指直径宽度 。衣服晚上六点半可以补领
  • 给辅导员反映附近建筑噪音的问题)好的,先转告大家克服一下,霍老师
  • 入选军训宣传部门)这里是电视中心编辑部,恭喜你入选北京理工大学学生电视中心,并成为其中的精英加入本学期军训摄制组,我们将于今日起(29日)进行集体培训,地点为良A205(今天面试地点),时间晚8点,请尽量带电脑。收到请回复。
  • 吐槽——他后来出国了,这也是我三年后在国外才知道)传祺:成都的大学太差了!
  • 老白赴美了——三年后我居然阴差阳错的去了他们学校交换)委座电,明日正午赴美,此号保留,欢迎校内、邮箱联系,各位珍重!特封你为党国北平站电讯处处长,兼良乡乡长,好好干!
  • 北大的同学吐槽课表)数分,高代,力学,电磁学,计算基础,程序设计……
  • 晨:通知:从今天开始你们正式被北京理工大学指挥部征调,理论课及考试必须正常上,其实时间归指挥部统一调配,今天中午十一点五十必须在指挥部集合(图书馆后门进入)
  • 军训初期
    • ——呃……宿舍一人看上一个女的……还有一帮人在聊游戏,你说我咋办?他们商量要四点起来……
    • ——这就是典型的欠练…过两天觉得没这精神头了~你让他们悠着点
  • 喔……你什么专业来着?我在弄托福……想一起背单词吗?
  • 班主任:各位同学好!我中午时会到你们宿舍收一下材料,请大家作好准备。请相关的同学准备以下三种材料:已收到的更改后的户口迁移卡、上次没有交的新生信息表、家庭经济情况调查表。谢谢!
  • 班主任:明天是大家离家进京求学后的第一个中秋节了,在这样一个团圆节日里,大家难免有独在异乡的感觉吧?不妨就把老师和身边的同学当成家人吧!老师祝你们的大学生涯象十五的月亮一样圆满!生活象月光一样绵长!心灵象秋天的夜空一样深邃宁静!别忘了跟家人通个电话,休息外出时注意安全!

军训尾声中有一次中秋节,有的同学约着去街上、城里转一转。我本来打算回家的,结果被家长斥为不思进取、没有独立生活能力,只好自己在良乡大学城那几个学校附近走走转转,去了那个奇葩的良乡镇公交车站。这便是我大学四年的前奏。

(未完待续)

02/25

Someone asked me why I was so stupid that I gave up the "fast-track" offers from Beijing Institute of Technology and some other Chinese top universities to put myself under the uncertainty of applying a graduate school. Guess what? I am adventuring! People grow up in their adventures.

As a top student in my department, I could definitely get the "fast-track" offer by BIT or other top schools in China, and actually some professors did express the willingness to be my supervisor. As a former student in the BEng/PhD Honor Program with good standing, I was also guaranteed that I could do a PhD program in BIT with some well-known faculty members who have made great achievements in academic and research.

However, would it be interesting at all if I just played in that small school doing some research, which itself requires me to reduce the knowledge exchange with others, in the field which I am not crazy of? No, never! You will never know what the world looks like beyond the mountain unless you get out of the mountain. As a youth, I would like to adventure; I would like to try the things I am curios about; I would like to build helpful things even just starting from a random idea; I would like to treasure my virtue as a young person of brevity, creativity, and honesty.

A lot of students and even faculty members in BIT have heard me, and I think most of them only focus on my academic performance. I would be thankful to those who advertise me to the younger class or other professors, but I have to express my opinion now. As I said, I just did the most basic things in my first three years in BIT, which I believe should not be something uncommon. The honor program's rigid requirement on math maturity has almost taken up all my free time. I know that I did not have much chance to explore and to satisfy my curiosity, for which I did make a plan to make up.

I participated in the mathematical modeling contests, which I had heard for years before I went to college. I also tried to continue my journey in the algorithm world by joining the ACM/ICPC club, though I did not make it after two trials due to the time constraints caused by the academic work. With the kindly help from my former advisor and her team leader, I attended lectures for CS major students and Software Engineering students even though I could not enroll the classes due to the fault of BIT's undergraduate system. I attempted to replace the Data Structure pre-enrolled on my schedule with the more advanced one for Software Engineering major, and I also endeavored to minor in CS until I found the minor system in BIT just "technically" works since 2004. I also organized some discussion groups or reading groups to study on interesting topics or do some intensive research starting with the materials taught on-class though all of them did not last longer than half semester.

So what? I has already been aware of the unavoidable weakness of me compared with students in other schools. When I decided to start my new adventure, I have prepared to face the bitter and the challenges, since I know I would never be happy if I just stopped at the boasted illusion that "BIT is the BEST school in the universe", which itself is not logically self-consistent either.

This is not my first adventure, but it will be the hardest adventure so far. If I want to work on the topic I am crazy of, I have to face with tons of problems: I am not a CS majored student; I do not have a CS minor; I cannot prove my ability in programming and my college-level knowledge in CS, since I learnt them before college, which is not listed on my undergraduate transcripts; except for Chinese, no one know the arrogant institution beyond China at all. Compared with CS classmates here in Northeastern, I know I am as good as CS majored students, but it helps nothing.

Do I feel regretful for my choice? No way! All the difficulties I am currently facing to confirm my decision's correctness. If I had not done that, later on, things would become much more uncontrollable. If I really felt regretful, the thing I would regret should be the choice I made 4 years before. So, whatever!

If I had not chosen to do that adventure 7 years before, what would my life be now? As an atheist, I don't want to say something transcendental. So, maybe I should use chemistry. If you don't break the equilibrium, how can you reach the product?

02/04

A BIT student in his sophomore year asked my typical day when I was in my freshmen and sophomore years in Beijing Institute of Technology. I found a picture showing my junior year's daily planner, and I hope it will work as a reference for the current students in the same department get ideas to optimize their time usage.

My Typical Weekday

My department in BIT required a heavy workload on the second year and the third year students. My free time was actually split into small fractions by endless courses. The main idea I had for using time was to ensure the in-class participation with the highest priority, and then I would try my best to finish my reviews of courses in the day I learnt them. The assignments were allocated to different days over the week so that I wouldn't be crazy of the unfinished homework, and I also knew that I could finish them on time with high quality, since I did not mix them or cram for them.

I designed this daily planner on my first junior semester, since I could not find somewhere to buy one in China. I started to use it for Spring 2013. I found it really convenient especially after I bought a planner in the US during my exchange year. My planner includes areas for recording the tasks in this week, allocating tasks over the days, listing all the things for a day, and planing a day by hours.

一个北理的学弟问我大一、大二的典型一天是什么样的,我后来找到了一张照片,里面有我大三的时候的日程表,希望这个图片能够帮助他们找到利用自己时间的方法。

我在的那个学院在第二、第三年的时候学业非常重,我的空闲时间被无尽的课程分割成了很多小的碎片。我主要是首先保证课堂参与,然后尽力当日将课上内容复习完;至于作业,我会把他们安排到一周内的不同天来做,这样我不会为没完成作业而疯狂,也能够保证作业质量。

我大三第一学期的时候因为买不到日程表,所以自己的设计了一个日程表,然后在2013年秋季学期使用。在来交换了以后我尤其发现我当时设计的日程表非常方便,因为它可以记录一周内的任务、分配任务、列出一天要做的事情、按小时计划一天。

01/15

I have enhanced the appearance of Monkey House to make it informative to different kind of readers.

  • Multiple pages linked on the navigation bar are added to introduce the projects I did or am doing.
  • A preface is shown in the front page of Monkey House to help new readers know all features on this website.
  • I have optimized the code to implement the big theme image above the navigation bar, and loading a page should be faster.
  • The date of each post is shown as a more compact form.

Click here to go to Monkey House.

我对猴子的小窝外观进行了一些小的改进,以便能够适应不同读者的需求。

  • 在顶部导航栏上增加了几个新的栏目,用来介绍我已经或者正在做的独立研究项目或者开发项目;
  • 在主页上显示一个前言以便让新读者了解本站的所有功能;
  • 对显示导航条上方的主题图片的算法做了改进,提升了页面加载速度。

点击这里进入猴子的小窝。

12/28

This post is intended to be a non-English post due to its special focusing. 此文章因特殊侧重而无英文版。

一直没时间总结一下我这次赴美对社会的新的体验,这次把最近数月遇到的一些小事儿一起做一个整理,以满足读者的好奇心。

从独居老人一窥普通民众

我一开始搬入的宿舍是学校在社会上租的公寓,楼内除了我们学校的同学以外还有很多社区上的居民。有一天深夜,我在临睡前下楼查看信箱,处理信箱里积攒了一个假期的给上一个房间主人的垃圾邮件,正当我犹豫不知道这些邮件怎么办时,一位六旬老太开着轮椅进入了收发室。

她看见我在犹豫地扔邮件,于是问我:“这是给你的邮件吗?”当我告诉她这坨邮件里面有不署名的垃圾邮件和署名的邮件,而我在扔的是未署名的垃圾邮件时,她给我说了一大通不应该乱扔别人邮件的道理,然后肯定了我扔未署名垃圾邮件的处理方式。她非常热心地告诉我邮局有一项转发邮件服务,会在户主人搬走以后把邮件转到其新地址;她还示范如何操作就可以把这些邮件退回邮局;她教我在信箱里写上我们室友的名字,邮递员在投递的时候就会把署其他人姓名的邮件直接退回。波士顿居民的热心我已经见识到了,而且这其实已经不是我第一次看到美国人民的规则意识了:邮件不是给你的你就不应该随便处理。

看的出来她是想找人聊聊天儿,她看到我手里有一封人口统计局的邮件,于是跟我聊起来了政治。她说人口普查对政府很重要,所以他们会非常热心地不停地发邮件。地方政府需要根据人数来向州政府要经费,地区如果需要修个路的话地方政府会根据附近居民人数决定是否修,然后她就顺利成章地对美国政客进行了标准式的批判:“这些政客就是整天说一些鬼话,从来不关心我们的生活。我反正一直不理他们的人口普查问卷。”然后她又聊起来半夜有“人口普查员”敲门的事情,她说她绝对不会开门,谁知道这些人是不是真的是普查员,还是坏蛋呢。她翻了翻她的信箱,看到一份广告,然后给我说其实广告对她还是挺有用的,能省点儿钱不是省吗?

看起来民众们其实跟国内的差不多,可能规则意识强一些,对政治以及政客还有他们的那些口号没有国内那么在意和关注(准确地说是嗤之以鼻),对人的戒心很强但是又很热心。反观国内:规则意识是一个大问题,社会需要靠规则组织起来,不然社会就失去了其原有的作用,然后便不会稳定;国内似乎对政客们的那些口号非常关注,尤其一些人热衷于西方政客的那些口号,然而戏剧性地是似乎他们的民众一直都把这些是做鬼话连篇的东西。

从GRE考试到社会化的考试服务

我在这边考了一回美国研究生入学考试(GRE),在美国这一类考试都是在附近的考试中心进行,而这些考试中心其实就是一些专门用来提供考试服务的考试公司(国内对应的叫做教育部考试中心)。考试中心提供的是考试服务,本质还是服务。

那天早上我按照国内的要求很早就过去检录了,监考员非常和蔼地帮我在候考区办手续、告诉我怎么使用储物柜。候考区里考生准备的考试五花八门,似乎当天就两个人再考研究生入学考试。稍等片刻后,监考员带我进入考试区,进去之前跟ETS视频上一样,监考员跟我坐着介绍考试中间的要求和如何召唤监考员、中场休息时应该怎么做,然后就是一样安检了。他让我把所有的口袋翻出来检查,还说了一个什么我听不懂的东西,见我没听懂,他便耐心地面带笑容地连解释带比划,然后我明白了是我牛仔裤的一个我自己从来没有注意过的在腰带附近的一个小口袋。

这要是在国内,监考员见我听不懂,如果不说几句难听话,估计就该直接动手自己去翻我的口袋了;给我的感觉还是规则意识,还有非常注意尊重他人,别人的隐私(口袋被认为是隐私)不能碰。当然,更重要的一点是修养,这个在这边尤其明显:这边的有些同学修养一般,而有些同学非常有绅士风度,说话、做事上很少跟人红脸或者发脾气,而修养通常能够通过衣着等外观区分。

理发店员工对中国大妈的羡慕

搬到新宿舍以后,我有一次去附近的一个理发店理发,给我理发的员工是一个约五十岁的女士。她跟我聊起了上个暑假接待我所在学校的暑期学校学生的经历,主要就是那帮从南美来的孩子非要喝酒,而根据当地法律21岁以下儿童严禁饮酒,于是她坚决不允许而且断然拒绝帮他们买酒,而那些孩子们反驳的理由是他们家里“他们家长跟他们一块儿喝”,她想听听我一个国际学生对这个事儿的看法。当然,不用说入乡随俗了,从这位女士的做法我又一次见识到了规则意识。

后来她聊到了她的每周五个工作日每天的工作都不一样,这对我来说倒是个很神奇的事情。她理发的地方是说西班牙语的人聚居的地方,她做医疗护理的地方是非洲裔聚居的地方,而她去当协警则是在唐人街。她说每次早晨在唐人街总能看见一群大妈在那里练太极或者舞剑,她非常羡慕这帮大妈这么有活力,她说“真是搞不明白这些老太太们哪儿来的这么多活力”,还给我示范了一下她看到的舞剑,学得之像令我不禁捧腹。

政府机关严密的安保

今天中午去食堂的路上,我顺路拐到了我以前从没去过的一个方向,去一个政府机关办理一个没有社保卡的证明(主要是办这个州的身份证需要用)。那个社保管理局是在一个民用建筑里面,于是大楼还算正常。结果一进社保局的那个玻璃门,还是有安检门,警卫人员还是要进行安检,而整个办公区其实也就一件教室那么大。

大厅里一副政府机构的典型布置,墙上挂着美国总统和州长两人的画像。这边倒是挺注意隐私的,办事窗口之前用墙隔开,对着大厅的窗口前面还有一个影壁。每个窗口那里居然装了1英寸(约2.5厘米)厚的防弹玻璃,比银行都搞得夸张。只能说这里跟国内的银行很像,而银行布置跟国内的政府办事大厅很像。