2005年9月4日

夜空之美

晚上在北航的大体育场上跑步,最后一圈是走完的。说来也巧,以前跑完步的最后一圈也都是漫步一圈,但是今晚忽然看到了夜空中闪亮的星星。最后一圈刚开始我还走得较快,有了这种感觉后脚步不经意间慢了下来。一时之间感受到的是一种和谐与灵动。心底儿时的梦想和憧憬又一次浮现在了眼前。

这是一种很微妙的感觉。忽然想到了最近看到的那个《Time Management Tips for Developer》.其中的一段是

Set up your goals: long term and short term


To make life better, first of all you need to know what is "better" personally for you. Where do you want to be next week, next quarter, next 2 years, or even next 20 years (if you young enough :-). You must decide for yourself what are you wanting from your life, and why you are still where you are.

的确,现在的我需要好好的完成这件事情了。

2005年9月3日

Specification~!

Nowadays, I am working on the specification. It was little time-consuming. Fortunately after my working these days, I worked out the framework and finished the main parts. I should enrich it and report to my mentor.

After the specification, I would pay more attention on my dialogue modeling and management. It was my main task. There were many papers waiting for me. I should try more.

This afternoon, Dr. Tliu had a dinner with us. He was on business in Beijing. He introduced his recent experience and feeling. Thanks to him.

2005年9月2日

[collection]Time Management Tips for Developer

Source: http://www.codeproject.com/useritems/Time-Management-Tips.asp
Author: Alexander Fedorenko

There is a way to make life better. Really few time management principles can bring our life to success and improve software and web development to really profitable and fascinating work.

Introduction


Software and Web Development can be really exciting, after years of development it can reward with a million dollars or became a groove. Many of us usually are about all can hope for just keeping heads above water. But I think this is not our goal what we dream in school and university.


To earn more, many of us are searching for some additional work and can't bother about anything except hands down programming. We can't take a rest, can't spend more time with the family and friends, we can't do anything other than work. This leads to stress and unsatisfied life.


But wait. There is a way to make life better. Really few time management principles can bring our life to success and improve software and web development to really profitable and fascinating work.


Set up your goals: long term and short term


To make life better, first of all you need to know what is "better" personally for you. Where do you want to be next week, next quarter, next 2 years, or even next 20 years (if you young enough :-). You must decide for yourself what are you wanting from your life, and why you are still where you are.


Do not lazy planning


Napoleon told what only properly planned things can produce the desired result. Don't ignore this principle and invest time for planning. Remember, mussing is not planning. I like classical citation: "Sometimes I sit and think and sometimes I just sit". Usually this phenomenon can eat much time. If you found yourself mussing, switch to another work, look at the window or simply relax your eyes.


Update your plans according to reality regularly.


If you can't plan, just track


Watch for yourself if you can't plan anything this time, you will be able to comeback to planning later. Just track what you are doing on paper, excel sheet or using a task management software. Update at least hourly, not at the end of a day. This will help found common interrupters and recurring tasks, thus you can plan these things in the future.


Look at your time journal and try to find things that don't really need to be done, things what could be done by someone else, work what can be done more effectively or quickly, actions what wastes others' time.


You can download a simple time tracking template here.


Collect all tasks in a to do list


Sometime we doesn't have anything to do, but later we remember (or manager remembers for us) a lot of important tasks, which automatically became urgent. To avoid such situations the only way is collecting tasks in the to-do list. Add tasks to a list whenever it comes from your boss, colleague or from your mind. If you can't access computer, don't remember the task, write it down on a scratch or any other media. Transfer it to the main list when possible.


Estimate every task, set deadlines yourself. This will help you avoid doing things at the last minute.


Adjust priorities


Drucker Dictum told: "Doing things right is not as important as doing the right things". In software and web development it is possible to spend a lot of time for tasks what produce insufficient value for a customer or even do not produce a value at all. For example, writing a regular expression to split a coma-delimited array or even worth: writing a CORBA application to access two methods on a remote server. There is no a silver bullet what can shoot all prioritization cases, but few tips can help:



  1. Ask customer or manager for tasks ordering and prioritization first. Be sure to do this beforehand: not every customer will answer immediately.
  2. If someone else dependent on specific task then do it first.
  3. For equal tasks set priorities using task difficulty: ugliest tasks first.

