Profilo di JackJack @ 新加坡SINGAPORE ● 上海...FotoBlogElenchi Strumenti Guida

Blog


01 aprile

Maths Equation Rendering and More 数学公式


outI have spent two days developing a Java based mathematics expression render engine. It looks like a simple task, yet it's more much complicated than it should be. Nine out of ten maths equation renders are based on Knuth's Tex (created 20 years ago) and they require a Unix system or ported libraries on Windows. To make things worse, the syntax of Tex/Letax is hard to read and to write for beginners.

My goal is a pure Java solution with simple and easy to read syntax - after all, readability is almost everything in software development. Taking the idea and code of many public maths libraries, finally I managed to render text like x_(1,2)=(-b+-sqrt(b^2-4a c))/(2a) into the PNG file shown above.

It's a process that requires endurance, persistence, and astuteness - you have to grasp the essential of thousands lines of Java, JavaScript and XML as soon as possible. In two days, the total number of lines of code written/modified by me exceeds 2,000. I gave up more than 10 times - after each giving up, I revisited the web and confirmed that I was on the right direction - you know you are on the right track and yet you can not move ahead. I was thinking that I probably should outsource it to someone or to implement it later. Giving-ups, thoughts, coffee, tea ... finally, it's done.

Usually coding is fun, that just catch(Exception e) {}. It's worth taking a quick look at our typical daily activities -

  • 9:00am morning session begins with a oatmeal and a coffee;
  • 12:00nn we eat and discuss various topics at one of the restaurants;
  • 1:30pm afternoon session starts with a coffee or tea;
  • 5:40pm one person will cook a healthy meal for all and others may go for jogging;
  • 6:40pm dinner, news and most importantly, our comments on news.
  • 7:30pm frisbee time! Since our last visit to the botanic garden, frisbee has been our favorite sports - it's light, fun and full of laugh.

Not bad, eh?

03 maggio

Live to code 编程无止境

 
 I am still in the progress of developing the software. Though I have made quite some progress, still much left to do. Anyway, it's good to continuously review the coding process and make necessary adjustments.
 
Figures
 
Lines of code as on May 03, 2008: 57288 [excluding test code]. The below is the LOC distribution across different folders/packages. Note that 45% of the code was the generated EJBQL parser. So the total code written in Java by me is around 30,000, plus around 2000 lines of library code, total 32000. (In my opinion, some XML and XSD configuration files should be counted too.)
 The total time is eight months  (I spent a half of the time doing research, but still it should be included).  The LOC is roughly 150 per day. Some may think 150 is quite low. However, the industrial average is much lower. It's typically required a 13.5 staff months to finish a 10,000 project. The larger the project, the smaller LOC programmers will achieve. A project sized 100,000 will require 170 staff months.
 
Behind the figures
 
There are many decisions involved in writing programs. One typical type of decisions is what degree of flexibility the program should have. Often, more flexible means more coding (at least in the short term). One must find a balance and stick with it.
 
The other important aspect is pressure control. A great city like Rome was not built in a day, neither a large software system. Like Rome, a careful designed software system lasts long and has major effect. The pressure comes from the fact that you might need to dig in the dark for years for just building a solid foundation! However, it's a highly commercial world. Even the finest artists must find the balance between the art and the business. The imperfect way I approach this issue is aiming for milestones while leaving room for future design implementation. Ultimately, the real question is you want to start up quickly or grow strongly, and having both is practically impossible. There is no easy answer, just believe you can.
 
 
30 aprile

BASIS v0.1 编程更新

 
Can you image doing OO in the client side and pushing to the server side to commit in such an elegant way? Flex is truly brilliant.
 
Finally, I added some UI to the framework - view the screencast here (or the direct SWF link). Disclaimer: This UI is very 'raw' - not user friendly, more for developer debugging purpose. More sophiscated UI will be implemented.
 
As you can see, there is nothing much. However, there are some points that are worth mention:
 
- Everything is driven by metadata. The GUI have no idea about the Employee class (in fact the Employee class does not exist). With metadata, the GUI simply displays its attributes and creates a proper pop up window for view, create, update an Employee.
 
