Category Archives: Reflections

使用Markdown进行写作和文字记录

1. 背景

Markdown是一种语法简洁的标记语言 (Markup Language)。Markdown可以使用任何一种纯文本编辑器进行编辑,同时可以渲染、生成HTML。Markdown虽然是标记语言,但是和HTML比起来具有更好的可读性。与富文本(Rich Format Text, RTF)格式相比,Markdown的纯文本特性让使用者可以更加关注内容,专注于文字的表达。我多年前在友人的推荐下开始尝试用Markdown写作。我一开始并不习惯这种所写和所得分离的方式,但是之后也慢慢习惯、喜欢上了这种内容与格式分离的文字编辑方式。此文我整理了我关于Markdown的认识(本文也是通过Makrdown书写的),同时我推荐大家开始尝试用Markdown生产笔记、日记、文档、博客等文字信息。

2. 使用Markdown的好处

先说一下Markdown语言的优势:

  • 记录速度快:比起其他文字格式,Markdown可以更快地记录信息,编辑过程只需要键盘参与。基本的文字格式 (如标题,粗体,斜体等)可以通过快捷键实现,利用序号、列表功能还可以快速生成层次化的段落结构。
  • Markdown是纯文本格式,可以用普通文本编辑器编辑(nano, VIM, Notepad++等),方便修改和共享。
  • 可移植性好。工具是不断变迁的,对于富文本工具而言,更换工具就意味着文字格式无法完美保留(当初从写字板到word);而对于Markdown而言,因为源文件本身并没有格式编码,所以更换工具几乎不会影响版式。不同工具的渲染结果也几乎没有差别。
  • 重内容,轻版式。很多时候我们会浪费很多精力在文字的排版和格式统一上,而Markdown简单清晰的编辑方式,让我们可以集中于内容的编辑。
  • 可以生成HTML。Markdown在设计时就完全兼容HTML,可以直接插入HTML代码(但是不推荐,会影响纯文本的优点)。Markdown配合不同的CSS可以渲染成不同风格的网页,Markdown还可以导出为pdf。除此之外还可以渲染成多种格式(大多数编辑器有导出功能,或者用Pandoc转换)。
  • 图文分离,备份或者传播时简单、信息的体积小。

3. 使用Markdown的坏处

然而Markdown也并非完美:

  • 所见非所得。编辑器和Live Preview是独立的系统,如果需要实时预览,则需要编辑工具的支持。
  • 插图不方便。在富文本系统中可以直接copy + paste,而一般的Markdown系统则需要单独的文件夹存储图片,还需要额外输入图片路径。
  • 文字的表示形式有限。相比富文本,Markdown无法随心所欲地修改文字的属性(字体、颜色、大小等)。如果需要特殊的文字格式,需要插入额外的html属性,但是这些会破坏纯文本的移植性。
  • 页面版式、布局相对固定。总体来说只能是线性的记录方式。如果需要自由的图文混排,其他工具如Word或者Onenote是更好的平台。

Read more »

如何构建和管理自己的知识系统

1. 背景

三年前,我在做硕士毕业设计的时候第一次使用Evernote(印象笔记)收集资料,之后就一直使用Evernote记录一些备忘和生活琐事,但也没有形成相对完整的系统。开始读博士之后,我习惯随手在论文上记批注和笔记,觉得这样个人观点和原文的耦合度会比较高。但是等到要检索和引用资料时,脑中对这些知识点有些印象,可很多资料就是找不到出处,这时又要重新谷歌或者去翻文件夹。这让我思考是否需要将笔记做成电子形式,这样检索和使用的时候会比较方便,知识也能线性积累。去纸化的过程是比较痛苦的,因为我们从小到大习惯了纸质笔记这种记录方式。我们的工具十分简单(纸和笔),却可以记录各种类别的信息(文字、结构图、流程图、批注)。然而到了电子时代,我们可用的工具很多,但却很难形成和纸质笔记相比的“灵活性”。当然,相比传统的笔记方式,电子笔记可以多次修改、任意排序和整理、发布和分享、互相引用与检索,但有的时候却不如传统笔记那么“直观”和“简单”(想想用pdf做标注 v.s. 在书上直接做批注 或是 用画图软件画一个流程图 v.s. 在纸上随手画一个流程图)。在过去的一年时间里,我一直在思考和实践电子化笔记系统的可行性,以及如何凸显和最大程度发挥电子笔记的优势。而我发现,电子笔记不仅有上述提到的几个优势,还可以成为构建和强化知识系统的有力工具。

