2007-07-10

NO! You can not sing my song!


According to this slashdot post "music licensing companies are now hitting small bars and coffee shops that offer live music, even if only occasionally and even if the musicians don't get paid. One coffee-shop owner told musicians they can only perform their own songs from now on." It quoted the news saying that

"A restaurant owner who doesn't even offer live music was approached for payment for having the TV on while the Monday Night Football theme played. And if the owners pay up to one licensing company, all of the others start harassing them, calling four times a day, demanding payment too. It sounds like they don't even check whether any copyright violations occurred, they're just sending bills to any business that may or may not have live music."

Now, that's just getting out of control. And when you are talking about stupidity and greed. Look no further, this is THE example of both. To make things worse, there is another news from YouTube, they were forced to take down one person's guitar lesson videos (that is more than 100 of them) because "one of the songs that he taught was copyrighted". For God's sake, that's just one song that was copyrighted. Plus this guy may have bought the CD for that song or sheet music for that song.

Now it makes me wonder, if things like these keep happening, will it one day become illegal for people to sing a copy-righted song in public space? I enjoy listening to a guy busking around the corner of the street where I am working. Does it mean, one day RIAA will come to this guy and say "Hi dude, you have to pay us, coz you are singing a copyrighted song.". If that ever happens, I have only one word for it. The word will start with the letter after "E" in alphabets.

I remember when RMS gave a speech about GPL back in the 90's, he said that if copyright can not be stopped, one day people will be charged every time they read a book, or lend the book to someone else. Or they have to pay everytime they boot up a computer ... etc. These haven't happened yet, but looks like the music industry has started charging people for singing "their" songs. Just how far those people can go ...


Powered by ScribeFire.

2007-07-02

What went wrong with "THIS" project.


I am going to talk about "this project".
It is a project I worked on as a senior developer, then a technical leader. I liked it a lot. It seemed to me a perfect project to work on at the beginning. The architecture was good, the architect team has some of the best developers I have met (one of them is behind a major OS Java tool). There was a dedicated and very professional BA team, a dedicated UI architecture team, who defined the user interfaces (screens). There was this configuration team, who looked after the business process and they really understand their business very well. The project manager was a lovely bloke. Few days into this project (that is before I started doing anything for real), I thought I would be working on a dream project (especially after worked for a government agent for few years doing ...not much).

However, after less than one and half years on it, I decided to call it off and left the project. Admittedly, I have learnt a lot in this project, especially from the architect team. But at the end of the day, the most important thing for a project is always to deliver. You can lecture any client with your heart out about how elegant this project was designed, but if you can not deliver, the client will show you their fingers. With this project, the thing (I can not call it a product, without looking down my toes) we managed to deliver is not what we had in our mind. Mind you, the end result was not hopelessly bad, but it was bad. At one point, we were fixing more than 250 defects a day. Yes I admit that a proportion of those so called defects are things like typos, UI being not exactly the same as defined in MS Visio, but the majority of them were real defects. Misunderstanding of the business requirements, not enough validation against user input, missing functionalities as required ... we delivered the project to system integration test(SIT) team 6 moths after we started coding, then spent about 10 months patching the system up. Yes, I am not kidding, it was that BAD.

So, it made me think, why so? Why an almost perfect initialized project went so wrong? What caused the mischief and how things could have been done better? And here is my two cents I'd like to share with you guys.

1. Communications broken cross different teams.
We had a good architect team. Unfortunately, this was a very quiet architect team. Most of time, we little day2day developers wouldn't have a clue what those guys were up to. They put most of the stuff they do on a project wiki. Fair enough, you can find everything (almost) you need about the system on the wiki. But they are not updated frequently. And if the wiki was so important to the project, I had to say that the importance of it was not well communicated to rest of the team.

