Leaving IBM

To be honest, this is probably the most difficult post I have ever written. This is majorly because there is a ton of stuff I want to say but I’m unsure whether I should keep them public or should keep it to myself. Another factor that makes this post hard to write is because the span of drafting. I have been drafting this post since April in 2016, right after when I decide to start the whole process of quit-IBM-and-get-a-PhD project.  I used to use this post as a log to record things and feelings when somethings happens around me at IBM. Frankly, if I take a look at the stuff I record (mostly are rantings) retrospectively, lots of stuff still hold but the anger just passes away with the time. So, that year-long drafting really makes me hesitate even more because the mood when those stuff are written are gone. However, two years can be a significant amount of time and quitting IBM can be called “an end of era” and I should give a closure to my happy-and-bitter experience with IBM anyway. So, here it goes.

 

Thank you, IBM!

I’m really thankful for the opportunities working with IBM. This experience really makes me grow both technically and mentally.  Technical-wise, I have the opportunity to get hands on experience with DB2 development. DB2 as a database engine is extremely complex. It has over 10 million lines of code and it is way beyond the scope of any school project. Working on those projects are quite challenging because there is no way you can get clear understanding of every part of the project. I still remember when I attend the new hire education on DB2, there is one guy says: “I have been working on the DB2 optimizer for over 10 years but I cannot claim with certainty that I know every bit of the component I own.” This fact really shocks me and based upon my experience so far, his claim still holds but with one subtle assumption, which I’ll talk about later. There are lots of tools are developed internally and reading through both the code and tool chains are a great fortune for any self-motivated developers. I pick a lots of skills alongside: C, C++, Makefile, Emacs, Perl, Shell, AIX and many more. I’m really appreciated with this opportunity and I feel my knowledge with database and operating system grow a lot since my graduation from college.

Mentally, there are also lots of gains. Being a fresh grad is no easy. Lots of people get burned out because they are just like people who try to learn swim and are put inside water: either swim or drown. I’m lucky that my first job is with IBM because the atmosphere is just so relax: people expect you to learn on your own but they are also friendly enough (majority of them) to give you a hand when you need help. I still remember my first ticket with a customer is on a severity one issue, which should be updated your progress with the problem daily. There is a lot of pressure on me because I really have no clue with the product at the very beginning. I’m thankful for those who help me at that time and many difficult moments afterwards. That makes me realize how important is to be nice and stay active with the people around you.  Because no matter how good you are with technology and the product, there are always stuff you don’t know. Staying active with people around you may help you go through the difficult moment like this by giving you a thread that you can start at least pull. In addition, participating with toastmasters club really improve my communication and leadership skills and more importantly, I make tons of friends inside the club. Without working at IBM, I probably won’t even know the existence of the toastmasters club. If you happen to follow my posts, you’ll see lots of going on around me when I work at IBM. Every experience you go through offer you a great opportunity to learn and improve yourself. Some people may look at them as setbacks but for me, I look at them as opportunities.

toastmasters1

( the picture on the left is all the comments people give to me about my speech and on the right is the awards I have earned inside the club in these two years)

With the help of all those experience, I have developed a good habit of writing blogs (both technical and non-technical), reading books, and keep working out six days per week. All those things cannot be possible if I work at a place where extra hour work commonly happened. I’m very thankful for IBM for this because staying healthy both physically and mentally are super critical for one’s career. Even though those stuff don’t directly come from IBM, but IBM does provide the environment to nurture this things to happen.

 

IBM has its own problem. The problem is centered around people. There are many words I want to say but I think I’ll keep them secretly but I want to show my point with a picture:

ibm_survey

I don’t know why IBM’s term “resource action” on firing employees and the sentence “IBM recognize that our employee are our most valuable resources.” bother me so much. I probably just hate the word “resource” as a way to directly describe people and how this word get spammed so much around IBM. I know everyone working for a big corporation is just like a cog in a machine. However, what I feel based upon lots of things happened around me is that IBM as its attitudes represented by its first-line managers (because those people I commonly work with) makes this fact very explicitly. It hurts, to be honest. No matter how hard you work and no matter how many prizes you have earned for yourself and your first-line manager, you are nothing more than a cog in a machine, which is not worth for high price to have you around because there are many cogs behind you that are ready to replace you. They are much cheaper, much younger, and more or less can work like you because your duty in the machine is just so precisely specified, which doesn’t really depend on how much experience you have had under your belt. To me, that’s devastating.