这里,我将一切广义上可以提高人对某一事物或领域的认知或记忆的信息(以文字为主)称为知识,而将通过计算机、平板、手机等手段记录个性化知识的方式称为电子笔记。此文分享了我对于知识和记笔记的理解,以及通过电子化工具构建知识系统的思考和经验。

2. 为什么需要记笔记?

上一节聊了我为什么需要将笔记电子化的动机,现在简单说一下我们为什么需要记笔记。每个人都有这样的经历:和别人聊天时,总是有一些感觉在嘴边的东西,大脑却无法回忆起来;或者某天去超市购物时,明明觉得需要买什么,却怎么也想不起来。不管我们认不认同,人脑的潜力不是无限的。理解我们自身局限性的其中之一,就是认识到人脑是有局限性的,并且记忆的容量是有限的。所以构建一个笔记/知识信息系统,就是要补偿人脑的这种局限性,将笔记系统作为我们的第二大脑。这个观点已经得到了主流大众的认可。我们知道记笔记需要花费时间,这种时间实际上是一种对未来的投资。我们一般记录事情的动机有两个:一是为了增强对摄取信息的认知;二是为了日后需要的时候可以回想起来。大部分人也应该可以认同记笔记是强化知识的重要手段。除此之外,记笔记的核心价值是“使用”。也就是说,一个好的笔记应该是有使用价值的。一个shopping list可以让你在逛超市的时候买齐所有的东西;一篇日记让你可以回忆过去自己经历的事情;一篇论文笔记让人在需要的时候可以快速回忆起论文的核心观点;一个programming reference可以让你在编程的时候快速想起API的用法,而不用每次都去Google. 这些都是使用价值,是你记录时投资时间换来的回报。记录信息的本质是提供使用价值,所以评价一个笔记系统也应该用”可使用性”为评价方式。有一种观点是:现在(几乎)所有的信息都能在因特网上搜索到,所以需要信息的时候都可以即刻去搜索。这种观点本身没有问题,但是以目前的搜索技术和因特网的归档程度而言,这种方式的时间开销更高:因为你要从海量信息中筛选、判断、提炼出你想要的那一部分信息。而笔记则是“一次记录,多次使用”,一劳永逸。并且有新的知识点时,可以修改、完善之前的知识(另一点电子笔记的优势就是修改起来十分简单)。我们记笔记,就是让笔记成为知识的载体,也是为了日后需要这个知识时提供便捷。

Read more »

如何做一个好的博客

我从2010年开始写博客。在过去的五年多时间里,除了自然而然增长的博文数量外,我的博文质量也在潜移默化的提高。然而这种质量的提高并不完全是自然形成的,这是需要不断思考博客的核心价值,同时在不断迭代的设计中艰难地产生的。每个人对自己的博客有一个定位,也有自己对于好博客的一套衡量标准。我从我自己以往产生的经验,来谈谈我眼中的好博客应该是什么样子的。

首先,一个好的博客需要是原创的,至少是半原创的。没有人喜欢整个网站全是复制-粘贴来的博文,这不光来自复制过程中产生的版式错误,而是这种复制的方式的本质是欠思考的、不系统的。行为上的懒惰必然导致思维上的懒惰,这样得来的文章只会显得杂乱无章,而不能体现任何博主自身的意图。可惜的是,这样的博客占了很大一部分。我想很多人也许并无意将自己的博客给别人看,而只是作为自己知识的索引。然而即使是这样,系统的整理也是必须的。这是一个吸收与理解知识的最好机会,有时甚至比文章自身带来的价值更大。