The foundation of the project was well defined/designed, but I only found it out by spending my first few weeks with this project doing nothing but digging into code everywhere trying to figure out how things were hooked up together. If I was given a well written document, or some kind of induction on the architecture of the project, it would save me a lot of time and frustrations. Because there was no such document and induction, various people (with various level's of experience) will see the application in various ways. The result .... a very well defined foundation, a lot of messy components, a lot of duplicated code. Because people didn't know that things were supposed to be done in a certain way, and a lot of tasks have been looked after by the framework. I remember at one time, there are 4 different StringUtils classes, and a number different ways to convert a Date to String or vice versa. Another time, a team member complained about how he by-passed the layered architecture (which is what made the foundation of the project) to do something really quickly ....

Communication was also broken between the BAs and the UI team. At one stage, I was given a UI design document and I could not make sense out of it. So I called for a meeting, when I gave this UI document to the chief BA, he had a look and said "This is crap!" ... so, it was crap, then why didn't these guys check it before giving it the development team? We had a lot of defects related to missing functions, most of them came down to things were not possible to implement with the UI design.

2. UI driven development ... bad.
In any software project there should be a Bible like document, where a developer can find clearly defined business requirements. In this project, Bible came as a large set of pretty Visio diagrams known as the wireframes. Each of the wireframes also contained a lot of comments, which was supposed to define the function of the screen. This arrangement worked fine for the first release which contains just a few functions. As the application grew, this arrangement was not adequate enough. Actually, in my opinion, for any business component whose function is more than just data entering, there should be a dedicated document for it. In this project, there was a business requirement document. But because it was written in such as way that it was almost impossible to link things there to things on the wireframe, not many people read it and for these who read it, it was more confusing than enlightening.

The result of this arrangement was that we developed a pretty looking application and only to find a lot of missing functions during SIT.

-- There are few other things I'd like to talk about this project, I will put them in another blog. So to be continued.


Powered by ScribeFire.

2007-06-29

UMLet, let you scribble your UML in no time

I like Object-oriented software design a lot. Ever since the first time I learnt about it in my old university days, I fell in love with it. But I am not a big fan of almost all UML case tools that I have used. I have used Rational Rose and loved it, but it is too expensive and too big. I used Enterprise Architect and passionately hated it. Not only is it slow, big and very very expensive, it is also very difficult to use. I have to admit that both software have excellent features. They can generate different types of code, do reverse engineering well, can be exported to different formats, very well suited for group development and enterprise environment. But most of times, all I want is to document a piece of OO design in UML quickly without too much hassle.

That's where UMLet comes into my sight, and that is exactly what it does the best.
  1. UMLet has a very simple user interface.
    The picture speaks for itself.
    You can see from the picture that there is a menu bar, 2 drop-down lists on the top, three panels on the right and on the left is the big drawing board where you can put your creative work in.

    The menu bar has 3 menus, namely File, Edit, Help. Each of them contains the usual menu items. E.g. you can find Open, Close etc. in the File menu. Copy, Cut etc. in the Edit menu and Help is quite self-explanatory :-)

    There are also 2 drop-down lists at the top:

    The "insert custom elements" lists contains all custom elements created by you (we will talk about how to do this in a moment)

    The "Palettes" list contains different groups of UML elements you can use to create your design. Those elements are grouped by the type of UML diagrams they will be used in. E.g. there are Class palettes, and Activity Diagram palettes. And of course, these are customizable .

    The majority of the screen is occupied by the paint area where you create your diagrams. You add elements to your diagram by double click on the elements in the palettes panel. (drag'n drop will just move the element around in the palette panel).

    On the right side of the paint area, you have 3 panels. The top panel is the "palettes" panel, where UML elements reside (mind you, it can contain anything that you have created not just these UML elements). Below this panel, there is a text panel, where you edit your UML element by editing some plaint text pseudo code (this is the best part of UMLet, I will talk about it in the next paragraph), let's call it the "editing panel". Below the text panel, there is another text panel, where you can use to implement your own UMLet elements (custom elements).

  2. UMLet let you create your diagrams in a very simple way.

    And this has to be the thing I love the most about it. With any other UML case tools that I have come across, if you want to add attributes or operations to Class, you need at least a few mouse clicks plus entering text in a lot of pop-up dialog boxes. Not with UMLet. With UMLet, you add your class on your canvas and edit your class by editing some plaint text pseudo code in the "editing panel".

    For example, you need to create Class A with attributes XXX, YYY and operations getZZZ. all you have to do in UMLet is add a simple class in your canvas (by double clicking on the "simple class" element on the palette panel. and then write the following text in the "editing panel"

    ClassA
    --
    XXX: String
    YYY: Long
    --
    getZZZ(id: Long): void

    and that's it. You will get a class looks like this on the canvas.To make this an abstract class, you do

    /ClassA/
    --
    XXX: String
    YYY: Long
    --
    getZZZ(id: Long): String
    /+getABC(): Long/


    To define a lationship like this
    You type:

    lt=-
    m1=0..1
    m2=0..n
    relationship


    Of course, there are many other things you can define in UMLet without dialog boxes popping up all the time, actually, there is no dialog box in UMLet at all.

  3. UMLet lets your define your own UML elements ... in JAVA
    You can define your own custom UML elements or any other elements you care by adding a custom elements from the "insert custom elements" drop-down list. UMLet will prompt you to enter an Element name, and when you click on your element on the canvas, you can see the Java code for that element showing in the text panel below the "element definition" panel. Basically, your custom elements need to extend the com.umlet.element.base.Entity, there is a compile button, you can use to compile and add your custom element into your collection.
I found UMLet a pleasure to use when drawing simple class diagrams (and few other diagrams). It lacks most of the power user functions provided by other OO case tools. But it does one thing extremely well ... that is drawing a class diagram in UML to illustrate your design ideas quickly. And that is the reason I love it so much and recommend it for all to try it out.

Powered by ScribeFire.

2007-06-20

Webware top 100 awards 2007

The image “http://www.webware.com/i/ww/100/2007/win/ww_100_win_hed_640x70.jpg” cannot be displayed, because it contains errors.





CNET has just released Webware top 100 awards.



More than 5,000 web applications were nominated by the webware.com community. The (loosely) categorized those into 10 groups:



Browsing: Fundamental Web access tools: Browsers, extensions, widgets, and security.



Communications: Person-to-person communications platforms: E-mail, chat, voice.



Community: Online gathering places and group-powered content.



Data: Tools for finding online info, and storing and sharing files.



Entertainment:Tools for taking time off: Games and contests.



Media: Places to consume and share videos, photos, and music.



Mobile: Products that make your mobile phone a Web 2.0 appliance.



Productivity and Commerce: Sites for getting things done and doing online business.



Publishing: Tools for producing your own site: Blogging and Web content services.



Reference: Fonts of knowledge--from history to movies to maps.



I am not sure if I totally agree with how they categorized those websites. But here you can, you can find the list of the winners here.



A lot of the web applications (a.k.a. web sites) I have never heard of. But I do use most of the number one web applications in each category, so it shows they are not the top ones for no reason. :-)



Most of those web applications are considered web 2.0 applications (which I hope are not the new dot-coms).  However, with google-gear released and few other companies are moving the web 2.0 content off-line, I am hoping web 2.5 will give us some really really cool apps that we can really start to use online or otherwise.





Powered by ScribeFire.

2007-06-19

Learn some English (should they be Latin, French) words.



This article from dailywritingtips.com does exactly what I wanted to do a while ago. I was writing a report and was not sure how to use some of those expressions described in the article. Particularly the usage of "per" and "per se". I did a bit of research and figured out how to use them and thought about writing a blog to share the knowledge with my other friends, for whom English is not their first language. So read this article and learn about "De Facto", "Vis-à-Vis", "Status quo", "Cul-de-sac", "Per se" and "Ad hoc".

http://www.wordfiles.info/scribe-cabinet-Trans.gif




I have only one thing to add to this article ... the usage of "per".

E.g. Changes have been made as per our earlier arrangement.

Search on Answers.com shows the following results

per (pûr) pronunciation

prep.
  1. To, for, or by each; for every: Gasoline once cost 40 cents per gallon.
  2. According to; by: Changes were made to the manuscript per the author's instructions.
  3. By means of; through.
adv. Informal.
  1. For each one; apiece: sold the cookies for one dollar per.
  2. Per hour: was driving at 60 miles per.
[Latin.]

So, the example above can also be written as

"Changes have been made according to our earlier arrangement."

I remember vividly the first time i encountered this word. It was in a uni assignment, where we were required to write a program "per requirements". Before this, I only knew "per" used in "$10 per kilogram", so I thought that we needed to write a program "for each of the requirements" ... luckily, it was a group assignment and one of my group members is a native English speaker ...

Another site that is very helpful for learning English is

http://www.wsu.edu/~brians/errors/errors.html

2007-05-01

Watch Web 2.0



Heard about this story on CNET Buzz Out Loud podcast the other day. According to a survey conducted by Hitwise, most of so called Web 2.0 users are just watchers, popular Web 2.0 sites such as YouTube and Flickr have only less than 1 percent of users who actually contribute to the sites (actively). Wikipedia, meanwhile, has a bit more than 4% participation rate. And according to the study, most of those content contributors belong to age group of 35 to 44. You can read the whole article here.

We all know that Web 2.0 is about interactivity, about user participation, about community. So the finding of this study will definitely dismay those Web 2.0 believers. Actually, not long ago, a few mates and I were thinking about starting a social shopping network website, where users can share their shopping experience and find the best bargain in town. And the most difficult question faces us was the same , how to get users to participate? 15 mins of fame, yes maybe on YouTube, but social shopping network? being a star shopper ... sounds very uncool to me. We tried to hang on to this idea for a while, then got distracted by other things.

Some people may call this the bust of Web 2.0. To me this is more a reality checking process and is beneficial to the whole Web 2.0 thing. This is kind of studies will cool down the Web 2.0 hype and make the industry more rational. Just imagine the hype we gave to those Web 1.x dot coms, if it was then, our social shopping network would easily get millions of dollars from VC and I can simply retire young and travel around the world promote world peace. :-) ... sometimes just fews years make a huge difference.