This leads to the problem that talented people are reluctant to stay with company. My mentor and the people are so good with DB2 have bid farewell to the team. That’s really sad to me because they are the truly asset to the company and the product. The consequence of this is that crucial knowledge is gone with people. Some quirks existing in the product are only known by some people and once they leave the company, the knowledge is gone with them. That makes mastering of the product even harder. That’s the subtle assumption that the person makes during the new hire education and that’s also part of the problem when working with legacy code. The whole legacy code issue is worth another post but one thing I now strongly believe is that any technical problem has its own root cause in company culture and management style. To me, I’m not a guru now but I cannot see the way to become a guru with my current position, which scares me the most

That’s it for this section and I’ll leave the rest to my journal.

Advertisements

书评:《男人的一半是女人》- 张贤亮

这本书立在我的书架上很久了。我曾经被它的标题所吸引,但是翻开到第一部第一章,开头却是这样子的:

也许我过去见到过她而没有留意,也许我从来没有见到过她。总之,这一次,她却给我留下了一个非常深刻的印象。

两个月前,我从大组被抽调出来,去管水稻田。在劳改队里,我是大组长,调到田管组,我仍然是田管组组长。

我顿时失去了兴趣。这本书似乎描写的并不是我脑海中特定的画面。我就把它丢到了一旁去看我的电脑去了。但是,在半个月前的某个晚上,我实在是难以忍受电脑所散发的热量,来到了卧室书架旁,想随便找一本书翻翻。我对外国文学的喜爱程度远不及我啥事吧对英文技术书籍的热衷程度的。一个个拗口的名字不停的摧残着我大脑的记忆力:莎士比亚的剧本我一部也没有完整的读下来过,每次总是边往后看,边捏着前几页出场人物表不放,像查字典似的费力的啃着每一个字。当我的目光划过《男人的一半是女人》的时候,自然而然的我就伸手把他从书架上取了下来。

这本小说在我看来一大特点就是真实。这种真实源于作者对人性的描写。这点在以文化大革命为背景下就显得更加弥足珍贵。众所周知,人的欲望是没办法被遮盖的。这个和他所处的时代和文化背景是没有什么关系的。很多文学影视作品,在描写某个特定时间年代的时候,都会不自然的从某些特定的角度去描写。比如说,描写长征或者抗日题材的话,一个非常常见的角度就是尝试着从艰苦,人民被外敌蹂躏等角度去描写。承然这种角度本身是没有任何问题,也反映了当时的时代特点。但是,不得不承认的是,长此以往的这样描写,时代中的人物不免会固话在某种特定印象中:比如思想觉悟高,时刻准备牺牲等。这种固然会起到使人物形象高大化的目的,但是与此同时却又使人物脱离了一个正常人的正常喜怒哀乐,人之欲望等特点。变相的使形象与读者脱节,造成了一种符号化的印象。从这种角度来看,张贤亮的《男人的一半是女人》取得了某种意义的突破。虽然整个故事的时代背景是文化大革命等各种建国初期的整风运动,但是作者却从文中男主老章和女主的黄香久的感情故事入手,既反应了当时人们的心理特点和生活常态,又从侧面通过老章的所思所想,表达了作者对文化大革命等整风运动的观点。

作者的真实描写是多方面的,甚至以我现在的眼光来看,作者的描写显得露骨,有时候甚至让我觉得我在看的是一本小黄书。比如说作者在描述女劳改犯在劳改队的生活状态时,他是这样写到的:

据他们说,女人在劳改队里比男人难熬,她们脆弱的神经忍受不了孤独,她们总要寻求爱抚、支持和保护。有的女犯隔着铁窗向警卫人员调情:“班长,你的小老鼠要咂水水子么?”

这种用词读起来的感觉和我上中学时大火的电视剧《蜗居》中宋思明对海萍说的“你想吃我的棒棒糖么?”非常像。一种成人的味道从文字中弥漫出来。再比如书中主人公老章最开始是没有性生活能力的。但是,在他舍身堵住快要决堤的大坝的窟窿后,他发了高烧,书中的女主人公黄香久解开了衬衣像温暖老章冰冷的额头,描写是这样子的:

她拽开的也不是她的衬,而是她的胸脯。在我面前,两大团雪白的莲花似的乳房一下子裸露无疑,莲花中间是彤红的花蕊,花朵还在一池清水中荡漾。花朵和花蕊,都比我记忆中的更大、更鲜明、更具有神韵。

石破天惊!我骤然产生了一种我从未有过的冲动。这就是爱情?我一伸手搂住了她。。。

“你好了!” 她的声音从很深很深的水底浮了上来。

