My critical mistakes in Academia and reflections

This post is a summary and reflection of the critical mistakes I have made throughout my post-secondary academia career. This is a gift for my child (if there is one) and it might be helpful for others.

Diverse interests without focus

I have three majors from economics, computer science, and mathematics after I finish my undergraduate degree. I often get wowed from other people. However, the more I focus on one field, the more I feel three majors are diversified enough to have no focus. Even I have a major in computer science, I didn’t take courses in computer architecture, operating systems, networks, compilers, which are essential courses for a computer science major. I have to take hard way to catch up with those missing material: reading classics. This process takes a long time and I’m still on my way finish studying them. If I have an end goal of becoming a computer scientist, there certainly no need to obtain a major in economics and I should become more focus on the mathematical branch related to topology, combinatorics, and logic. Taking extra unnecessary courses may not be the only waste. Lacking of background incurs extra cost during the PhD and job applications. Even though I manage to secure a position in industry, I still need lots of work to catch up.

Doesn’t know the end goal

Even though I have foreshadowed this point in the previous paragraph, I want to emphasize how important it is to know the end goal. Ideally, people should discover their interests from high school. However, start the exploration in college is not too late. But, the exploration should end after freshman so that there is enough time to become specialized and concentrate on something. Knowing the end goal cannot happen immediately but at least, it should happen by Junior. During the college, I hopped around three majors with no common theme at all: what I want to do for my future? I avoid to answer this question by taking the majors that may seem to offer the greatest flexibility in the future. However, the cost of doing so is the lack of depth. In addition, I didn’t know what I want to do for the computer science career: research or software engineer? That leads to one huge mistake detailed in “Failure in seizing ‘the’ opportunity” section. Knowing the end goal is very very important and the book “The 7 habits of Highly Effective People” should help.

Doesn’t engage in research with long term vision early

People often emphasize how important to get involved with research in college mainly because research is a critical component of higher education. I certainly did but my mistake is that I’m involving in research in ad-hoc way: I did research in math, in psychology, and in statistics without a common theme that connects them all together. In math, I did research in probability; in psychology, I did research in early childhood education; in statistics, I did research in fMRI. Those research experience is helpful only in the sense that they help me to discover what I don’t like. I always admire the people who can discover their interests early: there are lots of options; how can one settle on one without trying out others first? That’s my unresolved question. Technically speaking, I don’t think this section should be considered as a mistake but certainly, it is something that incurs lots of detours in my short-lived academia career.

Failure in seizing “the” opportunity

I started to compose this post when I was on the spring break trip in Alaska. I ran into a group of people who were from my undergraduate institution – University of Wisconsin-Madison. I had a brief chat with them. One question I asked one of them who happened to be a CS major was: does Wisconsin start to set bar for people who want to declare CS major? “No! Everyone can do it! That’s the amazing part of Wisconsin: the university gives everyone opportunities to try!” She answered. “I know a friend who transferred to Wisconsin from University of Washington to study CS because he cannot study CS at UW. Students in UW can study CS only when they are admitted to CS directly from high school.” Her replies don’t surprise: that’s the same impression I have about Wisconsin. However, her answer stirs a huge pain in my heart. I suddenly have guts to admit a huge mistake I have made during my first year study at UT-Austin.

I’m unsure about what to do with summer: whether I want to go to a research lab to prepare my PhD application or finding an internship in industry. As you can see, here I have the mistake of not knowing my end goal: I’m not sure whether I want to pursue a career in research or in software engineering. I contacted one of my former professors in Wisconsin and he was kind enough to offer me a position in his lab over the summer. He is a famous researcher and people are dying to work with him. But, guess you already know, I blow up the chance and work on a software engineering internship over the summer. Of course, the professor is unhappy but he is kind enough to not saying that explicitly. In the following Fall, I applied for PhD programs and I asked him for a letter. Without big surprise, I got rejected by all the programs including the school the professor is in. After learning the admission results, I keep lying to myself about all the drawbacks of attending a PhD program and I constantly have debate in my heart about whether I have made a good decision for the summer. After talking with the girl from my school during the trip, I suddenly realized that how upset I am in my heart and how I keep avoiding facing the fact that I have made a huge mistake and blow up “the” opportunity. I couldn’t help to imagine that if everything works out over the summer, I may already have the admission from his lab to have the privilege to study for PhD program. Of course, in real life, there is no “if”. Failure in seizing “the” opportunity can be treated as a pivot point in my life. A person’s life might be settled after a few pivotal decisions. I think I just made a mistake in one of them.

The only takeaway: Never ever give up your interest

I write the following in Chinese to my parents:

如果有孩子 我一定教育他不要因为钱和客观因素就轻易放弃梦想 因为放弃梦想的感觉真的很难受 即使最后你没有钱 但是你至少知道你为了梦想努力过 那种踏实的感觉是用钱买不回来的

Basically, it says that there is no such thing has higher worth than one’s dream. After getting rejected by all PhD programs, I know that getting an internship in industry over the summer signifies my give-up my interests in becoming a researcher for the money. I didn’t upset at the very beginning but the more I think about, the more I think I should stick with my interests no matter how poor or how old I am. Now, I’m in a situation about I should hog onto something that is not my interest: money in this case. I’m not sure eventually, I can have a way to switch back to my dream but I know it’s going to be a long and hard way