- Auto validation. If the user supplies an invalid value, the text input will display a red banner to remind the user about it. Again, the GUI validates the user input with the meta data.
 
- Easy database update. At the Flex side, suppose we have an object named emp. Here is how to update the database: emp.set("name", "Jack Jr."); unitOfWork.commit(emp); This also means we can easily create custom UI on top the generic UI.
 
- Flexible querying: the first query in the demo is SELECT e FROM Employee e ORDER BY e.deptId. Let's say, if we want to get the Department objects associated with the Employee objects, we can simply append [s:e.dept] to the query (meaning using subselect instead of joining to retrieve the relationship). Also, you may add criteria to the query, like find all employees joining the company after 2006.
 
- Flex remoting with BlazeDS rocks! Although it requires me to write the same thing in two different languages namely Java and ActionScript, the result is very promising - can you image doing OO in the client side and pushing to the server side to commit in such an elegant way? Truly brilliant.
 
The simple GUI at least proves that most of my design are actually working. Next, I'll create editors for editing entity types and attributes.
 
P.S. My current lifestyle: coding, joggling, drinking, sleeping. According to my calculation, every month I spend about 40 bottles of Jacob's Creek wine to pay my rent. So it's perfect ok to drink a few glasses every day. Strange logic, isn't it? Well, just life, keep it living well :)
 
28 marzo

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 marzo

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 marzo

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
 

04 marzo

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 

19 novembre

Survive in the OS war 操作系统大战

 
花了几天时间升级文字识别软件库,新的4.0版本全面支持各主流最新操作系统 X 主流32/64位的CPU X 主流编程语言。
 
        
 
 
提供多操作系统的支持的代价是非常大的,主要原因是不同的操作系统之间差异性实在太大,而多种CPU架构和不同的编程语言更增加了其复杂性。不止操作系统如此,数据库也是各行其道,SQL标准只是纸上谈兵罢了。所以Athena项目中一开始便采用统一的数据库隔离层UniDB,以减少这种维护和后期开发的痛苦。
 
Peace, or war, just live with it elegantly.
 
 
 
14 ottobre

新电脑 Jack's 10th Computer - HP Pavilion Tablet

 

x64 Era finally Came - Jack看64位系统

64位系统不是一个新话题,毕竟很多年前就开始有64位CPU而且各主要软件开发商早就提供64兼容的软件了。但过去几年64位系统实际应用并不多,以我看来主要原因有二:
1. CPU行业领导者Intel在研发64位CPU方面远远落后其竞争对手AMD。Intel在业界的合作网络是最广的,很多厂商选择跟定Intel。
2. 64位的Windows操作系统授权和兼容性问题 - 直到今天,Dell在其64位硬件上只预装32位的Windows(XP & Vista).

最近几个月,有很多客户在咨询64位系统上运行软件,所以Jack索性采购64位系统,希望以后开发的软件全部兼容64位系统。

HP Pavilion Tablet TX1222AU: Probably the best deal this year - 或许是今年最值得购买的电脑

这是HP专为新加坡学生推出的专门促销,HP的质量,Acer的价格,十分划算:

- 因为买的晚,HP将CPU从Althon升级为Turion,散热性能良好;

- Lightscribe Super Multi DVD Writer (+/-R +/-RW) with Double Layer support - 很喜欢这个,不止可以刻出好内容的DVD,连封面也可以直接美丽雕刻;
- Tablet,可随意调整显示屏,在上面随心所欲写字画画,Vista内置手写识别软件中文英文识别率均令人满意;
- 随赠额外6-cell电池+电脑包;
- 三年保修,质量保证。
- SGD 1499 only (GST inclusive)
 
In conclusion: A tool is a tool. It's who that uses it matters.
 

04 settembre

新电脑 - New Notebook, Same Thinking

Hello, IBM ThinkPad, you've just got yourself a new best friend - Fujitsu Lifebook!
 
华容初现
宽阔的肩膀,简洁时尚的外表 - 这就是它了,我正在用它写呢。 用海来形容它, 恰当好处。
 
看看我的壁纸,清爽而悠远, 哦, 不小心,一个海螺被冲上了键盘!
 
 
 
