程序员的核心能力 - 引擎式思维

在编程技术飞速发展的今天,一方面大家的开发效率越来越高,但另一方面也越来越焦虑,内心的独白是“我每天拼死拼活的学了一堆东西,但现在学的几年之后就过时了,那时程序员这碗青春饭就吃不下去了…” 这是一个很现实的问题,但发现它后仍置之不理的话,几年后你就会陷入困境。那该如何解决呢?有人说做几年技术之后转型管理,这是完全可行的,但不是今天我们要聊的话题。如果是继续做技术,你需要找到一些核心的技术能力。它们使你更快速地工作,产生更高质量的成果,不容易被后来者超越,最最重要的一点是,不会因为某项技术的过时而失去价值。我希望通过接下来的几篇文章,和大家分享我的想法,今天讲的第一项核心能力,我称它为“引擎式思维”。

数据可视化的开源方案: Superset vs Redash vs Metabase (一)

人是视觉动物,要用数据把一个故事讲活,图表是必不可少的。如果你经常看到做数据分析同事,在SQL客户端里执行完查询,把结果复制/粘贴到 Excel 里再做成图表,那说明你的公司缺少一个可靠的数据可视化平台。数据可视化是 Business Intelligence(BI)中的核心功能,有许多成熟的商用解决方案,如老牌的 Tableau,Qilk,新生代的 Looker,国内的 FineBI 等等。不过对于许多小公司来说,这些服务的 License 费用是一笔不小的开销,且有一种“杀鸡用牛刀”的感觉。那在开源软件如此发达的今天,在数据可视化方面,有什么靠谱的方案可以选择呢?今天给大家介绍三个比较知名的项目,分别是 Superset, Redash 和 Metabase。前两个我都在产生环境中实际使用过,在本文中会重点介绍。Metabase 我只是试玩了一下,但我觉得这是一个非常有想法的项目,所以也会和大家聊聊我对它的看法。

再见Evernote, 你好Orgmode

我这个人记性不好,所有的事情必须写下来才不会忘记。可偏偏字又写得难看,不然定会去买本精美的手账,随身带着。幸亏打字的速度不慢,所以一直靠键盘记事。记事的软件从最初的Word,到Google Notebook(这个项目后来关了,几年后又以Google Keep重生),再到Evernote,最近这些日子又看上了Orgmode。

聊聊为什么我转投了Emacs

我用Vim已经8年了,虽然说不上是骨灰级用户,但我花在定制化Vim上的时间绝对不少,公司里的许多人也是在我怂恿之下才开始用Vim的。当年在Nvidia工作时,闲来无事,为公司Bug tracking系统写了一个Vim插件。离开多年后,依然有人在用,这似乎也是我在Nivdia唯一留下的东西,真不知道是该高兴还是悲哀。

如何提升你的能力?给年轻程序员的几条建议

一转眼工作已有8年,前两天公司一位初入职场的同事希望我给一些建议与经验。我觉得这个话题很有价值,这里以个人的想法与经历写成此文,希望给年轻的开发者们一些启发。

Keyboard for hackers

5年前,在我刚工作不久之后,我买过花了500块买了IBM UltraNav Travel Keyboard,因为很喜欢当时IBM Thinkpad键盘的手感,所以买了这个与Thinkpad键盘手感完全相同的外置键盘,用于自己的台机。直到09年买了Macbook,那时的Macbook还是白色塑料外外壳的,俗称小白。小白的键盘手感非常好,并不逊色于Thinkpad。虽然小白的使用时间不到半年,在之后的日子一直用Macbook Pro但至今我仍这得小白键盘的手感要比MBP好些,mbp的键盘有点太软了。

Python - 合并多个进程的stdout和stderr

在开发中我们经常需要同时运行多个服务程序。以web开发为例,我们首先要启一个web server(django/flask/webpy/bottle等),一个或多个db server(mysql/mongodb/redis等),还可能用到一些watcher当源文件变化时自动编译(coffeescript/sass等)。如果这些程序运行在不同的terminal中,我们可能需要经常在这些terminal之间来回切换来查看它们的输出。因此我用python写了一个小的工具,用来在一个terminal中同时运行多个程序,合并它们的stdout和stderr。这个工具的工作原理很简单,启动时它读取一个配置文件并启动其中指定的若干个程序,之后它会捕获所有这些程序的输出,在每一行输出前加上对应程序的名字和进程ID,再输出到terminal上。它的代码加上帮助文档一共69行,麻雀虽小,却也用到了几个比较有意思的python模块,对初学python的朋友可以有一些帮助。以下是这个工具的完整代码

Retina Display上的编程字体

昨天刚刚入手新版的macbook pro,打开chrome浏览时,retina display下的文字效果的确让人惊叹。不过iTerm和vim下的文字显示效果提升却不是那明显,个人觉得主要是现在的主流等宽字体,包括consola, inconsolata,menlo等都没有对retina做优化。通过观察不难发现,纤细的字体在Retina下通常有更好的表现,可惜大部分的等宽字体都只有regular和bold两个样式,而没有light或是thin的样式。