好久没有正经的写点东西了,当然这篇写的也不是什么正经的事情,只是临走之前在公司基本没什么活干了(当然也是没心思了)。就这个机会回顾一下几天前进行的freewheel年会吧。细节方面Diane已经说的够多了, 我就是再加点后期的补充:
1. 打头阵的,而且是众人期待的nobody Live版视频已经上传到这里了,由于机位和舞台有限,所以基本只有三个人的正脸,本人有幸被全程囊括在内。舞姿不济,只能已俯首弄姿+露点来博得一些掌声和口哨了。
2. Core Team的小品创意十足,而且不像我们的Nobody,公开训练。他们的保密工作十足,地方有限就在应急通道训练,应了那句话:越是艰苦的条件,越能出成就!
3. 我不知道那个当场设计时装的节目是谁想出来的,不过的确是太附和当时的气氛了,非常关键的一点是指定了Model,给了平民造改领导的一个机会。看到Model将时装上身的样子,就能知道平时大家被“压迫”的多厉害了,哈哈。最终的获奖作品并无悬念,Model Jack的独特气质给设计师们的精彩创意增色不少。
4. 引爆全场的热点应该算是本人的I Believe了,看到大家激动的表情,感觉周二、周三2个晚上的夜也是熬的很值得的。感觉这次I Believe的改编要比当年学院毕业典礼上的改编更为成功。因为不仅绝大部分的歌词都改变了,而且配合了非常煽情的MV。现场版视频可以在这里找到 I believe - Lyric by Snow on FreeWheel 2010 BJ Party
5. 当然有同学说这次的晚会不如去年的High, 可能是没有酒精的缘故吧,呵呵,也好,对于我这种拿相机档酒的人来说,可以不用找借口了。
总之非常精彩的一届晚会,也概括浓缩了FreeWheel一年的精彩快乐,希望真如我们所说的:2010将成为FreeWheel Year!爱你们,我的战友们!
今天发现了一个wordpress iphone 的plugin 不过由于之前wordpress 版本有点低所以不能使用,索性就升级一下blog 。一切还算顺利,以后无聊的时间就可以先写下blog 然后有网络的时候再同步le,可以遇见blog 的数量也会因此增加!为了纪念这个伟大时间,特发贴一封留念兼测试!
前两天用了近一年的mighty mouse出了问题,滚轮上下方向不好用了。本来想自己拆开,解决一下,不过想起了近半年前自己试图拆开小白鼠未遂的经历,遂作罢。本来想淘汰了有线的,换个无线的,但是即使水货还500多的价格,让我很犹豫!由于找不到任何的购买凭证了,所以对于保修根本一开始都没想。不过前两天一个同事去三里屯成功维修macbook pro的经历倒是给我一点启发。我也试着拨了三里屯店的电话,问鼠标坏了,还没有票,有没有任何的办法。出乎我的意料,那里的客服人员说,默认鼠标和电脑是一起购买的,所以只要电脑在保质期内,鼠标也可以包。听后大悦,电脑是去年7月底买的,所以肯定没问题。上apple的网站,在三里屯的genius bar做了个预约。然后在今天早上,小雨还在唏哩哩哗啦啦的下的时候,我去了三里屯。到了之后,工作人员首先看了一下我电脑的序列号,查询了一下,确认是在质保期限内。然后试了一下鼠标,果然不好用了,二话没说,又上楼拿了个新的,当着我的面拆开(包装和单独销售的不一样),然后确认好用,交到我的手里。说实在的那一刻我很感慨:这么多年来买东西的售后服务,这个是最痛快的一次,完全不带任何一点扯皮和解释。那一刻,我立马又再买两年apple care延保的冲动。最后还在三里屯楼下转了一圈,感觉好像不买点东西都有点不好意思走出这个门了。当然了,我还没冲动到人家给我免费送一个鼠标我就掏钱买比鼠标贵好几十倍的东西的份上。
出了门,突然回想起当年买IBM之前,销售人员给我一同叮嘱,拿好这个保留好那个,否则没法给你保修等等的。然后立马就感叹,以后再买电脑还得买苹果的…
最近在msn和开心网上向朋友们征集一些wedding上边播放的歌曲,得到的回复简直出乎意料,不仅开心网上的留言多达二、三十条,就连msn上边好久没有联系的老朋友也站出来向我倾力推荐好听的歌曲。征集到的music质量之高也是我没料到的。在此感谢所有给我建议的朋友们,我婚礼上的精彩有你们的一份功劳!简单列一些好听的歌,和大家一起分享(排名不分先后):
还有两手在另一台电脑里,暂时想不起来名字了,明天补上!
这一懒就是将近三个月啊,仅有的一点post还被twitter和开心的记录瓜分了,发现microblog还真的是blog的杀手啊。
freewheel的生活已经渐渐步入正轨,现在也可以说很好的融入了整个团队。这个开发的流程比较顺畅,很少出现加班加点赶工的现象。在FW的休闲时间基本上被“三国杀”占据,每天中午几乎都要杀一盘,weiwei还专门制作了google spreadsheets,力图使游戏专业化。FW的专业精神处处体现啊。
上个周末回了天津,和婚庆公司敲定了合同,价格虽然没砍下多少,但是对于婚庆公司表现出来的诚意和态度我们林霖还是比较满意的,所以也就没怎么压榨他们,毕竟压榨多了,质量自然就打折了。
现在kaixin的热度在逐渐退去,使用twitter的不爽也在逐渐显现。浮华褪去,唯有blog才是不变的永恒。人生不也是如此吗,尝试各种新鲜事物,到头来还要回归到最传统和最简单、舒服的生活方式。
有人已经作诗来记录这个party了,我就来点写实的记录吧,一些经过简单挑选和编辑的照片已经上传到picasaweb,并且群发给了公司所有人。至于剩下的一多半unrated version的照片,还指着他们吃几顿饭呢
所以暂时不能公布。所谓“盗亦有道”,咱不能坏了规矩。
首先必须承认,一个全部是技术人员的公司年会气氛搞得如此之high,之前的确没有想到。分析一下原因我认为说明几个问题:
1. 平时大家都属于闷骚型。
2. 组织人员很用心的安排了好多有趣的节目。
3. 奖品比较有诱惑力,能充分调动大家参与的积极性。
说说party过程中的几个亮点:
最后,不自主的套用一句Freewheeler常说的一句话,有点煽情,不过很贴切: OMG, I love us!
刚刚步入09年,08年一切事情的惯性还没有消失,引用09年时候还是经常说成“明年”,就在这岁末年初,一切还有一点点错乱的时候,我来到freewheel也已经满三个月了。
已经没有了刚刚开始一个月内的拘谨,和同事之间,尤其是UI组这边的,已经混的相当熟了,当然这要归功于公司组织的打球聚餐活动和几乎每天中午都进行的“三国杀”。所以说,集体活动,什么吃饭腐败啊,打球游玩啊,打牌唱歌啊,永远是人们增进感情的最好方式。当然作为“战友”,工作中一起完成功能需求,一起解决问题,也是积累感情的最好方式。
在我进4年的工作经历当中,FW的开发团队算是最大的了,之前几乎都是个位数的开发团队。说实在的,我始终认为3,5个人的开发团队是最好管理和有效率的,到了FW,发现大的开发team其实也是分成了若干个小组,3、4人一个组,每组配上1,2个QA人员,应该说这样的“配置”,对于我们这样的项目和开发要求,还是比较科学的。还有一点,那就是所有人都坐在一个大屋子里有诸多好处,首先,交流非常的方便,相比于一个distributed dev team, 团队的交流变得很容易:需求不清楚的时候,起身就可以和大家一起到会议室来讨论;做design的时候也能够一起在白板上将思路都画出来。这样比通过skype整个会议要强许多。
在FW还有一点区别于以往公司的地方,就是开放性,体现在几个方面:1.首先技术方面,看看我们产品所选取的技术方案和架构,一水的开源产品,同时鼓励员工将工作中的经验回馈给社区。我认为这既是开放性的最好表现,同时这也是做技术出身的公司领导和非技术出身领导的区别:他们清楚公司的代码并不是他们的最大财富,写代码的人才是他们最大的财富。这一点在我所有之前工作过的公司的老板似乎都没有很好的意识到。这又让我回想起来以前的一次blog事件,如果你向前翻翻我的blog,你就会发现有一段事件大概持续又半年多的事件,我的blog没有任何的更新。那次事件现在想起来很好笑:公司认为我泄露了公司的机密,机密是什么呢,就是如何使用ruby来实现某个功能。那个功能的确很cool,所以公司和客户可能想当然的认为实现方式是商业机密,其实就是应用一个开源的库来抓取一些网站上的信息,所以在我写了一篇blog讲了一些技术话题的时候,老板跟我说:“我不希望你的blog里边再有技术相关的话题,而且我希望你到网上、杂志上发表任何ruby/rails话题的时候要征求我们的统一。”虽然我认为这是一个极其荒谬且不合理的要求,但是我还是答应了,寄人篱下吗。不过没想到最后离开公司的导火索居然也是blog,想想这写,到现在还是忍不住能苦笑出来。
开放性在FW的第二个表现就是email,所有的公司文档,包括公司和客户签订的合同,公司的客户,每天,每个月的ad view 数量,各种数据报表,都是通过email向公司的所有员工透明敞开的。也就是公司的一切运营状况,通过这些数据都能分析的八九不离十。能够对员工有如此的信任,难怪公司的人员流失率这么低,难怪来到公司三个月从没听到谁对公司有什么怨言,难怪这样一个成立一年的小公司能够在今年清华北大的毕业生招聘会上产生不小的反响。开发在很多公司被封为企业文化之一,能够做到FW这样全面开发的公司又能又几家?我做人很实在,同时相信只要你掏心窝子待人,别人也会真心的对你,看来和FW也是挺对脾气的。
最近闲暇事件看了一本程序员写的小说,《疯狂的程序员》。基本写的都是程序员的经历,思想,工作和生活。对于里边的主人公绝影,我有一点非常的赞同那就是:责任感。我理解的程序员之余公司的责任感,就是关键的时候不掉链子,同时不以公司对你委以重任来要挟公司,也就是那种在项目中期提出“不给老子涨工资,老子明天就走”的行为。其实在FW的短短三个月,整个team给我的感觉就是每个人都有一种责任感,有一种要把产品做好的责任感。而这种责任感的产生我觉得是源于公司营造出的一种归属感的氛围,让每个人都觉得我在FW的付出非常的值得。
三个月之前,我说过时间能够证明当初选择FW是否是正确的。三个月之后,我感觉自己是幸运的,因为我对人生当中的一些重大的决定的抉择大部分时候都是正确的,这次也一样,我相信选择FW将是人生一个新的阶段的开始。目前为止我很享受这个过程,起码腰部和背部在这三个月长的肉能多少说明一些问题
来到freewheel已经整一个月了,进一步总结一下自己的感受。
1. 经过了三周的培训,以及一次验收考核,我们终于出师了。期间由于我和Gavin经过了两位Team Leader的指点,所以应该说对系统的还是有比较好的了解。我和Gavin还分别给晚我们一些进来的丹丹同学做了一次”培训“,把丹丹听得云里雾里的,有点惭愧。在第二个周末下午是我给讲关于advertising方面的知识,从两点开始讲了一下午,讲完了发现嗓子有点肿了,想想一周以来两位Team Leader一直是这样给我们讲课的,所以不由心声敬意,正所谓不当讲师不知道讲课辛苦啊。
2. 为了更好更快的了解系统,从而早日进入dev的角色,我在前期阶段被暂时分配到QA Team做一些介于dev和QA之间的事情,最主要的包括帮助Yingnan和weiwei做我们的自动化测试框架bspec。该框架的核心是rspec和cucumber,包括一些customized的用于统计的formatter,同时于cc集成。这套框架以后将成为QA测试的主要武器。今天中午,ci上边的现有的bvi和api case终于全部通过了,也算是bspec项目的小小里程碑了。
3. 昨天也就是11.4号,终于见到了DianeYu,其实并不是第一次见面,因为在我之前面试的时候就和Diane有过非常短暂的对话,类似 ”你好“ ”您好,我过来面试的“ ”请问是张雪吗“ ”是的,是我“ ”请稍等…“ 这样子,对话不超过5句,应该说当时没留下很深的印象,之前由于看过两篇程序员的文章,所以有一点印象,知道这个人应该是这里的老大。这次见到Diane应该算是正式的见面吧。早上刚到公司就看到Diane也从门口进来,正好我的座位对着门口,所以Diane径直的就往我这边走过来了,我也凭着印象认出了她,Diane亲切的和我打招呼,感觉她的起色不错,满面红光的,丝毫不像刚从地球的另一半飞回来的。简单的几句话,能发现Diane非常的热情,同时也对于我使用mac电脑表现的些许surprise。其实说实话,我刚来公司的时候真的不能相信居然还有一半多的dev和QA使用windows系统,在我的印象当中ruby/rails开发应该是和windows绝缘的,顶多是用测试一下ie的显示效果,想想自己在使用了近两年mac之后,有几天要在windows下工作,结果那2天是我近两年来开发感觉最不爽的两天,也正是由于此,所以第三天立马出去买了台macbook pro。
4. 今天,我们系统的1.9版本release了。下午的时候,公司准备了好多蛋糕和cookie,都聚集在501的一角,边吃边听Diane给我们讲她这次美国之旅的感受,当前形式对公司战略上的一些调整,融资的状况,客户的状况,等等,所有一切,没有保留,完全讲给大家。这种感觉非常的好,至少对我来说,能感觉到所有的这些都是和我们相关的,尤其是你想到,你在地球的一边作着很多努力,同时在地球的另一边有你的同事和你一起努力并且把这些努力转化成收益,这其实一件很神奇的事情。当然自已以前也经常工作于跨国跨时区的团队,但是Diane今天分享的事情让我,感觉到1)我们在做有意义的事情2)我们在今后会为我们今天做的事情感到骄傲。
基本就是这些了,记得在一个多月前,自己要作出选择是否加入freewheel,那时还有一点忐忑和犹豫。经历了一个月的工作体验,可以说现在我比较庆幸当初自己做出了今天不会后悔的决定。马上就要准备2.0的release了,属于我的战斗才刚刚开始,已经有点跃跃欲试了。
CS水平在大学期间的好长一段时间也是衡量一个学生的标准之一。现在终于也在mac上边找到了类似的游戏AssaultCube,哈哈要重新苦练一下了。
PS:用了mac快2年了,居然从来没玩过游戏,这是安装的第一款。
来到Freewheel一周,说说感受。
0. 听行政经理说我正好是FW北京office的第四十位员工。
1. 大家似乎有点含蓄,可能都是技术人员出身的缘故,比较内敛。不向原来的1688,整个是天津相声和东北二人转的剧场!不过在午间吃饭的时候还是能看出大家的幽默感,话题相当之诙谐,同时不乏对一些人的调侃。
2. 技术氛围浓郁。北京office这边完全是技术团队,所以公司里边的技术氛围那是相当的浓郁。一会听到对面的两个哥们儿在那里讨论mysql的存储过程的细节已经千万级别数据量要执行的时间,一会又看到风风火火的QA小姑娘跑过来和旁边的哥们儿就jira上的某个ticket进行讨论。偶尔回一下头看到的也都是每个屏幕上几乎都会有的黑底绿字的console或者正飞快的在netbean or emac or Intelj上边敲代码调试的一个个专注的后脑勺(背对着我坐着)。另一个能体现技术氛围的特点就是市面上能够找到的ruby, rails, html, css, linux, ajax等等书籍几乎都可以在这里找到,每个人的桌面上几乎都散落着基本,在旁边的抽屉里边也找到了不少,不过似乎都很新可能大家都是当字典用,遇到问题了才拿来翻翻。我强烈建议公司弄一个书架,将所有的书在书架上归类放好,而且每个人用过之后及时放回原处这样能够更好的管理和利用图书。毕竟经常放在角落里的书是很少有人会想起来去看的。
3. 吃喝无忧。早点,午饭,下午茶,甚至是晚上加班时需要充饥,在FW的“食品加油角”能找到各种食品和饮料,中午大家围在一起吃饭闲聊的感觉更是很好。
4. 产品很好很强大。在经过了两天的培训之后,逐渐对FW的产品和架构有了一定的认识,产品确实是一个能解决billion dollar question的东西。同时后端的系统也相当的复杂,尤其是Ad server,涉及到相当多的东西,对于性能要求很高。感觉即使是UI的系统也是非经过专门培训或者专门的熟悉广告业务的从业人员而不能够轻易使用的。毕竟business决定了这不是一个什么人都能用的系统。给我们培训的哥们儿也是相当的强,第二堂培训干脆就是徒手将整个系统结构图画了出来,同时所有的要素也是一个不落,可见其对业务和整个系统理解之透彻。
总体来说freewheel给我的第一印象非常的不错,人很nice,相当的开放宽松,氛围很好,我一去就赶上了两位同事结婚回了,看着他们分发喜糖的时候洋溢着幸福的笑容,而且全公司的所有人都通过email给他们道喜,就是一家人的感觉。在经过一段时间的培训和熟悉应该就要逐渐的参与到开发和测试中来了,现在的斗志比较足,已经嗅到了为了每月一次的release而和requirement,ticket战斗的味道…..
最近的一个项目中有这么一个功能需求,在搜索一个城市的某些记录的时候后,要将该城市附近城市的类似数据也现实出来。于是上网google一下,希望有相关api能够提供输入城市名称返回附近城市的列表的功能,找了半天似乎也没有类似api,只找到一个 Urban Mapping 不过是提供neighborhoods 查找功能的(其实neighborhoods应该是更为合理的,不过似乎客户就是想显示临近的city),没办法,只能又回到了google map,既希望于能找出一些可用的api。之前应用google map的场景也不少,但是都没有接触过GDirection这个类,这次又仔细了看了一遍api,发现似乎可以利用这个类来达到我的目的。主要思想就是,首先找出你要用到的所有城市(我们这里是CA Bay Area 附近的所有城市),然后一次调用gmap的接口,发送类似 “from: ** to: ** ”这样的query 给gdirection, 然后通过在回调方法load中调用getDistance方法来获得两个城市之间的距离,这样我们就可以任意的定义”nearby”的距离,然后根据获得的distance来判断一个城市是否是另一个城市的”nearby city”.
这个解决方法的关键步骤就在于如何将所有的city两两之间的距离自动发送给gmap api,然后返回结果。一开始我也没多想,就循环呗,于是循环调用api 发送和回调代码,大概是这个样子的:
function initialize(){
...
while(cities.length>0){
city = cities.shift();
index = 0
for(c in cities){
direction = new GDirections();
query = "from: "+city+" to: "+cities[c]
direction.load(query);
listen(direction,city,cities[c]);
}
}
...
}
// 回调方法
function listen(){...}
结果代码出了几个问题:
经过一番尝试想到从一下几个方面解决此问题:
下面给出完整的rhtml页面代码
<%= javascript_include_tag "prototype"%>
Distance:
0
<%= link_to_remote "Load results", :url=>{:controller=>'home',:action=>'save_distances',:method=>"post"},:with=>"'results='+results.toJSON()" %>
PS: 这篇文章和上述解决方案有神似的地方,基本上讲的一回事.
10.1 以后就要开始新的一段历程了,在家里soho性质的工作了进两年以后又要重新回到职场了。说实在的前一段时间同时面对两个offer还是抉择了一段时间的,一个是丰厚的工资回报,一个是比较看好的前景,当然也非常幸运自己能有这种抉择的烦恼,最终我还是选择了一个前景比较靠谱的机会。
今天和以前的同事一起吃饭聊天,发现原来一起并肩战斗在代码第一线的一个哥们已经开始转向运营的方向了。当初最开始选择做developer的时候并没有想过能做多就,当时的想法很天真,希望做个懂技术的销售,或者市场策划,不过后来逐渐发现,原来开发带来的乐趣要大很多。一点点的开始喜欢上了这个行业,并且想把他做精做好。4年以来,每天始终保持着学习的状态,有着对未知领域探索一下的心态,对于自己的这一点也是比较满意的。有朋友说我运气比较好,呵呵,我觉得还是自己的准备还算充分。
新的一段征途就要开始了,我感觉会遇到很大的挑战,因为从和朋友的谈话众感觉到,这个位置要接触的东西比以前接触的都要复杂,性能要求更高,是一个典型的“大家伙”。既然自己已经做出了选择,那么希望在几年之后回头看的时候,会为今天自己的选择鼓掌。
一点随想,没什么逻辑,想到那里写到那里。