巧克力键盘
 
一排排精致的瑞士Milk Chocolate -- 先吃哪个字母好呢?Delicious D, Luscious L, or Tasty T? Well, they are all lovely!
 
 
正面来一张
 
 
IBM ThinkPad,辛勤工作四年,功成身退 -- 临走拍张合影吧。
 
 
 
16 agosto

Electronics Makers Comparison 韩国日本中国货之比拼

我这一代是电子产品的奴隶 - 手机, 数码相机, 数码电视, 笔记本 … 数不尽数. 且听我调侃一番.
 
韩国货 - 败絮其中
 
韩国的产品大多外表华丽 -- 注意, 我使用的词是华丽而非美观. 其质量则参差不齐. 三星就是最好的一个例子. 三星刚出手机的时候彩屏很绚丽价格也很划算, 但机内软件则破烂无比, 死机的频率远胜最初的WINDOWS操作系统. 当然, 现在的三星手机在软件质量上应当有改进.
 
说到三星, 就不能不提LG. LG最近也在大作表面文章, 巧克力手机.这款手机让人眼前一亮. 只可惜这款手机的外形设计可以得A+, 但功能方面就只能得E了 - 不及格. 说明书上声称可以播放多媒体, 但90%的标准MP3文件和70%的图象文件不被支持, 结束按键被胡乱放置在一边. 这块巧克力苦的有点过头.
 
对韩国货, 我采取的策略是慢慢等它长大. 等韩国公司的产品卖上至少五年, 等它从外表到内在都没问题了, 你再买. 现在三星开始买笔记本了, 有了手机的经验, 我想聪明的人大概能有所推断.
 
 
日本货 - 质量至上
 
日本是近代电子产业创新的基地. 从SONY, 松下, 到佳能, 品牌实在多. 由于日本对质量的普遍重视, 其产品的品质相对较高. 我现在有SONY和CANON的数码相机各一块, 用了很久了, 没有出现任何问题. 另外, 在显示器领域, 唯一能准确显示实际色彩是SONY的显示器.
 
 
中国货 - No, thanks
 
IBM的个人电脑业务被联想收购了. 其结果是什么呢? 这个蛇吞象的壮举使爱国青年们热血沸腾. 联想也充分了展示了其自主"创新"的本领 - 白色的ThinkPad. 好啊, IBM怎么这么笨, 曾来没想到过笔记本可以是白色呢?
 
联想的品牌经营和市场策略令人不敢恭维. 那质量呢? 自从联想接手之后, 主板的飞线到处是. ThinkPad名倒是存, 实还在吗? 我的ThinkPad用了近四年了(1.7GHz, 1G RAM, 80G HD), 依然相当健壮. 下月打算让其退休, 谁来代替它呢? 新版ThinkPad? 不, 谢谢. 我更信任美国货和日本货.
 
用我的话新版ThinkPad是"Intel inside, IBM outside, and Garbage between" - 玩笑而已, 当真就大可不必了.
02 agosto

Decent Tools to Simplify My Life (and possibly, yours too) 小工具, 大用场

Here are some tools which might benifit not only myself but you too. I hope you like them as much as I do. Feedback/wishes are welcome.

这里有些小工具, 对我非常有用处. 我想对访问者你也是如此. 我希望你也喜欢它们. 欢迎你提供任何建议和想法.

Short in Time to Pack Your Stuff for Travel? 旅行快速准备

With this checklist, you can pack your stuff in less than 10 min without missing anything, and you are ready to head for the airport!

使用这个清单, 你可以用少过10分钟来一件不少的准备好你的行李.

Bon Voyage: Traveler's Checklist 旅行清单[PDF, 0.1 Mb]
17 luglio

Web Site Internationalization 国际化网站制作体验

半个多月都忙于帮别人做网站了. 这个网站是我一个新的尝试 - 国际化.
 
Where you are from? What language do you speak? No need to open your mouth, because I already knew answers to both.
 