2018 End-year Recap








减重到70kg,体脂比在15% (监督链接: Daily Weight Statistics)

每周坚持锻炼至少3次,每次时长30分钟 (监督链接: Insanity Max 30 (2018))

一年读10本书 (监督链接: Goodreads 2018 Challenge)

每天刷2道leetcode  (监督链接: 刷题进度表)


完成的有 “找到实习或者署研”, “每周坚持锻炼至少3次, 每次时长30分钟”,“在美国找到工作”。 “向下扎根,向上结果” 并没有完成的很好。现在看看当时写下的文字 “18年希望内心得刚强” 现在看来是缺乏具体的行动计划的。最近在看的一本书“The 7 Habits of Highly Effective People” 给完成这个目标给出了一些具体的行动方案。“刚强”其实就是要有principles,不受外部条件变化和影响的principle。而principle,用书中的比喻来说就是要建立自己的personal constitution。要建立自己的personal constitution最简单的做法就是想象在葬礼上你想让别人怎样去评价你。这个会做为2019年的一个工作重点。减重还是没有很好的完成。今天量过的体重还是73公斤。最近从母亲那里学到了一些她的技巧,正在实践,不知道2019年的时候能否把这个工作项目从清单上消去。关于读书,说来真是惭愧的一年。在岁末的时候我才突然意识到我还没有完整的读完一本书。这真是让我震惊而又羞愧。“有学校可上”和“在美国找到工作”是冲突的,两者不可得兼。真正的是要去发现自己想要做什么。到现在其实还是很迷茫。虽然我对金钱没有那么渴望,但是人在外边,有一些金钱储备还是要踏实很多。我想我最后还是不会去继续读PhD了,但是剩下的面试还是准备全力以赴。最后就是关于刷题了。现在看看这个是一个长期的工作:每年都要做。去年目标不好的一点就是非常激进的规定了每天要做两道题。其实这个非常不好,并没有考虑到实际的条件(读书节奏快,事情多),高估了自己的精力。


首先还是要确立自己的personal constitution。这点比任何事情都重要。如果方向错了,任何的努力都是白费。


精神方面就是要多读书。要更加侧重读一些书,一些植根于中国传统文化当中的书。比如说孟子。今天看Youtube视频中突然提到了孟子的一句“由是則生而有不用也,由是則可以辟患而有不為也,是故所欲有甚於生者,所惡有甚於死者。” 觉得此句甚好,讲出了什么才是“大丈夫”的气节。故上网去查了一下。愕然发现这句出自上学时候背过的“鱼我所欲也”。通读了一下全篇。不由得发现自己对古文感到了如此的生疏。顿时惆怅了起来。在现在这个社会,粗俗扭曲的词汇不断出现,如何在这个环境下去刻意的维护自己的语言体系,去做一名儒士:说话写字有雅风,表达情感准确,不会觉得词穷。我觉得读古文是非常重要的一点。对于这点我是想2019年着重培养的习惯。

事业上,我想最重要的还是保持好奇心。刷题还是要继续,2019年刷200道题。另外,还是至少要做一个significant的side project。技术博客还是要继续保持更新。最低目标就是更新10篇。






End Semester Recap

I just finished all the exam and papers today. It has been a long day (wake up at 6) and I feel very exhausted. However, I want to do a quick recap of this semester before my judgment affected by my final grades.


CS 380D Distributed System

My first exam is a disaster. The exam is all about system design + understanding of RAFT. I didn’t get used to the system design in general. All I do is to remember every detail of some system implementations, which usually don’t matter from a design perspective. Vijay has been emphasized this point a lot but I didn’t get it until the second half of the course. The course is good and the biggest takeaway for me is two:

  • Can comfortably read distributed system paper. I cannot claim I can read all types of system paper but for distributed system paper, I begin to get the momentum and start to know where to focus on during the reading. Takes a lot of struggling to get this point but I’m happy overall after reading more than 30 papers.
  • Got intrigued by the distributed system and storage system. In the past, I have been struggling to find my research interests.  But, thanks to this course, I become more intrigued with the combination of distributed system and storage. Right now, I like storage more. I read tons of LSM-based storage paper to find a topic for my final course project. I really enjoy the moment to read LevelDB and PebblesDB’s code and enhance them in some way. That further makes me want to know more about SSDs and HDDs.

CS 388 Natural Language Processing

I trade this course with algorithm class. I have a mixed feeling right now. On one hand, unlike the NLP course that I take in the previous semester, which looks at NLP from models perspectives (HMM, CRF, different networks). this semester’s course is from more traditional linguistics + machine learning perspectives. I really like this part. Overall, I strongly believe linguistics domain knowledge should play the key role in NLP study not various deep learning manic.  First two homework, we look at language models and LSTM based on the intuition of prediction can be two ways. I really like Mooney’s view that you always think about intuition whether the model can work or not instead of mindlessly applying models.  Like last semester’s NLP class, my interests with class declines as the semester progresses partly due to the fact that the material is no longer relevant for homework and exam. That is my bad.

The final project is on VQA, which mostly done by my partner. I only gather the literature and survey the field plus some proofreading. I’m OK with that as I want to have more time working on my system project and my partner wants to work alone in the modeling.  This leads to my lesson learned from the class:

  • Graduate school is about research, not class. Pick the easiest courses and buy yourself time to work on the research problem that attracts you.

