透明思考


Transparent Thoughts


  1. RubyWorks近况很好,将来会更好

    经过一番调整之后,CruiseControl.rb的网站又回来了,顺便host了Ruby on Rails的持续集成。这次用了一个CentOS 5的服务器,用RubyWorks Production Stack做部署环境。自己的狗食自己吃,自己的产品自己用。在下周的RailsConf Europe 2007上,我们的CC.rb、Production Stack和JRubyWorks都会亮相。这就是我们RubyWorks团队取得的阶段性成果。

    不过,当负责宣传推广的同事去参加RailsConf Europe的时候,我就已经从这个项目中rollout了。至少在可预见的将来,我的角色将从RubyWorks的核心开发者变成热心的开源参与者之一。这就是控球后卫的姿态,运球推进到前场,晃开防守找到空档,把球传给位置最好的队友让他得分,自己转身投入防守。

    不过说真的,但愿很快能再进入一个Ruby项目……昨天和dreamhead聊天的时候瞎扯了一句:你知道为什么以前的程序员总是想做几年技术就转为做管理吗?因为他们用C++编程太没乐趣了。


  2. 对冲基金那些事

    在JavaEye写一个系列:对冲基金那些事。现在写了两篇,“沽空与空头”和“风险对冲”,下一个要写写套利。

    其实也不是为了什么目的,只是看期权定价之类的东西,觉得很有趣。为了保持这个blog的软件技术品味,就不再转载了。最后会写出多少呢?不知道。


  3. iTechTag:声望创造价值

    以前在JavaEye的一个讨论里,有位同志说“简历嘛,大家都知道,肯定是有水分的”。于是我在另一个blog里说到,简历里唯一有意义的,就是工作经历。认真回想一下,我在看应聘者的简历时,也基本上不看基本信息、自我评价之类的,只看工作经历:做过什么项目,用过什么技术,比说什么“熟练”、“精通”要有意义得多。我的期望、我的评估、整个后续的面试过程都是围绕着工作经历来展开的。

    求职者的工作经历,这份信息对于潜在雇主有价值。但这份价值在求职者自己身上实现了多少?作为软件开发者,不妨问问自己:还有谁记得你几年前完成的那些“不可能的任务”?还有谁记得你通宵加班为项目做出的贡献?还有谁记得客户和领导曾给你的赞扬?有多少求贤若渴的潜在雇主想要知道你曾经那些了不起的成就,却无从获取这些信息?那么这份信息的价值去了哪里?我们把工作经历告诉了谁?是的,我们把工作经历写在简历里,把简历放在了招聘网站;而招聘网站把我们的简历锁起来,把我们的工作经历信息卖给潜在雇主。我们的工作经历,去给招聘网站创造价值了。

    并非所有行业都是这样的。就拿电影来说吧,除了导演和演员以外,一部好电影离不开无数的幕后英雄:灯光、音乐、武指、剪辑……不过这些幕后英雄并没有因为身处幕后而被埋没,他们的名字出现在影片的演职员表里,展现在所有观众的眼前。当大导演想要拍下一部大影片时,他立即就能想到自己喜欢哪部影片里的配乐,然后立即就能找出这个配乐的人。幕后英雄们的每一段工作经历不仅给自己带来收入,还积累成为自己的声望,为自己打开了未来的门。

    iTechTag的目标就是让软件开发者的工作经历真正成为自己的声望,让声望给我们自己创造价值。我们希望记录下自己辛勤工作的成果,并与他人分享我们的骄傲。我们希望让别人知道我们掌握什么技能、参与过什么项目、帮助过什么客户、做出过什么贡献。我们希望让自己、让同事、让朋友、让所有关注我们的人有机会了解:我们是多么优秀的软件开发者。

    把这样一朵“技能云”贴在自己的blog旁边,向所有人炫耀自己的强大技能和丰富经验,让自己的声望开始发挥价值。这就是iTechTag想要给你的。


  4. iTechTag恢复运行:重建软件开发者的声望

    iTechTag从不能访问的麻烦中解脱出来了:换了一个host。但原来alpha测试阶段的数据找不回来了。开发团队加上了更多的数据保障措施,新的iTechTag不会再丢失数据,大家可以注册用户、记录自己做过的事情、骄傲地挂出自己的技能云了(就像我在blog的右边挂的这个)。

    按照互联网的惯例,iTechTag还在beta,并且将长期beta。如果有意见或建议,请告诉我们。你的反馈会让iTechTag变得更好。


  5. 孤独的敏捷实践者,我们能帮你

    在实施敏捷的过程中感到孤独了吗?

    还有更多敏捷视频


  6. Rails部署环境:各就位,预备,跑

    有人评论了RubyWorksProduction Stack。“Damn thoseThoughtWorkspeople are smart!” 这话听着很振奋。不过第二天,他又爱上了FiveRunsRM-Manage。“With built in notificationit’s definitely a winner”

    毫无疑问,FiveRuns的RM-Install是一个好东西。完整的Railsstack,丰富的附加功能,使用简便。但试用以后却加深了我对RubyWorks的信心。因为:

    1. 我们的stack是在现有标准(aptyum)基础上搭建起来的,这就意味着用户能够以他们习惯的方式安装和(更重要的)升级所有软件;一个以自定义格式包装的工具包将不得不提供自己的更新升级方式,甚至根本就无法升级。
    2. 我们的stack是逐步组合出来的,这就意味着我们提供的始终是对绝大多数用户最有价值的东西,并且给用户选择的机会;一个大包大揽的工具包很可能包含一些看上去很酷、但很多用户并不需要的庞大的组件(例如ImageMagick)。
    3. 我们的stack是开源的,这就意味着我们能够得到整个社区的反馈和贡献;一个闭源工具包的开发者需要花费更多的工夫才能弄清系统管理员们的工作方式和习惯。

    归根结底,我的信心来自于对Unix传统的信心:开放的、遵循标准的、组合协作的软件,应该好过封闭的、自立山头的、大包大揽的软件。谁能在这场Rails stack的赛跑中最终获胜,走着看吧。


  7. 抛弃一个错误,选择一个魔鬼

    自从用Typo做blog并且放到Dreamhost以后,就一直遇到“Typo failed to start”的问题。今天终于忍不下去了,搜索一下发现原来是因为Typo耗用太多的内存,而Dreamhost有严格的内存限制,所以Typo经常不能工作。

    于是用了几个小时的时间,先把Mephisto装上,然后从Typo转换到Mephisto。再把各种各样的样式、边栏……都调好,最后加上tag云。好了,现在“透明思考”不再有讨厌的500问题。

    请更新RSS订阅的地址:http://gigix.thoughtworkers.org/feed/rss2.xml


  8. ThoughtWorks中国公司持续招聘最优秀的软件开发者

    招聘流程

    Team work at thoughtworks india

    在ThoughtWorks,我们寻找的是象我们一样以努力工作,有创造力,力图创新,追求卓越为贵的个人。我们的文化非常注重团队协作,职业发展,个人发展,和生活质量。

    查看在ThoughtWorks中国的招聘职位

    为了在确保找到的人才能够象我们每一个人一样热爱在ThoughtWorks的经历,我们建立了一套在IT行业里非常独特的招聘方法。

    网上申请。通过我们的在线申请页面来进行自我介绍,请务必注明你对什么职位感兴趣。

    电话面试。如果技能相符,我们就会与你联系,安排一次电话面试。这次电话交谈是为了确定ThoughtWorks是否适合你,也为了看看你是否适合ThoughtWorks。在这次电话面试中,我们需要对你的态度,动机,薪资要求,出差意愿等等取得一致意见,保证我们双方都觉得合适。在这之后,许多候选人都会与我们的顾问进行一次电话技术面试。

    代码评估。给我们看看你的代码。能说一些响亮的名词并不表明一个人是个有所心得的开发人员。我们认为,真正的软件开发本领并不能在一个简历或一次面试中完全表现出来。因此,在你的第一次面试之前,我们有一个需要写代码的考题,让你在家里做好了以后再通过电子邮件寄回给我们。

    办公室面试。这才是真正乐趣的开始。我们会让你来我们在Chicago, New York, San Francisco, Nashville,Calgary, Toronto, London, Melbourne, Sydney,西安或Bangalore(班加罗尔)的办公室之一。首先,我们会对你进行一套评估,来帮助我们衡量你能够多快地学习新的技术,方法论,等等。然后,你会和好几个ThoughtWorks员工进行面谈,这样我们互相之间就可以对彼此有更好的了解。注意:尽管在某些场合下应该衣着正式,但在我们的办公室里面试可以穿随意的服装。大多数时候,你穿T恤或苏格兰方格呢短裙的效果会比戴领带还好。

    录用通知。经过上面这些步骤之后,我们尽量不会让你等待。如果你能加入,你就能加入。一旦你加入了,你就不会再想退出。所以,现在就开始吧!第一步就是在线申请

    应届生招聘流程与这个略有不同,如果你想查看应届生招聘请点击应届生应聘流程获得更多信息。


  9. iTechTag- 重建软件开发者的声望

    我的blog右边栏里多出了一个mashup的小框:我的技能云。提供者是iTechTag。iTechTag出自我的一个点子,被1sters!变成了现实。iTechTag到底是什么?抄一段“网站介绍”。

    ********

    作为软件开发者,我们从一个又一个的项目中得到了什么?除了学到新的知识、得到应有的薪酬与职位,我们还积累了良好的声望:我们生产有用的软件,我们又快又好地完成工作,我们用自己的专业技能为客户创造了巨大的价值。作为一个软件开发者,我们无时无刻不在为此骄傲。

    但声望给我们带来了多少利益?还有谁记得你几年前完成的那些“不可能的任务”?还有谁记得你通宵加班为项目做出的贡献?还有谁记得客户和领导曾给你的赞扬?我们的声望还没来得及给我们带来回报,就匆匆地销声匿迹了。

    我们的声望被严重低估了。

    我们创建“技能云”就是为了重建软件开发者的声望。我们希望记录下自己辛勤工作的成果,并与他人分享我们的骄傲。我们希望让别人知道我们掌握什么技能、参与过什么项目、帮助过什么客户、做出过什么贡献。我们希望让自己、让同事、让朋友、让所有关注我们的人有机会了解:我们是多么优秀的软件开发者。

    ********

    记录自己做过的项目,在自己的blog里放上“我的技能云”,让所有看到你blog的人都知道你有多么了不起。这就是我的——iTechTag的——想法。

    (关于1sters!团队,请看InfoQ中文站的报道:梦想上铁道。)


  10. JRubyWorks- J2EE on Rails

    (NOTE: JRubyWorks keeps moving forward and this article may not be up to date.)

    How to run yourRailsapplication withJ2EEweb servers (such asJettyandTomcat)? Here’s a solution:

    1. SetJRUBY_HOME environment variable properly.

    export JRUBY_HOME=/usr/lib/jruby

    2. InstallActiveRecord-JDBC.

    jruby -S gem install ActiveRecord-JDBC -y

    3. InstallJRubyWorksplugin.

    script/plugin install \http://jrubyworks.rubyforge.org/svn/trunk/jrubyworks/

    4. Configure your Rails application asthis article. JRubyWorksplugin includesmysql-connectorby default. If you use database other thanMySQL, you can putcorrespondingJDBCdriver in${RAILS_ROOT}/lib/javadirectory and JRubyWorks will take care of it conventionally.

    5. Run your application and try it athttp://localhost:8080. Alsoyou can find aWARfile of your application in${RAILS_ROOT}/wardirectory. You can deploy it to otherJ2EEweb servers.

    jruby -S rake retty

    JRubyWorks is based onJRuby Rails Integrationand hope to make the integration easier. It’squite immature so far, apparently. Yourfeedbackand contribution will be very helpful and highly appreciated.