其次,是核心主题。所谓主题,就是整个博客中的博文是耦合或者是弱耦合的。制造主题的方式有很多,其中之一就是采用博文系列或专题的方式。比如云飞实验室以机器人和嵌入式为主题,也开发了热门的树莓派、Arduino和STM32等专题。正如写文章一样,博文的内容大多是围绕一个主题的。如果偏题太多,同样就会失去博客自己的特色。记住,你的博客是一个博客,而不是一个分享一切信息的网站。想要很好的做到这一点,你需要有自己假象的用户。比如对我自己而言,我的假象用户是嵌入式工程师,机器人爱好者,Makers。我每考虑创作写一篇博文,都会首先站在读者的角度去考虑。我会去判断这篇博文对读者的价值是多少?他们是否感兴趣?能不能帮助他们/引发更深层的扩展和思考?在这个过程中会有很多取舍。可能会遇到你很想发布,然而偏离主题,远离读者的博文。这是需要避免的。

再者,我就觉得是博客设计。我所说的设计,不仅包括网站的CSS版式,也包含了文章内部的组织。总体上来说,就是要做到简洁。简洁就是去除不必要的元素,避免华而不实的特效、动画、插件等。这些元素有时会破坏博客整体的平衡性,也会让读者分散精力。简洁可以给读者创造出纯净的阅读体验。而美就会略为主观了。我所理解的美,包括文章的段落结构,图片的尺寸、配色、位置,示例代码的优美性。以我的经验来看,美是需要用心才能做到的。需要让自己变得沉静,敏感,细腻。美的产生与其说是与生俱来,不如说是精雕细琢的产物。对美的感受也有进化的过程(但我觉得总体上是向正方向前进的)。很多时候,我会去看自己很久之前的博文,如果觉得做的还不够好,会再仔细修改。我也经常从别人的网站和博客中吸取经验,学习如何更好的排版、安插图片和代码等。这些需要一个人的审美层次,然而更多时候是花费时间和精力去雕琢而成的。

这些是我多年来一直在思考和遵循的原则,今日突然想与诸位分享之,便有此文。

戴晓天
2016年04月21日 于 英国约克

实时系统研究意义的思考

要想弄清研究实时系统的意义,首先必须明确实时系统在整个人类生活中的角色。

实时系统的主要研究对象是工业控制,交通和航空航天,电力及能源,网络设备及网络服务。这些系统的稳定性很大程度上决定了生命财产与经济的安全性:如电力系统的短时间崩溃会导致工业和交通停滞,并可能带来生命财产事故;航天飞行器的软件故障,会导致与地面控制中心的失联甚至是坠毁,带来巨大的财产损失。社会的正常发展和秩序很大程度上依赖于这些实时系统的稳定性和可靠性。纵使我们不想如此,人类生活的方方面面还是很大程度上依存于并不稳定的软件系统。设想如果有这样一个软件漏洞,使得多个重要系统在同一时间失控,那么其带来的社会影响和经济损失将不可估量。 实时系统的主要研究目标:保障实时系统在时间和行为上的可预测性,设立可靠的软件设计方法;就是在预防和避免以上的不可靠情况的出现。

至于在当前计算机速度已经如此之快的情况下,实时性研究是否还有其必要性。

答案我想也是肯定的。在新的计算机结构出现之前,CPU速度的提升不等同于系统实时性的提升。CPU速度的提升显然会减少程序的执行时间 (execution time),但是对于从请求产生到得出结果的响应时间 (response time) 及IO的输出间隔的稳定性 (IO jitter) 依然没有明确的保证。与此同时,更加复杂的操作系统和计算机硬件也提高了这种不确定性,例如Cache缓存和内存分页带来的运行时间浮动。综上所述,CPU速度的提升无法带来实时性上的保证,依然需要依靠实时性分析来保障系统在时间上的可预测性。

从浙大造假事件谈中国的科研现状

今天晚上看到了柴静对08年浙大论文造假事件的报道(《新闻调查》栏目-《以求是之名》)。对于很多人来说这不算是新闻,但我确是第一次关注到此事。作为一名学术研究人员,这条四年前的新闻今天看来还是感触颇深,特撰此文,以求警示与共勉。

整个事情的背景大约这样的:2008年10月,贺海波的博士生导师中国药科大学教授戴德哉指控现浙大博士后贺海波在多篇论文中剽窃了自己的论文与实验室数据,张冠李戴,并多次重复发表。贺海波在浙大药学院参与李连达院士的国家课题“冠心2号”的研究,其发表的多篇关于丹酚酸B的科研论文皆有李连达院士及浙大中药药理研究室主任吴理茂的署名,但两人却未尽监督的义务,并表示是贺私自进行了隐瞒,对此事并不知情。