People may ask, why so? Why the participation rates are so low, even for those high profile websites? And why Wikipedia has got a higher rate than YouTube and Flickr? I think this is still due to the usability of those applications. Those Web 2.0 applications, even they are much more convenient to use than those came before them, to actually participate they still require a fair bit of effort. YouTube, for example, you still have to download your video from your video capture devices (be it a mobile phone, dc or dv) to your PC and then upload them to YouTube. With Flickr the same, you need to download and then upload. And you must have an Internet connection. With real life social network, if I'd like to share a video/picture with someone sitting next to me, I can simply just show them on my mobile phone (or dc, or dv). The inability to participate whenever, wherever is the obstacle that prevent the most of use from actually contributing content.

Imagine that Flickr allows you to send photos as MMS, or emails, and some robots at Flickr's end will automatically process those MMS and emails, extract the photos and put them to the right place ... does this sound like a more convenient way of participate in photo sharing? For me it does. Or you saw some fantastic buckling on street while you are traveling in Europe, you record it on your mobile phone, and send it to YouTube straightway, that's something I'd really like to do.

Technologies which enable those functions are out there, but they are still not good enough. Photos taken by most mobile phones are just good enough to be viewable, same goes with the mobile phone video. The last time I checked, sending high quality photos and videos over a mobile network is still painfully slow. Mobiles phones today is not geared enough for those kind of usages, and those who are really geared up, they look very nerdy and they are very costly (at least in Australia). So until one day, we have an Internet where we can participate wherever we want, whenever we want, the participation rate will be low. With the pace technologies advance nowadays, in few years, this could become reality, and we shall call it Web 3.0.

