远程结对编程工具

同一个屋子里面分开进行Pair Programming,在熟悉以后我们就可以进行远程Pair。推荐阅读Every Day Scripting With Ruby的作者Brian Marick的这篇博客“Screen Pairing”。还有两个软件可以帮助我们做远程Pair,Mac下可以使用TeamViewer还有SubEthaEdit,还有可以参考关于协同编辑的wikipedia页面

TeamViewer的原理就是桌面共享,它可以轻松的穿越网络,而且可以免费使用。SubEthaEdit是John Resig的最爱,它还有一个在线的协作版本,原理是两个人可以协同使用的编辑器,互相可以看到修改的内容。这样的工具配合Skype这样的视频IM做远程结对就成为了可能。

笔记本与移动硬盘之间的尼龙搭扣

发现一个对Developer使用laptop的好方法,在你的屏幕背面粘上尼龙搭扣(毛茸茸的那边),然后在你的移动硬盘上也粘上(带很多小钩子那边),这样在移动办公的时候你就可以把它们粘在一起了!这样就可以把你的巨型iTunes、iPhoto library外置了。

而且在你把它们放在包里面的时候你还可以方便的把它们分开。好点子。这个点子来自这里:Screen pairing

1.5T硬盘到手

我的硬盘总是不够用,因为以前有集图的习惯,也有收集音乐的习惯,再加上现在高清电影的泛滥,还有吃空间的TimeMachine,所以硬盘吃紧是没办法的事情。正巧赶上硬盘再一次降价,1.5T的Seagate 7200.11系列单碟375G的硬盘只要899,所以赶快再上一块(小插曲是,老婆说这个算是生日礼物,sigh~)。配合3个月前入手的1T那块,基本解决现在的硬盘不够的问题了。

我家两块外置硬盘,一块被命名为DeepForrest (1.5T, USB),也就是现在这块。令一块被命名为BlueRay (1T, USB+1394a)。上图:

P1110155.jpg 一块儿到来的还有一个Tp-Link的WL-841N的802.11n路由器,300Mbps的无限连接,评测的数据是可以达到100Mbps也就是我家有线网的速率。

P1110157.jpg 型号是ST31500341AS,就是1500GB空间,375G单碟,4碟装,台式机硬盘。听说CC1G这个固件版本不是很好,我做外置硬盘倒是无所谓。

P1110159.jpg 现在的Seagate使用了和WD一样的反装电路板,两年以来这个技术已经普及了。

P1110162.jpg 装到盒子里面去。我使用的是WD的硬盘盒,实际上是拆机货。WD的外置盒子其实质量很好,没有访问的时候会自动断电休眠,还有个好处就是便宜。

P1110167.jpg控制芯片是目前高端盒子常见的Oxford semiconductors出的OX921S,这个盒子是三个里面最简单的,单USB。

P1110151.jpg 他们叠放在我的桌子上就是这么个效果,就是那个破音箱上面的三个发光的小家伙。这个照片是上周日的,实际上硬盘还不是1.5T的,不过意思是一样的。

现在正在迁移数据中(mv -v)。以前很喜欢玩硬件,常去Q3ACN雷神硬派玩,也经常写评测,但是现在已经没有那个闲心了。但是我依然喜欢玩硬件,我依然对它们充满好奇心。^___^

我的书柜

看到Fenng同学共享了自己的书柜的照片,我也想把我的书柜照个像放上去。

这几年买书也上万了,当然不都是计算机的书,还有很多闲书 P1110170.jpg

经典的技术书籍占了我的书柜的绝大部分区域。还有一些漫画书,大都是大学时代留下来的。 P1110173.jpg

一些放不下的书就随手放在转角的书柜里。 P1110171.jpg

为书花钱大都值得,不过技术书容易过时,处理的时候又舍不得。即使是好书,它也会对你的移动性产生不良的影响,搬家的时候这些东西可是太沉了。

