A reorganization of all the tech I tried to master. Here are the resources and tips I wish I could have when I started learning!

Update History:

  • 10/18/2013: Add Formal Semantics for concurrent programs
  • 10/17/2013: Add markdown
  • 10/12/2013: Init the tech map


About E-book

I do not suggest Sina ishare and BookFinder because they may not be legal.

Coursera, Udacity

Coursera, Udacity and other online courses websites are the savior for those who cannot physically access to top educational resources.


Strongly recommend using Mou to write in-class notes with Markdown (of course I mean mac here). Markdown is extremely simple (you may master it in 30 min?).

Git & Github

Create a repo on Github for your every project!

Branching is one of the key concepts in git. Here are some tricks but I never tried all of them.


  • Use Archive button, you can search to find them if you need.
  • Manage several email accounts (e.g. .edu) altogether.
  • Use tags and filters to categorize: filtering out ones containing “free food”


For using the Internet wisely in some areas.

Google Calendar

Add your events, courses, appointments, notifications, all those with a specific time to Google Calendar.

For those without a specific time (e.g. homework), I recommendend Omnifocus, Mindomo, Workflowy.

Google Docs

Want editing simultaneously with your team members?!


If Google Reader is still alive, it will be the title. Currently I am using Feedly. I strongly recommend the following rss sources:

Vim & Emacs

If you are in CS-related major, you MUST master at least one of them.

For Vim:

For Emacs:

  • // TODO


The documentation is the best teacher! Also, try this Asset Studio.


I strongly recommend learning Coq by reading through book Software Foundations. Luckily, it is availble online. I have made my solution repo private.. DIY!

Formal Semantics (for concurrent programs)

This is what I am currently learning. Read book On a Method of Multiprogramming at least first 3 chapters for the Owicki-Gries Theory.

Also check the slides here and here

After that, learn Rely-Guarantee. // TODO


I haven’t tried Go yet, but this may help.


The CS503 OS course in Purdue is much much better than that in TJ. Another reason may be that I was only a sophomore when I took OS course in TJ thus it may not be that helpful without enough background.

Anyway, the Xinu code is extremely helpful for its simplicity to read (original code is available here). The textbook Operating System Design: the XINU Approach is GREAT! Tell me if you also want the 899-page slides.

For implementing a tiny OS on your own, you can also refer to this and this. Although I did not finish those two books either..


I started with Google’s Python Class. I reviewed using Codecademy. Do not forget to read the style guide for code and for doc.