初看这一事件,整个过失看似是贺海波的个人行为。贺海波没有遵守一个学者的基本道德,急功近利而误入歧途。但后来的采访却是,贺的学生对这名老师非常肯定。其学生表示贺对科研事业尽职尽力,实验室中有他厚厚几大本的实验数据。贺本人在公开道歉信中大致这样写道:因为想留在浙大任职,而学校对于SCI指标有要求,并且竞争压力十分大,才做出这样一件事。贺的博士后导师为院士李连达,而李连达无暇顾及学生,实际上只是浙大医学院的挂名院长,他将所有学生“托管”给药理研究室主任吴理茂,而吴理茂实际上又没有管理博士后的资格与资质。这便导致了贺海波处于无人监管的状态,而其又面临浙大巨大的竞争压力。为了完成科研指标,从而顺利留在浙大,贺海波最终背弃了学者的基本道德,进行了剽窃与造假的行为。

从这个事件中,我看到了当今国内学术界普遍存在的一些问题:1、高校不合理的大跃进式发展,在没有师资的情况下盲目扩张;2、管理者只求享受成果荣誉,却不负监管责任;3、高校普遍存在的放羊式的研究生、博士生管理制度,导师只挂名而无实际指导;4、学者不负责任、急功近利,而社会的评价体系又单一化、指标化。

我们的国家经历了贫穷的年代,那时物质还不富裕,所以国家最先提出的口号是建设小康社会。在经过了长达三十年的改革开放之后,现在物质上的矛盾基本解决了,而如今我们需要的是寻求一个民族的精神,也就是十二届人大会上由习近平主席提出的一个理念:中国梦。何谓中国梦?每个人会有不同的理解。在我看来,中国梦是由千千万万个人的小梦组成的,是国人对于一个富强、独立、民主、科学的国家殷切的期待。对于科研事业而言,我们的中国梦就是可以赶超欧美发达国家,有世界领先的工业与军事技术,有一流、出众的科研人才。可现在的年轻学者,对于学术的态度已经少有前人一般的严谨,学术太浅薄、太不周密。很多学生做论文的过程也不过是拼拼凑凑,甚至为了佐证自己的观点,也可无中生有地伪造数据。而一个国家的年轻一代如果这样,那这个国家的未来会怎么样?我们的中国梦又靠谁去实现?这是作为学者自身需要思考或者反思的。

同样的,对于中国的高校而言,市场化、竞争化日益严重。当学术和经济利益挂上钩,便很容易结出恶性的果子。浙大在没有师资的情况下,聘用院士李连达为名义上的医学院院长,获得了国家丰富的科研资金资源。而李连达院士并没有时间顾暇教学活动,其手下的研究生与博士生全权由吴理茂管理,这恰恰是现在高校很普遍的现象。考研界有这样一个说法,越好的导师越不能给你指导,只可以给你好的资源。有的学生直到毕业甚至只见过导师一、两面,那这样的导师如何指导学生。何谈引导,又何谈为其师呢。

学者固然需要端正,高校也固然需要反思。但是高校的所作所为,实际上也映射了一个国家在教育与科研上的风气。我们必须放下功利,这个国家越急于求成,到最后就越落后于别人。真正的学术不是三两天就能建成的,需要有丰厚的基石。这个基石即是基础学科的研究,也是一个国家对于教研、对于学术的基本制度。如果没有这些基石,而一味的只追求成果,那最后搭起来的不过是空中楼阁、浮沙高台,总会有垮掉的一天。光有学者的自律是不够的,任何一个好的体制都应该是闭环的,有反馈、有监督、有管理,治学如此,治国也如此。