”是的。。。我也不知道。。。” 我笑了。一种悲切的和狂喜的笑,一种痉挛的笑。笑声越来越大,笑得全身颤抖,笑得流出了眼泪。

“你还。。。能吗?” 水底又浮上来模糊的声音。

“能!”我恶狠狠地说。

书中像这样的描写其实有很多。这对读者来说是一种小刺激。但是,同时我却非常感谢作者这一种坦诚。在那个年代里,可以想象,崇高理想并不会让一个人时刻保持着活下去的冲动。但是,相反,恰恰是这种人性欲望和情感需要才会让人能艰难度过那段时光。老章最开始没有性能力其实并不是老章自身有什么生理问题。恰恰相反,从这次以及老章在林子中和黄香久的一段云雨看出,老章的身体其实一点问题也没有。那么是什么让老章最开始不能的呢?其实是心理上的一种压抑。这点从老章在第一次和黄香久相遇的场景就可以看出。老章和黄香久第一次相遇是黄香久在池塘了洗澡出浴的时候。老章第一次看到女人的裸体 。长时间艰苦的劳动改造和自己的本能让老章想要与她欢愉一番(”开始,我的眼睛总不自觉地朝她那个最隐秘的部位看。“)而黄香久也摆出了一番欲迎还拒的姿态(”她并不急于穿衣服,却聊下手中的内裤,像是畏凉一样,两臂交叉地将两手搭在两肩上,正面向着我。“)。但是老章总后却没有行动,他用自己的理性战胜了自己的欲望,但是与此同时这也给老章带来莫大的内心痛苦:

就在这孤零零的土屋里,就在这张散发着霉味和汗臭味的炕上,我展开过各式各样有关女人和爱情的幻想。所以,我非常的懊悔,我失去了一个极为难得的机会;可是,我又很感自豪,觉得自己经受住了一次严峻的考验。但究竟是什么?我也说不清。啊,魔障啊,魔障!是什么阻止了我扑上前去?既然那种精神上和肉体上的饥渴同时折磨这我和她,既然我们身上都烙印着苦难的印记,为什么我们不能再苦难中偷得片刻的欢愉?

我开始蔑视我过去所受到的全部教育。文明,不过是约束人的绳索,使一切归于人,发自人的本性的要求都变得那么复杂,那么可望而不可及。如果我象那些普通的农民劳改犯就好了。但我又庆幸自己过去受了教育,是文明使我区别于动物,使我能克制自己,在关键时刻表现出了人,也只有人才能表现出的高尚行为;我有自由意志,我可以选择,因而我要对自己的行为负责。然而,倘若我迎了上去,世界也并不会因此更坏些;我转身逃了开区,世界也没有因此变得更好。我,一个劳改犯,一只黑蚂蚁,还谈得上什么用行为合乎道德规范这点来自宽自慰?何况,如果我认为自己是道德的,就必定认为她是不道德的,而我又有什么权利在心里职责她?那不正是曾在自己幻想中出现过的场景吗?我对自己的行为负责,那么谁又曾对我负过责任?社会的责任似乎就全在于折磨我和迫害我。

。。。 那么,刚刚我要是与她媾合了,我就将不成其为我,我今后的命运就可能大大改观–

据说,人一生的命运就是一连串一环套一环的因果关系。不过,我又怎能知道改观以后的命运必然更糟?说不定我还能从此割断束缚我的精神绳索,还原成一个人,一个原始的人,在这个野蛮荒唐的年代,用野蛮人的方式去荒唐地生活。。。

我对老章这番思想斗争还是颇有感触的。因为,不论在何种年代,做一个好人真的是非常非常的不容易的。有些时候,在生活中你会发现似乎最后总是坏人,不道德的人,没有那么多像老章这种精神束缚的人笑到了最后。就像老章说得那样:“我对自己的行为负责,那么谁又曾对我负过责任?社会的责任似乎就全在于折磨我和迫害我。” Google的名言是“Don’t be evil”。但是,仔细想想,这是一个多么高的道德要求:”倘若我迎了上去,世界也并不会因此更坏些;我转身逃了开区,世界也没有因此变得更好。“ 如何在面对诱惑,面对那些最后 ”be evil”然后获得利益好处的做法,保持一种不作恶的行为准则。这是多么苛刻的要求。最后,也许就像老章那样,不停地去压抑自己,去符合社会所谓的准则,去活下去。但是,这真的是“活着“吗? 我不知道,书中也似乎没有给出这方面的答案。最后,老章为了自己的信念选择了离开黄香久。这也许是老章选择的 “活着”的一种方式。那么,我们自己真正应该以一种怎样的姿态去活着呢? 我还没有一个明确的答案。