愚蠢的网站往往在你第一次访问的时候用英文问你从哪里来. 国际化的第一步是了解用户在哪里, 说什么语言. 前者可以通过IP来进行分析, 后者就更简单, 分析浏览器的语言偏好即可. 当然通过IP分析国家的准确率有97%, 在3%情况下会失败. 所以要提供网页让用户有自己选择的机会. TIP: 用IP来判断国家是相对费时的一个过程, 判断之后应该存在Session里, 不能存在Cookie里,除非那是用户自己的选择.
 
 
One page, Many Languages
 
相同的内容使用不同语言表述是一个很麻烦的问题.我的解决方法是如下:
If(LANGUAGE is ENGLISH) {
  // English content
}else if(LANGUAGE is CHINESE){
  // Chinese content
}
If(COUNTRY is SG) {
 // Singapore news
}else …
 
这样是比较直接的一种做法. 优点是一页里面包含所有的语言,更新的时候比较方便 -- 你不会改了英文信息而忘记了其它语言. 
 
Feed up the Search Engines
 
网站根据用户所在的国家和指定语言显示相关内容确实是很cool的一见事情. 所以对同一个URL, 你在不同的国家或者使用不同的语言, 你看到的是不同的内容或者不同的表述方式.对用户这是好消息, 但What about search engines? 第一个想法是, 每个语言一套版本: http://chinese.web.com, http://english.web.com, ….这样以来, http://web.com是自动探测用户国家和语言的, 而http://chinese.web.com则不论你在哪里都显示中文. 这样以来网络搜索引擎就能接触到各种语言了. 但这样面临最大的问题是你网络搜索引擎的排名会被冲淡 - 一般搜索引擎会把http://chinese.web.comhttp://web.com当成不同的网站, 所以链接数目很明显就分散了. 于是我使用了第二个方法: 把所有语言显示给搜索引擎.

If UserAgent is Google, Yahoo, MSN or Baidu
  SHOWALL = true;
If(LANGUAGE is ENGLISH || SHOWALL) {
  // English content
}
if(LANGUAGE is CHINESE || SHOWALL){
  // Chinese content
}
 
这样以来搜索引擎会索引所有语言的关键词, 而且网页的排名也避免了冲淡的风险.
 
 
Live Demo
 

 
31 marzo

History Repeats 软件创业春天

电脑网络发展一日千里. 在拥有全方位软件网络服务的今天, JACK来带你看看网络走过的历程. 1997 - 1999是一个互联网高速发展的时代 - 那时网站如雨后春笋般出现, 几乎所有的服务就是免费的. 要想融资? 很简单, 一个电话告诉投资者你有个很有前途的网站, 几百万就进来了. 一两年后, 网站纷纷倒闭. 投资者们大惊: 网络是如此的虚幻! 也是随着泡沫的消逝, 人们才明白所谓的网络不过只是提供了一个新的交流途径, 如果它不能为顾客提供增值服务那它其实并没有什么优势. 脚踏实地的经营, 从事软件网络服务的人们终于迎了了又一个春天: Service 2.0 (a.k.a. Web 2.0)
 
Service 2.0是JACK给它的称呼, 而Web 2.0是一般大众传媒对此现象的称呼. 无论称呼如何, 其本质是利用软件和网络来为客户提供增值服务. 随着Service 2.0的慢慢成长, 客户(consumers and businesses)享受到它的好处, 而投资者也逐渐意识到它的价值与前景. 于是软件网络行业又开始出现90年代末的盛况 - 在硅谷, 初创企业都不用打电话找投资者了, 因为很多投资者会直接上门"抢先融资".
 
下面是JACK对Service 2.0的一点看法:
 
核心服务高速发展
 
企业日常运营所需要的服务是最有需求的. 网络版的ERP, CRM是中小企业的最爱. Salesforce.com和Netsuite是这个行列中佼佼者.传统的ERP商譬如SAP也不甘落后, 向顾客兜售网络版的ERP软件 - SAP Business One. 各专业方向的市场比例: 在线会议 24%, 人力资源管理 19%, CRM 14%, 网络分析统计 10%, ERP 3% (预计年增长率48%).JMP估计此类软件市场到2009年将51亿美元的规模.
 
 
创新服务争奇斗艳
 