一个人迷失了,不过毁掉的是他自己的一生;一群人迷失了,不过是轻轻地为这个社会蒙上一层浮沉;那如果一个国家迷失了呢,一个民族迷失了呢?我记得高铁追尾事件发生时,外媒纽约时报有这样一句评论:”China, please stop your flying pace, wait for your people, wait for your soul, wait for your morality, wait for your conscience! “如果国家的发展只一味的追寻快,而忽略了社会发展的规律,那这个社会的发展便是病态的。我们应该从五十年前的大跃进中吸取教训:生产力的改革不可能一步登天。与之相应的,是科学研究也不是三天两天可以飞跃的。科学是必须要积淀的,必须要长期积累的。学者要潜心研究,不要想走捷径;高校要摒弃不正当的学术竞争,以育人而非利益为重;而国家要提供良好的科研环境,树立正确的科研风气。对待科学与学术,不能急,急不来,急是会出问题的。

当然,在目前大环境一时无法改变的情况下,作为个人也不该只有抱怨,要以积极态度与之抗衡,因为社会也是由每一个个鲜活的个人构成的。我呼吁所有在工程及科学领域工作、从事研究的人员们,能严以律己,以求是之名,对自己的工作负责,对自己的研究成果负责,对至高无上的科学精神负责,为实现民族富强、民主自由、文化繁荣、科技领先的中国梦而共同奋斗。

戴晓天
作于2013年12月23日

柴静的《看见》与新闻工作者的良知

大约半年前读完了柴静的《看见》,柴静是颇具争议的记者,她报道的话题很尖锐很边缘,但又是真实社会的写照。正是这本书,让我看见了一个新闻工作者的基本态度:对真实的挖掘,对真相的认知,对待事实如同对待生命一般的热忱。现在身在国外,有机会读到很多以前在国内读不到的东西,也更多的开始从外媒的渠道重新了解中国。我看了很多BBC关于中国的纪录片;解读一个新闻时,也会看一下港媒和台媒的报道。这些都让我开始思考一个问题,我们的新闻业是不是已经到了最危险的边缘?

现在的新闻产业正值一个从旧媒体向新媒体时代过渡的阶段,新闻的媒介在增加,新闻的质量却在下降,很多问题也由此暴露。利益、生计、工作压力让很多新闻工作者迷失了方向,前段时间一篇题为”老外街头扶摔倒大妈遭讹1800元”的新闻在网上流传。文中写到一老外被一中年妇女“碰瓷”,强行要求其索赔。当时看时还觉很愤怒,但不久之后,这篇新闻便被证实歪曲事实,实为老外过失。不敢相信,一个同样的事实,被刻意从另一个角度报道,甚至可以图文并茂的报道,会对公众造成怎样的迷惑,又是多么可怕的事情。

新闻需要的是真实,需要的不是迎合读者的口味,需要的不是刻意夸张夸大,利用人性去煽动你的感情,需要的不是一味的赞扬,只写光辉的一面而忽视掉心灵中也会有黑暗,这个冠冕堂皇的社会也会有黑暗。

以前新浪网和搜狐网是我常去看的新闻网站,现在不看了,为什么?因为我从这个网站上已经很难看到真实。新闻被娱乐化了,庸俗化了,迎合了。没有深度的解读,甚至缺乏必要的认证,便公布在网站上,一切只剩下点击率。

并非我清高、孤傲,而是我认为新闻本不应该是这样的。新闻是作为普通民众了解这个社会的渠道,新闻工作者要拿出最起码的职业道德,社会也要对新闻有更多的宽容。真实往往都不是光鲜亮丽的,一直只看一面,我们便会丧失辩证的能力,丧失对真实的判断能力。

一个国家怎么样,要从各个方面考量,我觉得媒体就是一个很好的评估方面。一个国家对媒体有多少尊重和容忍,对历史有多少领悟与认同,也表现了这个社会这个国家的文明进程走了多远。我希望多一些像柴静、崔永元、白岩松这样睿智的、有良知的新闻工作者,中国社会的发展一定会更加美好与平衡。

8942716441947863990

2013新年愿景

2012年,不平凡的一年。

2012年年初,几乎是我最黯淡和绝望的时光。我经历了从学生角色到社会角色的转变,以及在这个过程中产生的“自我认知困境”。当时,其实我的工作状况已有好转,也有机会接触公司几个核心项目。不过,被负面情绪充斥过久之后,我还是决定在四月份离开。换了新的工作环境后,我度过了快乐而忙碌的下半年。这半年里,我参与研发了公司五款产品,拿到了初级职称,考过了中级软考。在提高技术能力的同时,也实践了一些完全不同的设计理念和架构。

