MOOC印象和推荐

MOOC(Massive Open Online Course)是新近起步的网上教育。我从去年年中开始关注,已经学成结业两门课,感觉很有收获,特写此文推荐。

MOOC算是我知道的80年代的电视大学的延伸。我记忆中的中国80年代是开放、蓬勃、纯真和好学的年代。那么多的人想读书并真正去读书。特别是80年代中后期,电视开始逐渐进入普通家庭,当时的电大教育给那时的小青年甚至中年人提供了接受高等教育的机会,其对个人和社会的整体效益不可低估。那时我只是个十几岁的孩子,没跟着电视上大学,但我知道有人听电视上的高等数学、物理、化学、文学等的授课,应当还有函授式的作业。

MOOC是在电大基础上的延伸和扩展,只不过由于是在网上以及互联网在全球的普及,其影响力更大。能上网的人都可以学,免费。以我有限的体会,我注意到的特点有:

  1. 目前我了解到的网上电大有Coursera,Udacity,和edX。都不错;
  2. 授课采用短小的录像。录像长度平均十来分钟,在线播放和下载都可以;
  3. 一般每段录像都以一个主题为中心,中间会穿插些选择或填空题。这些题目用来测试你对刚刚讲过的概念、方法等的理解;
  4. Coursera录像有字幕选项。如果理解英语有困难,按下字幕键后读字幕会有帮助;
  5. 一般每周会有家庭作业。我上的都是电脑课,所以自动化程度高一些。作业都是些编程和回答数据相关问题,提交后的反馈很快;
  6. 有的课程会有同学评分。由于学生来自全球各地,所以评分都是匿名,也很有意思;
  7. 每个科目都有网上论坛。在此潜水、提问、回答问题等都非常有帮助。了解来自世界各地的人都观点是很有意思的事情;
  8. 根据课程的不同,有的会有期中或期末考试。如上文所述,我选的都是和电脑有关,考试都是选择题,反馈很快;
  9. 课程介绍里会告诉你如何算通过该课程。通过后一般有一张认证。
  10. 深受世界人民欢迎的课程一般会重新上线。所以条件不允许而不能上(或不能坚持下去)某节课,以后很可能还有机会。

我个人以为这些课程对在职和在校的人士都很有帮助,这对大学里的老师也会有启发,也是学习、提高英语的好方法。如能抽出时间上这些课,应当很有收获。

我的建议:

  1. 确保有时间。家庭、工作第一。如上所述,如果目前时机不成熟,以后还有机会;
  2. 一般来讲上电脑课,有个虚拟机比较好。虚拟机给你除掉后顾之忧,在上面放心大胆地尝试,玩它个爽歪歪;
  3. 要做作业。光听、光看不动手当然不如甩开膀子干一场的效果好;
  4. 看录像时利用英文字幕。这对提高英语和了解专有名词术语有帮助。在Coursera的在线录像里,如有必要,你还可以放慢录像速度。如英语过关,也有加快速度功能;
  5. 有同党和狐朋狗友一起学效果会更好。大家互相激励、分享和解难答疑就能共同提高。

推荐课程:
Introduction to Systematic Program Design – Part 1
这门课下周一正式开始,但今天老师已经公布了下两周的录像和作业。Gregor Kiczales老师来自加拿大的英属哥伦比亚大学,University of British Columbia。Kiczales是大牛,当然这不重要,因为大牛未必是好老师。但从我看过的录像和网站的准备工作来看,他是个好老师。力荐!

如你对编程感兴趣,Dan Grossman的Programming Languages非常好。现在已下线,但重新上线的可能性非常大。这门课很花时间。另外,Scala的作者,Martin Odersky的Functional Programming Principles in Scala也很好。我跟着学了一段时间,但由于其他事情太多没时间而放弃。等以后有时间会重修。

好,就写到这儿。比较晚了,按说早该上床睡觉了。咳,谁让我那么爱我遍及五湖四海的读者呢 🙂

SSDs and their impact on database servers

Vadim Tkachenko published interesting benchmark results with PCI-E based SSDs here. I recently got a chance to benchmark FusionIO’s 320 GB PCI-E drive. It was really impressive. My results, done on Windows with sqlio, are consistent (not identical, of course, but in the same ballpark) with what Vadim reported in that blog post, done with sysbench on Linux.