If I look back right now, I want to take algorithm class instead. My thoughts to NLP is that I want to start from the dumbass baseline and know the history of the field. If you think about NLP, the most basic technique is just regular expression pattern matching. But, how do we go from there to more complex statistical models is the most interesting point I want to learn.

LIN380M Semantics I

The course is taught by Hans Kamp, which I believe invents the Discourse Representation Theory (DRS). Really nice man. I learn the predicate logic, typed lambda calculus, Montague grammar and DRS. Very good course for the logic-based approach to derive the semantic meaning of a sentence. However, I do feel people in this field put a lot of efforts in handling rule-based exceptions like how do we handle type clash in Montague grammar. When I turn in the final exam, Hans is reading some research paper. He is still doing research and that inspires me a lot.

Other Lesson Learned

  • “Don’t be afraid to fail, be afraid not to try”. I learn a lot from my final system project partner. Reading complex code can be daunting but we can always start to play around even when we cannot understand the code fully. There is a great deal of psychological barrier to be overcome. My partner always starts with reading and then writing. Once bug happens, he is happy because the bug is an indicator of progress, which eventually leads to working code.
  • Work independently. When I got stuck for a while, I always want to seek help instead of counting on myself to solve the problem. It seems that I can never trust myself ability to solve the problem. By observing how my project partner solves the problem, I learn a lot. Start to trying and always seek for the root cause of the problem and situation changes as long as you start trying.
  • Some tips about system paper writing:
    • Use hatch on the bar graph. People may print out their paper in black and white. Use hatches on the bar graph help them to distinguish which bar is your system and which bar is the baseline system.
    • Add more descriptions to each figure and table below. I used to think that there should be only one line of description for each picture. But, as pointed out by my another project partner, people need instructions when read the graphs. People love the pictures and they hate to go to the paragraphs to search for the instructions to understand the graph. Thus, put instructions directly below the picture. Great insight!
  • I really want to know how to measure a system accurately.  From my system project, I realize that measuring the system performance is really hard. Numbers fluctuate crazily and you have no clue why is that because there are some many layers of abstraction  & factors in the experiment environment that can potentially impact the system measurement. I really want to know more about this area during my own study and summer internship.
  • System improvement without provable theoretical guarantees will be very unlikely successful. Overhead or the constant factor hidden in the big-O model usually dominate the actual improvement you might think you can get. For example, there are overhead in spawning threads. We need to compare how much we can get by having multiple threads running in parallel to do the subtask vs. having one single thread do the whole thing. PebblesDB’s paper on the guard and improvement to compaction ultimately prove that we really need to think more before getting our hands dirty. By reading the paper, I get the feeling that they know the system will work before even implementing one because they can clearly show that their functionality works before writing a single line of code. I need to develop more sense about this and taking more theory class.


Ok. Time to pack and catch the flight.

On Reading CS Papers – Thoughts & Reflections

Be forewarned:

  • This is not an advice post. There are tons of people out there who desperately want to give people advice on reading papers. Read theirs, please.
  • This post is a continuous reflection on the topic “how to read a CS paper” from my personal practice. I will list out my academic status before each point so that it may be interesting to myself on how my view on the matter has changed as time goes forward.


The first year of my CS master program. Just get started on CS research.

  • It’s OK to not like a paper

In my first semester, I majorly read papers on Human Computation and Crowdsourcing.  Very occasionally, I read papers on NLP. Some papers on NLP are from extra readings in Greg’s course. Some are related to Greg’s final project, which deals with both code and language.  I don’t really like and want to read papers back then. In NLP class, I prefer to read textbooks (Jufrasky’s one) and tutorial posts that I can find online. One roadblock for me to read papers is that there is certain background knowledge gap I need to fill and I just simply don’t know how to read a paper. So, for Greg’s NLP course, I only read some papers related to my final project. This paper is the base paper for my final project. I got this paper from professors in linguistics and software engineering and they want me to try out the same idea but using neural network model instead. I read this paper several times and the more I read, the more I want to throw up.  I just think this paper hides many critical implementation details and the score 95% is just too high for me to believe. The authors open source their code but their code has some nasty maven dependencies, which won’t compile under my environment. Their evaluation metric is non-standard in NLP and many “junk words” wrap around their results. Of course, the result of my experiment is quite negative.  I often think it is just a waste of life to spend your precious time on some paper you dislike.  Here, I’m more of talking about paper writing style and the reproducibility of papers’ results. I probably want to count shunning from some background gap as a legitime reason not like a paper.

  • Try to get most of the paper and go from there

I got this message from Matt’s Crowdsourcing class. In the class, I have read a very mathematical heavy paper, which invokes some combinations of PGM and variational inference on the credibility of fake news. I’m worried back then about how should I approach a paper like this one, which I’m extremely lack of background and mathematics formula looks daunting.  I pose my doubts on Canvas and Matt responds in class and gives the message.  I think the message really gives me some courage on continuing read papers.

  • It’s OK to skip (most) parts of a paper.  Remember: paper is not a textbook!

