#9 in Unix operating system books
Use arrows to jump to the previous/next product
Reddit mentions of Advanced UNIX Programming (2nd Edition)
Sentiment score: 3
Reddit mentions: 3
We found 3 Reddit mentions of Advanced UNIX Programming (2nd Edition). Here are the top ones.
Buying options
View on Amazon.comor
- New
- Mint Condition
- Dispatch same day for order received before 12 noon
- Guaranteed packaging
- No quibbles returns
Features:
Specs:
Height | 9.1 Inches |
Length | 7 Inches |
Number of items | 1 |
Weight | 2.4691773344 Pounds |
Width | 1.6 Inches |
Hey,
I assume you have good grasp about the culture and ecosystem you want to work in by now. This means you're in a perfect situation to dig deeper.
My first advice would be to be more specific in your goal. Find a project which is interesting to you. This will help you to cut down the list of "things to learn", as you will concentrate on the tools the project uses.
In your tool belt should be at least:
Suitable answers can be:
This list is enough to keep you busy for a year easily.
Here is a list of recommendations of resources which proved invaluable for me (based on the list above and more; this list contains free web resources and books):
Learn about GitFlow and the arguments against it. Write good commit messages. Understand different versioning schemes (https://semver.org/ ; http://calver.org/ ).
Unfortunately, apart from it, good resources on kernel programing are sparse. After working through this book your best bet are the drivers in mainline, the kernel documentation and google. Have a look at kernelnewbies for an introduction on how to get involved with mainline.
Regarding your ideal schedule: I cannot answer this to be honest.
/Rambling ahead/
But: find a hobby project (e.g. implement a Z-machine) you want to realize in "a professional manner".
What I mean by that is, strive to use all the tools you want to learn in a disciplined manner. Put your project out there on a public git host and assume you have real users who want to build your stuff on their own machines. Treat this project as your business card, don't be afraid but improve it constantly.
There is always something you didn't know. You will always find things to improve, even it's only a improvement from a purist standpoint. But your "hobby" project is not done as soon as it works. It's a test bed, a record of what you've learned. It is a reference point for the future you to come back.
Read blogs about development. Learn a object oriented language and see how you can apply these concepts in C (encapsulation, "object orientated design in C without classes"). Learn a functional language just to see something completely different (Haskell / a scheme / Common Lisp ). Realize that it's sometimes just a bad idea to use C for some projects / parts of a project.
Consider to always learn the "core tool" first and then its "high level abstraction tool/helper". Eg: learn the basic usage of the
gdb
/git
comandline tool before you dive into a graphical wrapper. Depending on your environment you wont have access to the wrapper, but the cli tool will be (hopefully) there. For example I use emacs (i know vim too) for git nowadays, but I'm not lost if I don't have access to it. Also it is always good to understand the core concepts.Read Linux Weekly News (access to the archive is free), have an eye on the Linux Kernel Mailing List. Bootlin.com has a ton of great learning material regarding embedded Linux, Driver programming, Yocto and buildroot.
Don't be afraid to jump into an IRC channel / a mailing list, but be sure to do your homework first. They'll eat you alive if you didn't. (see http://www.catb.org/~esr/faqs/smart-questions.html)
Be open but do your own research. Inform yourself on the pro and cons of everything. Don't believe in "silver bullets".
It will be a steep learning curve in the beginning, but with every step you take it gets easier.
Hope this helps you on your journey.
Personal Info/Disclaimer: I'm a "professional" (i get paid) "embedded Linux" developer, writing system programs and kernel drivers for about 8 years. I still learn stuff every day. Recommendations are heavily based on my own experience and what I use still on a day to day basis. Regarding on what you want to do this list may lack information.
edits: grammer, formatting, multiple additions in the first 2h
Linux or *nix programming in general basically means C programming using system calls. If you are interested in this kind of stuff one of the best books I've ever read on the subject was the Advanced UNIX Programming by Marc Rochkind. Obviously, you have to have a fairly strong C background in order to read this book, but if you want to get into Linux programming this is one of the best books out there in my opinion.
Shell scripting is fine to know (and probably you should) but that doesn't count as Linux programming, the shell is just a tool targeted to the user aka sysadmin to help them manage their system more effectively.
haven't read that one, but this one is pretty good too.