2007-03-31

It is like ....

The other day I was on the train back home. There were two young girls sitting behind be, having a quite chatty conversation. Their voice was a little above the "private conversation" level, and i did not have my iPod that day. So i could not help overhearing part of their conversation.

Nothing special, one of the girls was the dominate talker, the other one was just the "mm-oh"er, the dominate talker talked about a party she went to sometime ago and a "nasty" guy she met in the party but could not remember his name. It went like this "I went this, like, a big party thing. and there were, like, tons of peoples there. And i was, like, really excited. Coz there were lots of people I haven't met, like, for ages. I was having a really good time, and then this guy, like just came over and just talked to me, i was like, oh my god, coz i knew this guy was like, the "nasty" guy i met in, like another party. i didn't want to talk to him but i could not remember his name too, it's like ... so embarrassing. I was like ... totally embarrassed .... " and the conversation went on and on. And i was like, totally confused by her usage of "like". It is like how she can use, like heaps of "like"s in her, like daily conversation. I could not help imagining Martin Luther King gave the famous "I have a dream" speech in,like, the latest style.

"I have, like, a dream. like one day, this nation will, like, rise up and live out, like, the true meaning of its creed, like "We hold these truths to be, like, self-evident: that all men are created, like, equal."

Brother Martin, may your soul rest in, like, peace.

2007-03-20

War in Iraq



Today marks the fourth anniversary of the Iraq war. This baseless war has so far killed more than three thousands coalition troops and a much larger number of Iraqi
civilians, insurgents and troops
. We see everyday bloodshed on our TV screen, Internet and other medias. All those senseless killings make me really really sad. I am not sad for those ruthless terrorists, nor for those moronic (yes, moronic is the only word i can think of) suicide bombers. But every time i see a mother crying for her children, or children crying for their dead parents, i just can not hold back my tears, and anger. My tears are for those innocent families who lost their beloved members, my anger, is towards those who waged the unnecessary war, and to those who used the mess created by the war to achieve their own political or religious purposes.

Now, after four long years and tens of thousands lives lost for no good reason, a lot of people are calling to stop the war and bring our troops back home. While i understand those people and hate the guy in the White House as much as they do. I feel now is too early to bring our troops back home. Far too early.

When the war started on this day four years ago, "Cut and Run" is no longer an option for the coalition of willing. Once a thing is broken for no good reason (Iraq), it is the duty (morally) of the invaders to, at least, hold this broken thing together for as long as the new thing is being established ( a new democratic Iraq, if possible). To cut and run from Iraq will leave this country to civil war that will last for god know how long (either the Shiites totally wipe out Sunnies or vice versa or Iraq becomes 3 different countries). Stay the course while negotiating with various parties to reach a peaceful agreement to share this beautiful, war-torn country ... as painful as it must be, is probably the only solution that will not break the hell.

As almost everything in life, there is an emotion part and there is a rationale part. While I admire the passion of those anti-war protesters, the rational part of me tells me that stop the war now and bring our troops back home ... is not a valid option for us as well as for the Iraqi people, at least for now and hopefully not for too long.

However, as this unnecessary war started based on fictional WMD and was started by a very corrupted White House, I am really really looking forward to see that one day when the war is really over, those liars and bastards will be made accountable for whatever happened to those crying parents and children.

Let's wish our troops all the best and wish all future human beings can live in a peaceful world. I also wish (but won't hold my breath for it) that our future leaders will learn from those killings that War will never ever resolve any thing. Marvin Gaye once sang "War is not the answer, for only love can comprehend", and I hope when my children grow up they won't need to sing the same song, as beautiful as it is.

2007-02-13

My lost lotto ticket