This semester I’m taking a distributed system class. To be honest, distributed system paper can be extremely boring if they are from industry. Even worse, system paper can be quite long: usually around 15 pages, double column. So, if I read every word from beginning to end, I’ll be super tired and the goal is not feasible for a four-paper-per-week class. So, I have to skip. Some papers are quite useful maybe just for one or two paragraphs. Some papers are useful maybe just because of one figure. As long as your expectation about a paper gets met, you can stop wherever you want.

  • Multiple views of reading a paper

I didn’t get the point until very recently. I did quite terrible on the first midterm of my distributed system class. The exam is about how to design a system to meet a certain requirement. In the first half of the course, I focus on the knowledge part presented by the paper but that doesn’t work out well. Until then, I realize that I need to read those systems paper from a system design point of view: what problems they need to solve, what challenges they have, how they solve the challenges.  OF course, those papers are valuable from knowledge perspective: how consistent hashing works, for example. But, depends on the goal of reading paper, I can prioritize different angles of reading a paper. If I need to implement the system mentioned in the paper, I probably need to switch to a different paper reading style.

  • Get every bit of details of paper if you need to

It’s time again for the final course projects. Again, I need to generate some ideas and find some baseline papers. In this case, “skip parts” and “get most out of the paper and move on” strategy probably won’t work well. All in all, I need to understand the paper and those are rely on the details from the paper. In this case, I need to sit through the whole journey and remove any blockers that I may encounter.

Job hunting lesson learned

This post contains a collection of lessons I learned during the job hunting. I’m still looking for internship & job. That’s good because that means this post will be at least frequently updated in the foreseeable future.

  1. Always attending career fairs. In UT, if you are a CS student with a good standing, you can get an invitation to an event called FOCS Career Night. There will be a lot of recruiters. But, be careful, most of the recruiters are actually engineers or UT students (that’s right, some companies make Campus Ambassador attend the event as if they are the recruiters). There is a huge difference between recruiters and engineers: recruiters get the call on who gets the interview, not engineers! I made a mistake by attending the FOCS Career Night only and skip the Career Fairs. In fact, recruiters are actually coming to Career Fairs and some of them doing on-campus interview signup immediately. The on-campus interview is much better than OA. Even you got an invitation for scheduling an interview after FOCS Career Night, you still want to talk to the company at Career Fairs because recruiters can barely check their emails when they are on travel and interview slots are always based on first come first serve policy. So, you always make sure to come to the Career Fairs and schedule an interview immediately instead of replying the invitation email and wait for the response and then got one said interview slots are all filled. This happens to me on Indeed.
  2. Always doing OA immediately. When you receive an OA, the company usually will tell you that you can finish the test within certain days. However, things can change rather quickly. Even they give you buffer like finishing this test within 4 days, ignore the message and do OA immediately. Slots can fill rather quickly and some company has this under-table rule on even they say 4 days, they really mean immediately. This happens to me on Dropbox.
  3. Always finishing OA within min(60 minutes, restricted time). Some company allows you to finish OA within days. In other words, even you start the test, you have a couple of days to finish it. Ignore this, please! Even though the test lasts for days, finish it as quick as you can. The finishing time is a strong indicator of your coding ability. This happens to me on Twitter.
  4. Always follow-up with the recruiter. Sometimes, there might be system error: they send reject email to the wrong person. Make sure you confirm this with the recruiter and finish your OA no matter what happens. Even you got rejected, OA is still an invaluable practice opportunity. This happens to me on Dropbox.
  5. Always make sure you apply in the University Recruiting section. Companies make specific web pages for fresh graduate and recent graduate. Make sure you submit your resume there. If you submit the resume to the wrong place, you may in a pool that is filled with professional with 5+ years of experience. That always leads to either no hear back at all or an immediately reject letter. This happens to me on Dropbox.
  6. Use the LinkedIn and be aggressive. I’m a shy person but job hunting like the name suggested, it’s a hunting. You have to be aggressive. Connect with as many people as you can whether it is from Career Fair, social events, LinkedIn in-mail. Be polite and be bold. Ask them for the opportunity. One special note is that you may want to “harass” recruiters and senior developers in LinkedIn. Their words have much more power and you may get an interview very quickly. If they being rude when you ask for the favor politely, you already know that this company is definitely not the one you want to work with. This happens to me on Teradata (BTW, they are on the polite side).
  7. Prepare for the technical interview questions:
    1. The interviewer may make some slight modification to the questions even they are from leetcode. For example, instead of asking what exactly the shortest path are in the original leetcode question, the interviewer may ask how many steps in the shortest path. The difference is the former one may expect a list of coordinates (i.e., steps) and the latter one may expect a simply a number. This happens to me on Pocket Gem. The takeaway is that when you solve leetcode questions, think about what possible variations might be. However, it may seem infeasible that you do it for every problem. You don’t have to unless you don’t have anything else to do. The next point will help to address this concern.
    2. Browse some recent interview questions from the company you are about to interview with from forum. This helps to address the previous concern. If you see the company interview some leetcode questions, you may want to look at that leetcode questions and think about the possible variations. Also, usually company has a pool of questions and get some prior exposure from a forum, you may have a good preparation already. Also, this point helps if you are very short of preparation time. In this case, you just prepare for the questions from the forum and you’re good to go. Sometimes, this works much better than a long-term preparation strategy, which you may feel over-prepared and feel a good chunk of time get wasted on leetcode when you can simply prepare the questions from the forum.
    3. Get practice on the leetcode. Usually, people emphasize the importance of getting practice on leetcode. That’s true. However, this depends on when you about to apply for the position. For recruiting new grads, some companies prefer to start early (e.g., in Fall) and others don’t (e.g. in Januarg till March). People always think they should start early as soon as possible to get a spot in the limited headcount. That’s true but this strategy usually comes with a risk: you’ll see new interview questions that no other has seen before. Each year, companies may update their pool of questions. If you think you can solve leetcode problem like “1+1” and have a solid preparation in system design, then start early A the AP is best strategy.  However, if you are in an OKish position in algorithm preparation and design preparation, then you may delay applying one or two weeks. The beauty of delay comes directly from previous point: you may get exposure to the pool of questions before the actual interview. How long to delay is a case-by-case situation. Some companies (e.g., Dropbox, Pocket Gem) will be quite active and send your OA almost immediately after your application and you may want on your side. However, some companies may have a long process to take before setting up any interviews, then you may want to apply ASAP and let the internal processing time takes its time.