Delegate when feasible


If you know people around you, who is available to take a part of your work, do not hesitate to delegate it. Give objectives, not procedures, require responsibility, accountability. Describe task clearly. Provide a "how to test" example.


The following rules can be used to determine delegate specific task or not:



  1. Will he/she do it better or quickly than you? If yes, no doubt, delegate it.
  2. Will you commit a task to somebody if you have more important tasks to do? If yes, delegate it.
  3. Is available person can complete a work without your assistance when you are out of office? If yes, delegate it.
  4. Of course, you can even delegate your work to your boss, but do not abuse.

In multi project environment work of the whole team can not be distributed equally to every member. Someone will have to do more and someone less. Using Goldrat's Theory of Constraints, project can not be completed until the slowest member completed his work. Thus delegation must be used inside a team, not only from manager to developer. This process can only be effective in teams with honest and open communication, like in XP teams.


Perfect is not better than good


When writing a code, for example, it is more important to finish in time than worry about naming a variable or perfect design. Get the job done and you can refactor later. On the other hand pure code will lead to many problems later and unnecessary time spending for fixing and debugging. Thus, try to find the happy medium. Unit tests are really helpful here. They allow worrying about perfect code less and will simplify refactoring.


Split difficult tasks in bite-sized pieces


People usually avoid difficult tasks. Break them down into small steps. Complete manageable chunks and soon you will notice what problem resolved. Very helpful approach is adding "how to test" to each task. This will setup a micro goal and will allow determining task completion. Of course, if these tests can be automated this will reduce time on repeating tests.


Identify your time wasters


Usually we deal with people around us. This can be our colleagues, friends or kin. They are bothering or gladdening you in various ways. They can contact you directly or via phone, instant messaging or email. This leads to interruptions as well as time spending. Interruption of 6 - 9 minutes will take additional 4 - 5 minutes of recovering. Five interruptions will shoot an hour. You must reduce frequency and length of interruptions. But you can't firewalling yourself or ignore others. For example ignoring wife phone calls will be over really badly for you ;) The only way to reduce such time spending is investigation of repeatable time wasters. After you know the whole picture you can decide where to save and where you can't save. Be sure, your boss is not a time waster in any case.


Plan times for relaxation and recreation


Keith Frayn, professor of human metabolism at Oxford University, told TV Plus: "Any normal person could survive for up to 60 days without food on just water." Without sleep people can break much quickly. In 1964 high school student Randy Gardner attempted to break the Guinness Book of World Records for the longest time awake - 260 hours. Stanley Coren describes the day-by-day impact on Randy in the book Sleep Thieves, as documented by John Ross of the US Navy Medical europsychiatric Research Unit in San Diego. Randy had trouble focusing his eyes on day 2, hallucinations on day 4, and slurred speech and a short attention span by the last day.


Do not expect high productivity if you tired. Sleep recharges our brains and helps us think more clearly. Plan your day adequately, do not save on sleeping.


Developers are usually sitting 8 hours a day and more in a work place near computer. This leads to emotional and physical diseases as well. One of our exposed organs is eyes. Looking to the monitor for a long time, even expensive one, will ruin our eyesight. To reduce pernicious influence for our eyes there are many techniques of eyes training. Type "training eyes" in google and find suitable training for you. Schedule it daily, just before a dinner, or to any other convenient time.


Do not hesitate to ask friends or colleagues for helpful advice


Almost every IT project have risks, they can be hidden or visible at the beginning. Developers have to resolve them. Working on any, even small risk, can take days even weeks. To avoid these time spending just ask advice or help from your colleagues or friends. I have many examples of how this rule reduced time on difficult tasks and prevented project failure. An example from my practice: customers of our recent project required extra safety of application from possible cracks. One part of protection was downloading a component from a server and loading this DLL to the application without writing on a disk. After two hours of research I didn't find any useful information. I paused for a minute and tried to recall who can help me with it. I asked a friend who worked as developer in another company and he helped me. He sent me a link to a tutorial I'm looking for. Problem was resolved.


Reward yourself


We are all expecting a reward or praise for completed work. Lack of reward will kill our desire to work what leads to reduced productivity. This is why we prefer working for others than doing something for ourselves. Promise yourself a reward for completing each task or finishing the total job. For example let yourself watch an interesting movie when you finish developing page or new feature.


