Show HN: Linux sysadmin course, eight years on
It was a side-project that went well, but never generated enough money to allow me to fully commit to leaving the Day Job. After surviving the Big C, and getting made redundant I thought I might improve and relaunch it commercially – but my doctors are a pessimistic bunch, so it looked like I didn’t have the time.
Instead, I rejigged/relaunched it via a Reddit forum this February as free and open - and have now gathered a team of helpers to ensure that it keeps going each month even after I can’t be involved any longer.
It’s a month-long course which restarts each month, so “Day 1” of September is this coming Monday.
It would be great if you could pass the word on to anyone you know who may be the target market of those who: “...aspire to get Linux-related jobs in industry - junior Linux sysadmin, devops-related work and similar”.
[0] http://www.linuxupskillchallenge.org/
84 comments
[ 3.2 ms ] story [ 163 ms ] threadWhen I learn a new subject I prefer having everything available so I could go through it at my own pace. I understand people learn differently so I wonder if this kind of approach works well for other people who learn differently from me.
Wish this project the best.
There are many different learning styles. Your style (mine too) (perhaps autodidact) does terrible in rigid structure, others need it - even for subjects they are enthusiastic about.
I also believe that 'forcing' students to ssh in daily for a month gets a bit of muscle-memory working, and proves that they have the required stickability. (The initial paid version reported such things back to their employer!)
In fact, all lessons are available via Github, but I try to avoid pointing this out :-)
I really wanted a good discussion forum, and I'm not a great fan of much of the classic forum software. While Reddit gets a good bit of stick for some of it's subreddits, if you pick those you visit well the content can be very good - and the upvoting etc works pretty well imho.
[Edit: added comment on stickability]
I think this is a common pitfall of a number of beginner courses. Personally, I view it as kind of an arrogance of "I know better what you need than you do".
As a user, I think you have no say in how I consume any content.
> The initial paid version reported such things back to their employer!
The employer has no right to know anything about me other than what I do during my 8h of paid time. I can share whatever I want of course, but a feature like this seems like it supports an unhealthy work relationship.
But hey, having run this for a long while, I'm well aware people are coming from all sorts of backgrounds, having all sorts of crazy things going on in their lives etc - so however they do it is fine by me.
So, those that simply read it through - OK. Those that run it in a VM on their laptop - OK.
Peace,
For example, in the past, I have often gone through coursera courses that were supposed to run for months within weeks, because I had a lot of time to dedicate to the courses.
I made going finishing courses a habitual activity, but I personally have designed it to suit my needs. In other words, I have tweaked the pace greatly.
You're consciously crippling your content with the idea that someone will benefit from slow pace. If a user wants to refresh some things, fill some knowledge gaps, or just take a look what the subject matter is about without the need for deep learning, you're adding friction to the process (and they'll likely not return the next day).
Now, don't get me wrong. If you get something out of it, e.g. Netflix releasing an episode a week for whatever gains they get, that's fine. But, if someone told me "read this book, you get 10 pages a day," I'd consider it a waste of my time.
My 2c.
At least the way I read their post, snori74 isn't presenting some absolute position of authority, but rather is describing their experience from running the course (and I assume working as a sysadmin) as to what is effective for the students.
Putting forward what works best for most students doesn't exclude other ways of consuming the content. A student motivated to consume the content more quickly can easily discover the github themselves, or ask the question on reddit.
Your preference for consuming the content all-at-once is a valid one, however it's right for the content creator to set up the course in a way that maximises the outcomes for student - especially when there is an easy fallback to the all-at-once model.
I'll also add that having a 'class' of students doing the course with you is something that a lot of people would appreciate, as they can discuss the challenges and successes they see with people experiencing the same things at the same time.
[0]: http://snori74.blogspot.com/2020/04/linux-upskill-challenge....
For this course I now have a small team of helpers authorised to look after the subreddit, the GitHub and the domain name. So hopefully it'll keep going strong after I bow out.
I've also changed the licensing to CC by SA 4.0, so if you think this is a good base you're welcome to develop it as you see fit, including commercially.
besides that, keep a positive attitude. this thing here we call life is just a journey. eventually it will end for all of us. just make sure to enjoy your journey as much as you can doing the things you enjoy doing. sure it would be nice if we could all get paid to do the things we like, but that's not always the case. never fear though, making money is not and will never be a good measure for success. glad to learn that your side project was to perpetuate knowledge.
https://old.reddit.com/r/linuxupskillchallenge
The other two links in clickable form as well:
http://www.linuxupskillchallenge.org/
http://snori74.blogspot.com/2020/04/health-status.html
Constructive criticism: to me, this is a bit too barebones. There are quite a few extremely similar ones out there with essentially the same content but not as nice a format. You might consider doing the next tier course for those who aren't completely green but are trying to get past that initial hurdle which what many of them are trying to do.
As for what exactly, I would say an extensive focus on the entire systemd ecosystem would be a great starting point for example. Go ahead and go into nf/iptables, etc.
One other thing, I think a proper table of contents would be a good simple addition.
It's likely that I'll put a tentative ToC for Part II into somewhere like /r/linux of /r/sysadmin for comment and discussion.
Anyway the question for HN - is it too "late" for a person to consider career change in 33? To clarify, I am not in IT business, my formal education (and job) is in business administration, however with recent and important changes in my private and work life, I am considering to bite the bullet. Initially, I considered back-end development, but actually Linux sysadmin might be more appropriate for me.
On that note, programmers used to consist of mathematicians, engineers, and scientists, until there was a growing shortage of programmers, at which point project managers, accountants, and other comparable professionals trained to become programmers. [1]
1. The Future of Programming - Uncle Bob Martin https://youtu.be/BHnMItX2hEQ
Make sure it's a career in something you actually like and can foresee to some degree of confidence that you can continue being interested in, and honing your skill in, for a while.
It's definitely doable, and becoming more and more common (at least from the candidates and initiatives I see at AWS).
It seems that I'm going to make it regarding my health challenges, so I promise to make a good use of the Linux skills that your course is going to help me to systematize. Thank you. I'd not get into tech without what have happened to me. Being forced to be on a "lock-down" for 2,5 years I got myself step by step into an amazing world of technology which with my skills getting more polished made me feel I might be actually able to transcendent my body's limitation. I can only hope that something similar could still happen to you regardless of the discipline involved (I know that there's probably nothing worse than not being able fully commit to one's life).
Take care, buddy.
One suggestion: Make it more obvious that the courses are on GitHub.
I make a point to avoid reddit as much as possible, which means I don't know how to interact with reddit's interface. When I tried to view the course via reddit, I had a lot of trouble locating the actual lessons. They were out of order, and I had to shift through other users' threats ('I missed day X!' 'Here's my journal on my progress...').
Honestly, had I not randomly clicked on the GitHub repo, I would've moved onto something else. I'm glad I didn't, but yeah... pushing people onto reddit limits your audience.
Reddit also cripples their mobile experience on web, so unless your audience is existing redditors on computers or with the app, they're likely getting a poorer or more inconsistent experience than you see.
Thanks for the great work, I hope to revisit it without the hurdles someday.
I emailed you a few times, and you seemed like a genuinely nice guy. I just wanted to chime in and say thanks and wish you the best of luck for both your health and the legacy of this project.
> [ http://www.opsschool.org/ , https://github.com/kahun/awesome-sysadmin/blob/master/README... , https://github.com/stack72/ops-books , https://landing.google.com/sre/books/ , https://response.pagerduty.com/ (Incident Response training)]
To that I'd add that K3D (based on K3S, which is now a CNCF project) runs Kubernetes (k8s) in Docker containers. https://github.com/rancher/k3d
For zero-downtime (HA: High availability) deployments, "Zero-Downtime Deployments To a Docker Swarm Cluster" describes Rolling Updates and Blue-Green Deployments; with illustrations: https://github.com/vfarcic/vfarcic.github.io/blob/master/doc...
For git-push style deployment with more of a least privileges approach (which also has more moving parts) you could take a look at: https://github.com/dokku/dokku-scheduler-kubernetes#function...
And also reference ansible molecule and testinfra for writing sysadmin tests and the molecule vagrant driver for testing docker configurations. https://www.jeffgeerling.com/blog/2018/testing-your-ansible-...
https://molecule.readthedocs.io/en/latest/
https://testinfra.readthedocs.io/en/latest/ :
> With Testinfra you can write unit tests in Python to test actual state of your servers configured by management tools like Salt, Ansible, Puppet, Chef and so on.
> Testinfra aims to be a Serverspec equivalent in python and is written as a plugin to the powerful Pytest test engine.
I wasn't able to find a syllabus or a list of all of the daily posts? Are you focusing on DevOps and/or DevSecOps skills?
EDIT: The lessons are Markdown files in a Git repo: https://github.com/snori74/linuxupskillchallenge
Links to each lesson, the title and/or subjects of the lesson, and the associated reddit posts might be useful in a Table of Contents in the README.md.
However, You must be the third or fourth person today to suggest that I add a TOC - so that is something I think I'll need to look at!
Looks like Day 20 covers shell scripting. A few things worth mentioning:
You can write tests for shell scripts and write TAP (Test Anything Protocol) -formatted output: https://testanything.org/producers.html#shell
Quoting in shell scripts is something to be really careful about:
> This and this do different things:
Shellcheck can identify some of those types of (security) bugs/errors/vulns in shell scripts: https://www.shellcheck.net/LearnXinYminutes has a good bash reference: https://learnxinyminutes.com/docs/bash/
And an okay Ansible reference, which (like Ops School) we should contribute to: https://learnxinyminutes.com/docs/ansible/
Why do so many pros avoid maintaining shell scripts and writing one-off commands that they'll never remember to run again later?
...
It may be helpful to format these as Jupyter notebooks with input and output cells.
- Ctrl-Shift-Minus splits a cell at the cursor
- M and Y toggle a cell between Markdown and code
If you don't want to prefix every code cell line with a '!' so that the ipykernel Jupyter python kernel (the default kernel) executes the line with $SHELL, you can instead install and select bash_kernel; though users attempting to run the notebooks interactively would then need to also have bash_kernel installed: https://github.com/takluyver/bash_kernel
You can save a notebook .ipynb to any of a number of Markdown and non-Markdown formats https://jupytext.readthedocs.io/en/latest/formats.html#markd... ; unfortunately jupytext only auto-saves to md without output cell content for now: https://github.com/mwouts/jupytext/issues/220
You can make reveal.js slides (that do include outputs) from a notebook: https://gist.github.com/mwouts/04a6dfa571bda5cc59fa1429d1309...
With nbconvert, you can manually save an .ipynb Jupyter notebook as Markdown which includes the cell outputs w/ File > "Download as / Export Notebook as" > "Export notebook to Markdown" or with the CLI: https://nbconvert.readthedocs.io/en/latest/usage.html#conver...
With Jupyter Book, you can build an [interactive] book as HTML and/or PDF from multiple Jupyter notebooks as e.g. Markdown documents https://jupyterbook.org/intro.html : ...From https://westurner.github.io/tools/#bash :