I bought a lotto ticket few weeks ago. It was for a 20 million draw. I was confident (as usual) that i was going to win the big money. And mind you, I am no everyday lotto player, I only buy those games when I am in a winning mood (at least when I am feeling i am in a winning mood). So i bought that ticket with computer generated random numbers, with a heart full of confident and hopes. Life was good, tomorrow, i was gonna be rich, a new millionaire for sure. Beach front house, flashy cars, all latest gadgets ... are all suddenly within my reach (or my wallet's reach). At last, I could help the world like a real (rich) man. Life was indeed very good.


Then life turned a very unexpected turn (as it usually does), I lost my ticket! My little piece of paper, 20 set of random numbers, my ticket to a better life (money may not be able to buy you happiness, but money can indeed buy better stuffs) ... suddenly vanished from my sight ... just like that. Nowhere to be found.

I was very upset to say the least, I blamed my wife for letting my kid playing with my wallet (where i put my lotto ticket in), I blamed myself for putting this precious piece of paper in my wallet (which also happens to be one of my kid's favorite toys), I blamed the bloody toy makers, why on earth can't you make better toys than my wallet. I blamed and cursed, cursed and blamed. It was then i realized that i am after all not a person who cares less about material well beings. I am after all not as spiritual as I'd like to picture myself is. I was a bit disappointed about myself ... at the same time, maybe also a bit relieved.

Few weeks past without much drama, now life is as usual as it used to be. And I have totally returned to the "pre-lotto" mood. Then I thought, while I am not winning this lotto (I knew my chance of winning that lotto was lean, i suppose when you are in any "winning" mood, your vision would be in a blind mood), this could have changed other people's life. Just imagine someone who found this lotto and kept it. It could bring him/her a day (even a week) full of expectations. He/she could be more motivated in doing stuffs, which will lead to better results in what he/she was doing. Which, in turn could make him/her even more motivated, this could eventually bring he/she a promotion at his/her work place. Which could eventually change his/her life forever. And this is just when he/she was not winning. If he/she indeed won the prize. Well then good on him/her. He/she would become a new millionaire, Beach front house, flashy cars, all latest gadgets ... are all suddenly within his/her reach . And at last, he/she could help the world like a real (rich) person. ... Maybe open a toy company that can eventually make better toys than my bloody wallet ... :-)

I am about to finish writing this article ... I am a very confused man right now. I was going to write about Butterfly effect, and using this article as kind of prelude. Now I am not sure ... well, you are patient enough to finish reading it, then consider this be one of my writing exercises :-). Practices will make better writing right? so stay tuned.

2007-02-02

政治正确性2

写了几天博客,发现自己写东西是有头没尾。开始写的时候雄心勃勃,写了三四段就灵感和墨水都没有了,于是匆匆收尾。好像上次说起“政治正确性”,最后一段已经有些胡说八道的嫌疑了。把印度人叫做“阿三”不是“政治正确性”的问题,是歧视和偏见的问题。

上次没说完,这次接着说。

“政治正确性”这个东西,我们这个千年古国是没有的,是个“舶来品”。望文生义的看,好像是和我们党教导的一致,要“和党中央保持高度一致”嘛。其实两者差了不致十万八千里。“保持一致”是拒绝不同的观点,不同的思想。而“政治正确性”是只有在一个多元的社会才会出现的,就是至少要对不同的观点、群体讲礼貌。

在一个思想开明的社会,这种礼貌可以说是多此一举的,反而会有负面的影响。好像在一个“礼仪之邦”,如果有人在给大家规定怎么说“你好!”,“再见!”。只会让大家不能自由地表达自己的“礼仪”。同样的,在一个思想开明的社会,对不同的观点,大家应该有畅所欲言的自由,对不同的群体,大家应该会去尊重和关怀,对不同的观点和群体,正面地“交流”比礼貌的“沉默”更有效。在这样的社会里,“政治正确性”只会让人三缄其口,过分地强调“政治正确性”,只会把人变得“彬彬有礼”而毫无主见。

在中国情况有所不同。我们一向是不喜欢不同的观点的,对不同的群体我们要么不承认(所以不存在),要么鄙视之,所谓“弱势群体”也是近年来的新名词。这种情况下,挥舞一下“政治正确性”的大棒,可能还是会有一些正面的效果的。比如“政治正确性”地使用“性工作者”而不是“鸡”,大概可以让人们去关注一下这个不受任何保护,但却受到无穷伤害的群体(说起这个,我是主张卖淫合法化的)。比如“政治正确性”的板子可以然大家不要动不动就是“你象个农民!”(陕西骂人的话),“那个人是个残废”。等到大家知道了什么是不对的,在来说什么是对的,在中国这个也不失为一个有效的方法吧?

2007-01-24

政治正确性


前几天听网上的广播听到这么个消息
在美国的某个城市,有个议员提议允许孕妇使用残疾人专用停车位。因为孕妇行动不便,使用残疾人专用停车位可以省去她们找停车位的麻烦,而且一般这些停车位离建筑物入口也比较近,可以让孕妇少走些路。
要一般人都会说“这个建议多好呀,希望我们中华帝国的人民代表们也提一下。尤其听说明年是什么“金猪”年,孕妇特别多。”
可是不,女权组织反对这个建议“你们男的一向压迫广大妇女,现在不要假惺惺地提什么‘照顾孕妇’。你们提议允许孕妇使用‘残疾人停车位’分明是在歧视孕妇,认为孕妇=残疾人。阴险啊,阴险!我们广大的即将成为母亲的女性朋友们看透了你们的阴谋。让孕妇们用也可以,但是要把停车位上的标志改成‘残疾人和孕妇专用’,否则,嘿嘿,姑奶奶俺不用!”
最后大家商量了一下,还是决定暂时不改标志,让孕妇们先用着,以后再改也不迟。而且该议员本人就是个女的,绝没有歧视女性,尤其是孕妇的意思。
为什么这个议员的好心会被当成了驴肝肺,就是因为她说得话没有“政治正确性”。

还是在美国,前年的飓风以后,布什同志的妈妈芭芭拉去新奥尔良去看看,看到广大的黑人群众们住在帐篷里,每天吃不要钱的东西,就说“我看他们的情况还不错嘛,可能比他们原来的还好一点呢!”。于是被眼睛雪亮的人民同志们抓住了把柄。“芭芭拉老太你说话不要太过分,我们黑人虽然没有钱,可是我们也是人!不要在我们面前表现你好像很有见地的样子。要是克林顿在,他就不会说这个话!”
你看看,芭芭拉虽然是老同志了,在“政治正确性”的问题上还是犯了错误。

什么是“政治正确性”呢?简单地说就是说话,做事要小心,不要在语言上,行为上冒犯了其他的(尤其是非主流的)政治,文化,等等群体。比如上面那个议员,就冒犯了妇女群体。芭同志就冒犯了黑人群体。

西方人讲究思想“自由”,觉得“政治正确性”然他们不能自由表达,所以很多人反对这个东东。你要是看过“南方公园”,你就知道什么是“政治不正确性”。“南方公园”就是“政治正确性”的反面,冒犯所有人,甚至包括汤姆.克鲁斯以及耶稣:-)。

