123
 123

Fri 25 April, 2008

Click here to bookmark this link.Channel Image21:16 新项目,新体验» 梦想风暴
又到周末了,由于CodeJam的原因,这已经是我连续第十二天的工作了,有些许疲惫。在这个即将到来的周末,要好好让自己放松一下。

这周开始了一个新的项目,一个Ruby on Rails的项目,一个让我期盼了很久的项目,也是我之前学习Rails的最重要原因。不过,Rails是我最近的blog中出现频率很高的字眼,所以,我并不打算在这里聊Rails的话题。

既然不谈技术,那就不妨聊一些与自己之前做项目不同的体验吧!

在我们这里开发的准确的说是这个项目的第二阶段,也就是这个项目已经有了很多东西,之前这个项目是由美国那边的团队来做,所以,我得到了一个观察国外的ThoughtWorker如何做事的机会。原来参与过的项目里面,更多的是中国这边的ThoughtWorker,所以,我饶有兴致去观察一下二者之间的差异。由于参与这个项目的ThoughtWorker大多是有经验的开发者,所以,很多方面做得成熟许多。

这个项目的自动化程度很高,显然,这些ThoughtWorker在开发之初做了很多工作,把许多可以自动化处理的部分都放到的Rakefile里面。所以,我们得以把更多的精力放在开发本身上,少了很多繁琐的操作。一个简单的例子是,我们提交代码只要简单敲一个命令,首先会到SVN进行更新,然后重做数据库,运行测试,随后,把增加的部分找出来添加到SVN中,最后,它会问我们Pair的人,Story的编号,以及做了哪些工作,以便生成SVN提交的日志。和大多数自动化的工作一样,这些工作本身没有任何技术难度,但有了这些之后,我们可以少敲一些命令,更关注开发本身。其实,之前的几个项目也有一些自动化,比如用Cruise Control做持续集成,但这个项目应该是我经历过的自动化程度最高的项目,差不多常见的重复性工作都自动化了,看看那长长的Rake任务列表便可见一斑。

每天早上,Standup之后,我们会把所有的Dev召集到一起,一起来看一下昨天的工作。我们用SVN diff把代码的差异列出来,大家一起来过。如果恰好是自己做的代码,编写代码的人就会站出来,为大家简单解释一下做了些什么。这样,这样保证大家都会了解到项目的进展。这样做还有另外一个原因,因为我们是一个分布式团队,除了我们在中国这边,还有几个人在美国开发,这样过代码,便可以大致了解到美国那边在我们睡觉的时候干了些什么。

这个项目还有一个做得我觉得不错的地方,就是Story做得很细致。我们在Mingle里面的Story,很多都会有完成这个Story要做哪些步骤的描述。我们只要按照这些步骤一步步做下去就可以了,每完成一个步骤,就做一个简单的标记,这样,几乎不会有遗漏。除了Mingle上的Story,我们还会有专门的文档对这个Story进行比较详细的解释,包括一些验收条件。显然,这个项目的BA做了大量的工作,让我们后续的开发更容易。

这个项目从美国过来了一个BA和两个Dev,而Pair的过程,让我不得不每一天都以英语进行交流。私下里,我经常说,我的英语水平代表了TW的最低水平。当年面试的时候,我自认为表现的最差的就是结对编程,因为一个英国同事高高兴兴搬了把椅子做在我边上,害得我不得不英语解释我在做什么,思路一下子就乱了。不过,少了面试的压力,这时候和人用英语Pair,效果还算可以接受,至少我还可以思考。实在不理解的,就让自己的Pair多解释几次,好在ThoughtWorker们都是很好的人,我的Pair总是不厌其烦的为我解释,直到我确切的直到了我们要干什么。

在这个项目里面,我很高兴的扮演起学生的角色。一方面,我们不是很了解需求,需要向“过来人”学习,另一方面,来这边工作的两个Dev确实都有很长时间的工作经验。和他们在一起工作,我乐得把控制权交到他们手上,自己虚心的观察他们如何思考,如何解决问题。和他们在一起工作,会让人感觉很放心。正如我在《与高手共事》中提到的,他们做的那些工作都很简单,经过一步步简单的工作,一个个Story就完成了。

对我来说,这个项目才开始一个星期,已经学到了不少的好东西,值!
关注社会人文焦点 汇聚百万博客看法 欢迎订阅博客大巴《看法》电子报


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image16:57 MiddleClickClose for Safari 3.1.1» Joey Gibson's Blog

