Project showcase/Programming Sub-Forum

It would be cool to have a sub-forum for Programmers/Enthusiast/Learning Programming

  • Showcase Projects
  • Learn Programming(Linux - Web Development - Application Development)
  • Linux Project Collab(Find others to collab on projects with)
  • Project Suggestions(Suggest ideas for projects)
    12 Likes

    I would like it, but I wonder if there’s need for it. When I tried to make showcase thread I ended up being the only one showing projects.

    That’s cause many don’t know how to program and they don’t know where to get started with this even people who have an interest in it can learn and those that know how can work together. I wasn’t around when you posted it in applications or else I would have helped you out.

    1 Like

    I agree that setting up kits, and setting up server services which do something useful, is plenty challenging enough for many people. You know, following a faint but fairly-well-blazed trail, still with plenty of adventurousness, and manly brain sweat. Programming is a level of challenge even beyond that. That’s akin to hacking a new trail through a dense jungle, where the going is much slower.

    2 Likes

    Scripting is not that hard. You just need a good book or online source to learn from and a enough desire to stay with it.

    One could start by making a list of all of the apps they use and write a bash script to automate the install of all of those apps.

    There are online sites that have projects listed from easy to more difficult.

    Perl is my native language, but I’m learning Python now.

    1 Like

    Some of us have only incomplete or obsolete projects to show, unfortunately. :upside_down_face: The closest thing to a “useful” project I’ve ever made was a Python script that set up an OverlayFS mount to get around Mod Organizer 2’s (a mod manager for Bethesda games) built-in VFS feature being broken in WINE. It was feature-complete, but then a WINE patch was released that fixed the VFS issue (mostly).

    If I may offer a suggestion, one I’ve been exploring myself recently.

    When I decided to learn to script I selected a popular book to learn a language that was popular at the time. I learned a lot about the language from that book. When I decided to learn Python, I followed the same process. I bought a popular book about Python and started to learn a lot about the language. I learned about the data types, builtin functions, the standard library. I began to write simple scripts. But soon, I realized that Something was missing. This became very apparent as soon as I bought an intermediate Python book that I couldn’t quite comprehend.

    The missing piece had nothing to do with Python, it had everything to do computer science. The study of programming that is not language specific. Program design, functional programming, algorithms, and data structures.

    Someone recommended another book that I teaches computer science, how to program, and teaches good program design while also teaching Python along the way. This book is available free online.

    https://greenteapress.com/wp/think-python-2e/

    The value of learning good software design early on will save you from reading book after book. The book listed above will teach you not only how to write functions, it will teach why to write functions, and then it breaks functions down into components like clean interface design, encapsulation, refactoring, etc. These are good concepts to know no matter what language you use.

    Hopefully, this will help others as much as it has helped me.

    7 Likes

    I don’t know if it’s possible, but I think it would be better to directly link to the Python 3 version of that same book: Think Python 2e – Green Tea Press

    Because Python 2 is deprecated and should only be used for existing projects. Those should actually converted to Python 3, wherever possible.

    Otherwise great information @Mr_McBride

    3 Likes

    Good catch. I didn’t realize I had linked to v2.

    Fixed.

    I think an expansion on this idea would be great. It would be nice to have a sub-forum to showcase not only programing, but to also have a place to share other Linux produced output such as media, blogs, sites, ect. A way to give back or pick up collaborative momentum.

    2 Likes

    Better late than never, so…

    I am always surprised one does not see these advices mentioned more often. I suppose it is understandable that people new to programming want to jump right to the “fun part” and completely skip the basics, the theory behind programming and the whole computer science part because… Who needs a science in order to “do some light programming or scripting”, right?

    Well, as a CS and IT graduate and further CS student, I may be a bit biased, but in my case, learning a new language is simply learning what is the syntax of a new language. The rest, when one know which paradigms the language uses, is the same for each language, with slight differences in how the language implements specific features.

    Nevertheless, I have seen numerous people try to start with studying a number of books for different programming languages and, when faced with a practical example, completely fail to think for themselves and actually come up with a solution. The only problem, in my opinion, is that no one told them how to think when programming. How to decompose a given problem to subproblems, implement the basic and easy subproblems and put together the finished parts into a functioning result.

    I really wish there were more online resources telling beginners to get some basic CS knowledge, learn how to think and what to think about and explaining to them why they are doing that and that in that example. It cheers me up when I see a resource properly explaining the why, maybe even before introducing the reader to the what. For example, I like both Learn C++ site or The Rust Programming Language book. They both, even if “only” programming guides, not CS books, try to point to the reader the reasoning behind the described actions and point them in the right direction regarding the proper formal education about the topic.

    2 Likes

    I think part of the reason for that is because some want only to learn to script, not to program. By that I mean, very entry level or light duty scripting. For example, using Python to do a single simple task such as move files from one location to another or send an email. Such tasks are very simple to do, but when one finds themself needing to do this over and over because of some program or task that routinely requires it, it becomes an opportunity to automate. IMHO, this simple automation scripting isn’t the same as designing a program, where computer science knowledge is needed, although it definitely doesn’t hurt.

    If one progresses from simple scripts to something more complex, the need to study computer science eventually reveals itself.

    I too studied computer science (C++, OO, program design, UML, etc) in college, but I don’t consider myself to be a developer. My job does require me to script quite often and I have had to apply some computer science elements, but most of the scripting that I do is simple scripting, like run a cmd on a remote host and then do something with the results of that cmd.

    2 Likes

    Those are some very good points. I agree with you. However, I feel that when simple scripting turns into a more robust and complex problem-solving, many people do not realize that something such as computer science exists. Then, they have a hard time figuring out what they should do or how to approach the problem.

    If they were previously told that CS is useful knowledge for resolving a more complex problems, they might be more likely to actively look for some CS basics. That might help them think properly about the problem and its possible solutions, executing them afterwards, thoroughly thought-over.

    As you said. Nevertheless, I think I have seen plenty of times that even if the need reveals itself and people find there is something missing in their knowledge to handle the present problems, they might have difficulties identifying what the missing part is. As I view it, they usually lack any CS knowledge and maybe a lesson in critical thinking regarding computers and how they operate in order to approach the problems from the right angle.

    Any decent online sources for learning CS fundamentals that you know of?

    That is a problem. I wish I knew any, if only to be able to point others in their direction. As I study CS at university, I have never really looked for any general CS materials accessible online which would provide complete basic CS theory knowledge.

    If I want to look something up nowadays, I just search for that particular term/topic. Therefore, I have not seen any sources guiding readers through general CS topics to provide them with the fundamentals, to be honest. When one gets the basics, it is much easier to learn additional things with whatever sources you can find later, I think. But, for that, one needs to have a good basic knowledge, I believe.

    I would love to hear what others may know of and recommend, too. Sadly, my recommendation could be only random search results.

    So a lot of programming on windows machines, seems to me, the IDE is self contained.
    You write your code, debug and compile it within the same environment.
    But I might be a few years out of date here… :slightly_smiling_face:

    Have not seen that on Linux, or maybe not looking in right place.

    Different mindset.

    Thanks for the links to C++ and Rust,
    There used to be more resources that were easier to find, now everyone is trying to make money and putting these things behind paywalls.

    And Google is useless for finding said resources. Most of what it comes up with if you type anything technical into the search terms is Clickbait and Content farms.

    Or, ‘you typed C++’ but what you meant was Cats, so we are filling your search with Cats and have also included Dogs for your convenience.

    Exactly. I am somewhat surprised how there are no well-known and quality sources for CS (well, unless my searches are really poorly written). I like these C++ and Rust tutorials for how they introduce the reader to at least a bit of the theory behind some language features and the motivation for them. Especially the Rust book, which is brilliant in what it strives to achieve.

    However, those are just some explanations of something in a language, not proper CS sources agnostic of the language. As I see it, programming languages are simply tools to utilize your CS knowledge for solving problems. Therefore, learning a programming language should be, in my opinion, a next logical step after learning some CS: to be able to solve the problems not only theoretically (in your mind and/or on paper), but also practically (using the programming language). I am looking for sources which would talk about CS in general, not necessarily tied to a certain language and its paradigms. No luck so far, though.

    There is an author online who writes a series of books named ‘How to think like a computer scientist…’. There are editions for several different languages, including C, C++, Python, and others. It appears that the original author gave permission for others to port his work, so you may find this series from several different authors.

    That is the only reference I can provide. My university studies were more than 20 years ago and many of the things I learned, such as the use of UML, are not outdated. While I did take a class on CS, it was just one class and the book was not great. I was working towards a Business Information Systems degree, so it was a bit light on CS.

    If anyone has any good sources, I would be interested.

    1 Like

    I helped include a new android vlc feature

    I have been playing with music speed recently, and got tired of the skipping and pausing after dragging the slider on vlc android

    So I wanted to know if I could fix it. I downloaded the source-code from GitHub for the program and it took a few minutes to find it.

    Most of the code is over my head, would be nice if it had comments on what it all does.

    I found 0.05 for

    speedUp and speedDown, and that is for 5% for the arrows. I couldn’t understand why the slider sticks before finally allowing movement, causing a large jump in speed, before allowing adjustments like the position bar / seek bar.

    Nor do I understand why certain percentages are not accessible when dragging the slider.

    The easiest option is to change the 5 to 1% to at least access all whole number percentages. This isn’t perfect, because from 100 to 200% speed you get 100 steps for double speed.

    For half speed you get 50 steps, so it’s half the precision for slower speeds. I would like to see 0.005 for slower speeds to match the steps for faster speeds.

    Neutron player allows 999 steps between percentages, so I know it can be done.

    I repeatedly commented to the vlc devs on reddit to include this change, for weeks I did this.

    After a month or two, someone on reddit mentioned that there is a nightly build of vlc, try finding a link on videolan website.

    So following the nightly dot videolan link, I gave it a try.

    To my surprise, the arrows now change by 1%! So nice and there are speed presets 0.80 for a slower preset and a couple faster ones.

    The area is also significantly larger to hopefully include more options:

    I have asked the devs to copy the options

    time-stretch

    save playback speed

    To this area, but this 1% change is good for now.

    My issue is if someone tries slowing down music IN ANY PROGRAM, it sounds very robotic or choppy.

    Speeding up however, has no such issues and works well to maintain the original sound.

    So VLC allows turning off this option, usually in the Audio settings for Windows, Mac, Linux, iOS (apple).

    For iOS it is in audio, but under the very last section called advanced.

    In android, it’s in advanced, under a heading called performance.

    So someone might one day have the wild hair to press playback speed and change it a lot, and it will sound horrible, and after about five seconds, they’ll stop using it and never look at the option for the rest of their life, because it’s useless and sounds like complete junk.

    So to help prevent this (I believe major) issue, there should be a few things done.

    First, a big INFORMATION pop up, that cannot be immediately dismissed for at least 20 seconds, and it should pop up the next three or four times the feature is accessed.

    I would suggest it say that by default, slower speeds down to 90% sound somewhat fine, but speeds below this will have a robotic or stutter like sound, which will completely ruin the sound of drums, and heavy guitar distortion will basically be un-listenable.

    For slower speeds below 90%, the program will automatically disable this effect, called “time-stretch” and there is an option on the playback speed area to re-enable it.

    It will be re-enabled for all faster speeds automatically for convenience, but can manually be turned off.

    Turning off time-stretch will cause slower speeds to sound much deeper / lower pitch and faster speeds to sound like chipmunks, or fast forwarding a tape.


    Just a simple informative message such as that could open the minds of so many music listeners, and help them create a unique musical session that possibly none have ever heard before–not even the original artist.

    So what’s the big idea here?

    Well, most bands speed up their live concert performances to create a more upbeat energy. So why not go the other way and slow things down?


    So even if you have zero programming experience, you can still look through source code and find just one small piece that you do understand, and as the saying goes

    scratch your own itch

    And that is what the VLC devs have gratefully allowed me to do. I asked to change

    5

    to 1

    And I got my wish.

    So don:t be discouraged if you don’t understand computer programming, I’m not sure anyone really does, I think all developers are just constantly learning.


    I would like to bring the desktop EQ 2-pass filter to android, assuming I can just copy and paste the code in, why not right? to give a 80 dB range of EQ, vs 40, to give more possible eq for certain poorly recorded podcasts or a unqiue sound.


    If you want to try slower playback for music you don’t have downloaded, the “apps” aren’t cool enough to allow such a (currently) niche option.

    So until apps get with the times, you’ll be relegated to a web browser, where you have more freedom for customizatioon.

    On that note, I like how dark reader offers me more theme options than just light or dark mode that some apps provide, on Firefox mobile that new mode is already enabled.

    For desktop if you install dark reader browser extension into Firefox, you have to open dark reader settings, click dev tools (for dark reader) and manually enable the preview mode, that has been in “preview” for about 5+ years now.

    The browser extension

    global speed

    Is one of maybe three that allow turning off the Mozilla standardized HTML

    .pitchPreserves = true

    feature which uses simplistic time-stretching.

    Global speed allows setting that false with the rare option

    “Allow pitch shift”

    If you do not like the deeper voices, Audacity is a great alternative with

    Change Tempo

    high-quality stretching

    Not perfect, but basically the best out there. I’m not sure how it works, but I hope it gets even better. I don’t like the way it sounds, but if you haven’t heard it before and play it for someone else, most probably wouldn’t be able to tell there is an issue with the sound.

    I think it is the midrange that gets a bit too heavy / air-like windy sound, so using the EQ to drop that down along with a small drop of the treble could help.