I’ve always wanted to understand what is actually meant by this. I have wanted to get into programming for years, did some basic python and c, but could never really progress. Not necessarily a linux question but I know since most distros come with libraries already, it’s popular to use for programming.

I have trouble understanding what people are actually programming if it isn’t their job. Like, you go to your computer and start working on…what? I don’t know enough to make an entire program or debug a game, so im just unsure what people do especially when starting out.

Also I don’t really want to learn it for a job. I just want to learn it to know it. But im not sure how to apply it to anything realistic.

  • ligma_centauri@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    1 day ago

    The best way to learn it, is to set yourself a goal/problem, define as best as possible how many unique issues that problem can be broken into, then start solving them one-by-one, periodically stopping to evaluate how they fit together.

    Learning the best languages and structures to use will come as result of this.

  • applemao@lemmy.worldOP
    link
    fedilink
    arrow-up
    1
    ·
    3 days ago

    Thank you to everyone who commented. You guys are basically geniuses as far as im concerned, and I have a good library of content to look back on now when I have time to get into it. The hardest part will be coming up with a project so simple that I can do it, but one thats interesting enough for me to actually stick with. Maybe something at first like, at 6 pm on Tuesdays, it flashes a gif onscreen. Or maybe a super simple text game.

  • kambusha@sh.itjust.works
    link
    fedilink
    arrow-up
    31
    ·
    9 days ago

    Something like Automate the Boring Stuff might be a good option for what you want. Programming is just another tool to solve a problem.

    For example, I hated when I would archive an unread email, it would remain as unread. So I created a script to mark any archived emails as read, and that script runs every couple of hours.

  • Autonomous User@lemmy.world
    link
    fedilink
    English
    arrow-up
    19
    ·
    edit-2
    9 days ago

    You will never know enough to make a whole program when you never start. Programming small things is very different to big things. You could also try making small changes to big things.

  • Supervisor194@lemmy.world
    link
    fedilink
    arrow-up
    12
    ·
    edit-2
    9 days ago

    So, I make things for myself to replace commercial software that either doesn’t exist or that is becoming (or will become) enshittified like all commercial software.

    I like to cook, for instance. It’s a hobby of mine. Cooking, BBQ, grilling, baking, all of it. So of course, I have recipes and they are important to me. I could spend all my time painstakingly entering all my recipes into recipes dot com or whatever, right? But of course, as soon as I do that, their barely usable app that does almost everything I want (and a hundred things I don’t give a shit about) gets updated in the third update of the week (rolleyes) and they have completely changed the UI and on top of that, they removed a feature that I used daily.

    OR - I could just make my own fucking app. Which I did. It’s awesome, it does everything I need and nothing I don’t. It also doesn’t update every thirty seconds and become less and less usable or require me to completely overhaul my workflow because the programming staff and middle management need to justify their existences.

    I also recently made a wishlist extension for Firefox, because Amazon removed the ability to add non-Amazon items to their wishlist. I have probably a dozen other ideas I’m working on at any given time. None of this is to make money, but just to make my life more convenient and unplug myself from the wider (bullshit) Internet as much as possible.

    • abbotsbury@lemmy.world
      link
      fedilink
      English
      arrow-up
      2
      ·
      9 days ago

      Tangential but you might find TiddlyWiki useful, it’s a single file personal wiki that can be edited in any web browser.

  • dream_weasel@sh.itjust.works
    link
    fedilink
    arrow-up
    10
    ·
    edit-2
    9 days ago

    I wrote a little bit of code to tell me if or when my electricity would be cheaper if I used on demand pricing instead of flat rate. Basically anything you might use excel for could be a programming problem.

    For other hobby projects and “why Linux” it’s easier to sew things together than windows, generally speaking.

    Example:

    Every time I sit down at my PC the first thing I usually do is open a terminal: it is both my launcher and my file manager. I have several programs with TUI (terminal user interface) or text based API (which is an applied programming interface) and I keep my notes in plain text. One type of note I keep is an “atomic” note inside my zettelkasten (this is a fancy way of keeping track of ideas and the way they connect together, but you need to revisit them for it to be useful. Kinda like anki / spaced reputation I guess).

    So enough background, here’s the idea and the programming:

    • If I always open a terminal, it’s a good place to put stuff I want to see.

    • There are two things I want to see: twice a day I want to see a note, the rest of the time I want to see the 3 or 4 most important tasks on my todo list

    • I want randomized notes and I want it to be automatic.

    One of the easiest things you can do in a terminal is “echo” text. So I started by, in my terminal “rc” file (the configuration file that tells the terminal what to do when you start it) echoing my todo list as the very last step in the start process. Then it’s refinement. First don’t give me the whole list, use shell tools to show the head of the list. Now make a conditional statement that says “if there’s a file called “temp” in some folder give me the Todo list, otherwise do nothing”. Basically we follow the incremental logic train until you get the final product:

    • If no file exists, print a note (at random) and then make the file
    • If the file exists write part of the todo list
    • Every 6 hours, delete the file automatically with cron

    Neat you just programmed a lame, but useful tool.

  • LH0ezVT@sh.itjust.works
    link
    fedilink
    arrow-up
    9
    ·
    edit-2
    8 days ago

    I like microcontrollers. It is fun to see code do physical things. Plus, you can learn how simple computers work, which helps get an understanding of regular ones. Combine that with home automation, and you have an infinite time sink.

    Most embedded systems programming software runs nicely on Linux (or sometimes even exclusively). PlatformIO, Arduino IDE, STM Cube, ESP-IDF… Obviously, something like a Raspberry Pi (and its alternatives) runs Linux itself.

    Although, quite often, I find myself saying that since 90% of work and hobbies is either in a browser (including electron) or a shell anyways. Doesn’t really matter how the task bar / dock looks when all you do is run the same 10 programs

  • Sunsofold@lemmings.world
    link
    fedilink
    English
    arrow-up
    9
    ·
    8 days ago

    Sounds like you want a project.

    You could try making a game. Python has pygame. Godot is a bit of a steeper learning step but has a lot of capabilities. I’ve messed around with each for fun.

    Web dev can also be fun, and a very different style of coding. I’ve made things for a loved one who wanted some things for a site they run. Each thing they asked for took me no more than a day but saved them having to hire someone. I also made a little one-file site that I could share with some people as an RPG reference.

    There are also coding games, as in games where you write code as part of the gameplay. These can help in that they give you a goal. Known names include computercraft mod for minecraft, screeps as both mmo and arena battle, Shenzhen I/O and other Zachtronics and zach-like games, The Farmer Was Replaced, etc.

    And of course, you can always just think of something. I’ve written a few scripts to do simple edits to files, like ‘open each file in the folder this is run in and change blahblah to bloobloo and increment the version number’ or batch renaming files. Did one to find duplicate files and list them for organization/deletion.

    I have other things I’ve started but never finished, but I enjoyed working on them, and they weren’t my job, so no worries.

  • CannedYeet@lemmy.world
    link
    fedilink
    arrow-up
    8
    ·
    edit-2
    8 days ago

    A lot of the programming that I do for fun is programming challenges like Advent of Code. They’re more like games or puzzles than projects. You don’t have to wrestle with build tools or old libraries or other people’s crappy code or learn complicated frameworks.

    I like the art of programming. I like to find elegant ways to express ideas. I like to learn new paradigms and language features that allow me to think differently about problems. It’s nice to find a way to make the code readable by matching the code to the problem statement.

    Or there’s the challenge of fluent style, where instead of the code reading in the typical programming style with caveman grammar, you go out of your way to make read like English.

  • JTskulk@lemmy.world
    link
    fedilink
    English
    arrow-up
    7
    ·
    7 days ago

    I write Python for fun, I’m not a programmer. The more you learn, the more you can do. I’ve written a lot of scripts and tools to help me automate tasks I do frequently. It’s a lot of fun to dream up an idea and then make it real, and then later add random features that pop into my head. Windows sucks.

  • Zarxrax@lemmy.world
    link
    fedilink
    arrow-up
    6
    ·
    edit-2
    9 days ago

    I do some programming as a hobby. I’m far from being an expert or even competent at it. You work on whatever you WANT to work on. Sometimes this can be born from necessity, you need your computer to do something, but you can’t find any existing application that does the specific thing that you need. Sometimes maybe you just want to create something, just because it seems interesting to you, or just because.

    So just for example, one of my hobbies involves working with video. Years ago, I was frustrated with the options available for encoding my videos into h264, so I ended up creating my own GUI around FFMPEG. It was easy enough and effective for what I needed, that the tool became quite popular among others in my hobby.

    Recently, machine learning has made it possible to do cool stuff like remove the background from a video clip. A lot of this stuff is really difficult to even get working, let alone to use effectively. So a current project I’m working on is a GUI for such a tool to make it really easy to use.

    So yeah… First I would say you need to figure out what you want to do. Why do you want to write a program? What do you want to accomplish?

    Then you need to learn the basics of programming in whatever language you intend to use. And just gain a basic understanding of how programming works in general. Once you know enough to be dangerous, you can start working on something. Getting started is the hardest part, and involves really thinking about your problem, breaking it down into smaller parts, and considering how to solve each of those small parts. This can involve lots of research, lots of googling, and finding frameworks or libraries that might help you accomplish what you need.

    LLMs like chatgpt have also been amazing in helping people like me to create something much more quickly than before. I can ask it for thoughts on how to accomplish a specific thing, or even have it write entire sections of code for me. Just yesterday, I had it create a script for me which I estimate would have taken me 10-20 hours to write on my own. However, they don’t always give right answers, so it’s really important to have a basic level of understanding of programming so that you can understand the code that it gives you. I don’t use any code until I understand how it works. The LLM can also help explain the code to you!

  • tartarin@lemm.ee
    link
    fedilink
    arrow-up
    5
    ·
    9 days ago

    You need a Bob Ross programming series. A little C here and more Python there.

  • silly goose meekah@lemmy.world
    link
    fedilink
    arrow-up
    5
    ·
    9 days ago

    I like to automate processes I keep repeating on my machine. For example, there are some documents I receive every month, like bank statements and phone bills. Since the naming conventions of those files are atrocious, I wrote a little program to automatically fix those for me

    Some people also like participating in the development of open source software. That requires you to be a somewhat decent programmer already, though, as you’ll have to work with integrated systems

  • Aceticon@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    5
    ·
    8 days ago

    Something as simple as using Shell Scripting to automate tasks (say, rename all files in a directory according to a certain pattern) is programming in Linux and most of these you can even do directly in the shell (i.e. just type a few lines of code on the command line directly, no need to have a file with the program or do any kind of compilation).

    Also it’s stupidly simple to program in certain languages like Perl and Python in Linux mainly because you’re just working in the command line interface and most of what those languages do is that kind of thing (rather than graphical UI stuff), those languages come almost invariably pre-installed in Linux distros, and you can use the same trick as with shell scripting of just starting the interpreter and type the code directly to run it.

    Beyond that, if you’re actually doing stuff like server-side software development, Linux is overwhelmingly dominant in that space and it’s way simpler to, when targetting Linux servers, to just work on your own Linux as developer (user) machine because all the tools for remote access to Unix machines are there nativelly and work seamlessly, plus you can can have the developer machine double as a development environment for server side development (as Linux can still act as a server machine even when you’re running it as a user machine).

  • magic_lobster_party@fedia.io
    link
    fedilink
    arrow-up
    4
    ·
    9 days ago

    There’s a mix of reasons to start a hobby project.

    One reason for starting a hobby project is the learning experience. For example, learning a new programming language or a particular tech stack. The goal isn’t to build something useful. Often it can be building things that already exist. For example, a Minecraft server or a Gameboy emulator.

    Another reason is to build something useful for you. Maybe you have an idea of a program you feel should exist. Or maybe a program exists, but not in the way you want. Building it yourself can bridge this gap. Hopefully someone else might find your program useful.

    Then there’s also the people who do it for fun. It’s kind of like building a model railway. The process of building it can be more fun and rewarding than actually using it.

    Regarding Linux, it’s mostly a matter of preference. There are some things that are easier in Linux. Mac and Windows can sometimes be ” overly protective” and prevent the user from doing particular things. Linux has generally fewer of such barriers.