Freedom of speech

Piazza is an online forum tool that is heavily used in the academia. It is used to help students ask questions and get feedback from both peers and instructors. It has a goal that is similar to Slack in the sense that they both try to cut the duplicate emails sent by several people for the same or similar type of request. It is a good tool but every tool that comes with power has its own consequence.

Instructors can perform the following configuration when they setup the forum for the course.

Screen Shot 2018-02-09 at 11.58.12 PM

Basically, this option means that when you make a post, whether you can choose to be “Anonymous” to both your peers and instructors or to your peers only (instructors can still see who makes the post).  The following picture shows what this option looks like from student’s perspective:

Screen Shot 2018-02-09 at 11.58.33 PM

The intention for this option I guess is that some students may feel embarrassed to ask questions. They might think their questions are dumb and will make them look bad in front of peers or instructors. I think this option is used as a way to encourage students to ask questions bravely.

However, this option may get abused. From my observation, Piazza is used as a way for instructors to show off their teaching quality. This is important for Assistant Professors because teaching still means something (if teaching quality doesn’t matter, why institution asks for the teaching statement at the very first place?). In addition, the teaching quality in some sense is an important indicator for students to evaluate you as a person. This is important for professors who are looking for graduate students because research publication is only part of the story and how those professors interact with students may be a crucial indicator to how good a professor as a human being is (evaluation may be a better indicator but it is confidential). Thus, if some potential students look at the piazza that his interested professor teaches gets a lot of complaints. The students may have a second thought on whether he should work with him for research (maybe he is a very bad person even he is doing a good research).

Thus, the instructors have a strong motivation to censor the posts on the piazza. This scares the students because they don’t have a secure way to provide feedback to the instructor. Let’s assume that the majority of students has a good heart: they won’t say bad stuff to the instructor who actually really cares about students. Thus, the time that something slightly negative appears on the Piazza may be a very important signal to the instructor that something wrong with his teaching. However, due to the strong motivation for instructors to show off their teaching quality through Piazza, the instructors may start to censor the speech on the Piazza by turning the option off.

I didn’t realize this thing last semester. Last semester, the instructor from one course sets this option off and I was thinking maybe he wants to know the students who are shy to ask questions and provide some individual attention. However, this semester, the instructor from one of my course initially turn the option on so that everyone can truly ask questions as “Anonymous”. Then, until one day, someone makes the below post and the option is turned off. Now, no students dare to make slightly negative posts.

Screen Shot 2018-02-10 at 12.28.57 AM


I fully understand the interests conflict between students and instructors on the use of Piazza: students may think Piazza is a secure way to provide anonymous feedback while instructor may think bad posts on the forum make them look bad. However, I still think there should be a better way to address this conflict to protect both students and instructors especially with the technology we have nowadays. But, (unintentional) censorship is not something we want to culture especially in the Academia. By the way, for this course, I still think the instructor is good but the material is quite challenging without laying down a solid theoretical foundation beforehand. He went through the material again after this post but too bad the truely “Anonymous” is gone.

A writing project – Daily Bible Reading Notes

I didn’t write any post this January, which is bad. So, to keep this place alive, I decide to start a writing project – Daily Bible Reading Notes. I will read bible verse each day and take a note of the thoughts and questions related to the bible verses I read that day.  To make notes relative organized, I’ll make a post each month and keep update that post in that month. This project serves also a self-experiment on how long I can insist doing this.

I may have questions during the reading but my view on Bible is that I don’t want to actively seek out the explanation of those questions. I think the answers to those questions are unique and depend on each person’s view. Over the time, God will explain everything to me and all I need to do is to catch the signal from my daily experience.

利未记22-24 (02/07/18)


你 要 對 他 們 說 、 你 們 世 世 代 代 的 後 裔 、 凡 身 上 有 污 穢 、 親 近 以 色 列 人 所 分 別 為 聖 歸 耶 和 華 聖 物 的 、 那 人 必 在 我 面 前 剪 除 . 我 是 耶 和 華  (22:3)

这节经文给我感觉神就非常的严厉。他想把所有不干净的人都消灭。但是如果用基督教的观点来看,人生下来就带着罪的。难道神就要将我们铲除么? 也许唯一途径不被消灭就是受洗成为一个洁净的人,成为基督徒。

