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.

  • kambusha@sh.itjust.works
    link
    fedilink
    arrow-up
    0
    ·
    23 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.

  • Emily (she/her)@lemmy.blahaj.zone
    link
    fedilink
    arrow-up
    0
    ·
    23 days ago

    This feels more like two questions, so I’ll answer them both:

    1. When I’m not programming for my job, I’m programming one of many side projects I have going on at any time. Same with any other professional who has a career in their hobby. These are often projects I think would be useful to me and I believe would let me learn new skills.
    2. I use Linux (and MacOS) because the Unix environment, particularly the command line tooling is far superior to Windows. Developers often work on Unix, so they build their tools for the platform and thus improvements stack up. I also just like the FOSS philosophy underpinning most Linux.

    If you’re trying to learn programming and know at least some basics, my only advice is to pick a project you’re even a little interested in and get started. Don’t worry about operating system, it doesn’t actually matter that much unless you’re working on iOS or MacOS! A weather app for whatever language/platform you’re working with is usually my first suggestion for students.

  • Phen@lemmy.eco.br
    link
    fedilink
    arrow-up
    0
    ·
    23 days ago

    If you use computers enough, from time to time you’ll run into things that make you think “I wish there was a better/easier/faster way to do this”. Then if you know how to program, you can just create a tool to do it for you.

    For example, I once made a small calculator app that allowed math on time values instead of basic numbers, so if I die 47*2 it would show 01:34 instead of 94. Some other time I worked some place that played background music all over the building, but something as simple as skipping the current music required going through 4-5 screens in some internal software, so I made a tool that went through those screens for me with a single button click.

  • onoki@reddthat.com
    link
    fedilink
    arrow-up
    0
    ·
    23 days ago

    I don’t care about which operating system, but my hobby projects have always included things that help myself. E.g.

    • Software to collect/archive/analyse real life data (e.g. real estate data from various sources).
    • Scripts to parse and structure data that I need e.g. for learning other things.
    • Firmware for small embedded electronics.
    • Home automation.

    So my suggestion is to think of something that you need, but there isn’t a perfect solution yet. Although this advice comes from someone who has been working in software development for two decades now.

    If you haven’t programmed before, think something very very small first.

  • Zarxrax@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    23 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!

  • mvirts@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    23 days ago

    That’s the most difficult problem in hobby programming: finding a project. Most interesting things seem to complex to start.

    The solution is to say f it I’m going to try. Right now I’m very slowly making progress learning Rust by writing a program to trade cryptocurrency. It took a while for me to even take my goals seriously as something I am capable of. It’s half gambling and half skills development but 100% interesting enough that I have consistently come back to it. I’ve come to terms with the fact that the only money it will make me is if I get a better job by becoming a rust developer.

    The Linux side of programming only really comes into play when you want to do networking, drivers, or esoteric filesystem intensive stuff. Windows and MacOS are capable of basically the same things. The main benefit of using Linux for development is that most open source projects are built by developers for development on Linux based systems, so getting dependencies has an easy one line command someone already figured out. For your situation I suspect the most important thing is how cool it feels when you use it. There’s something about setting up an operating system the way you want that keeps me coming back for more.

  • dfyx@lemmy.helios42.de
    link
    fedilink
    English
    arrow-up
    0
    ·
    23 days ago

    Instead of a long-winded post, here’s a quick list of stuff that I’ve worked on in my free time over the last few months:

    • Some scripts to automatically set some metadata on my photo library
    • A tool that grabs a video stream from an HDMI input (from the OS’s point of view that looks just like any webcam), finds text in it and overlays a translation. I use that to play Japanese visual novels on my Switch
    • A simple Bubble Shooter game because my gf was frustrated with some bugs in the one she had found online
    • A simple 2D game engine and editor inspired by RPG Maker XP
    • Updates to the registration website for a community event that I host twice a year
    • Updates to a discord bot that automates some dice rolls for my online TTRPG sessions
    • A browser extension that helps me scrape some data from a specific website
    • Helped a friend port an old website from PHP5 to PHP8

    Overall, it’s mostly stuff that is useful for my hobbies for which I can’t find an existing solution that fits my use case.

    • dfyx@lemmy.helios42.de
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      23 days ago

      To add some more, here’s a list of stuff that I would love to do at some point but haven’t found the time yet:

      • A tool that directly translates PCB designs into a format that my resin 3D printer can read so I can abuse its display as a UV etching machine
      • An alternative to GPlates that’s a bit easier to use for fantasy worldbuilding. GPlates is great but it’s mostly meant for serious scientific work so its UI is a bit complicated.
      • A minimalistic blogging platform that interfaces with ActivityPub
      • Many, many games.
  • Autonomous User@lemmy.world
    cake
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    23 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.

  • Libb@jlai.lu
    link
    fedilink
    English
    arrow-up
    0
    ·
    23 days ago

    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’ve written some simple shell scripting to ease repetitive tasks, that’s about it (like play random video/audio files in MPV media player, resize & convert images I post on my website, and so on). Does that count as programing? ;)

  • magic_lobster_party@fedia.io
    link
    fedilink
    arrow-up
    0
    ·
    23 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.

  • YourAvgMortal@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    23 days ago

    The short answer is: it depends on what you’re doing.

    Most servers run on Linux, so anything related with web backends or high performance computing (rendering, complex algorithms) will likely be deployed on Linux in production, so the devs may choose to do the whole program lifecycle from there (even if the language/framework is OS agnostic and could be developed from anywhere).

    Other kinds of programs like video games may need a windows for their entire lifecycle, and iOS apps need macOS.

    There is likely no “need” to develop from Linux, and it’s not necessary better, but some people may choose it for the entire lifecycle anyway

  • dream_weasel@sh.itjust.works
    link
    fedilink
    arrow-up
    0
    ·
    23 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 usually I 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.

  • Treczoks@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    23 days ago

    I currently write a number of little programs, each running on a small processor that lights up a module of my model. They all communicate via WiFi with a Mosquitto broker that coordinates the lighting and the visitor interaction modules.

    The test case is a moon base with about a dozen nodes, and later I’ll do the city with nearly a hundred processors.

    And that’s just one project. I also wrote an ERP system for the parts I need for building, or tools for text processing, or a mediaWiki extension.

    And yes, I do all this on Linux.

  • silly goose meekah@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    23 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

  • tartarin@lemm.ee
    link
    fedilink
    arrow-up
    0
    ·
    23 days ago

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