注:我真是太喜欢这种纸页泛黄的书读起来的感觉了!

张贤亮.jpg

 

Summary of reading: May – July 2017

It’s has been quite a long time since last time I wrote a book review.  This year my goal on goodreads is to finish 30 books and I’m way behind my schedule. In addition, I have been thinking about whether to port my “book review” section in this blog to my technical blog. The reasoning behind it is that I have spending most of time reading technical books and wordpress is not very friendly when drafting a technical-heavy blog (why? see this post). However, when I actually start drafting this post, I realize that book review is not that technical: it involves the mixture of the text from writer, and thoughts and feelings from reader. So, I’ll keep it here. The really downside for keeping the reviews here is that my “bookReview” tag doesn’t really give a list of titles for quick browsing. By the way, I want to thank my work that offers me four hours daily commute that allows me to concentrate on reading.

“The Road Less Traveled: A New Psychology of Love, Traditional Values and Spiritual Growth” by M.Scott Peck

I finish this book maybe May or maybe June. I cannot remember the exact date. That has always been a problem for me because I usually do highlight when I read a book and once I finish it, I want to take note of good points for future reference. This delays the progress of my next book and also messes up my memory on what exactly date I finish the book. This problem usually happens to some book that are worth lots of re-read in the future. “The Road Less Traveled” by M. Scott Peck is exactly one of those books.

I read through the Chinese translation of the book. It’s not a thick book: only around 250 pages for translation edition. To me, this is somewhat a sequel to “There is nothing wrong with you” book even they are from different authors. The problem discuss in this book is about life and love. The theme is truly cliche on some level. When I recommend this book to my friends, some of them even laugh when I do some briefing of the content to them. However, to me, the author does mange to provide some new perspectives to the issue.

The book starts out by emphasizing one important mindset: life is hard. People may often complain about life: “Why this thing happens to me?” “Why can’t I have an easy life like John has?” There is a subtle assumption that people may not be aware of when they say those stuff: they assume that life should be easy. That’s the problem that can cause lots of people’s mental issue. I was shocked when I read this part because it was just so obvious and I had never thought about this. Once you have a really high expectation to life, you cannot easily go through the obstacles you will encounter. However, if you tune down your expectation by accepting the fact that life is hard, then you’ll be in a positive mindset when trouble happens to you because you know this is how the life really is. And more importantly, when you actually achieve something or getting some help from others or something good happens to you, you can appreciate those things to another level. You’ll feel lucky and satisfied. This will make you stronger when face the next obstacles.

Another good point the author makes is about love. Love is a term that is really hard to define. People have been trying thousands of years from many perspectives trying to define it precisely. I think there will never be a universally-accepted definition to this term but we can learn about love based upon each person’s definition. I guess that’s the beauty of love. The definition offered by the author is that one is truly willing to help someone grow. This definition is really new to me but if you take a pause and think about it, it makes sense. Parents show their love to their children by helping them from different perspectives with the hope that their children can grow healthily and have a good life. Lovers care about each other so much that sometimes they may directly point out each other’s weakness. Those scenarios shows the love. However, as pointed out by the author, love is not easy as people may think. I myself face issues with love. Chinese parents are overly critic when their children face the problem and they think criticizing is better than compliment.  That’s not the love as they may think and that causes problems like self-hate as thoroughly explained in the “there’s nothing wrong with you” book. In order to find the cure, the author emphasizes the role of psychiatrist. To the author, one can hardly get cured without the help from psychiatrist. That feels too depressing to me. The author tries to deliver this message by giving out lots of cases that show how he helps his patients to achieve better mental state. I have doubts if this is the only way to the cure especially when the problem for a person isn’t as serious as the patients described in the book.

One thing I realized lately is the role of toastmasters club. Even though the organization is described as a way to help people improve their communication and leadership skill, it can also be thought as a way for people gaining love. In the book, the author explains that listening as a way to show your focus to someone is a crucial way to show your love. That’s why the children requires parents constantly attention.  People in the club pay attention to the speaker and provide positive feedbacks to the speaker as a way to help the speaker acquire self-confidence. This is exactly how people give love to others. With the practice of speech, speakers are no longer afraid of stage is a signal for gaining love. I think the mental issue or whatever problem caused by lacking of love can be cured as long as we can acquire love from outside. Psychiatrist may be an important way but I hardly believe that it’s the only way.