我也觉得“政治正确性”是个没用的东西,尤其是在一个思想开放的社会。对非主流群体的尊重和保护应该是每个“思想开放”的社会必须的东西,而不仅仅是“政治正确性”的东西。所谓“政治正确性”的所带来的尊重和保护,远远抵不上他所带来的负面影响,尤其是如果有人把这个东西当真的话。

不过呢,我倒是觉得我们有着几千年的文明的中华帝国可以借鉴一些“政治正确性”的东西。我们中国人是最恨“特立独行”的了,没有“个人”,“不同”的概念,总想着自己是天下最正宗的(有一阵觉得自己是在白人以后最正宗的)“人类。“政治正确性”的板子至少可以让我们知道把印度人叫做“阿三”是不对的。

2007-01-16

Happy Birthday Wikipedia


Today is Wikipedia's 6th birthday.
What started as an English Language project is now a community oriented, web based free encyclopedia.

Some facts about Wikipedia

1. The English language Wikipedia has over 800,000 articles and is larger than the Encyclopedia Britannica and Microsoft Encarta combined.
2. German is second with over 300,000 articles, followed by French, Japanese, and Polish. Thirty languages have over 10,000 articles, and 75 have around 1,000. Wikipedia has about 110,000 articles in Chinese.
3. Wikipedia is a Top 40 Web site.
4. Wikipedia has about 2.4 billion page views a month.
5. It is housed in multiple data centers on over 120 servers that are managed by volunteers.
6. Over half of the edits on Wikipedia are done by just 0.7% of all users (615 people)
7. and the most active 2% (1746 users) has done 75% of the edits.

Software I can not live without

My friend Harry posted on his blog a list of software he uses everyday. I thought I would do the same, since I feel good software can really make your day much easier. And seeing other peoples (e.g. my wife) doing things in much too complicated ways, simply because they are not aware that there are tools can help them out, really really annoys me.

So here we go, I present you a list of software I can not live without (in the Windows world)

1. Slick Run : From it's website, " SlickRun is a free floating command line utility for Windows. SlickRun gives you almost instant access to any program or website. SlickRun allows you to create command aliases (known as MagicWords), so C:Program FilesOutlook Expressmsimn.exe becomes MAIL.". And that's exactly what it does. You can define MagicWords for any of your favorite programs, and Win-Q will bring up a little floating box where you can type your magic word to bring up the application. And because it has auto-complete function, you'll never need to type more than 2-3 letters.
I have "eps" as alias for "eclipse", "mail" for Outlook, "im" for Miranda IM, "ie" for ... well IE and lots more. This little babe absolutely rocks.


2. Firefox with NoScript , AdBlock , Google Browser Sync and Google Search Bar : With those Extentions Firefox is better than ever. I have few other Extentions installed as well. But they are more Eye-candies.
3. Miranda Im or GAIM : I used GAIM on Linux for very long time and absolutely loved it. So when I switched to a Windows machine, the first thing I did was installing GAIM for Windows. Then I came across a small IM software called Miranda. Compare to GAIM with GTK, Miranda is absolutely tiny and as powerful (if not more so). The best feature i like about Miranda is its hot keys and you can use Esc to close your message window. Could come in handy when your boss is approaching :-)

4. MusikCube : you say winAmp, they say foobar. you say iTune and i say no no no.

I have always wanted to have a music player that is simple to use, organizes my music well and plays music well. On Linux you have Amarock, which is probably the best music player ever, unfortunately, there is no Windows version (yet). Other music players are either too thin in functionalities or too big and complicated to be .... just a music player/organizer. MusikCube has the right mix, it looks like iTune but is far smaller than iTune, uses about 2Mb memory. It synchronizes with your Music Folders, you can edit MP3 tag, you can even create your own dynamic play list using the build-in database. And with plug-ins, it supports MP3, WMA, OGG and other music formats.