六 日 要 作 工 、 第 七 日 是 聖 安 息 日 、 當 有 聖 會 、 你 們 甚 麼 工 都 不 可 作 、 這 是 在 你 們 一 切 的 住 處 向 耶 和 華 守 的 安 息 日 。(23:3)


你要曉諭以色列人說、凡咒詛 神的、必擔當他的罪。那褻瀆耶和華名的、必被治死、全會眾總要用石頭打死他.不管是寄居的、是本地人、他褻瀆耶和華名的時候、必被治死。打死人的、必被治死。打死牲畜的、必賠上牲畜.以命償命。人若使他鄰舍的身體有殘疾、他怎樣行、也要照樣向他行。以傷還傷、以眼還眼、以牙還牙.他怎樣叫人的身體有殘疾、也要照樣向他行。打死牲畜的、必賠上牲畜.打死人的、必被治死。不管是寄居的、是本地人、同歸一例.我是耶和華你們的 神。 於是摩西曉諭以色列人、他們就把那咒詛聖名的人帶到營外、用石頭打死。以色列人就照耶和華所吩咐摩西的行了。(24: 14 – 23)


利未记25-27 (02/08/18)








你們不可作甚麼虛無的神像、不可立雕刻的偶像、或是柱像、也不可在你們的地上安甚麼鏨成的石像、向他跪拜、因為我是耶和華你們的 神。 你們要守我的安息日、敬我的聖所.我是耶和華。你們若遵行我的律例、謹守我的誡命、我就給你們降下時雨、叫地生出土產、田野的樹木結果子。你們打糧食要打到摘葡萄的時候、摘葡萄要摘到撒種的時候、並且要喫得飽足、在你們的地上安然居住。我要賜平安在你們的地上、你們躺臥、無人驚嚇.我要叫惡獸從你們的地上息滅.刀劍也必不經過你們的地。你們要追趕仇敵、他們必倒在你們刀下。(26:1-7)


我是耶和華你們的 神、曾將你們從埃及地領出來、使你們不作埃及人的奴僕、我也折斷你們所負的軛.叫你們挺身而走。(26:13)










马太福音1-3 (02/09/18)



这里出现了一个非常被提及的概念:义人。这个概念其实挺不好理解的。我看了一下对应的英文翻译:righteous man。结合这句话来看,义人在这里我理解为为她人着想的人。这里马利亚未婚先孕,按照这句话理解,约瑟是应该在众人面前羞辱她。但是,因为约瑟是个义人,他只是想暗暗把马利亚休掉,顾全马利亚的面子。其实这点也是北京人所讲究的做人要尽量给别人留个面子,不要把事情做绝。

那時、有施洗的約翰出來、在猶太的曠野傳道、說、天國近了、你們應當悔改。這人就是先知以賽亞所說的、他說、『在曠野有人聲喊著說、預備主的道、修直他的路。』(3:1 – 3)


約翰看見許多法利賽人和撒都該人、也來受洗、就對他們說、毒蛇的種類、誰指示你們逃避將來的忿怒呢。你們要結出果子來、與悔改的心相稱.不要自己心裡說、有亞伯拉罕為我們的祖宗.我告訴你們、 神能從這些石頭中給亞伯拉罕興起子孫來。現在斧子已經放在樹根上、凡不結好果子的樹、就砍下來、丟在火裡。(3:7-10)




當下、耶穌從加利利來到約但河、見了約翰、要受他的洗。約翰想要攔住他、說、我當受你的洗、你反倒上我這裡來麼。耶穌回答說、你暫且許我.因為我們理當這樣盡諸般的義.〔或作禮〕於是約翰許了他。耶穌受了洗、隨即從水裡上來.天忽然為他開了、他就看見 神的靈、彷彿鴿子降下、落在他身上。從天上有聲音說、這是我的愛子、我所喜悅的。(3:13-17)

这里又再度出现了“义”这个概念。这节经文我觉得比较难以理解。但是,我目前的理解是受洗代表的有两层含义:1. 代表洁净 2. 代表承认神是父的地位。那么“义”在这里就可以理解为道义。因为如果耶稣是神派下来”将自己的百姓从罪恶里救出来”(1:21),那么耶稣本身就应该是洁净的。同时他也应该承认神是他的父。只有受了洗,这两层含义才能达成。后面神对耶稣的行为的喜悦也就可以解释通了。

马太福音4-6 (02/10/18)

對他說、你若是 神的兒子、可以跳下去.因為經上記著說、『主要為你吩咐他的使者、用手托著你、免得你的腳碰在石頭上。』耶穌對他說、經上又記著說、『不可試探主你的 神。』(4:6-7)


虛心的人有福了.因為天國是他們的。哀慟的人有福了.因為他們必得安慰。溫柔的人有福了.因為他們必承受地土。飢渴慕義的人有福了.因為他們必得飽足。憐恤人的人有福了.因為他們必蒙憐恤。 清心的人有福了.因為他們必得見 神。使人和睦的人有福了.因為他們必稱為 神的兒子。 為義受逼迫的人有福了.因為天國是他們的。人若因我辱罵你們、逼迫你們、捏造各樣壞話毀謗你們、你們就有福了。 應當歡喜快樂.因為你們在天上的賞賜是大的.在你們以前的先知、人也是這樣逼迫他們。(5:3-12)