The Lady Tasting Tea: How Statistics Revolutionized Science in the Twentieth Century” by David Salsburg

I know this book since the junior year of college when my PhD roommate carries this book around as a way to take a break from intense research. The title looks interesting to me and one day, I ask him what good about this book. He answers with big smile: “This book is all about gossip in statistics”.  I know back that time he is also taking a statistics course in sociology.

Four years after that conversation, this book never appears in my life again. However, for no reason, his comment about this book, especially the word “gossip”, is engraved on my mind. So, I give it a try once I’m done with “The Road Less Traveled”. This book looks a good fit to me because based upon his comment, it’s not a really technical book that may require a silent study room, pencil and paper. Also, it’s about statistics on some level is exactly what I need because I’m always attracted to the machine learning, which has deep root in statistics.

To be honest, this book is probably not best described by the word “gossip” because there is not really a lot of gossip involved. Although, I do learn that R.A Fisher really dislikes Jerzy Neyman and his “overly-abused” hypothesis testing; Egon Pearson overthrows his father, Karl Pearson’s work. To me, this book is more like a survey of the field with the aim to tell general audience about the development of mathematical statistics. I myself is also part of general audience in the sense that I’m not really into a mathematical-formula-dense book on a noisy subway. From this perspective, I think the author does a very good job by delivering idea of mathematic term without invoking mathematical formulas.  This is particular useful for me because I can get an overview of each component in the field and their connections without studying a great deal of math. Lots of intuitions are actually from seeing “big picture” instead of worrying about some tedious calculation. Another good point of this book is that you can feel the excitement of the development of the field. Scientific development is motivated by the problems. This is especially true with statistics because statistics is essentially about using mathematical tools to discover the true nature of the data. Here, “the true nature” invokes lots of controversy in the field. The author does a good job to naturally develop the story and motivation behind the argument. Each chapter isn’t too long and it is self-contained as a complete story.  One takeaway from reading this book is the idea about mathematical tools. Formulas are just formulas and unlike computer program, I never think about those mathematical formulas as “tools” for statistician to query the data. This has psychological impact on me because thinking about formulas as tools are just not as intimidating as thinking of formulas as formulas. Another good point about this book is that it lets me realize the assumption behind some mostly-commonly used technique, like hypothesis-testing. Every tool has its assumption, and it’s danger to abuse it without knowing what’s the motivation behind the invention of the tool.

This book is definitely the book I’ll revisit a lot and I think it can be used to its full potential while you taking a class in statistics when you read the book.

 

“Research” Interest

This week Friday, I meet with my future roommate in Beijing. During the lunch, we had a conversation about each one’s research interest. My roommate, likes me, is also a CS graduate student at Austin. However, unlike me, he has a clear vision about what direction he is going to pursue in graduate school. He just finished his undergraduate degree in Automation department at Tsinghua University. Automation department, as he explained, is similar to a mixture of mechanical engineering and electrical engineering. He has interest in mathematics since high school and naturally, he wants to work on machine learning theory in graduate school with emphasis on computer vision (CV).

Now comes to my turn. That’s a hard question I have been thinking about for a while. I don’t have clear vision on what I’m going to pursue next. I think maybe I’m too greedy and want to keep everything. However, I also realize that I may not be as greedy as I thought initially. I know I don’t want to work on computer architecture, computation theory, algorithm, compiler, network. Now, my options really just choosing among operating system, database, and machine learning. For the machine learning, I even know I probably won’t choose computer vision eventually (still want to try a course though) and I more lean towards the natural language processing (NLP). However, picking one out of those areas is just too hard for me now, even after I did some analysis in my last post trying to buy myself into picking machine learning only. There is always a question running in my head: why I have to pick one? Sometimes I just envy the person like my future roommate who doesn’t have this torture in his mind (maybe he does? I don’t know).

This feeling, to be honest, doesn’t new to me. When I was undergraduate facing the pressure of getting a job, a naive approach is just locking oneself in the room and keeping thinking what profession might suit me the best. After two years of working, I grow up enough to know that this methodology on making choice is stupid and I also grow up enough to know that “give up is a practice of art”. Why I’m in this rush to pick the direction I want to pursue even before I’m taking any graduate course yet? Why can’t I sit down and try out several courses first? Because I want to get a PhD in good school so bad. Let’s face the fact that people get smarter and smarter in generations. Here “smarter and smarter” doesn’t necessarily mean that people won’t repeat the mistake that happened before. It means that people will have better capability to improve themselves. Machine learning is not hot in 2014 from my experience in college. Back that time, Leetcode only has around 100 problems. I have no particular emotional attachment to machine learning material when I’m taking the AI class. Maybe because wisconsin has tradition in system area? I don’t know. However, in 2017, everyone, even my mother who is a retired accountant, can say some words about AI, machine learning. Isn’t that crazy?