sqlio is a popular IO throughput testing tool from Microsoft. I didn’t get to test the throughput when the SSD is close to full. The key takeaways that I learned from my testing are:

1. I can confirm that there is no difference between random and sequential IO, contrary to the traditional spindle based hard disks;

2. Read is significantly faster than write. Reads and writes with 64 threads can achieve around 1.4 GB/S and 400 MB/S throughput, respectively.

It is good to hear that another vendor, Virident, also offers similar PCI-E based SSDs around similar price points. I think as the technology behind SSDs matures and price of it decreases, its impact on the database field could be significant.

Most, if not all, database platforms have put a lot of emphasis on achieving sequential reads and minimizing fragmentation. This is especially true for business intelligence databases. However, as SSDs gradually take over high end storage market for mission critical databases, with no difference between random and sequential access on those disks, it could relegate our obsession on sequential reads and fragmentation to the back burner, which is significant, in my opinion.

I am not suggesting that SSDs effectively make the fragmentation issue disappear, mind you. Because many database software, be it MySQL (perhaps the InnoDB storage engine in particular), SQL Server, or Oracle, uses prefetch, read-ahead read, or whatever the lingo maybe, to anticipate the need and bring additional data into cache in advance in case they are used next. This can be especially effective for business intelligence applications. In the case of prefectching, fragmentation is still undesirable, but the speed of SSDs could make it a less pressing issue than it has been, which is significant, I think.

A few years back, when multi-core servers started emerging, database software vendors invested time and energy to take advantage of that, with new features added and white paper created for NUMA architecture. I think it will be interesting to watch how emerging SSDs in the server market will be exploited. Percona’s white paper, Scaling MySQL Deployments With Percona Server and Virident tachIOn Drives, that talks “scaling up” with SSDs, instead of “scaling out” with sharding, is a pretty interesting idea.

Running Windows without anti-virus software

I’ve been frustrated with anti-virus software for a while. At a client last year, I had to fight with Symantec to get a proper ASP development environment up and running. At home, I’ve used AVG, avast, McAfee, and others. Far from the feeling of being protected from the “scary world out there”, I started to view the scanning, listening, warning, and even “calling home” “features” of anti-virus software as hindrance to my daily digital life. Granted, anti-virus software probably needs to do those kind of things, but it needs to get out of the way!

After reading similar complaints on Stackoverflow.com, I decided to follow a few others and started running Windows XP and Windows 7 without any anti-virus software. I’ve run a virus-free and anti-virus-free Windows XP machine for close to a year now, in addition to a few virtual XP machines. Also, the home Windows 7 machine has also been running naked for a few weeks now without issues.

Here are a few things I do or don’t do:
1. Browser: I use Firefox and Chrome. When running Firefox, I use adblock plus plug-in;
2. When installing software, I always pick custom installation, and I uncheck all un-necessary features;
3. Exercise good judgement.

Migrating from one RDBMS to another

Here is some of my thoughts on migrating MySQL to Sql Server. It came out of an email discussion. I’d love to hear your thoughts on migrating to a different database platform, not just MySQL to Sql Server.

I actually thought about writing a white paper or even a course on migrating from MySQL to Sql Server, but never got the time to do it. Sometimes a project doing similar things can serve as a launchpad for this endeavour, but that never came along, at least not yet. I am very interested in database interoperability field though. I’ve done MySQL and Oracle admin in the past and have published some MySQL and Oracle stuff in blogs. I have much better technical skills on Sql Server than any other RDBMS platforms, primarily because I’ve worked on it longer.

Here are some of my thoughts. I think most of it applies equally on migration from Oracle, DB2, Sybase, Postgresql, etc., to Sql Server, or the other way around. It might be slightly easier to migrate from Sybase to Sql Server, considering their common root.

1. It is not easy to migrate existing app, unless the app is a simple one. Even for that, there are enough quirks that can throw people off and cause enough frustration to derail the whole projects. I’ve seen that happening twice, having engaged in moving 2 apps from Sql Server to Oracle;