目前网络服务的创新是其它行业望尘莫及的. 网络服务的创新表现为不仅有好的创意而且要有创新的技术去完美的实现. 网络电话不是什么新玩意, 但Janus Friis和Niklas Zennstorm所推出的Skype是至今唯一能为大部分人接受的网络电话. Skype被eBay以26亿美元收购. 把整理东西的繁琐变成分享的乐趣让人眼睛一亮. del.icio.us提供了整理bookmarks的服务, 而且用户可以分享给他人并且评论. 去年12月, Yahoo!以2.7亿美元收购del.icio.us. 目前同样被收入Yahoo!旗下的Flickr也是类似 - 你整理照片的同时可以给别人分享. 

 
英雄时代再次到来

Service 2.0时代刚刚开始, 我相信我们将能看到这个时代所缔造的更多英雄. 核心, 创新, 谁与争锋! 我们拭目以待 - Be part of the history.
 
 
REFERENCES
Power shift to users liberated from infrastructure - Financial Times - Mar 7, 2006
We’ll travel in style on the super highway - Financial Times - Mar 7, 2006
The Net's New Age - BusinessWeek - Mar 13, 2006
硅谷初创企业周遭黄金触手可及  - WSJ - 22nd Mar, 2006
 
ALL RIGHTS RESERVED BY JACK LI. COPYRIGHT © 2006.
16 marzo

Jack's Computing Network - Phase 1 硬体网络

 
 
随着程序的增多, 代码管理成为一个挑战. 为此, 利用现有的硬体资源设立程序计算网络.
 
Hermes是本网络中最重要的机器, 他负责程序代码管理(CVS), 备份(SFTP), 以及batch运行等等. 苹果操作系统的安全性加上SSH的无敌加密, 使他能轻易应付互联网上的任何攻击.
 
目前是第一阶段, 硬体网络已经设立好, 基本的控制交换软件也搞定.
 
Hermes服务器软件: SSH/SFTPD, CVS, HTTPD
Apollo客户端软件: SecureCRT, MS IE 7.0, Eclipse 3.1
 
 
What's next?
 
下一步将进行全面的测试, 并且加入一键编译发布的功能, 以便更好的完成软件编译测试发布这三道程序, 和再次降低时间的投入.
 
13 marzo

IDEA: 家居管理

IDEA: 家居管理 - 谁动了我的衣服, 冰箱的包修期到什么时候呢?
 
周末在整理衣服的时候,  我发现有几件新衣服还没有被穿过, 不过标签被我扔掉了 - 洗衣熨衣的指示,注意事项都无从而知了. 有些衣服上备用的扣子被我剪下来了, 但无法对衣入座. 我想把一件件衣服编号, 但发现把号码写在衣服上真是一件不简单的事情 - 牛仔裤好说, 但衬衣呢, 很难办.
 
于是我有这样的一个主意: 写一个软件, 当新买的衣服拿回家时, 使用软件拍照备注编号. 这样的好处是以后也可以查到这件衣服的说明注意事项等等. 如果你不在新加坡, 而在一个四季分明的地方, 秋季收拾你的夏季衣服的时候, 可以用软件更新衣服的存放位置, 来年夏季到了, 找回衣服变得简单多了.
 
Life means sharing
 
衣服不只要全面管理, 也要允许用户跟朋友分享她/他的衣服. 对女士来说, 或许这是不错的一个主意.
 
Beyond clothes

仅仅是衣服吗? 不, 还有电器, 衣橱, 地毯都可以算入管理范围. 很重要的一个用途是当你在要求保险公司赔偿损失的时候, 你可以轻易的把所有的财物清单列出来 - 购买的时间, 价格, 和实物照片. 当然其它用途也很多.
 
Delegation [Added on Mar 15, 2006]
 
对懂得生活情趣的人, 一件衣服绝不是金钱的等价物, 而是在他/它身上展现个性的天使. 在人群中这位天使用最嘹亮的声音告诉别人, "听着, 我来了. 你有权利继续保持冷酷, 但不幸的是你的心已被我征服 -- 就在这一刹那间". 你一定不会放弃这衣服的管理权.
 
衣服越来越多, 事情越来越忙, 使用这个家居管理软件需要更多时间了. 可是, 聪明的你, 一定想到解决办法了吧?
 
