Geoffrey Grosenbach谈PeepCode

个人简介 Geoffrey Grosenbach是一位开发者,同时也是一位企业家──运营着PeepCode,一个专门提供关于Ruby、Git以及其他主题screencast的网站。Ruby on Rails的官方Podcast也出自他手。

   

1. 这里是多伦多的Ruby Fringe,坐在我旁边的是Geoffrey Grosenbach。先介绍一下你自己?

我是一位开发者、有抱负的企业家,运作着一个销售Ruby/Rails相关主题(以及分支,例如Git等等)screencast和迷你电子书的公司。

   

2. 我看见你的T-shirt上印着Peep Code,什么是Peep Code?

那就是我的公司。实际上我的公司全称为Top Funky Corporation,Peep Code是我们的主要产品,头脑风暴想出很多不同的名字,最终选择了这个,效果不错,读起来很顺口,大家也都很喜欢。

   

3. 你刚刚提到,主要做Ruby以及其他相关主题的screencast?

没错,每集的时长大约1小时,9美元,如果你购买套装或者订阅整年的,会便宜一些。虽然我们有一些是入门级的,但是我正试图涵盖更多高阶的主题,就是那些没有在书本中提到的或者即使在书中有涉猎但开发者想了解它并尽快掌握的。

   

4. 你是如何选择主题的?

坦诚讲,在我开始做的前两年,大多数主题的来源是看大家的blog谈论些什么,或者我对什么感兴趣,通常都是一些我想学习的东西,我就把它拿来做成 screencast了。但是现在,我会越来越多的从商业的角度去考虑这件事:“什么会卖的好?大家真正想学的是什么?”不过,我仍然会挑选一些,或许不那么流行,但是我认为确实能够吸引人,并且应当去涉猎的主题。

   

5. 接下来半年你会挑选哪些主题?

下面六个月里,看起来Rails本身已经越来越稳定了,但是却有很多围绕在它周边的主题非常有趣,大家都很感兴趣。我想,我会针对复杂的验证系统(authentication systems)、前端内容方面,比如CSS设计、还有比如组织大会的公司,Hampton Catlin就是其中的员工,想请他讲讲Haml模板、语言,等等。同时,还想做一些其他的主题,比如我正在制作关于Mac开发、iPhone或者 Objective-C,诸如此类。

   

6. 你怎么看Haml?

有两件事困扰着我:一个是HTML太冗长了,你必须写完整的尖括弧,必须关闭所有的标签,我们能去掉这些吗?;第二个是我平时要生成很多pdf以及其他东西(除Latex以外),人们并不是坐在那儿,写原始的pdf代码,他们使用函数库去生成它。他们希望在高一点的层级去工作,把那些东西提取出来,但是人们对HTML又很情有独钟。所以,我很喜欢Haml,它做到了这一点,消除了我们不得不写的多余字符。Raganwald,我记不清他的全名了 ──Reginald Braithwaite──他说:“如果你真的非常需要通过IDE来写程序,那么或许你使用的这本语言有缺陷,它需要这些宏来帮你搞定,当我发现 Haml,我就不再需要任何bundle(插件)和快捷键了,所有我需要写的就是一个字符,或者几个字符,我很高兴能这么做。” 我认为这个评论很中肯,不再需要bundle。

   

7. 你认为Merb怎么样?有做过Merb相关的screencast吗?

我做了一个beta版的Merb电子书,还想做一个相关的免费screencast。我非常喜欢Merb,我的blog就是用Merb写的,我用的是 Merb 0.5,这已经是半年以前了,我认为它有很多不错的功能,我很赞同它保持精简内核的想法,这就像Linux,只关注它自身的内核,任何人可以自行添加 Windows管理器或者其他任何东西。在这点上,Merb做得很棒,但是现在它还处于开发阶段。我的blog在如今的Merb版本下也无法运行,因为已经改变太多东西了。1.0的版本好像就要在几个月后发布了,真心的希望它会更稳定,大家也都用它来尝试作为某些应用的替代品。

   

8. 大家都知道你也是Rails领域的采访者,你们已经做过多少个采访了?

总共超过80个,有一些采访是由别人做的,我想我自己的话,应该也做了有75个采访了。

   

9. 在做过这么多采访后,你有发现Rails社区中的变化吗?显然,肯定会有一些变化,但是你所关注的是哪些?

社区中有各式各样的人,活跃的,不活跃的,新人与新技术也在不停地涌现。很高兴与Phusion的人在一起,他们开发了运行Rails和Rack应用程序的Apache模块,这些人都很有个性,与他们交谈是件很愉快的事,希望在Berlin的RailsConf大会(欧洲Rails分会)上能再次见到他们。所以,我认为现在对大家来说有非常大的灵活性,有很多机会,任何有想法的人,都可以把想法实现,并由此成名。希望我能接触到这样的人,并对他们进行采访,挖掘他们背后(想法以及所开发的软件)的故事。

   

