About This Blog

This is Chunhao's Blog

I'm writing something about life and technology here. As a practice of English writing.

My Chinese Blog: http://blog.chunhao.net

My Chinese Page: http://chunhao.net/index-cn.html

Subscribe

The books I’m reading

The items I’m interested in

License

12 June 2009 - 20:14Are Your Fingers Long Enough to Use Vim?

Note: I wrote this post just for fun. Please don’t take it seriously. Thank you! :)

Which editor are you using, Vim or Emacs? And why?

Next time, when you are arguing with other people about which editor is better and trying to persuade others to use your favorite editor, just forget it. If you believe everything is in destiny, it is not an exception for the editor you choose. The choice is written on your fingers.

Several days ago, I learnt from Mike that the choice between using Vim or Emacs depends on your fingers. As he figured out, people have longer fingers prefer to use Vim, while people have shorter fingers prefer to use Emacs. It is amazing, but reasonable.

Read more…

11 Comments | Tags: Software, linux, vim

4 June 2009 - 0:59Which email client are you using?

What can you do for killing time? Maybe you could figure out what email clients your contacts are using. It’s funny.

Most people prefer webmail, especially Gmail. Webmail is very easy to use and does not require much configuration. Gmail is the most wonderful webmail. It groups messages by threads and it has a powerful searching tool. You can easily find out what you want from the mass.

However, one drawback of webmail is that you cannot access your mail off-line. Although Gmail started to support off-line email recently, I still think that keeping the emails in my local storage is safe and reliable. Moreover, an email client is generally much more customizable than webmail. So, I am using Evolution, which is the most powerful and standard email client in Linux, to receive and send email everyday.

Read more…

1 Comment | Tags: Software, linux

21 May 2009 - 19:39Tools for Reading Sources

Hacking is a good method of learning. And the pre-stage of hacking is reading the source code. You might have this experience: facing a large amount of source code (generally dozens of files), you don’t know how to start, or you even don’t know how to read them. A good tool is very helpful for reading code. It can facilitate your understanding of the code and help you find out the things you want as soon as possible. I will introduce you some wonderful tools of browsing sources.

For me, the must-have feathers of a source browsing tool should be:

  1. Syntax highlighting
  2. Friendly user interface
  3. Identifier and function search

Read more…

No Comments | Tags: Software, linux, programming

13 February 2009 - 14:08How to synchronize with SSH

I will share my experience in synchronizing files with SSH here. Following are demonstrated by synchronizing Dokuwiki. Of course, you can synchronize everything as you like.

The wiki I used in my homepage is Dokuwiki. The most great feature is that it does not require database connection. It’s very convenience for personal usage.

I have two Dokuwiki maintained. One is located in localhost, another in the webserver. I always edit the pages on localhost, and synchronize them to the webserver at times. Since Dokuwiki is totally PHP based, without database such as MySQL, I only need to synchronize some files.

All the changes on wiki are reflected on the folder “data” in your Dokuwiki path. So every time, I only need to synchronize this folder.

The best way to communicate with webserver is SSH. Fortunately, my webserver Godaddy support SSH access. Another thing need to concern is synchronizer. Here I use Unison. The best description of Unison comes from it’s the author of this software:

Read more…

No Comments | Tags: Software, linux

11 May 2008 - 5:20Lessons Learned from Software Engineering

More than one month since U.A.T of CMPT 275 passed. We almost failed on it. But I have no time to write some experience and lessons learned from that until now, because I was busy with other things after I was back to China.

Oppose with what I thought before, writing a big software is really a kinda art. The most important thing for one to write a good software is the architecture design. And the most important thing for architecture design is requirement analysis. Coding is simple and should not bother a developer so much. Because if you have some technical problem while coding, you can refer the document for the programming language you are using and solve it quickly. But if you find that your design goes all wrong, you must delete almost all your code and do it again. So, a good designer is more important than is good programmer in your team. And things are always that a good designer is a good programmer himself.

And a crucial thing for your team is having a leader. This is always be true in real software developing scenarios, but not as in taking courses. If you have no leader, you will definitely waste much of your time on arguing. Every one thinks that his design is the best. If you have a leader, you can easily determine which architecture you will use and which style of GUI you will draw, and so on. Meanwhile, your leader must be a experienced programmer as well as a experienced designer. He always has a brief view on how could you achieve your goal with the least overhead.

Another import thing is that all of your team members should under each part of your project. Such like the one do GUI must have the knowledge of database, and the one who are implementing background algorithm must know the message observer stuff. Basically they are not related with each other, but I don’t want to hear requests like this again: “can you store the hash map in database table?”.

Besides, all of you should use the same tools, and follow the same coding style. Coding style is very important. We failed in this because there’s no leader forced us to do so. Everybody has his own style, and the only common style for us is that each line ended with a semicolon.

The last thing is about user interface. Never write a dialog-based program like us, unless you are doing a cell-phone program. Dialog-based program is ugly and slow. As Rui said, the program should based on a main-frame which will not be changed often, and many functions can be accessed via menu, what is we lost. Dialog is mainly used when a ‘dialog’ is needed, not everywhere.

Although I will not likely to be a industry programmer, I think it’s useful to have a good skill for software engineering, and maybe it will help me develop systems in the future.

Finally, I will thank my teammates here: Chris(Hopefully not misspell your name here, :) ), Meng, Ting, Ian, and Jeff!

After 1Y0-259, all those students who are not sure about 70-536 and 1Y0-456, should try for the qualifying exams like 1z0-042 or 642-892 in order to figure out their interests.

No Comments | Tags: Software