[HN Gopher] Ask HN: How can a intermediate-beginner learn Unix/L...
       ___________________________________________________________________
        
       Ask HN: How can a intermediate-beginner learn Unix/Linux and
       programming?
        
       For a long time, I've been in an awkward position with my knowledge
       of computers. I know basic JavaScript (syntax and booleans and
       nothing more). I've learned the bare basics of Linux from setting
       up a Pi-hole. I understand the concept of secure hashes. I even
       know some regex.  The problem is, I know so little that I can't
       actually _do_ anything with this knowledge. I suppose I'm looking
       for a tutorial that will teach me to be comfortable with the
       command line and a Unix environment, while also teaching me to code
       a language. Where should I start?
        
       Author : learnTemp229462
       Score  : 52 points
       Date   : 2020-03-21 19:39 UTC (3 hours ago)
        
       | jonahlibrach wrote:
       | Learning to use the command line is a requirement for all serious
       | programmers and its great you want to start.
       | 
       | It can be pretty overwhelming to use the terminal so you may have
       | to some reading to get yourself really comfortable.
       | 
       | I usually go to books/(book pdfs) to help me start out because
       | they have conceptual explanations about the syntax which really
       | helps my understanding.
       | 
       | Maybe this one would be good? The Linux Command Line, 2nd
       | Edition: A Complete Introduction
       | 
       | Once I'm comfortable based on the book, using StackOverflow and
       | other websites becomes much, MUCH easier.
       | 
       | In the process, you'll learn BASH which is used for scripting.
        
         | severine wrote:
         | > _Maybe this one would be good? The Linux Command Line, 2nd
         | Edition: A Complete Introduction_
         | 
         | Free PDF in the author's (William Shotts) homepage:
         | http://www.linuxcommand.org/tlcl.php/
        
       | tdy721 wrote:
       | Keep hacking your raspberry pi. Customize your shell with a
       | profile; maybe alias LS so it always uses color? Find some
       | packages to install. Cowsay, and SL are great, udderly useless ;)
       | programs. Check em out.
       | 
       | Keep projects small, just patch together open source code for
       | fun, and read the open stuff you do use.
       | 
       | You could also switch the GUI environment of your raspberry pi.
       | Install headless raspbian and install he GUI from the CLI. Just
       | hack!
       | 
       | My koan is video poker, I've rewritten a whole game about 3
       | times. I also like writing prime number finders in new languages.
        
       | TheDesolate0 wrote:
       | https://tldp.org
        
       | mooneater wrote:
       | I disagree with lots of advice here.
       | 
       | My 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.)
        
         | roenxi wrote:
         | Commit to using, _breaking and fixing_ a Linux desktop to learn
         | quickly. I learned a lot running Debian Unstable back back when
         | men were men and unstable was really unstable; so the 2010s.
         | 
         | If minor things are constantly going wrong and getting fixed
         | then the only way that can happen is the user building up a
         | good mental model of how the system works.
         | 
         | An update that breaks X11 will teach you a world of information
         | about terminals. "How do I use a messaging client in a
         | terminal?", "What text editors work in a terminal?", "How do I
         | browse the web from a terminal?", "What games are there for
         | terminals", "How do I watch a movie in the terminal" (ascii).
         | 
         | Get forced to live like that for a week and you also learn how
         | to fix X11 (eg, learning about the difference between 2D and 3D
         | graphics drivers, OSS vs non-OSS drivers, kernel vs userspace).
         | Valuable life skills. Godspeed to the Wayland devs.
        
         | asveikau wrote:
         | It is trendy to hate C now, but if you want to understand a
         | Unix-like OS I think it is mandatory and they go hand in hand.
         | Otherwise, you will have no idea what kind of interface your
         | higher level language is abstracting.
         | 
         | It's ok to not like it, but don't let that dislike be due to
         | lack of understanding.
        
         | fao_ wrote:
         | > , (5) concise. That rules out C (due to 1)
         | 
         | That's interesting, most people I've started on C have found it
         | easier to start out in that than say, Java, which has been on a
         | hell of a lot of introductory courses for a decade now
        
         | empath75 wrote:
         | Counterpoint: I've been a Linux sysadmin and developer for
         | close to 10 years at this point and I've never used Linux as a
         | desktop. I've only used MacBooks.
         | 
         | The skills you need to run Linux on the laptop aren't
         | particularly close to what you'd need to run Linux as a server,
         | IMO, particularly Linux as a VM.
        
           | Jnr wrote:
           | I remember I used Ubuntu Desktop in 2008 for a year or two.
           | But Ubuntu is point and click and anyone can use it. I did
           | not learn much about Linux using it.
           | 
           | I felt that I really started understanding how things work
           | when I switched to something requiring more reading -
           | Archlinux.
           | 
           | To get a running desktop it not only required doing all kinds
           | of things I did not understand back then, it also provided
           | great Wiki to get there. I still sometimes end up in that
           | Wiki to quickly get up to speed about some tools or concepts.
           | 
           | And the fact that it is rolling release distro and was always
           | running the latest upstream software version meant that
           | frequently at least the UI part broke down, and that forced
           | me to learn even more things. :)
           | 
           | That was only the beginning but now it feels like it opened
           | many possibilities and career paths for me. It probably was a
           | bit frustrating at the beginning but it is worth it.
        
           | jpxw wrote:
           | OS X exposes you to a decent amount of Unix stuff anyway.
           | It's quite a good compromise imo.
        
         | unixhero wrote:
         | Yes. Run a Linux desktop and only stay in it.
        
         | jameshe wrote:
         | Based on personal experience, I can totally echo this comment.
         | I am a business undergrad (senior year), but I am a JavaScript
         | developer for a local start-up. On my Windows laptop, my
         | workflow included applications from MS Office, as well as
         | PowerShell and Vim. At the beginning of this semester, my
         | laptop broke (screen) and I couldn't afford a repair, so I dug
         | up an old ThinkPad T430 that I installed Ubuntu on a couple
         | years back. It was an old machine (2012?) that I bought used,
         | after some searching done on my phone, I upgraded the OS and
         | got to work.
         | 
         | Based on my experience with the switch, I've learned miles more
         | about Linux and how computers work than I would've before. I
         | might even say I like the experience more than I did before. On
         | top of that, as the parent comment says, I've learned more
         | about Linux, shell script, the directory tree, regular
         | expressions, etc., than I think I would've otherwise by self-
         | teaching. It might (read: "definitely will") be uncomfortable
         | at first, but the Linux community is big and helpful and
         | there's plenty of great open-source software that can replace
         | your old workflows.
         | 
         | As far as picking a language goes, I started with Python for
         | the reasons above, but really, starting anywhere is better than
         | being stuck deciding. Common starting points are Python, Java,
         | JavaScript, C#, but really, just pick any language with a large
         | community to help you out. When you think you know enough,
         | consider ideas for a personal project, which is where you'll
         | likely learn the most. After that, keep learning and if you
         | think you want to learn something else, you'll realize how much
         | easier it will be with one language under your belt already.
        
       | pbh101 wrote:
       | Some resources I've found helpful to learn some command-line:
       | 
       | - https://cmdchallenge.com/. This set of increasing-in-difficulty
       | challenges should help with structure in terms of learning a bit
       | more.
       | 
       | - https://explainshell.com/ can be helpful as well.
       | 
       | - Don't forget the man pages! `man <command>` can be quite
       | helpful! For a different approach on teaching some, bropages.org
       | could be helpful.
       | 
       | - I haven't used it personally, but there is a lot of info at
       | http://www.opsschool.org/
       | 
       | As for learning to program, I suggest a very good starter
       | language is Python, and its built-in, first-party language
       | reference/tutorial I found helpful when I learned it:
       | https://docs.python.org/3.8/tutorial/index.html
       | 
       | As for "what" to program after that, I don't have any great
       | resources for what constitutes some good initial programs. Off
       | the top of my head, here are some ideas about places to start
       | which are doable with only inputting and outputting text:
       | 
       | - FizzBuzz
       | 
       | - Play Rock Paper Scissors with the computer
       | 
       | - Play Tic Tac Toe with the Computer
       | 
       | - Sieve of Eratosthenes
       | 
       | - Conway's Game of Life
       | 
       | - Given a piece of text, count how many occurrences of each word
       | there are and display the top ten.
        
       | morty_s wrote:
       | There are many ways, but here is one:
       | 
       | Read and lightly work through The C Programming Language (K&R).
       | Code along with the book, don't feel you have to really deep-dive
       | anything.
       | 
       | You don't have to learn C well at this point. Just learn from it.
       | 
       | Then start reading The Art Of Unix Programming. Do this casually.
       | Read a bit, code a bit. Between K&R and TAOUP, you'll be inspired
       | by to write at least two small projects.
       | 
       | To supplement K&R and TAOUP, begin reading Unix Network
       | Programming.
       | 
       | If you have access to a Mac or a Linux machine, explore the man
       | pages.
       | 
       | If you're on a Mac, explore the man pages __and__ the code that
       | lives on your system.
       | 
       | One way to do this is to use something like vscode's intellisense
       | to "Go to Definition." E.g., when you're coding an example from
       | K&R, right click on one of the included headers, and click "Go to
       | definition." It will take you to the header file. Look through
       | the code. Then you could look at the code from FreeBSD or OpenBSD
       | on GitHub.
       | 
       | Edit: Just wanted to add, by doing the above you'll get exposure
       | to your system in new ways. Moreover, you'll find yourself
       | learning Unix out of necessity, for fun, and by accident. You can
       | practice the art of Unix programming in almost any language at
       | this point. C is unix-y, but so is Rust.
        
       | osrec wrote:
       | 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 access via your host machine.
       | 
       | Thereafter try doing some Linux admin tasks, like creating users,
       | switching users. Maybe even set up SSH and try accessing the
       | virtual machine from your host machine via PuTTY.
       | 
       | After, maybe try spinning up a simple node web app on the virtual
       | machine and access it from a browser on your host machine.
       | 
       | By this time, you'll probably get a sense of what you want to
       | explore next! And remember, Google it's your friend for all of
       | the above!
       | 
       | All the best :)
        
         | learnTemp229462 wrote:
         | I'll probably use my raspberry pi instead of installing a VM.
        
           | osrec wrote:
           | Sure - the only benefit of a VM is that you can mess up the
           | VM's filesystem without worrying about it too much.
        
             | disgruntledphd2 wrote:
             | Making terrible mistakes on real machines teaches you much
             | more though (by sheer necessity if nothing else).
        
       | b215826 wrote:
       | _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/
       | 
       | [2]: https://software-carpentry.org/lessons/index.html
       | 
       | [3]: https://mywiki.wooledge.org/ParsingLs
       | 
       | [4]: https://mywiki.wooledge.org/BashGuide
       | 
       | [5]: https://guide.bash.academy/
        
         | Waterluvian wrote:
         | 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.
        
           | jahbrewski wrote:
           | 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.
        
             | kyawzazaw wrote:
             | 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?
        
               | b215826 wrote:
               | > _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.
        
               | threatofrain wrote:
               | It's hard to look like a true haxxor.
        
           | b215826 wrote:
           | > _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
        
       | sys_64738 wrote:
       | You need a goal which is a tangible end product. Everything else
       | derives from that core requirement. E.g. write a multithreaded
       | chat program with a separate remote backend.
        
         | klyrs wrote:
         | That's way complicated for a newbie project... I'd go with
         | something like a snake game
        
       | toohotatopic wrote:
       | Try this recent HN submission: Text Processing in the Shell
       | https://news.ycombinator.com/item?id=22590824
        
       | smitty1e wrote:
       | I regularly recommend installing VirtualBox, obtaining a Linux
       | distro, e.g. fro. OSBoxes.org, and using it to do a
       | http://linuxfromscratch.org/ project.
       | 
       | LFS is well-document and maintained, and levels you up in a jiffy
       | on the practical basics.
       | 
       | It's not about programming per se, but covers quite a few
       | concepts you're expected to "just know".
       | 
       | Plenty of pointers to more advanced concepts, too.
        
       | seankross wrote:
       | I wrote a free book for getting started with the command line
       | that may interest you: https://seankross.com/the-unix-workbench/
        
       | smabie wrote:
       | I would recommend learning Linux the way I did 15 or so years
       | ago: get rid of other operating systems and use a more 'advanced'
       | distribution (such as Arch or Gentoo). In my case, I fucked up my
       | Windows install on a new laptop when I was 12. At that point, I
       | was stuck and just decided to stick with Linux. It's remarkable
       | how quickly you learn when you absolutely need to in order to use
       | the computer.
       | 
       | My second piece of advice would be to learn C from this book:
       | https://en.wikipedia.org/wiki/The_C_Programming_Language
       | 
       | After finishing it and completing all the exercises, you should
       | be ready to go learn anything else you want to.
        
       | heavyset_go wrote:
       | Shoehorn Linux into your life, even when there are other
       | solutions that you're familiar with that already solve your
       | problems.
        
       | grumpy8 wrote:
       | I strongly recommend "A Practical Guide to Linux Commands,
       | Editors, and Shell Programming". It's a great overview of many
       | things linux & command line. Very approachable for beginners and
       | more than good enough to make them dangerous.
        
       | nicklaf wrote:
       | Honestly? When I was in high school I was fortunate enough to
       | find a copy of _The Unix Programming Environment_ [0], which is a
       | marvelously accessible tutorial introduction to incrementally
       | building UNIX(r) programs using nothing more than the pipe
       | operator, which means you can start writing 'programs' that work
       | on the output of other programs, until your program snowballs
       | into a longer pipeline. The book was published in 1984 and works
       | verbatim on any Linux system today.
       | 
       | Once you grasp how powerful this closed system of incrementally
       | processing text is, you are sort of unstoppable at the command in
       | a *nix system.
       | 
       | Pay careful attention to regular expressions, which are a
       | universal tool in Unix for processing text. Along with Unix'
       | treatment of files as a stream of newline terminated strings,
       | this how Unix gets away with working with unstructured files
       | instead of something like XML or S-expressions): that is, most
       | Unix tools expect you to work with a file (or file descriptor,
       | which is a pointer to any file-like thing in memory), and to
       | process it one line at a time, and to use regular expressions to
       | parse those lines into fields.
       | 
       | Working with lines using regular expressions is how the original
       | editor, /bin/ed, was conceived, before the existence of visual
       | editors like Vim and Emacs: you can find, print, and also edit
       | lines in the file using regular expression syntax in ed, and this
       | knowledge, btw, translates to fluent use of regular expressions
       | in both sed ("stream editor", or basically a non-interactive
       | version of /bin/ed, which essentially executes your editor
       | commands and then exits), and egrep (which searches for lines
       | matching your regular expression).
       | 
       | In fact, once you start to see these pieces come together, look
       | for examples in Kernighan and Pike[0] which demonstrate the use
       | of awk. Awk is an extremely powerful but also extremely simple
       | tool for processing data in Unix, using all the concepts I just
       | described, and not much else. It has a few extra features, like
       | variables and loops, which you'd expect in a programming
       | language, but you are expected to use Awk exactly like you'd use
       | things like grep, ed, and the shell. It's just that now you've
       | got this very compact, powerful notation for splitting records
       | (lines) into fields (regular expression matches), and then doing
       | arbitrary things with them to spit text back out. You could even
       | write your own database using something like Awk, and you can
       | read about how to do database-like tasks in the classic and
       | accessible book on Awk by the original authors of the tool (Aho,
       | Weinberger, and Kernighan, whose last initials together form the
       | name AWK)[1].
       | 
       | Then, much later in life, when you find yourself doing some fancy
       | stuff in Haskell and creating a DSL to do things like process
       | pipelines, you realize that Awk was actually way ahead of its
       | time.
       | 
       | [0]
       | https://en.wikipedia.org/wiki/The_Unix_Programming_Environme...
       | 
       | [1] https://en.wikipedia.org/wiki/The_AWK_Programming_Language
        
       | bluemooner wrote:
       | Here's a couple of tutorials on various tools that might be
       | useful for a beginner: https://missing.csail.mit.edu/
        
       | stank345 wrote:
       | My advice is to start working on a project you care about and
       | then learn everything required to make it happen. If you already
       | know JavaScript, maybe build and deploy a static website. Once
       | you've done that then perhaps make it interact with an API.
        
         | jordanpg wrote:
         | This. Having something to actually accomplish is much more
         | important than finding the ultimate book or online course.
         | There are lots of those.
         | 
         | Pick one and move on to defining a realistic project that seems
         | interesting and achievable.
         | 
         | Most important of all, finish it, and write what you did down
         | somewhere. It took me 20 years to realize how important this
         | is.
        
       | worik wrote:
       | If you want to learn programming, from my point of view, learn C.
        
       | goshx wrote:
       | For programming, start by having a project. Think about something
       | you'd like to build and focus on one thing at a time. This will
       | guide your research.
       | 
       | For Unix, install linux on your computer and use it daily. You'll
       | be forced to learn.
        
         | chipperyman573 wrote:
         | >For Unix, install linux on your computer and use it daily.
         | You'll be forced to learn.
         | 
         | I tried this years ago and it didn't end well. With how
         | complicated current-gen distros are, you need to understand
         | what's going on under the hood before you can effectively mess
         | with it. In my experience you'll just end up with one screen
         | that's only at 720p and a crashed pulseaudio that you never fix
         | because you just want to watch netflix right now, and for some
         | reason that still works as long as you use bluethooth. Even
         | though you didn't _want_ to use your bluetooth headphones, it
         | 's easier than fixing the problem with your sound driver or
         | whatever so you'll just end up using them anyway.
         | 
         | It might be easier to start with server management because you
         | don't have to figure out much human IO stuff... Linux is really
         | good at talking to Linux. VPSs are cheap and give you root
         | access. Plus if you mess up, it's generally pretty easy to just
         | format the VPS and start over. You can't easily do the same on
         | a desktop. Also it forces you to learn about Linux and not
         | whatever software your distro uses (for example, learning how
         | to use apt is a lot more important than the ubuntu app store)
        
           | goshx wrote:
           | I don't know how long ago you've tried it, but that was
           | pretty much my experience as well. However, in my case we are
           | talking late 90's. Things have changed a lot since then.
        
             | chipperyman573 wrote:
             | About 3-4 years ago. I disagree with most poeple that say
             | it's just as easy as using w10 now, it takes way more work
             | to make it as stable as windows (which takes none). It's
             | just a lot more powerful and easy to modify when you want
             | it to be.
             | 
             | BTW if the OP (or anyone else) is wondering, now I run w10
             | and minimal Ubuntu with i3. The knowledge transferred
             | basically 1:1 from server management (except for window
             | manager stuff, but that was easy to research)
        
       | starpilot wrote:
       | Use Slackware, do these exercises:
       | 
       | - Customize your bash prompt, create aliases for some common
       | commans (ls, df are good)
       | 
       | - Build a LAMP stack, compile everything from source tarballs.
       | Get it working so that you're able to browse your webserver from
       | your phone.
       | 
       | - Update a sound or video driver
       | 
       | - After you're comfortable, recompile the kernel
       | 
       | - Through these, do as much in the command line as you can. Get
       | comfortable with mv rm chmod chown and so on.
       | 
       | Any time you have edit a text file, use vim, nothing else.
        
       | jimnotgym wrote:
       | If you are on Windows I recommend setting up Windows Subsystem
       | for Linux. With VScode. You now have a Linux server with remote
       | code editing. I note you have an Raspberry pi, what follows will
       | work with the pi as well with whatever remote machine. Complete
       | these tasks
       | 
       | 1) install the language of your choice and start a simple web
       | site using the languages webserver. View the website in your
       | browser on Windows. A Python Flask 'hello world' or a Node one?
       | 
       | 2) Set up an SSH server and remote in from the Windows machine.
       | Learn how to set it up to use keys only instead of passwords.
       | Find out why that is a good idea
       | 
       | 3) learn Git. Github has some nice tutorials.
       | 
       | 4) set up NGinx to run your website above.
       | 
       | 5) set up Nginx for https
       | 
       | 6) set up LetsEncrypt.
       | 
       | 7) set up a free AWS account, start a server and put your website
       | on it using SSH and git.
       | 
       | 8) look through the ssh log files to see login attempts, and the
       | Nginx logs. Imagine there were millions of rows, how would you
       | find a certain one, or the last few? (head, tail, grep, cat).
       | 
       | That should get you somewhere.!
        
       | DyslexicAtheist wrote:
       | a 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 signal handling,
       | forking, etc.[2]
       | 
       | Also I suggest taking some open source projects from Daniel
       | Bernstein (DJB) as examples on how to write secure code. qmail,
       | djbdns, daemontools ... there are lots of great ideas there[3]
       | 
       | Write a couple of simple programs that utilize your code and
       | expand from there, learn the plumbing, e.g. write a Makefile,
       | learn autotools/autoconf, how to write tests, how to use gdb, how
       | to create shared libs and link a program
       | LD_LIBRARY_PATH/ldconfig, etc ...
       | 
       | Most important think about something that you like to write and
       | go from there. Back in the late 90ies I studied RFC's (MIME,
       | SMTP, etc) and then implemented things that I could actually use
       | myself. Here is a recent project I did some weeks ago (an extreme
       | edge-case for security maximalists which will never be used by
       | anyone other then myself, ... but I really enjoyed writing this
       | and learned a bunch of new stuff while doing so)[4]
       | 
       | if you need ideas or help with looking at your code, don't
       | hesitate and send me a mail.
       | 
       | [1]
       | https://en.wikipedia.org/wiki/Advanced_Programming_in_the_Un...
       | 
       | [2] https://github.com/jirihnidek/daemon
       | 
       | [3] https://cr.yp.to/djb.html
       | 
       | [4] https://github.com/DyslexicAtheist/nfq/
        
         | westurner wrote:
         | > _Also check github for a bunch of repos that contain
         | biolerplate code that is used in most deamons illustrating
         | signal handling, forking, etc.[2]_
         | 
         | 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...
        
       ___________________________________________________________________
       (page generated 2020-03-21 23:00 UTC)