招聘美工的一个评语

我们招聘美工的过程中,有一道题:“一个UI的Hifi prototype,客户感觉系统有些压抑,希望修改一下这个设计”。前面两个面试者我们都让他当场做,可是结果不理想,主要原因是他们不习惯Mac下的Photoshop或者Fireworks。所以第三个面试的时候,我们让她回家试试。结果让我很失望,主要原因是美工的思路不对。她修改了不少细节,修改了几个按钮的设计,加上了水晶的反光,修改了Tab设计,加上了玻璃的风格,可是她无视了对比度过低造成的界面太灰的问题,也无视了排版的一些基本的禁忌(比如一致性)。

我非常认同的一句话是对于美工的日常设计90%都是排版工作。那么我列出我对这个作业的考察点:

  1. 排版调整:突出表现系统的信息架构,起到视觉焦点引导的作用。
  2. 颜色搭配:视觉的调整,改变对系统的整体印象,引导用户使用系统的情绪(紧张、放松、严肃)
  3. 细节调整:也起视觉焦点的引导的作用,帮助用户按照我们的交互设计使用系统。影响用户的潜意识,提升用户对系统质量的认同。

它们的优先级是60%,30%,10%,也就是说排版和颜色最为重要。

这不是一个系统的想法,并不适用于美工的日常工作,我主要强调做这样事情的一个思路,美工需要用自己的工具来引导客户。

重构我的blog

代码重构(Code Refactoring)是一个编程的术语:在保留原有的功能的情况下改变计算机程序代码让其容易被修改为适应变化、增加可读性或者简化结构。这个实践对于产生高质量程序非常重要,而且这种想法不仅限于编程概念,也完全可以用在生活上。我的blog里面也会经常用到这个词(重构我人生),所以今天我决定就把生活的记录工具blog给重构一下

对于程序员朋友,这里插播一个问题,我发现中文的wikipedia对于代码重构(Code Refactoring)的定义非常的不准确,摘抄如下:

代码重构指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

为什么呢?因为martin folwer使用的定义和英文wikipedia这个一致:

Code refactoring is the process of changing a computer program’s code to make it amenable to change, improve its readability, or simplify its structure, while preserving its existing functionality.

中文解释里面所说的重构需要借助工具完成支持纯属放屁。而且遗忘了重构的一个目的是为了让代码易于维护那么就没有说明重构的经济意义。所以,大家看看我上面那个翻译如何?一起修改一下我去修改一下wikipedia的条目。

回到我要说的blog重构的话题。我现在的blog使用的是Wordpress,但是再往前推我还在Live SpaceBlogJava写Blog。但是那个时候没有使用Tag来管理blog post,所以都使用了很复杂的分类(Directory),再后来我把Live Space的blog通过MSN Space mover迁移到了现在你阅读的这里,所以那些目录也就都被迁移过来了。