Delegation是管理中最重要的一项. 没有delegation, 就没有管理. 这时你该聘用一位助手了, 要不佣人也行. 所有的家居管理琐事都交给她(或者他, 下同), 包括录入数据, 更新资料. 古人用鞭子来督促别人帮自己做事, 而现在你可以使用这个软件来保证你的助手不偷懒. 助手仅能输入,更新资料, 但最终的批准权在你. 优秀的权限和工作流的支持让你省心, 管理尽在掌握中. 在这样的情况下, 你可以很容易的换一个助手, 毕竟即使失去助手, 你也清楚的知道明天宴会上要穿的燕尾服在哪里放着. 当然不妨聘用另外一个助手做auditor, 这样更能尽早预防问题的发生.
 
 
To the best of my knowledge, 这样的软件好像还没有. 我希望有人看到这个主意后去实现它(否则等我买房置地的时候一定会写一个) - 你可以随意的拿走Jack的Blog里的任何想法(没有任何限制), 因为我觉得自己想法被实现是一件快乐的事情, 即使不是自己亲自实现的.
 You are welcome to share your thoughts on my ideas.
06 marzo

How Flickr was Born 网络照片分享Flickr的诞生

"其实有相当多的网站提供的照片服务比Flickr更多, 更细, 但可惜它们只是打造了一把把瑞士军刀, 而这个网络战场上却是需要刀长锋利的宝剑!"

Flickr (flickr.com) 是当前网络上最流行的照片分享服务网站. 每天有数以万计的用户在flickr上传共享照片. Jack从USA TODAY上摘录这篇记录Flickr历史的报道.

 

[Jack's comments on flickr's success]

无心插柳 (Follow love, and it will flee; flee love, and it will follow.)? Fake与Butterfield这对夫妻搭档本来是要开发游戏, 结果却意外的发现了分享照片的乐趣. 于是他们放弃开发游戏, 转向开发照片分享的网络服务而大获成功, 最后被Yahoo!收购. -- 上帝绝不会在关上一扇门的时候开启一扇窗子; 只有你在努力试图打开窗子的时候, 上帝才仙手轻拂为你开窗 - 而很多时候打开的窗子却往往不是你试图开启的那扇. 开心的接受吧, 因为窗外景色是那样的精彩.

专注周到. 突然想到一本书, 名字叫<细节决定成功>, 我没有读过, 因为书名已经清楚的告诉我书中的论点太失偏颇. 是细节成就了Flickr? 看上去是, 毕竟那友好的界面, 方便的导向系统, 很细致. 但仔细想想, 我发现其实这所有的细节是围绕了两大主题: 交流和网络. 前者表现为你可以轻易的与朋友分享照片, 你可以观看世界不同地方的人们拍摄的照片, 并发表评论; 后者为, 你可以很方便的在自己的Blog里使用Flickr上的图片, 与主流的Blog无缝衔接让Flickr从Blog的飞速发展中获得了相当的推动力. 其实有相当多的网站提供的照片服务比Flickr更多, 更细, 但可惜它们只是打造了一把把瑞士军刀, 而这个网络战场上却是需要刀长锋利的宝剑!

 

