Projects to do as a linux learner?

The other day I was watching healthy software developer video on "learning addiction" and I think I am a victim of it.
I keep learning and learning but never do anything.
I want to now do.
What projects can I make with linux, bash scripting, sql etc? I am no web developer though. Please guide me a list of 1000 projects to build. Please make this thread a FAQ.
My another concern is that I can build anything in any language using chatgpt but I don't want to use chatgpt at all to learn. How do you suggest that I learn?

I guess it depends on what you mean by building a project.

Having come from a Unix background the way that I gave myself a baptism of fire in Linux was to learn how the Linux Operating System itself was built by downloading (I bought a hard copy) of "Linux From Scratch".

I used a x86 machine as a development platform, downloaded all the source code (for ALL modules/libraries), followed the book instructions, compiled everything from scratch, and built my own bootable system.

I don't know exactly what you want to learn but I sure learnt loads. I had compilations that took hours to run but it was fun. It depends what your idea of "fun" is??

If you like some crafting for your household, then buy a Raspberry Pi! (Or an Arduino.)

:+1: definitely some :sunglasses: projects there

I want to write tools using linux and bash. That's the fun. I am looking at. Rather than coding a linux OS.

I would suggest browsing some historical questions on this site (others are available). I was on ITtoolbox for several years, until it became monetised. I currently have three forums (fora ?) that I visit at least once a day.

Look at the questions, find something relevant to your learning priorities, consider possible approaches, make your own solution, and compare yours to the best (and worst) solutions. Reading (and criticising) other people's code and designs is informative.

I often take an interesting question "offline" -- beyond a sensible response to the question, I will explore the boundaries of brevity, performance, generalisation, clarity, and style. For example, there was a post asking about slow convergence in the Leibniz formula for Pi. Getting four decimal places takes 5000 terms. Getting ten decimal places takes 5 billion terms.

I ended up implementing the Chudnovsky algorithm, which gives me 1000 digits in 72 iterations and 2.6 seconds. I cheated: I used dc for the BigNumber calculations, and 150 lines of Awk to generate a stream of dc commands, and check for convergence.

I'm with this (astonishing) guy:

Antoine de Saint-Exupéry — 'Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.'

I once developed a bunch of monitoring tools.
E.g. give "file queue" alert if any directory within /var has more than 1000 files...
Try it!

rasperberry pi is a whole another world and keyword that'd help me seek project ideas.

Calculate the first day of a given week.
Delete log files in dir all but the last 20.
Get pid tree of a given pid.
Create a script that checks user group on login.

This is not true.

ChatGPT cannot write complete apps or even large code blocks, generally speaking.

ChatGPT generates text like an autocompletion engine. Any code ChatGPT generates is just statistical genAI gobbledegook for anything over a few lines.

On the otherhand, I completely agree you should not code with ChatGPT if you have no idea what you are doing; but ChatGPT can help with small snippets; but of course you must debug every line when generating text from a large language model (LLM).

I use ChatGPT occasionally, but rarely, when I code. For example, I might ask ChatGPT:

"Give me an example of an array of hashes in Ruby using astronomical data"

ChatGPT will give some examples, much like when we google for knowledge:

astronomical_data = [
  {
    name: "Mercury",
    type: "Planet",
    diameter_km: 4879,
    distance_from_sun_km: 57909050
  },
  {
    name: "Venus",
    type: "Planet",
    diameter_km: 12104,
    distance_from_sun_km: 108208930
  },
  {
    name: "Earth",
    type: "Planet",
    diameter_km: 12742,
    distance_from_sun_km: 149597870
  },
  {
    name: "Mars",
    type: "Planet",
    diameter_km: 6779,
    distance_from_sun_km: 227936640
  },
  {
    name: "Jupiter",
    type: "Planet",
    diameter_km: 139820,
    distance_from_sun_km: 778547200
  },
  {
    name: "Saturn",
    type: "Planet",
    diameter_km: 116460,
    distance_from_sun_km: 1433449370
  },
  {
    name: "Uranus",
    type: "Planet",
    diameter_km: 50724,
    distance_from_sun_km: 2876679082
  },
  {
    name: "Neptune",
    type: "Planet",
    diameter_km: 49244,
    distance_from_sun_km: 4503443661
  },
  {
    name: "Pluto",
    type: "Dwarf Planet",
    diameter_km: 2376,
    distance_from_sun_km: 5913520000
  }
]

puts "Astronomical Data:"
astronomical_data.each do |planet|
  puts "#{planet[:name]} - Type: #{planet[:type]}, Diameter: #{planet[:diameter_km]} km, Distance from Sun: #{planet[:distance_from_sun_km]} km"
end

However, this is only an example of how to create an array of hashes in Ruby; it is not a application; it's like a kind of genAI man-page, that's about it.

When you try to write code with ChatGPT, you will not get code written intelligently; just statistically generated blah-blah text based on a LLM. If you are intelligent and know how to code, the ChatGPT can be helpful like a dynamic man page. In fact, I have refactored code using ChatGPT and learned some coding patterns that were useful; but I stopped refactoring with ChatGPT because the coding patterns using ChatGPT are inconsistent and makes a terrible coding partner, IMHO.

In other words, ChatGPT is a tool, like a wrench. You cannot build a car with only a wrench, but of course, a wrench can be useful when you need a wrench.

:slight_smile:

Cheers.

You could check out code wars. They have practice problems for many programming languages, as well as bash scripts.

So you could try doing some problems with bash to build a solid understanding of it. Happy hacking!