所以多分类Category是我第一个要重构的地方。原因在于分类最早的设计是一个严格的树形结构,也就是分类是一个逐级缩小范围的概念,它适合于自上而下的查找。比较常见的就是传统电子商务网站的目录和网站的树形导航。但是这两年大家发现很多人的阅读习惯并不是这样的,尤其对于blog这样的形式。blog我们分成两种场景来分析分类的使用:

  • 搜索引擎或者链接:这种情况下用户是偶然看到了一篇他感兴趣的文章,那么他下一步会查找相关的主题,这个时候分类会是他第一个寻找的。但是,很少有用户会在乎分类的树形结构,而是对哪个具体的话题感兴趣就点进去。所以最好的方式就是话题和分类一一对应。如果你的blog的话题太多了,那么你一定不会注意到你的分类也太多了,这些噪音会影响用户探索你的blog。所以人们发明了Tag,也就是一个简短的关键词来定义你的一些话题,每个post还可以打多个标签,这个也方便了你自己,不用在给文章分类的时候抓耳挠腮。然后人们使用Tag Cloud这种方式突出你的blog的最重要的关键词(也就是统计使用频率最高的Tag配以较大的字体),它也帮助你了解自己写blog的习惯。那么对于这种场景,Tag Cloud是比Multi-Category(单篇文章多目录)更好的详细管理主题方式。
  • 订阅:平常我们在使用工具订阅blog的feeds的时候我们一般都是按照这个时间序列来阅读,我们会忽略不感兴趣的feed,然后阅读感兴趣的,那么订阅的feeds需要满足这种习惯。不过最常见的订阅方式是订阅全部,这种方式有的时候不太好。比如我们公司有个员工blog聚合服务,我没有加进去,因为我的blog有很多生活的内容,别人肯定并不想阅读那些部分。也就是说不区分主题的feeds输出会让人看到很多不感兴趣的主题。如果你使用了Tag Cloud,它可以区分主题,但是它太多了,没有人会逐个Tag Cloud订阅你的blog,人们希望有一种稍微粗略一些的方式来订阅。我发现的一种最好实践就是按工作/生活的主题区分,对于技术人员也常见技术/非技术的分开,这种分法很粗放,但是却很有效。因为如果我是生活上的朋友我就会关注你非技术的post,而相反如果我是你的同事或者社区里面的朋友,那么我会关心你的话题。所以,这种场景下的一个最佳实践就是让你的blog的分类尽量的简单,2-5个我觉得就可以了。

啰嗦了半天,其实行动很简单。我需要把现在复杂的Category转换为Tags,还有添加新的简单分类“Tech.技术”和“NoneTech.非技术”。在Wordpress里面这个很简单,因为在wordpress里面Tag和Category实际上是同样的东西,但支持不同的显示方式。在wordpress的后台的Manage->Categories下面有一个category to tag converter的链接进去选择你想要转换的Category然后转换一下就OK了。一个简单的操作以后这些Category就都不见了。那么所有的文章就都跑到Uncategoires下面了。我好需要重新做一下分类,这是个体力活……不过我使用了Wordpress的客户端来实现。

那么下一步就是重构blog的下一个话题,选择一个客户端工具来更新你的blog。我试用了ecto和MarsEdit,它们是mac下两个有名的blog客户端,它们对blog的管理功能都差不多,但是编辑方式不一样,其中ecto的编辑器是所见即所得的,而MarsEdit是一个直接写HTML源码然后预览的界面。我对HTML烂熟,所以用MarsEdit没有困难。大家可以根据自己的需求选择,它们都是需要交注册费的。试用客户端的好处就是不用忍受浏览器的崩溃,不用忍受网络闪断造成的提交失败,不用因为写post时间太久而session过期,可以方便的存在本地,可以在离线的方式下修改/添加blog post,这些功能可以帮助你频繁的写blog,而不是每次都需要准备很久来登陆->新建post。我其实已经试用了几天Ecto了,比较满意,但是Ecto的试用版不能选择取回条目的数量(不知道注册以后是否可以?),所以对于修改分类这样的任务来说MarsEdit才可以修改我全部的项目。

在整理blog post的时候,我发现我这里有很多以前留下的Twitter聚合内容,我把它们都删掉了。以前我曾经想把micro blogging(微博客)的内容也放到blog里面,可是我发现有了FriendsFeed这样的工具以后我就不需要用blog来聚合了,这样是一种明显的Bad smell-重复。冰云同学批评过我聚合Twitter,他说的很对,现在我本人也很反感聚合Twitter,有这种行为的人的blog一律退订。

上面说的这些就是今天重构的实践,之前我还做过几个实践:保持只有一个blog服务(不需要同时使用Space和blogjava),如果不满意BSP(Blog service provider),那就自己买空间架一个Wordpress。定时备份你的Blog,并且最好有工具让你的blog可以转移成中立的源文件(如SQL、XML),方便以后迁移,选择BSP也可以以这个为标准。