Someone wrote to tell me that MiddleClickClose was no longer working after upgrading to Safari 3.1.1. I hadn't yet installed the latest version, so this was news to me. I just upgraded, but MCC still worked for me. I'm not sure what the user's problem was. Maybe he upgraded from Safari 3.0 to 3.1.1, skipping 3.1, which I can see how that would have broken it for him.

I did change the MaxBundleVersion in Info.plist to 5525.18, which is the current version of Safari, so if you're having problems, install the copy linked below. Or edit the Info.plist file in MiddleClickClose.bundle/Contents yourself.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Thu 24 April, 2008

Click here to bookmark this link.Channel Image15:13 Twitter Updates for 2008-04-23» halostatue
off to a dr. appt. # Powered by Twitter Tools.
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image13:14 Sunning on the hammock» Projectionist
Click here to bookmark this link.Channel Image13:11 I hail from the great state...» Projectionist
I hail from the great state of Texas, USA, living with an army of dachshunds.

Adam Keys


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image07:48 Agile Web Development with Rails, 3rd Edition» Riding Rails - home

You asked for, heck, you demanded it, and now it’s becoming a reality. The original Rails book, Agile Web Development with Rails, is getting a facelift and the 3rd edition is now available as a beta book.

The book will be targeting Rails 2 and thus cover the many improvements in features and idioms that Rails have seen since the last edition of the book.

We also have a new author on board with the project: Sam Ruby. Sam co-authored the wonderful RESTful Web Services and have been involved with the Ruby and Rails communities for quite some time now. It’s fantastic to have him involved with the book.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image03:53 ... Tomorrow the World» James Britt - Code, Content, Caffiene
On this date in 1976, The Ramones released their self-titled debut album. 14 songs in less than 28 minutes. It contained the singles, “Blitzkrieg Bop” and “I Wanna Be Your Boyfriend”. The singles didn’t chart and the best the album could muster was a peak at the #111 spot on the U.S. albums chart. Nonetheless, legend was born. The legendary punk band from Queens, NY turned in their leather jackets for good in 1996.

From The Post Punk Progressive Pop Party

See also Bands That Changed Everything: The Ramones


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Wed 23 April, 2008

Click here to bookmark this link.Channel Image18:07 Economics Lesson About Gas Prices» Joey Gibson's Blog

The Ludwig von Mises Institute has an excellent article called Economics 101: The Price of Gas that everyone should read. It explains how much of the price of each gallon of gas goes to those "greedy" oil companies, how much goes to our wonderful, benevolent, altruistic government, and how prices have changed since the 1950's. It also compares prices in other industries with a critical statistic, called the profit margin. Go read the article, now.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image15:09 Twitter Updates for 2008-04-22» halostatue
…and twitter’s back to full flow, it seems. # @gapingvoid I don’t hate switching avatars; I’m too lazy :) # @rands only for some shows, and then rarely live. # @RickMacMerc I’ve been tempted to say that at jobs from time to time # Powered by Twitter Tools.
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image03:48 The silent majority» Loud Thinking by David Heinemeier Hansson

I had a great time on the West coast recently with stops in Santa Barbara and Palo Alto. What always surprises me at events like these is the huge number of people I meet that are doing cool things with Rails that I've never heard of. The kind of people who are just really happy to be using Rails and happy to build businesses with it.

Most of them are not heavily involved with the community in the sense of always being in front of it. They're not the ones constantly commenting on the blogs. They're just enjoying working with the tools. That's a really refreshing sentiment.

It's easy for people to think that the interaction they witness on the web is a complete reflection of the world in general. Often it's quite the contrary. Which is why I so enjoy getting out of the web world and meeting people in the flesh. Hearing their stories, discussing their concerns, and sharing passions.

You can easily end up burning out on web participation because the loud minority twists your perception of what matters and who cares. But there's nothing like meeting people who tell you that working with Rails or listening to a talk or reading something you wrote either touched them, changed them, or made them move in a new direction. That's a big pay-off for getting involved with public sharing.

So thank you so very much to everyone who came up to me at any of the events out in California. It makes it all worth it to hear your stories. Keep on rocking with whatever it is that you're doing. Keep the passion and the optimism alive.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image00:28 ALA special on Rails» Riding Rails - home

A List A Part is featuring a special issue dedicated to Ruby on Rails. There’s Creating More Using Less Effort with Ruby on Rails by Michael Slater and Getting Started with Ruby on Rails by Dan Benjamin. Both articles serve as great introduction to what all the hoopla is about. Great stuff to forward to friends who might be interested, but still haven’t made the jump.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Tue 22 April, 2008

