Jack's profileJack @ 新加坡SINGAPORE ● 上海...PhotosBlogLists Tools Help

Blog


    30 March

    Drinking and Talking 论道

     
    刚送RY到机场,他走了,也留给我了很多food for thought. 从早上我到Swissotel the Stamford,两人就开始谈论我的公司计划。中午到Vivo city, 对着大海喝着啤酒,聊着各个城市的风格差异;下午再回Raffles City的一家Cafe, 一个小桌,两杯Heineken, 碰出激烈的思想火花;晚上吃着牛排,品着红酒继续海阔天空。(Our discussion covers a wide range of topics, and below are selected business ones.)
     
    * Driven by confidence, impress the clients through honesty and talent
     
    现代的客户都非一无所知的傻瓜,很多高层人士即便不是well educated也是heavliy travelled。在骗子横行,忽悠霸道的地方,待人以诚反而能给客户好感。当我们拥有卓越的产品,没必要去过分夸张。真诚平等的与客户相处或许更能在长期赢得客户。当然所谓的过分夸张是指一些虚的东西,至于产品价值,ROI属市场份内之事,当竭尽所能全力发挥。
     
    * Bring value to every role using the product, and prove it.
     
    每个使用者(角色)都必须可以从使用这个产品中受益,否则这个产品中就难以长久。可以使用对照组和调研来发现产品所带来的好处或者坏处。在初期,可以与客户合作,以客户满意为目标来完善自己的产品。
     
    * Marketing, marketing and marketing
     
    RY对我提出批评之一,就是花太长时间在编程上面了,太注重技术上的自我满足感了。对于这个,我无法全面的赞同或者反对。我想目前来说还是按照自己的进度进行。以后我想推行这个建议将是一个必须。
     
    * Standing on the shoulders of giants or trying to become a giant
     
    我们对此争论不已,其实还是不同的个性使然。我的选择很坚决,后者,无论风险困难再大,走在这条道路上的我最开心。
     
    感恩上苍有这样的朋友可以直言相对毫无顾忌,把酒论道也是人生难得的喜事之一。 See you soon at Shanghai, my friend, All the best! :)
     
    29 March

    It's Just Yesterday 昨日的青春

     
    很幸运,我的人生中遇过三知己兼酒友,可以分享最真的自我,把酒问天,不醉不归。
     
    - 最多的一次饮酒是与AL兄在其大学饮酒,两人一次解决白酒三斤。也许这是山东人的才能有的豪情。醉翁之意不在酒,而在思想之中也;当时的我们血气方刚,热血青年,谈论的尽是哲学思想,时事文学;我们是有思想的一代。
     
    - 最爽的一次饮酒是与LX在承德;炎热的夏天傍晚,我们到夜市上吃着小吃,大口的喝着扎啤,原来世上最爽的事莫过与好友在他乡游玩畅饮;天之骄子,我们是最洒脱的一代。
     
    - 最近的一次就是与RY前几天在新加坡河边赏着夜景,对着好友,举杯豪饮,快哉快哉!RY上次走的时候是三年前吧,这个认识十年多的知己回来相见,十分亲切。以前对饮的时候我们还在读书,多少年之后一个成了世界著名企业的一员,一个在开创自己的事业 - 我们正完整的代表了这个时代的精神。
     
    人生如梦,一尊还酹江月;无论酒醒何方,洗脸再挥袖。
     
    28 March

    SQL Parser 解析器

     
      Oops, I thought I only need to parse the expressions, but it turns out that a full SQL (EJB-QL) parser is required. Here it is. It simply parses the SQL into the corresponding OO representation. My good oldie college self-study on compilers finally pays off :)
     
      Next, I'll bring it to life by linking it the to entity manager.

      One life, live it elegantly. 
     

    21 March

    The web is your new domain 网络域名

     
    Finally, i managed to acquire (i.e., buy) the domain of my name - jackli.com. I'll use it to host my personal website in the future.
     
    Mainwhile, the domain names for the company has been registered too. In the future, each of them will play its role to brand the company: (replace the 'company' with the company name)
     
    company.com  - the main marketing website: software demo, user guides, PR materials etc.
    company.net - the developer networks: APIs, developer groups, software updates, etc.
    company.org - the company's social responsibility related stuff: education programs for poor children, donation to unprivileged group, etc.
    company.com.cn, company.com.sg, company.de - country specific domains, for redirecting to main website only;
    pinyin.com, pinyin.com.cn, 中文.com - language specific domains, for redirecting to main website only. (replace 中文 with the Chinese name of the company, and pinyin with the pinyin of the Chinese name).
     
    I wish to fill in as much substance as possible under these pretty names :) 
     
    19 March

    SQL Expression Parser 表达式解析器

     
     The framework (there is going to be some renaming, so I simply refer it as 'the ...') is heavily depends on databases, so i decided to use the object oriented way to represent SQL expressions instead of manipulating plain strings. However, there are cases that people just enter some 'raw' SQL and the system should return what they want. To cater such needs, I added a parser to parse SQL expressions into their object representation. Once you have the object representations, you can do all the tricks - generating different SQL dialects, validating param/column names, replacing parameters with actual values, etc. The parser can only parse the expressions (i.e., the part after the WHERE keyward). Other parts like select columns, order-by clause are not as diverse as the expressions - again, I prefer a fast and essential solution instead a slow and over complicated one, think about the 80/20 rule.
     
    Designing a parser is a tedious job, even for such a simple language. I read through the whole lexer/parser book - I skipped some chapters initially, but I was forced to go back to read them when annoying errors kept popping up. The root of all evil is that human's brain is terrible for excuting even simple predictions. After all the hard work, the parser happily parses any SQL expressions and throw exceptions if the input is not valid. I created a UI to display and analyze the expression tree. The speed of the parser is pretty good -  it takes less than 1 second to parse the sample SQL 10000 times on my computer.

     
     
    Let's call it a day. I'd like to spend some quality time with my two good friends, beer and tv :P
     

    18 March

    On Marketing and Competition 市场竞争之思考

    Summary of my recent thinking
     
    大行得道 - 了解自己有哪些潜在客户就足够,而不是详尽的需求。在开发时期,有越具体的需求,这个产品越有可能短期内走向死胡同。取大舍小,方能灵活变换。Market research is for the average; market creation/innovation is for the true leaders.
     
    以质论价 - 一个产品的价值取决于产品本身,而非与其竞争的产品的价位。SAP的产品与微软的CRM/ERP价格相差几千倍,就是很好的例子。靠价格战取胜对我而言绝对是一个失败。用我的投资的话就是,宁愿卖不出,也不要将自己的产品刻意降价,即使这个产品是软件。It's been proved: 以我即将其退役的扫描软件库来说,没有做任何广告,价格是竞争对手的几十倍,但今天美国几家主流银行的扫描系统都是采用这个软件库。识酒之人怎会怕巷深!
     
    Be exceptional - 跟朋友谈起怎样物色大学校长时,我说到一个大学要真正的做到高水准具有自己的风格,这校长不能只是excellent  - 拥有优秀的科研成果,良好的管理记录,他必须exceptional - 敢想敢做敢创新敢为天下先。失败,总有重新开始的一天;平庸,却要永续下去。
     
    Listen to others but stick to one's own idea - 起码的底线是坚持自己的想法。别人的建议如果是如何实施自己的想法不妨一听,方向与策略只有自己最清楚。
     
    人才为本 - 相信自己,相信搭档,无往不利。即使市场或产品出了问题,优秀的团队可以很快的调整策略,顺应变化。
     
    13 March

    又是一年版税时 Another Royalty Year

     
    又是三月,版税是越来越少,出本正儿八经的书真是费力亏本的买卖.
     
     
    • 喜欢文化,钟情汉语 - 左边我哥(插图)的书;
    • 喜欢软件,又懂英文 - 右边我的书,
    • 喜欢散文,- 就看爷爷的杂志, 不过发行时间是几十年前。

    忠厚传家远,诗书继世长。

    还是很喜欢书香。等搬去上海的时候,肯定要丢掉大部分东西,不过自己收集的好书是值得永远珍藏的 - 泰戈尔,柏拉图,亚里士多德,叔本华,冯友兰,季羡林,老孔,罗素, HBS, O'Reilly ... 
     

    12 March

    Another Day 一天

     
    日子一天一天过得总是很快,快到有时甚至怀疑自己的手机手表是否跑得过快。SOHO工作,如同跑马拉松,一方面要注意时间在滴滴答答的分秒溜走;另外一方面要游刃有余的量力而行 - 这就是如此的一天。
     
    中午十二点起床。喝杯牛奶吃了个香蕉,雨还是一直下,索性自己煮面。午饭后端着杯咖啡便进了工作室,于是一下工作到5点多。6点出去跑步,小雨嘻嘻的,比较特别的经历。八里路九个引体向上,回到家里舒服得喝着冰凉的运动饮料,爽到心里。8点又开始新的一段工作。今天所做的相当具有挑战性 - 一个难题出现了(这个难题就是鸡和蛋的问题 - 不是讨论先有哪个,而是实现鸡生蛋蛋生鸡),然后联想到以前看到科技新闻上的只言片语,开始了网络搜索,打印资料学习,最后实现,除掉bug,已是两点多。今天还算稍有斩获,接着咕咕叫的肚子就开始抗议。于是煮了妈妈回国前给包的一些爱心水饺,配着一杯香醇浓厚的法国酒 - a winning combination!
     
    P.S. 我想我是地道的味觉之人:每天必在清凉的空调下喝上一杯浓香的咖啡; 工作前必喷洒一点喜欢的香水Explorer from Ralph Lauren ; 也喜欢品味酒精饮料里的醇香。
     
    09 March

    模范市民 Model Citizen

     
    警察局可以证明
    他是一个完全没有任何犯罪记录的人
     
    教育委员会可以证明
    从小学到大学,他都是一个品学兼优的好学生
     
    税务局可以证明
    他可从来没有偷税漏税
     
    社会心理学家可以证明
    他是心理完全正常的人
     
    银行可以证明
    他有一套不错的房子并且按时偿还贷款
     
    公司可以证明
    他是一个好员工,每天加班到很晚
     
    苹果公司可以证明
    他拥有苹果随身听,所以他是很“时髦”的一个人
     
    星巴克可以证明
    他是一个常客,所以他是很“有品位”的一个人
     
    互联网可以证明
    他的文章评论,十足体现他是一个很有民族感的"爱国人士"
    ...
     
    他自由吗?他快乐吗?这个问题很荒诞:
    如果有什么不对,我们早就应该听说。
     
    // Jack仿奥登之<无名公民>
     
    05 March

    The future is bright. 光明未来

     
    Roger and I spent around 2 days to finish the booklet, and another 2 days to get it printed. It attracted a lot of attention. I am really flattered, as some of the attention has a great chance to become leads. I must say that my confidence has been increased over the time - glad that I made the correct decision and selected the right market. For now, it's clear that the company will survive. It's time to think how to manage the growth.
     
    Meanwhile, I am busy with coding - I need to balance two things: 1) deliver products in time; 2) design a superior technical framework to reduce or even to eliminate any possible competition. It's a big challenge, yet it's full of fun :)
     
    Roger will go to SH tomorrow. I wish him a good trip and a pleasant stay, Bon voyage!
     
    04 March

    Athena Cache 缓冲存储器


    Just finished the Athena Cache. Compared with many other overloaded caching frameworks, this light weight cache performs like a rocket among the jalopies - brevity is the soul of wit.

    java.version=1.6.0_02
    java.vm.name=Java HotSpot(TM) Client VM
    java.vm.version=1.6.0_02-b06
    java.vm.info=mixed mode, sharing
    java.vm.vendor=Sun Microsystems Inc.
    os.name=Windows Vista
    os.version=6.0
    os.arch=x86
    ---------------------------------------------------------------
    This test can take about 5-10 minutes. Please wait ...
    ---------------------------------------------------------------
                  |GetPutRemoveT  |GetPutRemove   |Get            |
    ---------------------------------------------------------------
    cache4j 0.4   |2665           |2670           |1946           |
    oscache 2.2   |14098          |7339           |1973           |
    AthenaCache   |475            |977            |471            |
    ehcache 1.1   |1870           |1209           |713            |
    jcs 1.2.7.0   |2458           |2156           |1072           |
    ---------------------------------------------------------------

    Benchmark program/data: http://cache4j.sourceforge.net/ptest.htm 

    02 March

    White paper published 教育软件白皮书发表

    Welcome to the future of education! We are looking for channel parnters in the Greater China market. We defined this document as a white paper and made it available to the general public - we are not afraid of any competitors copying our ideas. After all, no one can steal our technology (probably among the superb), not to mention our passion (definitely the strongest).