On my homepage,  I write the following words:

I like to spend time on both system and machine learning: system programming is deeply rooted in my heart that cannot easily get rid of; machine learning is like the magic trick that the audience always want to know how it works. I come back to the academia in the hope of finding the spark between these two fascinating fields.

Trust me, I really mean it. Maybe because I graduate from wisconsin, I have naturally passion for system-level programming, no matter it from operating system or database. Professor Remzi’s system class is just a blast for anyone who wants to know what’s going on really under the software application layer. Professor Naughton’s db course is fully of insights that I can keep referring to even I begin to work a DBMS in real world. Wisconsin is just too good in system field and this is something that I can hardly say no even I have work so hard lie to my face saying that “system is not worth your time”. What about machine learning? To be honest, great AI dream may never accomplish. Undergraduate AI course surveys almost every corner of AI development but only machine learning becomes the hottest nowadays. Almost every AI-related development nowadays (i.e. NLP,  Robotics, CV) relies on machine learning technique support. Why I’m attracted to machine learning? Because it’s so cool. I’m like a kid who is eager to know what is going on behind magic trick. Machine learning is a technique to solve un-programmable task. We cannot come up with a procedure to teach machine read text, identify image object, and so on. We can solve these tasks only because the advancement of machine learning. Isn’t this great? Why both? I think machine learning and system becomes more and more inseparable. Without good knowledge about system, one can hardly build a good machine learning system. Implementing batch gradient descent using map-reduce is a good example in this case.

I just realized that I haven’t answered the question about rushing towards the making decision. In order to get a good graduate school to pursue PhD, you need to demonstrate that you can do research. This is done by publishing papers. Most of undergraduates nowadays have papers under their belt. That’s huge pressure to me. Master program only has two years. I cannot afford the time to look around. I need to get started with research immediately in order to have a good standing when I apply to PhD in 2018.

So, as you can tell, I have problem. So, as a future researcher, I need to solve the problem. Here is what I’m planning to do:

  • Take courses in machine learning in first semester and begin to work on research project as soon as I can. I’ll give NLP problem a chance.
  • Meanwhile, sitting in OS class and begin to read papers produced by the Berkeley Database group. People their seem to have interest in the intersection between machine learning and system. This paper looks like promising one.
  • Talk to more people in the area and seek some advice from others.
  • Start reading “How to stop worrying and start living

Will this solve the problem eventually? I don’t know. Only time can tell.

What are some useful, but little-known, features of the tools used in professional mathematics?

What's new

A few days ago, I was talking with Ed Dunne, who is currently the Executive Editor of Mathematical Reviews (and in particular with its online incarnation at MathSciNet).  At the time, I was mentioning how laborious it was for me to create a BibTeX file for dozens of references by using MathSciNet to locate each reference separately, and to export each one to BibTeX format.  He then informed me that underneath to every MathSciNet reference there was a little link to add the reference to a Clipboard, and then one could export the entire Clipboard at once to whatever format one wished.  In retrospect, this was a functionality of the site that had always been visible, but I had never bothered to explore it, and now I can populate a BibTeX file much more quickly.

This made me realise that perhaps there are many other useful features of…

View original post 695 more words

Some thoughts on learning

刚才在YouTube首页随便打开了一个推荐视频,视频的名字叫做How to Learn Faster with the Feynman Technique (Example Included)。我个人其实很少点开这种带有非常强烈功利色彩的标题去看的,更别提是这种方法论的视频。并不是说我讨厌这类视频,我只是觉得这类视频看多了,如果不立刻去实践的话,看了也没有任何效果,反而浪费掉了很多时间。这个视频本身不长5分钟左右,看完后,我不仅觉得这个方法可以试一试,而且更重要的是让我回忆起过去看过的一些东西以及一些想法。所以赶紧记录在这里。

方法本身并不复杂。具体其实可以看作者这个网页文字版。我就粗略记录一下要点:

这个方法的核心就是explaining the concept。一个典型场景就是去office hour找老师问问题:在你向老师解释完问题,你的疑惑点,以及你的解决方法之后,很有可能出现的情况就是还没等老师说话,你就说:“噢,我懂了。谢谢老师!” 然后转身跑出了办公室。这个场景体现出两个要点:1. explaining the concept确实非常重要 2. 也许这个问题已经在我们的内心里过了无数遍,却只有我们向另一个人解释的时候我们才会 “噢!!!!”。 第一点不难理解。但是第二点确是极度困难:我们从哪里能找到一个愿意天天听我们explain what we have learned的人呢? 上面的视频提出了一种解决办法,步骤如下:

  1. 找张纸,把你要解释的概念写在纸的最上头
  2. 假装有一个第三方在场,用你自己的语言向他解释这个概念。这里作者有几点强调:
    1.  用最通俗易懂的语言来解释
    2. 不要仅限于定义。挑战自己,用例子,图等形式来确定你可以把所解释的概念实际运用起来。
    3. 把在场的这个第三方想像成一个小孩子。这么做的好处就是小孩子会经常问“为什么?” 这个会让我们做到对这个概念的细节有百分百的理解。
  3. 在做完前两步之后,你就要重新回顾你在哪些地方解释出现模糊,拿不准,或者不知道。这些地方就是我们对这个概念理解薄弱的地方。我们要做的就是拿出资料将这些模糊点搞清楚。这步和考完试改错题非常相似。
  4. 这步其实是第三步的引申。就是看之前哪些解释的地方运用了复杂的语言或者堆砌了大量技术概念。我们要做的就是尽力把这些地方用更简洁的语句进行重写。

视频介绍的这个方法其实在各种我所看过的资料里都有体现过。比如在The Pragmatic Programmer一书中讲如何debug一节时,作者介绍的一个技巧叫做”Rubber Ducking”:

A very simple but particularly useful technique for finding the cause of a problem is simply to explain it to someone else. The other person should look over your shoulder at the screen, and nod his or her head constantly (like a rubber duck bobbing up and down in a bathtub). They do not need to say a word; the simple act of explaining, step by step, what the code is supposed to do often causes the problem to leap off the screen and announce itself.

It sounds simple, but in explaining the problem to another person you must explicitly state things that you may take for granted when going through the code yourself. By having to verbalize some of these assumptions, you may suddenly gain new insight into the problem.

这个”Rubber ducking”的来源就是其中一位作者在早期的时候看见一个很厉害的developer经常拿着一个”a small yellow rubber duck, which he’d place on his terminal while coding”。

The Lady Tasting Tea一书的前言中作者也提到作者在写着本书的时候收到了来自他的妻子很多的帮助。因为他的妻子不是statistician,所以如果作者用很technical的语言来写的话,他的妻子根本就看不懂。所以这迫使作者不得不采用更加通俗易懂的语言来解释统计背后的哲学及观念发展。

这也让我想到我最开始写Tech blog的一个主要motivation就是把我所学的东西通过文章的形式解释出来,争取消灭掉不懂装懂的情况。而视频方法的3,4步就是未来我在写tech blog的时候需要更加注意的地方:不要把所学的内容进行简单的归乃重复,要注意用更加简略的语言讲述出来。这里题外话一句:我发现将知识点内嵌在文章里是一个非常不错的保存知识点的方式。这么做我感觉会使知识点不会过于碎片化,并且提供充足的上下文将独立的知识点很有效的串联起来。这也许是“connect the dots”的一种体现吧。

最后用一个quote来作为这篇post的收尾:

“The first principle is that you must not fool yourself — and you are the easiest person to fool.” — Richard Feynman

Thoughts on PhD

Preface

This post serves as a record of thoughts regarding PhD. This post is from the person who is about to embark on the journey of getting a PhD. The thoughts from this post may look stupid or naive for someone who has already gone through the phase. However, based upon my past experience, if you don’t have some baseline for something that you decide to begin fighting for, you can barely have a measure on how much you have progressed when you actually start to fight, and highly likely, you may fall into the same trap over and over again for future similar situations.

Let’s dive into …

I have been considering getting a PhD since my sophomore year at University. This page summarizes some commonly-seen motivation for people getting a PhD. I think mine can be partly described as “Dr. Hu — sounds cool!” and “Eternal quest for knowledge (yeah right!)”. Another part, I guess, probably be the childhood dream of becoming a scientist. However, now, after two years working in industry, I realize that the most important motivation for me to get a PhD is that I want to have the ability to solve the problem that nobody explores before. This is different from quick learner because quick learner means grasping the material that has already studied before quickly. But, that doesn’t mean he can handle the unexplored area very well. I like to ask “why” when I face a problem but gradually I realize that I don’t have enough knowledge and more importantly, the confidence to solve some of crazy ideas in my mind. So, getting a PhD means I build some good knowledge foundation in some specific area and process the ability to solve any open question, even it is from the area that I haven’t explored before.

