5 ms·
The Missing Semester of Your CS Education [1] is a set of tutorials from MIT that gets you to speed with using the CLI, using a text editor (Vim), version contr
by b215826 7y ago
The Missing Semester of Your CS Education [1] is a set of tutorials from MIT that gets you to speed with using the CLI, using a text editor (Vim), version controlling (using Git), basic debugging, etc.
Some tutorials aren't perfect (e.g., an earlier version had things like `for f in $(ls)` [3]), but at least they link to good tools and resources.
There's also Software Carpentry [2], which has similar goals.
You might also want to check out The Bash Guide [4,5], which is hands down the best Bash tutorial written.
[1]: https://missing.csail.mit.edu/ https://missing.csail.mit.edu/
[2]: https://software-carpentry.org/lessons/index.html https://software-carpentry.org/lessons/index.html
[3]: https://mywiki.wooledge.org/ParsingLs https://mywiki.wooledge.org/ParsingLs
[4]: https://mywiki.wooledge.org/BashGuide https://mywiki.wooledge.org/BashGuide
[5]: https://guide.bash.academy/ https://guide.bash.academy/
- Waterluvian 7y agoI wonder if introducing newbies to makefiles and vim is super empowering, or ends up gatekeeping by making it look "as complicated as you feared it would be." I feel like before any of that: 1. Do practical stuff with Python 2. Learn the semantics behind the Linux directory tree 3. CLI, piping stuff together, a little bit of bash.
- jahbrewski 7y agoBut at some point isn’t it helpful to know that some things are as difficult as you fear, and you just have to power through? I picked up vim early in my programming career and I think it was one of the best decisions I’ve made; I use it every day. Yeah, there’s a time and place for learning “easier” things, but there’s also a time to buckle down, get serious, and dig in.
- kyawzazaw 7y agoi am a student and even using nano makes me feel less efficient and productive. is there something I am missing out by not using vim?
- threatofrain 7y agoIt’s hard to look like a true haxxor.
- b215826 7y ago> is there something I am missing out by not using vim? Being able to use vi is a very handy skill if you're a sysadmin or SSH into other computers/clusters very frequently. Since vi is part of the POSIX specification, all Unix systems would have some implementation of vi. Of course, Vim is much more powerful than a text editor like nano, but also requires more investment to learn. It won't make you a better programmer, but it might make you a faster programmer.
- sn9 7y agoLearning vim at the level of vimtutor is helpful not only because it's a nearly ubiquitous editor with powerful capabilities, but also because the basic navigation is used as the default navigation method in a lot of unix command line utilities like 'less', 'diff', and the man pages. (Oddly enough, the default navigation used for the info pages is that of emacs.) Someone's reading this itching to type that you can simply switch the default navigation for those yourself, which is true, but it's still helpful to know these if you have to hop on someone else's machine or ssh into a remote server. Try one of these editors for at least a month after doing the basic built-in tutorial (e.g., vimtutor) and go through the tutorial every Sunday or so as needed to refresh your memory. Or you could also use Anki to remember the shortcuts as you learn about them and use them.
- b215826 7y ago> I wonder if introducing newbies to makefiles and vim is super empowering, or ends up gatekeeping by making it look "as complicated as you feared it would be." This tutorial introduces Vim only after introducing shell and pipes. I was wrong about makefiles -- this tutorial doesn't include makefiles (I was thinking about Software Carpentry [1], which has similar goals). In any case, learning Vim isn't hard as people make it out to be, and one can easily skip that part of the tutorial to come back to at a later point without breaking the continuity. [1]: https://software-carpentry.org/lessons/index.html https://software-carpentry.org/lessons/index.html