最后总结一下我提到的重构blog的几个实践:

  • 将复杂的Category转换为Tag,删除多余的Category,使用简单的Category,2-5个为好
  • 使用一个Blog客户端,事半功倍
  • 停止使用Twitter和Google Reader聚合生成blog post的功能,如果需要可以把它们放到你的blog的sidebar上,而不要生成到feeds里面

如果以后还有其它重构行为我还会更新这个post。今天已经好累了 -。。-

工具-不会用不丢人,怕会用才丢人

工具就是进行生产劳动时所使用的器具。工具的目的在于提高生产劳动的效率。感慨于一些真正的Geek的blog,我也想了一些工具对于我的重要意义,用来作为下一段的目标。

人家说工欲善其事必先利其器,还有磨刀不误砍柴工,实际上在说明工具对提高工作效率真的非常有意义。

今年的我,上游离于前端开发和后端开发之间,同时我还要在两个不同的团队(ThoughtWorks StudioCruiseMingle两个产品开发团队)之间切换,所以对于我来说频繁的需要Context Switch(工作环境切换)。两个团队所使用的技术也不同。

  • Cruise是一个标准的Java团队,大家的开发工作站都是Ubuntu环境,IDE是Intellij IDEA,源代码控制是Mercurial(aka. HG),自动化构建脚本基于Ant,持续集成工具就是自己开发的Cruise。
  • Mingle团队是标准的JRuby on Rails团队,大家开发机器是Macbook pro或者Mac mini,编辑器是TextMate(JRuby部分有IntelliJ IDEA的工程),源代码控制是Git,自动化构建脚本基于Rake,持续集成工具有两个,其中提交前使用的precommit CI是基于我们公司的开源产品CruiseControl.rb,而主持续集成服务器是基于Cruise(也就是前面那个团队的产品)。
  • 两个团队所使用的敏捷环境是Mingle,用过Mingle的朋友知道,这个NB的工具的可配置性很高,这两个团队的Mingle项目模板区别很大。
  • 这两个环境的区别还是相当大的,而且每次我切换了团队(大约2个月的周期),我很有可能就需要很大的更新我的Macbook pro上面的各种库。
  • 当我做前端开发的时候,我还要切换与我的Mac上的Photoshop CS3和Mac的VMWare Fusion上的Fireworks中(使用Windows的Fireworks的原因是授权,我的正版授权是Windows的)。使用Fireworks的原因是我们的设计师使用它,所以我需要使用它来调整一些小的设计。
  • 在做Javascript逻辑的部分,我需要在Firefox 3/2、Safari 3、IE6/7(VMWare Fusion)之间切换,每个浏览器都有不同的附加调试工具(主要的三个Firebug、Inspector、IE Dev toolbar)。

我想对于一个强悍的程序员(最近比较崇拜的delphijhdcola云风等神人)来说做这样的环境切换也许还是可以的。可是对于我这个不善于multi-task工作的人来说,马上让脑子适应不同环境,熟练使用不同的工具就成为了一个挑战。

所以,结果是,这一年中,我基本上对于这些工具很少深入学习,基本上就是凑合着使用,如果没有通用的快捷键我就懒得去翻手册学习了。结果就是使用HG的queue功能(超级有用的qnew、qrm、qpop、qpush系列)的时候经常把自己搞崩溃(今年居然有和李彦辉教授在pair的时候搞丢了2个小时内的修改,相当丢人),所以后来在使用HG的时候异常小心,生活在心理阴影下面。而对于Git,我居然完全没有使用过stash功能(和HG的queue类似)。昨天胡凯还问我是否用过bisect,是一个折半查找坏提交的功能(在HG和Git里面有等价的功能),我完全没有使用过。因为这些精巧的基于命令行的源代码控制工具对于程序员来说非常之重要,从这个角度体现了我对于工具的不求甚解达到了什么程度。突然想到梅兰芳里面十三燕那个很棒的台词“输不丢人,怕才丢人”,用不好工具没事,但是害怕学习用工具那就是很丢人的问题了。

