再见!Gmail

为什么gmail如此慢

在过去的几年里,我越来越对Gmail不满意了。在Gmail刚刚发布的时候,我比较喜欢,它把写邮件、阅读邮件变成了乐趣。它简单、干净且反应灵敏。现在却反过来了。所有的操作都感觉到慢。最初的页面载入耗去了大量的时间,接着我要等待各种页面元素载入——包括我几乎从来没有登进去的聊天列表,还有集成了一连串的Google产品。载入邮件或新tab明显变慢,对于一家主打产品为搜索引擎的公司来说,搜索居然迟钝无比。

上周我决定看看别的邮件系统如何,发现有个Fastmail。这几天我一直在用,它非常棒。邮件能够快速载入、发送,导航时髦、响应灵敏。我不敢肯定随着收件箱的增大它会怎样,但是目前我被打动了。这种感觉就像10年前Gmail刚刚上线的时候。既然我不满意Gmail了,再去描述Gmail的情况会觉得怪怪的,但是我想不到一个更好的方式了。

我做了一个快速的有趣测试,当每次载入时,我观察Google chrome里的networks标签。Gmail发起了150个请求、接收了338kb数据,花了6秒钟;而Fastmail发起了18个请求、接收128kb数据,只花了300多毫秒。重复多次都得到了相似的结果。其他人貌似有相同的问题,因为当敲入“why is gmail”时,Google的第一个智能提示是“why is gmail so slow”。切换也比我期望简单得多——我仅仅让Gmail把所有邮件转发到我的Fastmail账户,这对于外部世界是完全透明的。将来我计划都迁移到新的邮箱地址,只是对于现在而言,这是一个好的过渡期。我还没有听到太多关于其他人从Gmail迁移的事情,因此如果你切换时,我乐于听到你的经历。

gmail在chrome的下载截图

给想继续写代码的CEO们的4个必要提示

很多软件公司是由明星开发人员创立的,他们经常有个烦恼,随着公司的成长,他们再也找不到自己写代码的时间了。在上周有很多人参加的SXSW报告会上——面向写代码的CEO的案例,恰好New Relic自己的CEO Lew Cirne为那些一边仍然领导业务、一边在寻求有创造力的自由来建立下一波创新的开发者/CEO们提供了一些干货。

“去年,我没有做太多通常CEO的工作,”Lew说。他没有参加太多的会议,相反他在塔霍湖的小屋里把大把时间投进了我们最新的软件分析产品,代号Rubicon。目标?当想法出现的时候,你不能去想其他事情,为了得到一个“啊哈”的时刻,完全日复一日地与世隔绝。体验投入开发软件的“纯粹的编码乐趣”。

“如果你运营着一家公司,你就不能那样做了,”Lew向听众坦白。“公司不会自主运营。”想坚持写代码的CEO们不得不塑造一个新的CEO角色使之可行,这需要四个关键步骤。

1.和优秀的人在一起。“我深思过我想做什么以及团队其他人应该担任什么角色,”Lew说。“关键是找到对各自工作擅长的人,然后信任他们,授权他们做自己的事,这样你就可以做你自己的事。”Lew引入董事会的一些人运营着业务的主要区域,包括New Relic的首席运营官Chris Cook,前执行官Wily,还有首席营收官Hilarie Koplow-McAdams,Salesforce.com的全球营销前主席。“我投资了大量时间来招募合适的人,他们将用我不具备的方式来建立New Relic,”他说。

2.为开发工作挤出专门时间。Lew不是一有机会就试图挤时间做开发工作,而是每个季度规划整整两周——一年8周——单独写软件。编码期之外的时间,他建议写代码的CEO们要专注于业务角色。

3.专注高价值的项目。Lew把去年的写代码时间花在了开发Rubicon上,在去年我们的FutureStack会议上做过介绍。当他建立主要概念时,他巧妙地影响着New Relic团队的其他成员。“现在我们这个项目有很多工程师,”Lew说,“因此我很少亲自工作。”他的下一个两周写代码周期将致力于New Relic的未来宏伟蓝图,他希望明年能够面世。

4.弄清楚为什么一个写代码的CEO对公司有益。“对我而言,我能够做有趣的编程工作,明显是有好处的,”Lew说,“但是董事会怎么看待?”答案是“我们是一家产品优先的公司,从CEO做起。”除了已经做的实际编码工作,Lew说,“成为一名写代码的CEO使我紧跟最新的技术趋势,让我在业务沟通中更有精力、更加敏锐。”

原文地址:

goto仍然被视作有害的?

Apple最近的安全漏洞被追踪到一个伪造的goto。但是它仍然没有解决关于其用法的争论。

如果你是程序员,阅读了最近关于Apple安全传输(他们的SSL/TLS实现)的严重安全漏洞的辩论,那么你或许注意到了Apple源代码错误发生的地方有些奇怪。它充满了goto语句。

Apple已经开源了安全传输代码。我们不知道这在被找到的bug中发挥着什么作用,但是一旦修复被公布,源代码的可获得性使得找到特定bug变得容易了。

这个有错误的C语言文件行数长达1970行,它包含了47个goto语句。更原初的语言,比如老的BASIC实现,就依赖goto,因为没有goto,他们就缺乏足够的控制结构。在CS101,你被告知goto是一种丑陋的东东,它打破了逻辑控制流。像C这样的功能强大的语言包含了goto,仅仅用在当没有goto逻辑就变复杂的状况下,做为一种避免准备。这或许就是发生在有bug的Apple函数SSLVerifySignedServerKeyExchange:

static OSStatus SSLVerifySignedServerKeyExchange(…) { … if ((err = SSLFreeBuffer(&hashCtx)) != 0) goto fail;...