Click here to bookmark this link.Channel Image21:34 “Charlie Rose” ...» Projectionist

“Charlie Rose” by Samuel Beckett


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image21:34 Man will become better when...» Projectionist
Man will become better when you show him what he is like.

Anton Chekhov


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image19:15 More Crappy Food In Snellville» Joey Gibson's Blog

Last night before I went bowling, I decided to get something to eat. I wracked my brain to come up with some place that I haven't eaten at 900 times recently, and finally settled on Applebee's on Hwy. 124. I was seated and after what seemed like about 5 minutes, the waitress finally came over. I ordered a Coke and the Crispy Orange Chicken Bowl, without the mushrooms. She responded, "I'll see if they can pick them out for you. It's a mix." I responded that I have gotten the dish there before without mushrooms, so it shouldn't be a problem. For the record, a better response would have been, "OK" rather than, "I'll see if they can pick them out." After placing my order I commenced to reading my book while waiting for my food to arrive.

After 10 minutes or so, the food arrived, but the chicken and broccoli pieces were too large to manage in the bowl, so I asked for a small plate to cut them up. As I started cutting the chicken, I noticed something: it was completely raw on the inside. Not just one piece, but all of it. I called the waitress over and showed it to her. She took it, but didn't seem overly concerned. I asked for a manager. The manager came over and after I explained what happened, she expressed a modicum of concern, though not as much as she should have. She said, "I'll have to check the grease temperature. Everything is on a timer." Well, yeah. If your grease is not hot enough (or is laden with gunk) then your cook times will need to be longer. But since the kitchen staff at places like this doesn't actually cook, they only warm things up and mix things, I guess expecting them to know that is asking a bit much.

Anyway, I told her that I didn't have time for a reorder and I was just going to leave. She didn't make me pay for my Coke, but didn't offer anything else as a concession. Good management, there.

As I was leaving, I heard my name called. I turned and saw six of the people from my bowling league. I went over to talk and right as I walked up, one of them was calling for their waitress. Guess why. Her chicken was also raw! When I saw this, I said (rather loudly), "Hey! They gave you raw chicken, too!" I found out later that the manager didn't even bother to come out to talk to them, nor did she take the raw chicken off the bill.

As it turns out, they got a 79 on their most-recent health inspection. I won't be going back any time soon.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image14:12 Twitter Updates for 2008-04-21» halostatue
@marick Do you use Fitnesse? # @mfeathers I’d assume that you know FitNesse pretty well, yes? ;) # Not really understanding the benefits of FIT and FitNesse…need examples better than what’s given on the FitNesse.org web site # @marick So, let me rephrase/redirect: are there any good public examples of the benefits of FIT. # @mfeathers Done enough with [...]
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image04:09 rubyonrails.org was not hijacked» Riding Rails - home

Due to a snafu at the domain company holding rubyonrails.org, the site was turned into their default Google-baiting holding spot yesterday. The problem has now been resolved and the Google-bait has been eradicated. Sorry for the scare.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image04:09 Ruby Heroes accepting nominations» Riding Rails - home

Ruby Hero Award is a great initiative to highlight some of all the hard-working people in the Ruby and Rails communities who might otherwise not get as much exposure as their work deserves. So go on an nominate your favorite hacker and let’s celebrate the many great people doing good stuff.


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Mon 21 April, 2008

Click here to bookmark this link.Channel Image17:24 ThoughtWorks CodeJam» 梦想风暴

周末没得闲,因为参加了一次CodeJam。

CodeJam,是公司组织的一个编程活动,就是要在周末两天时间内开发出一个东西,据说此类的活动在其他的办公室举办过。这是我第一次参加类似的活动,参加这次活动的Dev都是公司内比较优秀的程序员,平时很难把这些人都放到一个团队里面,有机会和这些人在一起工作,本身就是一件令人期待的事。

这次活动的目标是为一个支援乡村教育的组织开发一个分享平台。在活动开始之前,我们对需求一无所知,所以,几乎就是看两天内能够写出多少东西。因为这个项目要开发的是一个Web应用,从生产率的角度来看,我们当仁不让的选择了Rails作为开发工具,这也是我最近在学习Rails的原因之一。

万事开头难,这次CodeJam也不例外。在一群Dev准备甩开膀子大干一场的时候,我们发现了一个问题,没有需求。需求,是冰云(BA)和QQ(QA)在之前一天和我们的客户谈好的。QQ在离开办公室之前,把从需求整理出的Story卡片锁到了自己的抽屉里,结果,第二天,她闹肚子了。好在冰云临危不惧,顶着我们的巨大压力,把部分Story重写了出来。直到QQ重新归队,打开宝箱,需求问题才得到了彻底的解决。