那么自我分析的结果就是,由于环境切换,我缺少了专注,形成了对学习环境中的工具的恐惧,最后影响了我的工作效率。

下面的内容用来自勉,分析一下工具对于我到底有多么的重要(也就是说这个是我使用和学习工具中比较Happy的部分)。对于还没有注意到工具重要性的朋友,可以关注一下,看看是否有所借鉴。

  1. 关于GTD:去年看了不少退墨的文章,我深感这种意为减轻压力的“Todo list“对我的重要。最早我使用了文本文件来记录,每天一个文件。但是后来发现跨天完成的任务使用这种方式不好,需要手工拷贝。所以后来按照每个Context(家、单位、电脑、手机…)放一个文件,然后使用日期作为风格,跨天的任务我就拷贝一下,这个文件本身放在EverNote里面实现多平台共享。但是后来我发现这样也不好,因为不明显,也不好做计划。再后来我开始使用iGTD,发现似乎不错,它的结构比较简单,而且它分开了context和project两个概念,所以像“OpenParty、Mingle、Cruise、梦想”也有了自己的归宿。GTD的做法,please google之。
  2. 关于工作和休息的切换:一开始我惊艳于Livid修改过的TimeOut这个软件,但是它运行的经常很慢。后来我使用了原版的AntiRSI这个抗劳损软件,它的原理就是根据你设定的时间提醒你做短休息(一般是15分钟,站起来休息30秒),还有长休息(一般是45分钟,站起来休息5分钟)。再做结对编程的时候弹出它可能你的pair会有意见,但是你需要通过它的实际效果来感动他们。结果是Mingle的队友已经基本上都在使用它了。
  3. 分布式版本控制工具:DVCS可以帮助你更好的管理本地分支,让分支变得轻量,而且它还可以帮助较大的分布式团队更好的管理自己的本地主干。而且他们里面还有很多帮你管理提交习惯的工具,比如前面提到的提交队列工具,可以鼓励你使用更加频繁的本地提交。当然使用分布式版本控制工具的前提就是你要仔细阅读一下hand book,学习一下他们的基本概念和原理,这样才能达到更好的效果。
  4. Feeds工具:我使用Google Reader阅读文字型RSS Feeds,使用iTunes订阅Podcast。
    • 阅读工具多了去了,你的选择很多。但是要做的是学会更好的使用这些工具。今年从Patrik lightbody那里学会了重构Rss Feed订阅的重要性,要减少一个feed使用多个tag进行管理,因为一般鼓励在一定时间段里面保持未读feed不要积攒太多(这就失去了持续阅读的能力),但是如果使用多个Tag标记feed,那么在统计未读条目的时候往往会重复统计,会造成很大的阅读压力,而且对于给自己的不同feed组定不同的优先级也不利。
    • 所以我首先做的是将所有的订阅单一化,分类清晰了很多。分类有一个小技巧,不要对个人博客按照主题打标签,比如以前我给robbin的博客打上java的标签,而livid打上了apple的标签,那么在我决定要看哪个标签下的主题的时候就会感觉很迷惑,因为个人博客都没有固定主题,所以这些标签就编程没有意义的误导了,所以我现在对于这类feed直接标记为“Interesting Person(有意思的人)”,我可以给这些人很高的优先级。
    • 另一类是如GizmodoLifehacker这种信息门户型,他们每天要更新50+的新条目,所以我把他们放到一个单独的如news portal这样的分类里面,我可以给他们很低的阅读优先级。
    • 不同优先级的条目在Google reader里面还可以对应列表/展开的方式查看,可以很好的提高使用效率。再有就是Google Reader的快捷键,在吃午饭的时候,右手用来吃饭,左手可以通过一个空格健来实现滚动和查看下一条,s是标星,Shift+S是共享,这个基本上就可以实现单手阅读了,很方便。
    • Podcast是坐地铁上班时很重要的学习工具:因为地铁和很多交通工具非常拥挤,即使带上书也没有空间看(尤其时备上电脑上班的我们)。所以在非常拥挤的时候我会选择听音频的Podcast,如锵锵三人行(了解时事)开卷八分钟(了解好书,不过越来越没意思了)、Ruby on Rails Podcast(Rails的)、RailsEnvyTackSharpJDD主讲的关于摄影)等等。在不是那么拥挤,也就是胸前有10厘米以上空间的时候,我会选择看视频Podcast,最精彩的是TED Talks的演讲,不错的有Apple Quick TipsX-Play Game Previews等。用这种方式消磨时间比用PSP好很多。这是一个购买iPod touch 2的理由^__^
  5. 信息分享服务:这个又是一个很大的话题。大家在聊天的时候经常感觉很有收获,原因是兴趣相投的人在互通有无可以带来很多的有用信息,而不是像电视的新闻节目或者报纸那样给你带来没有针对性的噪音。社会化网络SNS实际上是个很好的分享有用信息的平台,可是我不是很喜欢facebook等给我带来的参与压力,所以我一般通过一些通用的分享服务来满足自己的需求。
    • 我一般通过Last.fm来实现音乐播放历史的跟踪,通过它的推荐服务来发现一些我喜欢的音乐。这实际是一个相关度算法的应用场景,它不同于简单的试听型的网站(现在国内的xiami.comkedou.com我觉得基本上属于这种类型),它的目的不是给你知道的音乐听,而是根据你听过的音乐推荐你一些音乐听,收集音乐品味的过程叫scrobbler,我在使用iTunes放音乐以后会被自动同步到last.fm并用来做数据挖掘。使用Last.fm服务需要注意的就是要及时更正你的mp3-tag信息,这样你提交的数据就不会是垃圾,这对未来享用推荐服务非常重要。但是现在我发现的一个问题是,由于中文有简体和繁体,所以很和多时候Last.fm的亚洲歌手的名字都会出现多个版本,这给推荐带来了难度,也许国内的服务上可以帮我们解决这个问题吧。使用iTunes的朋友可能苦恼于mp3-tag信息乱码,那么使用Glider开发的ID3Mod2这个软件。
    • 看电影和看书通过豆瓣就很爽了,我对它使用的很初级,但是豆单等已经聚合过的相关分组已经可以给我看电影很多启发了。使用豆瓣这样的工具我们要做的就是尽量及时的更新你的阅读列表,这样豆瓣得到你的更多数据,那么推荐也会更加准确。
    • 我非常珍惜Google Reader的share功能,尤其是share with note。因为这个几乎是最好的和靠谱的朋友分享信息的手段,我一直认为这个是最好的一个人肉过滤器,你的朋友圈子越准确,得到的share也就更符合你的品味。自己在share的同时,可以看到你的share的朋友就和你做了非面对面的交流。而且有的时候如果你1个月没有读feed,已经无从看起的时候,完全可以把他们置为已读,然后去看朋友的分享。这减少了很多信息过滤的成本。
    • 最后一个重要的分享服务就是Twitter了。Twitter解决了你不能和所有的你想交朋友的人聊天的缺憾,这样你可以轻松的follow业界大牛,如d2hkent beck等。它也是一些重要信息的最快速发布场所,同时也是一个重要的社交场所。在使用Twitter以后我发现我甚至越来越少的在使用IM软件了。使用Twitter这个工具你需要做的就是有节奏的发信息,而不是三天打鱼两天晒网,这样大家不会因为你太贫而退订你,也不会因为常年见不到你的twitt而忘记你。
  6. 信息存储服务:网上看到好东西我们经常想收藏,这种行为叫做网摘,最早我使用CyberArticle(荣幸的买了正版,用的很High),而后用了Linux,所以改用Scrapbook,作为firefox的插件它是跨平台的。此时我的同时推荐我使用在线的Google记事本,这几个软件都能很好的做网摘。但是这几个软件的缺点是缺少协作,那么后来最常见的就是社会化书签应用,delicious,在浏览器装个插件以后它可以帮你用tag管理书签,好处是还顺便帮你做推荐服务,很方便。后来我发现并非只有这些数据需要存储,我们还需要网络磁盘服务,这类服务很多,我个人倾向于使用Dropbox,它的好处是各个平台都有客户端(Win、Mac、Linux),而且是用户空间磁盘系统,用起来和本地磁盘一样,它同样可以用来在项目组之间共享一些文档、电子书等。最后,我还推荐一个类似M$的OneNote的免费在线文档、及数据存储服务EverNote,我用它来存储一些简单的文本文档,还有用它写一些视频note,因为它有一些方便的工具帮你来做音频或者视频的记录。(对了,还有梦断代码里面描述的难产的软件Chandler,它是一个本地的数据中心软件)
  7. 快速启动服务:就是使用键盘快捷索引的启动工具,有代表性的是QuickSilver(是Mac下的,详情看Robbinlu的这篇blog),它显然比Mac自己的Spotlight好用(而它又比win下的很多桌面搜索强很多很多)。通过培养这样的软件可以帮你极大的提高效率。Windows下有launchy也很不错。
  8. 还有很多,但是我没有必要一次全部说完……