你們是世上的鹽.鹽若失了味、怎能叫他再鹹呢.以後無用、不過丟在外面、被人踐踏了。你們是世上的光.城造在山上、是不能隱藏的。 人點燈、不放在斗底下、是放在燈臺上、就照亮一家的人。你們的光也當這樣照在人前、叫他們看見你們的好行為、便將榮耀歸給你們在天上的父。(5:13-16)





这段经文是讲基督徒不能离婚时常备搬出来的经文。这次阅读,我特意看了一下对应的英文翻译,顿时觉得自然语言确实是模糊的。这句话对应的英文是:“But I tell you that anyone who divorces his wife, except for martial unfaithfulness, causes her to become an adulteress, and anyone who marries the divorced woman commits adultery.”  这里causes在我看来有两种理解方式,一种是中文翻译这种叫妇人成为淫妇。另外一种是导致女人成为淫妇。那么后者就有一种逻辑是是否离婚就一定会使妇人成为淫妇呢?我理解是这个是有概率的。那么基督徒不能离婚这点就是尽可能的去避免因为离婚使一个妇人去堕落。虽然我们不是直接让妇人成为淫妇的主要原因,但是正是由于离婚的这个行为很有可能导致了妇人成为淫妇。这是神不想看到的。

只是我告訴你們、甚麼誓都不可起、不可指著天起誓、因為天是 神的座位.
不可指著地起誓、因為地是他的腳凳.也不可指著耶路撒冷起誓、因為耶路撒冷是大君的京城。 又不可指著你的頭起誓、因為你不能使一根頭髮變黑變白了。




你們聽見有話說、『當愛你的鄰舍、恨你的仇敵。』只是我告訴你們、要愛你們的仇敵.為那逼迫你們的禱告。 這樣、就可以作你們天父的兒子.因為他叫日頭照好人、也照歹人、降雨給義人、也給不義的人。 你們若單愛那愛你們的人.有甚麼賞賜呢.就是稅吏不也是這樣行麼。(5:43-46)


所以我告訴你們、不要為生命憂慮、喫甚麼、喝甚麼.為身體憂慮穿甚麼.生命不勝於飲食麼、身體不勝於衣裳麼。 你們看那天上的飛鳥、也不種、也不收、也不積蓄在倉裡、你們的天父尚且養活他.你們不比飛鳥貴重得多麼。 你們那一個能用思慮、使壽數多加一刻呢。〔或作使身量多加一肘呢〕何必為衣裳憂慮呢.你想野地裡的百合花、怎麼長起來、他也不勞苦、也不紡線. 然而我告訴你們、就是所羅門極榮華的時候、他所穿戴的、還不如這花一朵呢。你們這小信的人哪、野地裡的草、今天還在、明天就丟在爐裡、 神還給他這樣的妝飾、何況你們呢。 所以不要憂慮、說、喫甚麼、喝甚麼、穿甚麼。這都是外邦人所求的.你們需用的這一切東西、你們的天父是知道的。 你們要先求他的國、和他的義這些東西都要加給你們了。 所以不要為明天憂慮.因為明天自有明天的憂慮.一天的難處一天當就夠了。(6:25-34)


马太福音7-9 (02/11/18)

你們不要論斷人、免得你們被論斷。 因為你們怎樣論斷人、也必怎樣被論斷。你們用甚麼量器量給人、也必用甚麼量器量給你們。 為甚麼看見你弟兄眼中有刺、卻不想自己眼中有梁木呢。 你自己眼中有梁木、怎能對你弟兄說、容我去掉你眼中的刺呢。你這假冒為善的人、先去掉自己眼中的梁木、然後纔能看得清楚、去掉你弟兄眼中的刺。(7:1-5)


你們祈求、就給你們.尋找、就尋見.叩門、就給你們開門。 因為凡祈求的、就得著.尋找的、就尋見.叩門的、就給他開門。你們中間、誰有兒子求餅、反給他石頭呢。求魚、反給他蛇呢。你們雖然不好、尚且知道拿好東西給兒女、何況你們在天上的父、豈不更把好東西給求他的人麼。所以無論何事、你們願意人怎樣待你們、你們也要怎樣待人.因為這就是律法和先知的道理。(7:7-12)

这段经文非常的有力量。经文鼓励大家去努力去询问,而一系列的比喻告诉我们为什么神会把最好的给我们。最后一节其实和古人的 “己所不欲,勿施于人”是一样的道理。但是,似乎现在这条在现世已经不能么通用了。你待人真诚,但是你不能期望别人也这样做。原来不信主之前会觉得为什么要这要做呢?自己岂不吃亏了。但是,现在渐渐的觉得这些都会有天上的父补偿给我们。关于这点只是去教会听到的,还要具体去查阅圣经寻找出处。

你們要進窄門.因為引到滅亡、那門是寬的、路是大的、進去的人也多。 引到永生、那門是窄的、路是小的、找著的人也少。(7:13-14)

今天在读到这段经文的时候,脑海里突然有一种声音就是关于我是应该去做system还是去做AI, 紧接着又想起了我上学期Prof. Dana Ballard的一席话: “when I see there is a path that is so crowd, I start to think the probability of my success.” 这句话是在我们讲到deep learning的时候提到的。