5. MultiDesk : I have tried quite a few virtual desktop software and found this old program the smallest and the simplest to use. And it does what it is supposed to do very well. You can define the number of desktops you want to have on your screen, you can navigate to a different desktop using hot keys, you can move applications around using your mouse. Yes it lacks some flashy features like thumbnail desktop view, drag 'n drop to move applications around etc., but I consider those are mere eye-candy things anyway.

6. Free Commander : Two pane file manager for all Windows Explorer haters. It is fast, free and really really powerful. Let you define your favorite folders so that you can access them using hot keys. Tab to switch between those 2 panes, Shift + Drive Letter to access a different drive. Build-in zip/unzip facilities. Access Zip, RAR, Jar files as folders. It also supports Torsoise CVS/SVN icons.
I have other very handy software I use from time to time, maybe i will talk about them next time. Until then, see you.

2007-01-12

我们是怎样打赢日本的


美国人Philip Roth写了一本书叫做The Plot Against America: A Novel 讲的是一段假想的历史,就是在1940年,反犹太的“美国英雄”Charles A. Lindbergh打败了罗斯福,成为美国的战时总统。对内积极反犹,对外推行所谓的“和平”政策,对陷入战争困境的英国不闻不问,反而和纳粹德国打得火热。在故事的最后,小说的主人公只好逃亡加拿大,加入反抗组织。Philip Roth是美国非常有名气的作家,不过这个小说我并没有读完,因为历史小说(哪怕是假的历史)不是我的爱好,大概读了一下就还给图书馆了。

不过读的时候我倒是在想,如果历史真的向作者所写的这样发展了,不光是美国,整个世界都不会是现在这个世界了。我们中国也不知道会是什么样。因为不管你愿不愿意,中国的抗日战争是在美国和苏联的帮助下才打赢的。没有美国的帮助,历史是会完全不同的。
然后有一天我在翻鲁迅先生的书的时候,看到了这个
“...
我回忆自己的得到一点知识,真是苦得可怜。幼小时候,我知道中国在“盘古氏开辟天地”之后,有三皇五帝,……宋朝,元朝,明朝,“我大清”。到二十 岁,又听说“我们”的成吉思汗征服欧洲,是“我们”最阔气的时代。到二十五岁,才知道所谓这“我们”最阔气的时代,其实是蒙古人征服了中国,我们做 了奴才。直到今年八月里,因为要查一点故事,翻了三部蒙古史,这才明白蒙古人的征服“斡罗思”,侵入匈奥,还在征服全中国之前,那时的成吉思还不是 我们的汗,倒是俄人被奴的资格比我们老,应该他们说“我们的成吉思汗征服中国,是我们最阔气的时代”的。
...”
--鲁迅 《随便翻翻》

看了这个我恍然大悟,喔,其实我们是根本就不需要别人的帮助的。我中华帝国几千年没被人灭过,就算没有人帮忙,我们还是可以打败日本的。

下面这个,就是我想象的历史,我们打败日本的历史。

(让我们回到60-70年前)
美国最终放下了他“和平”的幌子,加入了德国,意大利和日本。对中,苏等国宣战。
汪精卫政府被美国承认。
在美国的支持下,中国政府军和日本志愿军打败了蒋介石的军队和中国共产党的游击队。
蒋介石只好逃亡南美,成立中华民国流亡政府。
中共苏区政府逃亡苏联,建立苏维埃中国流亡政府。
大批华侨纷纷“慷慨解囊”资助流亡政府,为了争夺更多的资助,流亡政府们经常互相攻击。(和现在臭了街的所谓“民运人士”倒是一样!)
N年过去了,流亡的继续流亡。
二战结束了。德,意,日,美,苏,中等国签订“和平条约”。曰“世世代代再不打仗!”
战事已落,新的中国政府开始施行“新政”。照搬了日本国的宪法,规定女人都要穿和服,大家都要学日语。
于是大家不满“新政”,于是政府开杀,于是大家都老实了。
不老实的开始“反日复华”运动,于是杀,动了一阵也就不太动了。据说是因为大家都要和平,也要发展。
于是新政得以实施。
“日语速成班”在全国开花。
《和服的穿法》是当年年度最畅销书。
GDP翻了一翻,后来又翻了一翻。
大家于是说“新政好呀!”,“新政开创了新的盛世!”
“反日复华”运动的首领被告密,处决。没有人知道,因为那天股票涨停了版。
然后,我们的知识分子考证,说“在历史上中日是一家人!”,喔!大家说“我们是一家呀!”
《我们是一家》是当年最流行的歌曲,TOP1。
然后人民代表提出我们应该和日本国合为一国,要统一!日本的天皇就是我们的皇上,是一样的。国民议会全票通过《关于和日本国合并的议案》
然后有好事的大学生上街闹事
于是杀了几个,老实了。
来年,日本,中国,韩国,满洲国合并为东亚帝国。中华自治区区长建议天皇迁都北京--“紫禁城,比东京的宫殿气派多了去了!”
于是天皇决定迁都北京。
北京改名东京。东京改名天京。
来年,朝鲜自治区发生动乱。中华自治区派兵平叛,杀了无数。从此中华自治区成为东亚帝国的中心。
天皇开始任用华人做高官。