下面要分析一下我做的不好的地方,迎来跟踪我的改进:

  • 没有认真的学习Git和HG的用法,没有很好的贯彻他们的最佳实践。
  • 没有很好的学习shell。很少给自己写脚本来提高每天工作的效率。对很多*nix命令还很不了解,如wc、du……,对于微语言awk等不了解,这就限制了我制造自己的组合工具的能力。
  • 没有学习如何使用Mac的automator和appleScript。
  • 对于C语言的了解太初级,还是大学上课的水平,而它又是读懂很多code的关键(我并不想成为c程序员)。
  • 没有很好的整理好自己在各个网站的帐号。所以经常忘记去使用这些服务。
  • 没有很好的整理自己家的硬盘,没有对里面的电影和音乐进行过删减。因为数据也会过期,如果总是舍不得那么它们都被积累为工作噪音。所以要勇于与过去告别。
  • 没有好好学习Photoshop和Fireworks的使用,总是在使用低效的重复劳动。
  • 没有管理好自己的博客。我今年做了的事情就是把blog从BlogJavaLive Space移动到了朋友的机器上的wordpress上,但是由于访问速度比较慢,而且离线的时候写东西不方便,我今年也很少写blog post。
  • 没有学会使用一个有效的照片库软件,iPhoto的分库功能我最近才知道,不过没有认真整理(要减少单个iPhoto Lib的大小,这算个最佳实践)。我也应该学会使用一个LightRoom或者Apeture那样的面向摄影的后期软件。
  • 没有学会使用图片分享服务,我游离于flickr、picasa web和好看簿之间,前两者现在都有了iPhoto客户端,但是我还没有很好的使用。在9的内容做好后,我要更好的利用图片分享服务。
  • 没有很好的学习Ruby on rails,虽然一开始仔细阅读并且也用1.0的rails写了些小应用,但是我的知识没有及时更新。
  • 没有很好的清理自己的数据遗迹,我这个人很注意备份,但是没有注意清理过期的备份,想个好的工具来解决它,如TimeMachine。
  • 没有使用好Facebook和Linkedin这两种SNS,它们实际上能够帮助我很多
  • 没有利用好我买的图书,书是学习工具,而不是收藏品,我没能很好的阅读它们。

暂时先准备写到这里,其它的关于工具的话题我会另开post来总结。(最后更新于2008年12越21日)