How To Get A User-Level Understanding Of Linux For Your Hobby Projects
If you are doing some hobby projects based on Linux and you wish to learn more about the Linux environment, there is always the approach of using some example application, modifying it and if you get stuck then going to stack overflow and post questions and move to the next step. But I don’t recommend it for complete beginners as I myself did it and I did not learn so much and wasted a lot of hours in the process.
The one thing that I actually learned is that the problem with this approach is you would not know “what to google” unless you understand the basics of the technology you are working on!
Hence the path I recommend will include 2 steps that involve a little bit of learning.
STEP#1: Learn to work on the Command Line Interface
Step#1 is to learn the basics of Linux, which involves reading and understanding how to work with the Linux terminal since whatever your current and future project maybe, it will involve some work on the terminal.
Recommended Online Course: Linux Mastery: Master the Linux Command Line in 11.5 Hours (link to udemy)
Since you are mainly interested in doing this as a hobby, the above course is the most suitable for you as it covers the basics pretty strongly, so that next time you read some code on stack overflow, you will get a good idea of what the code does.
Estimated time to complete: 20 hours
The next step depends upon the type of project you are doing and what part of Linux is being used in that particular project. Hobby Linux projects can be broadly classified into the following categories
- Making some Linux applications
- Making some networking related Linux Projects
- Adding custom hardware
- Making Linux run on some custom hardware
STEP#2: Make some Linux applications
If your project involves creating an application that runs on Linux, then obviously you would need to sit and write code for it. But which language to choose depends on which language you already know and which language you are interested in learning. For complete beginners, I would recommend Python.
Head first Programming (link to amazon)
Before you start learning python programming, it’s a good to read the above book to get a feel for what programming is and how its accomplished, especially if you are a complete beginner.
Head first Python (link to amazon)
This is a good book for self-teaching as it makes you think how each step works and as the philosophy behind these “Head first” books says, more you understand the less you need to memorize!
Recommended course: The Python Mega Course: Build 10 Real World Applications (link to udemy)
This course lets you build real-world applications as you learn python hence I guess it’s a good way to learn it since you wish to do it as a hobby.
Estimated time to complete: 80 hours
Then once you are comfortable with writing code then you can move onto learning to make applications on Linux.
Making some networking related Linux Projects
If you are interested in making some networking Linux applications, say running a home media server or a NAS, or just some file sharing service, the first step is to learn about computer networks in general. Once you are comfortable with the whole idea of networking, you can learn the Linux implementation of networking.
Computer Networking: Collection Of Three Books For Computer Networking: First Steps, Course and Beginners Guide. (All in one) (link to Amazon)
This is a rather short read at just 150 pages and it is a good book to get yourself started on learning about computer networks. Once you have read and understood the concepts presented in this book, you will be ready to understand the Linux implementation of these concepts and you would be able to work on your hobby projects as now you are knowledgeable enough to know “what to google“
Adding custom hardware
If you wish to add some custom hardware to talk to your Linux machine, you should gain some knowledge about how the Linux kernel works and how to add your own driver modules to it. In addition to that, you need to learn how to write Linux drivers. You also need to have a working knowledge of operating systems.
This is going to be not a hobby project as it will test your skills and consume a lot of time. The path I would recommend to people wishing to accomplish such a task is the same path that I recommended in the article “How To improve your knowledge and get proficient in computer science and Linux“ above.
Making Linux run on some custom hardware
IMHO this is not a hobby project for a complete beginner, as for a Linux professional it will take maybe a year to complete this kind of a project successfully as this involves compiling the kernel for the specific processor architecture and then making all the necessary drivers to talk to the hardware and then writing the applications on top of that to have a completely working Linux machine.
The path I would recommend to people wishing to accomplish such a task is again the same path that I recommended in the article “How To improve your knowledge and get proficient in computer science and Linux“.
If your interest goes beyond just doing Linux as a hobby and maybe someday get a job as a professional I suggest looking at these articles to get a more thorough picture of what else is possible in the world of Linux.
I guess thats it for now, I hope you found this article valuable.
Feel free to share it with your friends and colleagues!