所以凡聽見我這話就去行的、好比一個聰明人、把房子蓋在磐石上。 雨淋、水沖、風吹、撞著那房子、房子總不倒塌.因為根基立在磐石上。凡聽見我這話不去行的、好比一個無知的人、把房子蓋在沙土上。雨淋、水沖、風吹、撞著那房子、房子就倒塌了.並且倒塌得很大。(7:24-27)


耶穌在屋裡坐席的時候、有好些稅吏和罪人來、與耶穌和他的門徒一同坐席。 法利賽人看見、就對耶穌的門徒說、你們的先生為甚麼和稅吏並罪人一同喫飯呢。耶穌聽見、就說、康健的人用不著醫生、有病的人纔用得著。經上說、『我喜愛憐恤、不喜愛祭祀。』這句話的意思、你們且去揣摩.我來、本不是召義人、乃是召罪人。(9:10-13)

这个故事在第8章和第9章记录耶稣所行的神迹中印象给我最深。尤其是最后一节“我來、本不是召義人、乃是召罪人。” 我从中看到了耶稣品行的伟大。一个教授如果只看重一个在本科就发表各种论文的学生来录取他们当自己的学生,那么这个学生的成长和这个教授有什么关系呢?再看看耶稣,他不是来召义人而是召罪人,其中工作的艰辛就好比你要把一个没有任何文章发表的人培养成世界一流的研究员。这段经文让我感受到耶稣的伟大。多说一句第8章,第9章讲了很多人因信得救。信这个看似简单的心理状态实则艰难万分。尤其是面对考验的时候,是否还选择相信神,在我看来是基督徒一生的修行。

你們禱告的時候、不可像那假冒為善的人、愛站在會堂裡、和十字路口上禱告、故意叫人看見.我實在告訴你們、他們已經得了他們的賞賜。 你禱告的時候、要進你的內屋、關上門、禱告你在暗中的父、你父在暗中察看、必然報答你。 你們禱告、不可像外邦人、用許多重複話.他們以為話多了必蒙垂聽。 你們不可效法他們.因為你們沒有祈求以先、你們所需用的、你們的父早已知道了。 所以你們禱告、要這樣說.我們在天上的父、願人都尊你的名為聖。 願你的國降臨。願你的旨意行在地上、如同行在天上。 我們日用的飲食、今日賜給我們。 免我們的債、如同我們免了人的債。不叫我們遇見試探.救我們脫離兇惡。〔或作脫離惡者〕因為國度、權柄、榮耀、全是你的直到永遠、阿們。〔有古卷無因為至阿們等字〕 你們饒恕人的過犯、你們的天父也必饒恕你們的過犯。 你們不饒恕人的過犯、你們的天父也必不饒恕你們的過犯。(6:5-15)


马太福音10-12 (02/12/18)

凡在人面前認我的、我在我天上的父面前、也必認他。 凡在人面前不認我的、我在我天上的父面前、也必不認他。你們不要想我來、是叫地上太平.我來、並不是叫地上太平、乃是叫地上動刀兵。因為我來、是叫人與父親生疏、女兒與母親生疏、媳婦與婆婆生疏.人的仇敵、就是自己家裡的人。 愛父母過於愛我的、不配作我的門徒、愛兒女過於愛我的、不配作我的門徒。 不背著他的十字架跟從我的、也不配作我的門徒。得著生命的、將要失喪生命.為我失喪生命的、將要得著生命。(10:32-36)

这段圣经让我觉得很激烈。尤其是“並不是叫地上太平、乃是叫地上動刀兵。因為我來、是叫人與父親生疏、女兒與母親生疏、媳婦與婆婆生疏.人的仇敵、就是自己家裡的人。愛父母過於愛我的、不配作我的門徒、愛兒女過於愛我的、不配作我的門徒。” 这些其实是很多慕道友无法理解的,而且我也不是很明白。因为家人对于我非常重要,但是耶稣这里却是强调人要把他摆在第一位。这里的矛盾该如何解释?


在我理解这里展现的道理是:每人都有一张嘴,她可以想说什么就说什么。那么我们应该因为这个人的嘴里的话而或喜或悲么?不,我们要遵循一定道理。凡是违背这个道理的,我们就不听。凡是遵循这个道理的,我们要听。那么这个道理是什么,我看来就是 “總以智慧為是”。

凡勞苦擔重擔的人、可以到我這裡來、我就使你們得安息。我心裡柔和謙卑、你們當負我的軛、學我的樣式、這樣、你們心裡就必得享安息。 因為我的軛是容易的、我的擔子是輕省的。(11:28-30)


你們或以為樹好、果子也好.樹壞、果子也壞.因為看果子、就可以知道樹。毒蛇的種類、你們既是惡人、怎能說出好話來呢.因為心裡所充滿的、口裡就說出來。善人從他心裡所存的善、就發出善來.惡人從他心裡所存的惡、就發出惡來。我又告訴你們、凡人所說的閒話、當審判的日子、必要句句供出來。 因為要憑你的話、定你為義、也要憑你的話、定你有罪。(12:33-37)


污鬼離了人身、就在無水之地、過來過去、尋求安歇之處、卻尋不著。於是說、我要回到我所出來的屋裡去.到了、就看見裡面空閒、打掃乾淨、修飾好了。 便去另帶了七個比自己更惡的鬼來、都進去住在那裡.那人末後的景況、比先前更不好了。這邪惡的世代、也要如此。(12:43-45)