正式开工,场面那是相当壮观。一群ThoughtWorker,一群快手,一帮人抢着提交代码。做用户登录部分的高喊着,他们应该是第一个提交数据库表的,结果,更新代码时,已经有了数据库版本已经到了3。那是我和WPC干的,因为我们俩负责搭建开发环境,所以,先下手为强了。不过,我们高兴得有些过,用scaffold生成的代码出现了一个拼写错误。这时我们才发现,修改这些生成代码是多么痛苦的一件事。

在这里,我们用的典型的ThoughtWorks工作方式,一对Pair,拿到一张Story卡,然后,小步前进:测试、编码、重构、提交。正是因为步幅很小,所以,就出现了大家争抢着提交代码,因为稍微慢一点,就会更新下来一片代码,这种时候,便要重新运行测试。运气不好的话,破坏了别人的测试,还要帮别人修复。其实,在一个大的开发团队中,这种现象很常见,尤其是测试多到不能很快运行完,比如有集成测试的时候,常常是运行测试之后,又来了新代码。

典型的ThoughtWorks工作方式,还有另外一个含义。一群人一边写着代码,一边互相开着玩笑。在我的印象中,ThoughtWorks开发团队从来就不缺少笑声。其实,这次参加CodeJam的人,有很多我并没有直接在一起工作过,所以,这也是一个很好的了解大家的机会。比如,在我的印象中,WPC一直是闷着头写代码的家伙,和他Pair才知道,他原来也是那么有才,可以让人笑得肚子疼。至于像徐Xgigix这种平日里就给大家很多欢乐的家伙(也许也包括我自己)就更不用说了。当然,也有比较安静的,亮亮和来自加拿大的Ricky被我评为“最安静的Pair“。

两天下来,从无到有,一个具备基本功能的网站就建立了起来。showcase的时候,看着这个小网站,心里还是很有一丝满足的。对我而言,这是我第一次做Rails项目,第一次尝试用TextMate去开发。

这次CodeJam,是在公司内部进行的,希望将来有机会把这个面扩大一些,让其他公司的人来和我们一起来做,一方面我们可以从其他人身上学习到一些东西,另一方面,也让别人了解一下ThoughtWorks是如何工作的。我相信在如何进行软件开发这个问题上,ThoughtWorks做得足够好。

UPDATE
其他的ThoughtWorker也有对这次活动发表了自己的看法。
冰云:Beijing Code Jam - 2 days agile development project
Ricky:CodeJam@Thoughtworks Beijing


关注社会人文焦点 汇聚百万博客看法 欢迎订阅博客大巴《看法》电子报


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image15:10 Twitter Updates for 2008-04-20» halostatue
Our new dog… - http://snaptweet.com/a9bf7 # up early; mostly ready for squash # @MikeG1 Yeah. Twitter’s been unbelievably quiet. # no squash today, so played tennis outside for the first time this season. It rocked. # Powered by Twitter Tools.
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image06:01 Rock Bottom Riser with violin» Projectionist

Rock Bottom Riser with violin


add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image04:53 selenography: The study of ...» Projectionist
sel•e•nog•ra•phy
[sel-uh-nog-ruh-fee]noun
The study of the physical features of the moon.

add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Click here to bookmark this link.Channel Image04:48 Real artists ship.» Projectionist

Sun 20 April, 2008

Click here to bookmark this link.Channel Image15:04 Twitter Updates for 2008-04-19» halostatue
@uliwitness to the best of my knowledge, there’s no good reason. # @marick most employers don’t think that way. they think 19th century concepts: cogs # just about to go meet a dog we might adopt # Powered by Twitter Tools.
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl

Sat 19 April, 2008

Click here to bookmark this link.Channel Image17:53 拒绝了一个订报纸的» Ruby 语言 思想驱动生活
    刚才来了一个定报纸的,60岁左右,就是让我们定3个月的报纸。     开始时候就说不定了,那个人死缠不放,说了5,6分钟,最后说如果今天不定出去1份的话将会很难办,我当然不知道他怎么难办,也许失去工作?当时觉得那个人很可怜,而且最后他说只要半价也行。不过我实在没时间看那么多报纸,怎么都不行,最后还是拒绝了,虽然不是干净利落的。     拒绝人,需要勇气。
add to del.icio.us add to del.icio.us. look up in del.icio.us.   add to furl.net add to furl
Sources