# Notes

This is [David Feng](https://davidfeng.us)'s tech notes. View it on [GitHub](https://github.com/davidfeng88/Notes) or [GitBook](https://notes.davidfeng.us).

## Practical Courses

Recently on Hacker News, I saw a discussion about [Hacker Tools](https://hacker-tools.github.io/), an MIT course/workshop for common tools used in software development. I'm sure resources (free and not free) on those topics can be found online, but it's really handy if they are organized as a course. In the discussion people shared several similar courses, and I have compiled a list of covered topics below.

Several topics are ubiquitous (i.e. they are important): Unix Shell (Bash), Text Editor (Vim), Version control (Git). They are important tools for almost all software engineers, no matter what language/library you use. Make sure to master those skills.

### [The Missing Semester of Your CS Education](https://missing.csail.mit.edu/)

* [x] [Course Overview + the shell](https://notes.davidfeng.us/command-line-1/processes)

* [ ] [Shell Tools and Scripting](https://notes.davidfeng.us/command-line-1/bash-script)

* [x] [Virtual machines and containers](https://notes.davidfeng.us/containers)

* [ ] Shell and scripting

* [ ] Command-line environment

* [ ] Data wrangling

* [ ] Editors

* [ ] Version control

* [ ] Dotfiles

* [ ] Backups

* [ ] Automation

* [ ] Machine introspection

* [ ] Program introspection

* [ ] Package/dependency management

* [ ] OS customization

* [ ] Remote machines

* [ ] Web and browsers

* [ ] Security and privacy

### [CMU Great Practical Ideas in CS (GPI)](https://www.cs.cmu.edu/~15131/f17/)

* [ ] Terminal
* [ ] Vim
* [ ] Bash
* [ ] Git
* [x] [Makefiles](https://notes.davidfeng.us/command-line-1/make)
* [ ] Terminal Config
* [ ] Emacs
* [ ] Package Managers
* [ ] Pandoc
* [ ] Technical Interviewing
* [ ] Digital Currencies

### [Software Carpentry](https://software-carpentry.org/lessons/)

* [x] The Unix Shell
* [ ] Version Control with Git
* [ ] Programming with Python
* [ ] Plotting and Programming in Python
* [ ] Programming with R
* [ ] R for Reproducible Scientific Analysis
* [x] [Automation and Make](https://notes.davidfeng.us/command-line-1/make)
* [ ] Programming with MATLAB
* [ ] Using Databases and SQL
* [ ] Version Control with Mercurial

### [Purdue CS193](https://github.com/Purdue-CSUSB/CS-193-S2018/tree/master/Slides) ([Labs](https://github.com/Purdue-CSUSB/CS-193-S2018/tree/master/Labs))

* Terminal (lecture 1-2, 4)
* Vim (lecture 3)
* Source Control (lecture 5)
* Git++ (lecture 6)
* Technical interviewing (lecture 7)

### Unix

* [Unix传奇（上）](https://coolshell.cn/articles/2322.html)
* [Unix传奇（下）](https://coolshell.cn/articles/2324.html)
* [Unix40年年鉴](https://coolshell.cn/articles/1032.html)
* [Unix40年：昨天，今天，明天](https://coolshell.cn/articles/1023.html)
* [The Unix Programming Environment](http://markburgess.org/unix/unix_toc.html)
* [The Collapse of Unix Philosophy](https://kukuruku.co/post/the-collapse-of-the-unix-philosophy/)

### Command Line

* [Unix as IDE (Chinese)](https://conanblog.me/Unix-as-IDE--Chinese-/index.html)
* [The Art of Command Line](https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md)
* [打造高效的工作环境（Shell）](https://coolshell.cn/articles/19219.html)
* [应该知道的Linux技巧](https://coolshell.cn/articles/8883.html)
* [你可能不知道的Shell](https://coolshell.cn/articles/8619.html)
* [CLI: improved](https://remysharp.com/2018/08/23/cli-improved)
* [awesome command line tools](https://www.vimfromscratch.com/articles/awesome-command-line-tools/)
* [AWK (cool shell)](https://coolshell.cn/articles/9070.html)
* [SED (cool shell)](https://coolshell.cn/articles/9104.html)
* This PDF

{% file src="<https://3169570216-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LouIV7T6gR16KLy_t-2%2F-Lu91syyEFV0xJYNaC9J%2F-Lu91z-hKKlNagX-O7tS%2Fdocshare.tips_cli-git-emacs-dotfiles.pdf?alt=media&token=abb33cbd-8545-4c45-a0d8-363d7e75de1a>" %}
Command Line PDF Ref
{% endfile %}