Conclusion


This list of time management tips is just a starting point to the new improved life. Leading by these principles from day to day will show a way to successful career, robust health and welfare.


My university teacher always told me, what every detail is important. In most cases if we did not achieve something, this happens due a little, but important thing, what we forgot or skipped. Help yourself reaching your dreams. Avoid chaotic motion, plan and manage your life time.



2005年9月1日

Anaphora Resolution Research Friend

When it was 21:40, my msn flickered. I found one of my research friends send me a salutation. He was a Ph.D candidate of Beijing Normal University.

I phoned him. He would graduate next year on anaphora resolution research. Now he needed some little help. He invited me to Beijing Normal University someday. We would discuss some topics on anaphora resolution. He said he had the book Anaphora Resolution which had been written by Mitkov. I knew it was very good for our research. He said he could let to me.

Yeah. When I discussed some questions on anaphora resolution with my research friends, I felt very happy. I knew I had loved this topic. I could do more on it.

2005年8月31日

Find out some nice courses materials

In the left links, I added three "concerned courses". They all were very good.
I had seen many wonderful courses. But I had not learned them carefully. So I believed I could list them in my blog. And I could study them often.

Just sharing to my blog readers! Welcome~!

2005年8月30日

Dinner with MSRA friends

We had dinner in DongBei again this evening. Guihong Cao would check out tomorrow. We had a farewell this evening. I remembered his angling on river icecap in winter night in Canada. It was a beautiful scene.
After our dinner, we had chatting on many interesting topics.
Nice dinner, nice talk!

2005年8月29日

Minipar使用方法:step by step

不知道各位有没有用过那个著名的Dekang Lin的英文下的依存分析工具Minipar。上午Yichen提起说不知道如何编译通过,考虑到过些日子我也会用到这个东西,我自告奋勇的把它放入VS7.0调试。本以为在当初调试C45R8经验的基础上能够很快完成这个工作,结果却迟迟调试不通。代码是Linux风格的,装上Cygwin后结果还是未能通过。刚才在Chengjie Sun的帮助下才解决掉这个问题。记得在咱们IR-BBS上有人问过类似的问题,我在这里给出运行成功下面的例子pdemo的全部过程。

1. 下载Minipar
在连接 http://www.cs.ualberta.ca/~lindek/minipar.htm下填表得到minipar-0.5-Windows.tar
2. 解压
用Winrar解压后得到minipar-0.5-Windows的没有后缀名的文件,人工添加后缀为zip然后再用Winrar解压得到解压包
里面包含如下子文件夹

minipar-0.5-Windows
|-README
|-data
|-include
|-lib
|-pdemo

3. 设置环境变量
右键单击“我的电脑”,在“高级”中选择“环境变量”。新建变量“MINIPATH”,值为上面data的绝对路径,如“D:\MiniPar\minipar-0.5-Windows\data”。

4. 设置VC7.0
新建VC++7.0 Windows控制台空项目,添加pdemo下的cpp文件pdemo.cpp。
打开项目属性设置“Configuration Properites”下面的C/C++下的General中的Additional Include Directories,添加上面的include文件夹路径
打开项目属性设置“Configuration Properites”下面的Linker下的General中的Additional Library Directories,添加上面的lib下的debug文件夹路径;在同层下的Additional Dependencies中添上“minipar.lib Ws2_32.lib”(中间有空格)

5. 编译运行
Build后在DOS界面下进入对应的Debug下,输入"pdemo.exe -p "D:\MiniPar\minipar-0.5-Windows\data" ",即可初始化依存分析平台,在>后输入英文句子即可进行依存分析,如下

> Many students like programming.
(
E0 (() fin C * )
1 (Many ~ Det 2 det (gov student))
2 (students student N 3 s (gov like))
3 (like ~ V E0 i (gov fin))
E2 (() student N 3 subj (gov like) (antecedent 2))
4 (programming ~ N 3 obj (gov like))
5 (. ~ U * punc)
)
>


至此完成了全部的工作,MINIPAR的中间结果可以被用于其它程序中,可以用来很方便的找到句子中的依存结构。
以上步骤留做记录,便于以后查找。