虽然一切都很顺利,不过我的内心还是不乏波澜。尤其是创新,对我来说,已经显得越来越吃力了。一是不知在何时,热情开始逐步退却;二是随着技术领域的扩充,对知识的需求开始指数型增长。这很可能再一次爆发出来反应为认知困境与自我怀疑。

今年又一个成就就是,终于让创客活动从纸面变为了实践。自从2010年有“云飞社区”的想法后,组织、参与一个有成长性的开源组织的想法就一直在推动着我。虽然有了新车间和柴火空间的先河,不过我们目前做的还不算太好,或者说还没有找到关键的切入点。

谈到2013年,我倒是有很多期盼。一是可以实现自己远赴重洋的读书梦;二是可以继续坚持嵌入式事业,做出更多人认可的东西;三是父母奶奶身体健康。

2013也是我的本命年,希望新的一年一切顺利。

2008124223823512_2

关于编程语言的选择与体会

从我最早接触编程至今已有近10年时间,当时是在初中时,通过文曲星编写了几款基于文字和简单图形的游戏。高中时因没有相关条件与指导,慢慢就荒废了下来,中途曾经因为计算机考试学过一段时间VB,但就当时的知识能力,并没有学习的很深入。上大学以后,学校开设了C语言和VB的相关课程,加之之后对单片机和嵌入式系统的狂热,让我更加深入的接触了计算机编程的原则与方法。

我虽然不是计算机专业出生,但在学习、工作中还是经常会接触到程序编程。我主要使用的依然是C语言,但是因为涉猎较广,还是接触了很多其他的编程语言。这里,我想把所有使用过的编程语言的优缺点罗列、整理一下,作为一次回顾。

BASIC:较为古老的编程语言,开发环境是基于命令行的,条件、跳转很不方便,现在已经很难见到。

VB:可视化BASIC,在BASIC上作了大量拓展,可以快速构建一个图形用户界面,但是能实现的功能比较简单。在工控上经常能见到,老工程师都会。

C:C语言作为基础性语言,广泛用于单片机与Linux编程中,其直接操作内存和硬件的特性,使其非常适合编写系统底层程序。C语言可以很好的完成单一任务,如一个算法的验证,但无法完成框架复杂性高、以及需要图形界面的场合。

C++:面向对象,结构化的语言,相比C语言可以实现更加清晰的程序框架。一般使用Visual C++作为开发环境,配合MFC程序框架可以实现功能复杂、通用性好的Windows程序。网上很多源代码都是基于VC的,但是其开发效率有点低下,并且实现复杂的图形界面比较困难。

C#:新一代的编程语言,结合了C++的面向对象以及VB的可视化开发的优点,又可以说是一种类JAVA语言。C#的开发效率高,图形绘制,数据库的功能强大,但目前对我来说的阻碍是很多开源软件对其的支持还不够,就如Win7一样兼容性还不够,随着时间的推移这个矛盾应该会逐步化解,我也准备逐步由C++转向C#开发。

Java:我接触Java并不多,初步感觉其对象化实现的很好。Java之所以生命力顽强,是因为其基于虚拟机的特性。虽然这降低了系统的运行效率,但是却实现了跨平台支持。目前由于Android开发的火热,很多人都在从事Java开发,我最近也有打算了解一下Android开发,届时也可以更深入的了解Java语言。

Lua:强大的脚本语言,初步体验了一下,感觉其扩展性、灵活性非常好,但是脚本语言与一般编程语言在设计思路上有一些不同,对我来说有一些难用。

Shell:Linux下的脚本语言,可以实现BATCH批量操作,甚至很多复杂的程序也可以通过Shell实现。

Matlab:擅长矩阵运算,建模能力强大,主要实现算法验证。但不适合用于设计大型程序,与一些上位机有接口,其作为一个组件使用可能更合适。

Python (修订于: 2017-05-12):目前最主流的科学计算脚本语言。相对MATLAB,Python有强大的开源社区支持,通过NumPy + SciPy + Matplotlib可以实现近似Matlab的科学运算编程。而DeepLearning的相关库 (TensorFlow, Theano, Keras) 也都有Python的对应版本。