Download Ubuntu and run it as a virtual machine inside your current machine (use Google for instructions - it's fairly straightforward with a piece of software called virtualbox). That should stop you from running into hardware related compatibility issues. Get familiar with the interface and the concept of a "terminal". Then try do some simple stuff. Maybe set up nginx (or Apache) to run a web server that you can ac…
I’ll probably use my raspberry pi instead of installing a VM.
Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?
21–30 of 114 posts
Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?
#22Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?
#23The 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…
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." 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.
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.
Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?
#24Earlier quoted context omitted.
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." 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.
But 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.
is there something I am missing out by not using vim?
Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?
#25Earlier quoted context omitted.
But 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.
i 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?
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.
Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?
#26Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?
#27My strategy to solidify my linux skills was simple: commit to linux desktop. We spend most of our time on our desktop, may as well let that time earn you skill points. I picked ubuntu and use the same on servers. You naturally learn a bit every day through daily use. This really adds up over time without extra effort of using a side system. Getting good at windows or osx is a waste of your time unless you are specifically into those platforms.
As for a language, pick one that is (1) easy to start with (2) covers advanced use cases, (3) sound in its design, (4) general purpose, (5) concise. That rules out C (due to 1), JS (due to 3 and 4), php (2,3,4) and most things really.
For me that left me with ubuntu and python, I never looked back. (Yes I know many other things but that is my home base.)
Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?
#28a really good book is Richard Stevens Advanced Programming in the UNIX environment[1]. (sounds daunting but it's not too bad when you combine it with another introductory text on C). If you stick with C you'll eventually know UNIX/Linux a lot deeper than anyone. It takes time though so go easy on yourself. Also check github for a bunch of repos that contain biolerplate code that is used in most deamons illustrating s…
docker-systemctl-replacement is a (partial) reimplementation of systemd as one python script that can be run as the init process of a container that's helpful for understanding how systemd handles processes: https://github.com/gdraheim/docker-systemctl-replacement/blo...
systemd is written in C: https://github.com/systemd/systemd
> examples of how to write secure code
awesome-safety-critical > Coding Guidelines https://github.com/stanislaw/awesome-safety-critical/blob/ma...