[我很关注Flickr, 但我自己不使用Flickr. 相比之下, 我更喜欢按照自己的想法去展现照片 http://jack.asprise.net/jack/album.php]

 

USA TODAY 文章如下:


Flickr of idea on a gaming project led to photo website
By Jefferson Graham, USA TODAY, 2/27/2006


SUNNYVALE, Calif. — Caterina Fake knew she was onto something when one of the engineers at her Vancouver, British Columbia-based online game start-up created a cool tool to share photos and save them to a Web page while playing.

"It turned out the fun was in the photo sharing," she says.

Fake scrapped the game. She and her programmer husband, Stewart Butterfield, transformed the project into Flickr. In less than two years, the photo-sharing site — now owned by Internet giant Yahoo — has turned into one of the Web's fastest-growing properties.
 
"Had we sat down and said, 'Let's start a photo application,' we would have failed," Fake says. "We would have done all this research and done all the wrong things."

Fake and Butterfield's company, Ludicorp, never did launch a game. Yahoo bought the company in March for an undisclosed sum and moved the 11-person team to Yahoo headquarters in Sunnyvale.

Since then, Flickr has been on a roll, riding the wave of consumer fascination with digital cameras. Shutterbugs are less likely to make many prints these days but still want an outlet to show off their work.

That's where a free, ad-supported site such as Flickr comes in.

Flickr's traffic grew 448% to 3.4 million from December 2004 to December 2005, according to Internet measurement firm Nielsen/NetRatings. In the nearly 12 months since Yahoo purchased it, the site went from 250,000 registered users to more than 2 million. About 100 million photos have been posted at the site.

Chad Hurley, CEO of video-sharing site YouTube, is a Flickr fan. He says the site has resonated so quickly with the public "because it brought innovation to a problem people thought was already solved — how to share photos online."

from the dozens of other photography sites. Friends can check out newly posted pictures via searching and add their own "notes" to photos they like.

One distinctive tool lets bloggers simultaneously post photos on their own blogs and at Flickr.

It also uses a tool called "tagging" — adding a few words of text to each posted photo — so that a picture can be easily searched online.

Trip Hosley, co-owner of San Francisco club Shine, became a fan after his brother, Nate, became a father for the second time and tagged pictures of the newborn "Deuce" at the Flickr site. "Within an hour of the birth, there were 100 pictures online that all our family and friends could see, instantly, just by searching for 'Deuce,' " he says.

Hosley even installed a photo booth at Shine where patrons can sit and snap their own pictures and have them instantly uploaded to Flickr.

'Getting' it

Yahoo bought the company as much for Fake and Butterfield as it did to land Flickr, says analyst Charlene Li of market tracker Forrester Research.

Butterfield says Flickr's biggest innovation came from recognizing the social nature of photography.

"It's meant to be shared, talked about, pointed to, saved, archived and available by as many means as possible," he says.

Yahoo has two photo-sharing sites, Flickr and the more traditional "share-and-buy-prints"-oriented Yahoo Photos.

But Yahoo executive Bradley Horowitz, the head of technology development, says there's room at Yahoo for multiple areas of photo sharing, just as it offers instant messaging and e-mail as two different communication tools.

Yahoo has kept the Flickr site low-key, with no front-page promotion. Word of mouth is its best marketing tool, Horowitz says.

"The right way to find Flickr is to be invited by a friend, to get plugged into the social network that way," he says. That way, you're more likely to "get it," he says.

Flickr has a spare, hip look that displays photos larger and more stylishly than many others but isn't as simple to navigate as competitors such as Shutterfly and Kodak EasyShare Gallery.

It uses terms such as "photostreams" to describe personal photo collections, "interestingness" to describe cool new pictures and "sets" to describe groups of photos.

There is no simple tool to share pictures via e-mail. Instead, Flickr users must copy the Web address Flickr assigns to the photos into an e-mail.

It's a deliberate omission. "With the kind of growth we've experienced, we're not sure our servers will be able to handle the onslaught from an e-mail application," Fake says.

She says an e-mail function is coming soon: "We know people really want it, we just want to make sure we're prepared."

For now, Flickr users seem untroubled by the lack of a one-click e-mail feature. Ricky Fisher, a Seattle graphic designer, simply shares his pictures with others via the Flickr Web address. What he likes most about the service is its international flavor; he checks out interesting photographs from all over the world.

At the bottom of Flickr's home page are four thumbnail images of the most recently uploaded pictures from the Flickr community. Fisher watches the page to see the new photos and reaches out to photographers whose work he admires.

"You see a lot of amazing stuff this way," he says.

 

02 marzo

Technology Update - Jack的技术简录

已是很久没有在这个BLOG发表技术相关的日志了. 在计算机这个行业(或许也适用于所有行业), 没有创新没有进步就意味着败落与无聊.
 
A Picture is Worth a Thousand Words - BlogCollector (BC) 支持图片了
 
BC初版仅支持文字. 现在的新版支持图片, 并且在原来PDF格式的基础上支持微软Word, W3 HTML输出. [参见下面的图片]
 
设计思路: 图片必须在产生最终输出之前被下载到本地计算机; 鉴于目前BLOG里图片数量相当多, 在下载的过程中必须尽量缩短时间. 解决方案:
  • 使用多线程 (multi-thread)进行下载 [BC中使用5个基本线程, 最多为10个]
  • 共享HTTP连接(几个GET使用同一连接, 减少overhead) [BC中共享连接为20个(所有hosts)]
虽然我没有严格的测验数据, 基本测试发现下载150个图片仅需几十秒, 体验上足够快了. 目前新版BC在进行测试与包装, 本月将发布Windows, Mac, Linux和Solaris上面的软件安装程序.
 
Coming soon: Reliable Source Code at Your Fingertip - 新网站: 程序代码共享
 
鉴于在我个人网站所发布的程序代码有很多人感兴趣而发EMAIL咨询, 这个新网站的目的是提供更多的程序代码和更好的展现方式来服务软件开发者. 部分程序代码将是免费的, 其它则需一定的软件授权费 -- 用户可以在线支付, 在分秒之内得到程序代码, 并且享受技术支持服务.
 
新网站域名已经取得, 估计下月或者更早可以推出.
 
In Progress: Project Athena 雅典娜计划进行中
 
这是现在与以后很长一段时间的主要方向. 目前还在进行调研, 以确保基础平台的设计上的全面考虑.
 
 
[Illustration: BC now supports images in PDF export.]
16 gennaio

Stay at First Sight 一见钟情

ALL RIGHTS RESERVED BY JACK (C) 1998 - 2006.

你喜欢我的网站http://jack.asprise.net吗? 无论你喜不喜欢(我希望你能喜欢), 你的决定在最初的50毫秒(1/20秒)就做出了.


来自加拿大Carleton University的Dr. Gitte Lindgaard说, "我的同事相信在半秒内是无法真正看清什么东西的". 但后来, Lindgaard在Behaviour and Information Technology杂志上发表文章称, 第一印象在最初的50毫秒便形成了. JACK将不介绍她的试验方法, 而是探讨更重要的 -- 分析及应用.

 

心理学家以'halo effect'来描述这种持久影响. 如果你能用恰到好处的设计来吸引人们, 他们将忽视网站的一些瑕疵, 并且认为内容更可靠. 正是这种认知偏见(cognitive bias), 人们自以为是, 继续访问所喜好的网站. 对于一般商业网站来说, 60%的访问是来自搜索引擎的, 譬如Yahoo!和Google. 如何才能吸引人们的眼光呢? 使用大量图片在网站上绝对是很愚蠢的一种做法. 在信息纷杂的网络空间, 人们更喜欢清爽的网站. 人们希望以最快, 最简单的方式找到所需要的信息. 譬如, 人们倾向于先看左上角的内容, 也假定在右上角能找到一个搜索的功能.

 

当然, 这里面, 有个隐藏假设 -- 不同网站提供同样的功能与信息. 除了少数较垄断的行业, Lindgaard的研究还是对大部分的网站有相当的警示作用. 下面列出JACK最欣赏的一些网站:

- IBM.com
- GAP.com
- Apple.com
- Amazon.com
- Google.com

05 gennaio

Tech Trends 科技智慧

ALL RIGHTS RESERVED BY JACK LI (C) 1998, 2006.
 
A Marriage Not Made in Heaven: Windows Mobile on Palm
 
That's right, Palm now offers Windows Mobile based PDAs. Treo 700W is the first product. Still remember Apple announced that they will switch to Intel CPU? There are absolutely no enemies in the business world - only cooperators and competitors. Yesterday, I visited a post office for fax service, and I noticed that you can FedEx or DHL your parcels at SingPost - although SingPost also offers their own worldwide delivery services.
 
What's next? KFC sells Coke instead of Pepsi, or PRC implements capitalism? We'll see.
 
 
IBM Eyes on Open Source
 
Yesterday, when I process a lead, I was informed that: IBM now forces all ISV vendors to submit a questionnaire on open source before IBM considers to purchase any software products or services. For those who are not familar with IBM open source initiatives - two of biggest open source projects supported by IBM are: Eclipse & Linux (open power).