N年以后,政府中华人掌握了大权,在华人议院的支持下,天皇解散议会,恢复“古礼”,以孔教为“国教”。天皇也不再叫天皇了,叫皇上,大家见了要行三拜九叩之礼。
皇上亲自祭孔,并拜孔子为师。全国人民好感动喔!
N年过去了
皇上改国名为“中华帝国”。日本自治区大怒,派兵攻打。皇上派人找美国帮忙。
美国在日本自治区投下原子弹。
“这是为了和平!”据说天皇是流着泪说的。
大家好感动喔!“皇上英明呀!”
于是又是盛世!
N年又过去了。
日本国也好,中华民国也好,都已成为历史。有的只是这个新的中华帝国,和这个新的“唯我独尊”的,“千秋万代”的皇上。
电视上演的是《戏说裕仁》,《铁血宰相东条英机》
历史书上是“我们的天皇,统一了东亚”!

“我们”又赢了!万岁!




2007-01-09

Too much hype will hurt you


2007 Mac World SF conference will start in few hours. And the rumors are running high, actually, the rumors have been running pretty high ever since the last big Mac event (Mac developers conference?). Speculations about iPhone, iWork, iTv and Leopard have jammed Mac rumours oriented websites such as (what else can it be?) macrumors.com And God knows how many blogs, online forums are dedicated to those mostly mere speculations. Mac users, Mac admirers, Mac user wannabes and other strange people who consider Steve Jobs the ultimate American idol will go crazy whenever Apple releases a new product, opens a new store or do anything start with an "i". And Steve Jobs and Apple have done a pretty job too, they rarely disappoint their audiences (oops, I mean USERS), except for that $100 leather iPod case. (but honestly, that's not Apple's fault, nobody would thought that Apple would hold a news conference just to anouce a leather iPod case and a funny looking speaker, right? )

So far, this fanfare has been doing Apple more good than bad. We've seen iPod turning from just another MP3 player into some kind of fashion statement and then into some kind of world phenomenon. Mac OS X has become the new Linux (and Ubuntu the new Mac OS), MS' number one nemesis. A lot of people I know either have bought (at least) a Mac computer or/and (at least) an iPod or are considering buying one (me for one is considering buying a ng Mac mini)
.


But this could all change. Have too much expectations on something could lead to either high satisfaction when the expected results are delivered or big disappointment when expectations are not fulfilled. Just imagine this, rumors about a iPhone have been around for more than a year, every time Apple is going to announce something, anything, people will say .... "They are going to release iPhone, they are going to release iPhone!", and each time when it is not released, this just build up the expectation. Now i think it has reached a stage where people won't be totally happy, if Steve Jobs announces anything that is not truely revolutionary. Putting iTune in a cellar phone won't do it, a brick sized mobile phone with iPod look interface won't do it either. Not releasing it .... I am not sure how long this can be considered an option. Honestly, i won't be surprised if there are people taking their lives for Steve Jobs not announcing an iPhone this time around.

One might argue that this fanfare is not built by Apple or encouraged (directly) by Apple. That might be true, but at least Apple and Steve Jobs should have kept users expectation to a reasonable level. Instead, Apple and Steve Jobs have been (maybe unintentionally) inflaming the speculations. This could really backfire.

... well, enough said. With 2007 Mac World SF starting in a little more than 5 hours, let's see how Steve Jobs and Apple will meet Mac fans expectations this time.
P.S I do hope they will announce a Media Center Mac Mini. And ... a Mac smart phone with PDA would be cool too :-)

Monkey Write













Today I read this quotation from Robert Wilensky on the Internet.
We've heard that a million monkeys at a million keyboards could produce the complete works of Shakespeare; now, thanks to the Internet, we know that is not true.
Robert Wilensky, speech at a 1996 conference

with now more than 60 million blogs on the internet (including this one), and (i safely assume) most of those bloggers do use a keyboard, we should have got few sets of "complete works of Shakespeare" by now. Well, we all know that the sad truth is we still have only one Shakespeare. Random selection (event a large number of selections) will lead to nothing meaningful.

This reminded me of something else. In Richard Dawkins' 1987 BBC documentary "The Blind Watchmaker", this great evolutionist and atheist showed us a computer program (in C?) which could simulate natural selection on genetic structures. It shows that natural selection is not random or "by pure chances" ... random selection will lead to nothing. However, when "only the fittest survive" rule was applied, the program showed that computer simulated genetic structures can actually evolve. After number of generations, it will develop certain features that best suit it's surrounding environment.

What I am trying to say here is that by randomly selecting 1 million monkeys at a million keyboards probably would not produce any works of Shakespeare, however, if we can enforce certain rules (grammar) on those monkeys and their "writings" (typing), it could actually lead to something, not Shakespeare himself but something more like ... the current blog world maybe? just a thought :-) ....