10. 你是如何接触到Rails的?

大学期间,我做了大量的Java开发。都是服务器端的,而不是Web相关的,比如网络爬虫和类似RSS的东西,我们需要监视不同的政府网站,为我所在的公司寻找合作的机会。然后我接触到了Perl,再然后我才听说Ruby,大概是2001年,从Dobbs博士的一篇文章中所得知的。它听起来非常吸引人,不过当时西雅图的Perl社区非常活跃,很荣幸能参与其中,我从与社区中的人交流学到了很多东西,比如Brian Ingerson、Damian Conway,然后还走访了西雅图。那时候,我对Perl很痴迷,但是到2004-2005年,我听说了Rails,尝试了一下Ruby,我发现Perl 的优点在Ruby中都有,此外添加了很多操作对象的语法特性,更加容易实施,不用多说热情的社区,那时候不同领域的人也都纷纷涌入,我写了几个不错的软件,赢得了一些声誉。这大约是2005年。

   

11. 所以,基本上Rails刚出来,你就开始接触了。

没错,大约几个月后。

   

12. 给我们介绍介绍你现在维护的几个开源项目。

这很有意思,有时候很难把blog、podcast和开源项目都兼顾到,而且同时还要运作一个公司。最开始,我写了 Gruff(http://rubyforge.org/projects/gruff),一个图形库,其中包含有针对小图片的spark lines(译者注:一种曲线图),其他的图形库一般没有这个功能。我还写了一些其他的小东西,比如有个叫bong的,用于对http打包(wrapper),Httperf是用于通过一组URL来做性能测试,可以从你的网站返回一些信息。有一些人,给它打了一个补丁,可以从那个信息中输出图片。然后我把它修改了一下,让它可以运行在AB上,因为Apache bench使用的要更广泛,也是许多机器的默认配置。我也用Rails写过一个相册,它还运行在我的网站上 geoffreygrosenbach.com,不过我已经好几年没动过它了,但是有一些人对它作了修改,让它能够把图片存储在Amazon S3上,并通过一些最新的JavaScript实现翻页效果,等等。上面这些,这就是我手里的几个项目。

   

13. Gruff进展如何了?还在用它生成图片?

是的,它的初衷很简单,就是生成好看的图片,通过简单的接口,你只需给它附上标签和数据,剩下的工作由它来帮你搞定。它可以生成几种不同的图片:线状、柱状、网状图等等。而饼状图有很多不同的选项,我在考虑今后把它们去掉,但宗旨还是尽可能的把接口简化,让人们能够生成好看图片的同时,并能传到出他们想要的信息。

   

14. Gruff的算法是都由你自己写的吗?还是借用了其他的库?

实际图片的生成现在使用的是RMagick,但是与它不同的是,你首先是生成了一个空白的画布,然后再开始生成不同的文本、线条、图形等等,以此来生成你所需要的图片。此外还有一些其他的开源代码。有人帮忙修正了标签位置的问题。而且还有人让我添加一些其他的XY标签。我们也希望添加XY坐标,但现在依然是通过RMagick来生成图片。

   

15. Gruff的输入是如何实现的?你是怎么为它写的代码?它是DSL吗?有多复杂?

我并没有试图把它弄得过于奇特,就像DSL一样。它基本上只有3或4个方法,如果你想设置图片的标题,想传递一次或多次数据,或者多组数据,那么你可以选择性的做这些事情,就像设置颜色主题,或者大小等等。它仅仅是一个Ruby对象,你只需要把它初始化,设置一些值,就搞定了。有些人确实写了一个语言模板,你可以在Rails中使用,通过一个独立的文件作为视图层,也是用来生成图片。但是,这并没有什么特殊的,远远用不着DSL,仅仅通过Gruff对象的几个方法就可以搞定。

   

16. 我们看到Google Charts也已经发布了,它与Gruff有什么关联吗?

是的,Google Charts也是一种不错的实现方式,可以很快捷的生成图片。在我看来,个人的数据我希望把它保存在服务器上,并不想让它通过互联网发动到Google的服务器上,特别是财务这类的信息。我喜欢可以在本地运行,并且能给我自己生成图片。更别提当我离线的时候,我希望可以运行在我的笔记本上。而且,现在的 RMagick并不是那么的难装,大多数的Linux中都有内建,它已经被打包了,通过脚本就可以在你的Mac OS X中创建好。而在几年前,它确实安装起来比较困难,大家使用起来会遇到很多问题。对Gruff和Google Charts来说,使用哪一个,就看你具体所要完成的任务了。

你可能感兴趣的:(Geoffrey Grosenbach谈PeepCode)