However, getting a PhD is a non-trivial task and itself demands lots of commitment. I personally view PhD and marriage are two the most serious commitment a person can ever give in his entire life. I try to play “rational” card here by doing some evaluation beforehand because I’m type of do-something-that-can-be-successful person and several years of study in economics make me become more and more like a “risk-averse” kind of person. So, I do various RA jobs in various departments (i.e. Math, Psychology, Biostatistics) to get a sense of what PhD life might look like.  The result is not good for me because I find out that working on some topics that you have the least interest in can be a lot like being in jail. However, those undergraduate research experience also has its positive side.  Imagine if I jump into the graduate school directly and choose some direction that I have no interest in (i.e. medical imaging),  I am sure that I cannot survive till the end. Sometimes I feel that the process of making decision is a two-way street: one way to do is to pick something that fits you from the pool; the other way is that you get rid of the choices that definitely do not work for you and then see what is left inside the pool. Apparently, for me, the latter strategy works slightly better.

So, I choose to work in industry for two years to find the things that I have passion about.
There isn’t much left in my choice pool by that time: I either pick from AI or from system.  For AI,  my focus is majorly on the application of ML techniques, such as CV, NLP. For system, my choice is distributed system (i.e. distributed database, distributed file system).  So, I need to carefully think about the pro and cons for which track I decide to pursue. Like I said in my offer choice post, there can hardly be a perfect choice that meets your need by any measure. Preference ranking in economics may be too ideal.  There is always trade-off. After spending two years working in database, I realize that I’m not really a hardcore system guy.  The most attractive feature from system is that I can do lots of coding. The coding here is naturally different from coding in, say, ML. In system, most of coding is done involves implementing data structures, data process models, and so on. However, for ML, coding is more like a direct translation of some mathematical formulas. However, the problem I find out about system research is that it is hard to propose problems that can directly link to the industry level production. This problem becomes clear to me after I attend DTCC 2017 last week.  The key success element for building a system is the production painpoints or user scenario. Alibaba and Tencent build system just to cater their specific business scenarios. In my view, the system has value once it can solve some specific problems that are not formed from someone’s imaginary. This can be very hard for newcomers who just join inside academic circle. In this case, advisor may work like a offer manager who regular visits companies to see what kind of problems they try to solve and bring those practical problems back to the research group and hopefully these issues can be resolved by his students. Research is all about solving problems and great research comes from the problems that have or potentially have great impact in the industry or people’s daily life.

In addition, if I recall the fun course experience from my undergraduate, I realize that I have much more fun with manipulating formulas and work out the problem that has strong connection with people’s daily life. The biggest trend right now is on big data. However, to be honest, for database system developer like me, I can barely get in touch with actual big data in my daily work. So, whether the system I build is robust enough to handle the actual big data, I don’t know. The only thing I can say is that I implement the design correctly. So, I feel like it is really hard to work out some good system by spending most of the time in school. This idea is partially confirmed by the trend that people jump out of academia and head to the industry like this.  However, even I have spent almost all the space so far talking about the “problems” I have observed about system research. I do enjoy the “traditional” programming scheme that system research possess. Rather than taking some data and train a somewhat blackbox network to achieve outcome, traditional if-else programming feels more rewarding for a hardcore programmer.

For AI, things can be radically different from system. Specifically for ML, one thing I learned is that ML is used to solve for the task that can hardly solvable by traditional programming, like autonomous driving, pattern recognition. Those stuff has strong connection to people’s daily life, which means can make a lot more impact. This is some historical pattern that can be easily observed: serving individual people is lot more profitable than serving big companies. Doing research on system is a lot like serving big companies if we consider the problem: who needs to build infrastructure from scratch? However, working on AI is a lot like serving people by making iPhones. If we observe the trend of companies like IBM and Apple, this analogy can easily work. So, even programming in ML is less satisfying in my sense, we just need to embrace the future to better maximize our utility.  Of course, mathematics are quite bit involved in the field of AI, and tweaking parameters of learning models can feel quite subjective. However, I guess that’s some obstacles I need to face. The rationale is same as before: there is no perfect choice and we just need to try even if we have only 10% confidence about success.

Last word …

The motivation for considering this issue right now is that I need to start planning my course schedule for the upcoming semester. The course schedule can be balanced between system and AI. But, it can also be AI focused. So, I really need to evaluate myself to see which direction I want to go.  There is a famous quote in China: “Choice matters!”