2. Therefore, the best way to migrating to a new database RDBMS, in my opinion, is to start from a new initiative, probably not big initially. When you start things from a clean slate, you don’t have the historical garbage to worry about. Furthermore, you will give the team enough time to learn the new platform, and prepare the team for future migration, if you choose to do so;

3. Having open-minded team members is crucial to a migration project’s success. Too often people have emotional attachments to the platform they are familiar with, possibly out of job security concerns and lack of general curiosity toward new things.

I generally adopt a platform agnostic attitude, and don’t get religious and too carried away on the platform I work on. Having said that, I think these are points that marketing people can spin for persuasion purposes:

1. MySQL has too many storage platforms: MyISAM, InnoDB, MaxDb, and the newly introduced Maria. This can be viewed as a plus, as it provides choice. The downside of it is that it causes confusion for end users;

2. MySQL’s support for relational model is fairly recent. For example, for a long time, MySQL didn’t support Stored Procedures, Views, Triggers, Foreign Keys, etc. One could argue that MySQL is not mature in this area since it is new for them, but I think it is difficult to find evidence to substantiate that claim. Also, running the risk of offending some people, I think the importance of relational model got overblown a bit;

3. Sql Server offers the CLR integration. This can be a great selling point;

4. Sql Server offers tight integration with Visual Studio, Windows network, and all other things Microsoft. This is a huge advantage.

5. Too many people find *nix environment intimidating. Although MySQL works on Windows, but the perception in the marketplace is MySQL works better on *nix.

As far as migrating MySQL to Sql Server in a hosting web environment, my honest opinion is Sql Server will be fighting an uphill battle, because MySQL excels in this arena, especially for small and medium-sized, or departmental organizations, with the proliferation of such LAMP app like blogs, wikies, discussion boards, etc. I believe Microsoft’s weapon of choice in this arena should be SharePoint. Given Microsoft’s clout, it is certainly a battle worth fighting.

PASS Reports 20061116

It is good to be at PASS Sql Server conference in Seattle. Most people here have this kindred Sql Server spirit. Since we all have this in common, it is easy to start a conversation with pretty much anybody. All you need to do is to smile, greet each other warmly, and share your own stories that a lot of other people can relate to. Most people are very nice, friendly, and helpful.

A couple of things to comment on:

1. Unlike last year’s conference in Dallas, the session rooms and labs are fairly close to each other. That makes it easier for people to find and go to the locations they want to;

2. PASS decided to stop printing PowerPoint slides. Instead, most slides can be downloaded before a session starts. I found this really helpful. I like to skim through files to determine if I am interested in a particular topic. The green backpack is a nice touch, since we are going “green” (paperless) this year;

3. Microsoft interactive lounge is very helpful, both to attendees and Microsoft, I hope. I talked to some senior testers from the full text search team, and got one of my issues resolved. You know, when you talk to an expert, you can get the gist of stuff without the noise in a short time. I will post some of the code snippets I got regarding full text search in a future post;

4. Steve Ballmer’s keynote is ok. He is a good presenter and very energetic. The Vista UI looks nice. At the end, the last question to him was if he would do a dance for us, like he did during a developer conference. He responded well, saying there is no music, and yelled “Go DBAs Baby” or something to that effect before leaving stage;

5. Steve Ballmer also commented on the alliance with Novell, and Microsoft’s legal trouble at the EU. I thought his responses were quite disingenuous. Regarding Novell and Linux, he indicated that Linux has infringed on Microsoft’s intellectual property and the agreement with Novell would cover SUSE Linux in case of lawsuit. The intellectual property infringement argument may or may not be true. But the table can be turned too. Can Microsoft guarantee that it does not infringe other’s, including Linux community’s, intellectual property? Initially I felt pretty positive about the alliance between Microsoft and Novell. After hearing Ballmer’s comments, I am not so sure now. It may not be worth worrying, after all. Just look at the thing Microsoft did with Sun. Now Java and Solaris are all open-source.

Regarding the EU legal issue, he responded that Microsoft is already pretty open. He went on to argue that since so many applications and device drivers are written for Windows platform, Microsoft can not be accused of not being open. That is quite disingenuous. I do agree that Microsoft has changed a lot and is definitely more open now, but Steve’s thinking is not in the right place. I also agree with Joel Spolsky and others. I think Microsoft would benefit without Steve as the CEO.