• Activity
  • Votes
  • Comments
  • New
  • All activity
    1. I want to learn programming. What language should i pick to write cli apps for linux?

      I'm interested in C or Go, but i'm open to ideas. I have plenty of sh scripts i created to integrate my tools and system, so i have some experience and i don't want a scripting language like...

      I'm interested in C or Go, but i'm open to ideas.

      I have plenty of sh scripts i created to integrate my tools and system, so i have some experience and i don't want a scripting language like python.

      My first plan is to learn the basics of the language and rewrite some of those scripts.

      I think my first pick will be a script that uses ffmpeg to convert my flac files to mp3 or opus. I use sndconv -opus/-mp3 and it checks if there are flac files in the folder (i only have full albums), converts and puts in a folder named "$artist - $album".

      My long term goal is to make a cli/tui music player like cmus.

      UPDATE: i'm having plenty of success with Go right now. I just wrote a basic version of my music conversion script. It's just converting a music i pass as argument to mp3, but i'll keep working on it and adding functionality just to dip my toes in Go. It seems like a good language and i'm having fun!

      Thanks for all the answers!

      18 votes
    2. Please criticize my idea for CHORES - a short-term TODO app for ADHD people (and myself in particular)

      Introduction I'm a beginner in programming, but a veteran in film and literature. I know that ideas come easy. Any normal person can come up with a good idea in a matter of minutes. The main...

      Introduction

      I'm a beginner in programming, but a veteran in film and literature. I know that ideas come easy. Any normal person can come up with a good idea in a matter of minutes. The main problem is doing it.

      Besides, I couldn't care less if someone does that before me. I'd probably benefit from their program, and even offer to collaborate. I have a bunch of other ideas in the oven anyway.

      And I'm humble enough to know that such a niche project would never attract the interest of a mega-corporation anyway.

      2. What is CHORES?

      CHORES is a short-term task manager. It's meant to organize nothing more than a few hours or less of your tasks. Month, weak or even your entire day are entirely out of its scope.

      3. Who is CHORES for?

      First and foremost, this app is for my use. But I'm certain there are other people with conditions similar to mine, especially ones with ADHD. I'm also autistic with a compulsive personality, and won't stop until I tinker with every aspect of an object. Not surprisingly, I'm a Linux, i3wm, Emacs and Neovim user. And they're excruciatingly customized.

      What I need is not a full-featured a TODO app like Remember The Milk, Todoist or Org Mode. They're too distracting, I end up just playing with the tools. I need something that allows me to track very short term chores. Thinks like brushing my teeth, taking a shower, eating, walking my dog, washing the dishes and making my bed.

      That's what I intend to do.

      4. What is ADHD

      From the United States National Institute of Mental Health:

      Attention-deficit/hyperactivity disorder (ADHD) is a disorder marked by an ongoing pattern of inattention and/or hyperactivity-impulsivity that interferes with functioning or development.

      4.1 Warning

      Please refrain from suggesting that the ones who use such tools just need to make an effort instead. That's a cliche most people with ADHD and other mental health issues probably heard many times, and by saying that you may cause distress. If you need more information, please refer to the link posted above.

      5. Why another "TODO" app?

      People with severe ADHD like myself frequently forget what they're doing, and what they should do in the very short term. I'm talking 2, 3 or 5 tasks from now. To give you an idea of how bad it is, right now I have an Emacs Org Mode file with the following tasks:

      * Now
      ** TODO Take Ritalin
      ** TODO Start chronometer on Ritalin
        - Tells me when the effect wears off
      ** TODO Take a shower
      ** TODO Take the laptop to the living room
      ** TODO Wash the dishes
      ** TODO Study Python
      ** TODO Post on Tildes
      

      But Emacs and Org Mode do a lot more than that, and this can be very distracting (right now I'm writing this post because creating another file from my now.org file was way too easy, for example).

      Considering that I am the main target audience of this program, any space for tinkering is a dangerous avenue for procrastination.

      6. Who is CHORES for

      The primary target of this project are people with:

      1. ADHD (Attention deficit hyperactivity disorder)
      2. similar conditions or personality traits

      In sum: if you have extreme difficulty focusing, remembering and fulfilling your tasks in the very short term, you may find this program useful.

      7. Who is CHORES not for

      The majority of people can concentrate and perform their short-term tasks with a reasonable degree of efficiency. If that is your case, you have little to gain by using CHORES.

      8. Features

      CHORES is a short-term task manager. It's meant to organize nothing more than a few hours: not your month, weak or even your day.

      1. CLI Linux app (Mac, Windows, GUI, and mobile could happen in the future)
      2. Hard limit of ten tasks (with the option to reduce)
      3. Only the very essential configurations available
      • tinkering is a huge time drain for ADHD people
      • because of that, the defaults will have to be extremely sensible.
      1. Started Stopped status clearly marked by character or highlighting

      8.1 What you would be able to do with CHORES:

      1. Add up to ten tasks
      2. Reorder/Start/Stop/Done these tasks
      3. Undo only one operation
      4. See only the last ten completed tasks

      9. Answer to Possible Questions

      9.1 Why Not Keep Using Org Mode? Or maybe Taskwarrior?

      Org Mode and Emacs are wonderful tools, but they're also a perfect playground for procrastinators. It simply does too much. Emacs is like a box of legos, and that's the last thing an ADHD person needs when it comes to tracking short-term tasks.

      Taskwarrior suffers from the same issue.

      9.2 Why Not todo.txt and similar apps?

      This may seem crazy, but for a severe ADHD person, even todo.txt gives way too many options and features. It is, after, an actual TODO app. I can add 1000 tasks todo.txt. It has an extensive wiki, projects, tags, context tags, special value tags. You might just say: just don't use these options. But that

      9.3 Why not use the extremely minimalist t task manager, by Steve Losh?

      I like t very much, and, depending on its license, I'll probably use at least some of its code. But t lacks some features CHORES requires, such as:

      1. Limit task amount
      2. Add tasks to the bottom (t last tasks randomly, or at least something that seem random to me)
      3. Reorder tasks
      4. Undo
      5. Easily view completed tasks
      6. Add Start/Stop status to a task

      9.4 Why not pen and paper?

      This is a very personal anwer, but here we go:

      1. I will lose the paper every 30 minutes
      2. I will lose the pen every 30 minutes
      3. I will forget to look at the paper, it will probably end up crumpled in my pock
      4. Many of my tasks, such as programming and studying, already happen in the computer anyway
      5. One of my medications interferes with my motor skills and my handwriting is hard to understand - even for me
      6. I like computers. The fact that I like computers makes more likely for me to actually look at the tasks.
      7. In the future, I can add alerts. Can't do that with paper
      11 votes
    3. What programming/technical projects have you been working on?

      This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's...

      This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?

      18 votes
    4. Fortnightly Programming Q&A Thread

      General Programming Q&A thread! Ask any questions about programming, answer the questions of other users, or post suggestions for future threads. Don't forget to format your code using the triple...

      General Programming Q&A thread! Ask any questions about programming, answer the questions of other users, or post suggestions for future threads.

      Don't forget to format your code using the triple backticks or tildes:

      Here is my schema:
      
      ```sql
      CREATE TABLE article_to_warehouse (
        article_id   INTEGER
      , warehouse_id INTEGER
      )
      ;
      ```
      
      How do I add a `UNIQUE` constraint?
      
      9 votes
    5. What programming/technical projects have you been working on?

      This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's...

      This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?

      22 votes
    6. Looking for advice on a CI / regression testing platform

      Hi all, I'm looking for some advice regarding how to set up a basic CI regression / testing suite. This isn't my full time job, but a side project my group at work wants to spin up to... shall we...

      Hi all,

      I'm looking for some advice regarding how to set up a basic CI regression / testing suite. This isn't my full time job, but a side project my group at work wants to spin up to... shall we say, give us a more real time monitoring of functionality and performance regressions coming out of the underlying software stack development (long story).

      As none of us are particularly automation experts, I was looking for some advice from my fellow Tilderinos. Please forgive me if any of the below is obvious and/or silly.

      A few basic requirements I had in mind:

      1. Can handle different execution environments: essentially different versions of the software stack, both in docker form and (eventually) via lmod or some other module file approach (e.g., TCL), and sensible handling of a node list.

      2. Related to one, supports using the products of builds as execution environments. Ideally we'd like to have a build step compile the stack and install it to a NFS from which we can load it as a module.

      3. Simple to add tests. Again, this isn't our full time job -- we mostly want to add a quick bash script / makefile / source code or the like to the tests when we run into an issue and forgot about it.

      4. Related. We should be able to store the entire thing as a git repo. I have seen this to some extent with Travis, but my experience with Jenkins was... sub-par (is there a history? Changelog? Any way at all of backing up the test config?).

      5. Some sort of post-processing capabilities. At a glance we need to be able to see the top line performance numbers for 20-30 apps over the different build environment. Bonus points if there's a graph showing performance vs build version or the like, but honestly a CSV log file is good enough.

      6. Whatever CI software we get has to be able to run this locally. Lots of these are internal only numbers / codes. FOSS prefered.

      7. A webui for scheduling runs / visualizing results would be nice, but again this could be a bash script and none of us would bat an eye.

      Any thoughts would be greatly appreciated. Thanks!

      7 votes
    7. How can I make "whereis" automatically open the file on Nvim when it is the only result?

      EDIT: SOLVED It looks like it was much simple than I thought and someone solved it on Reddit already. I won't delete, just leave the link if someone is interested. Runtime Environment OS: MX Linux...

      EDIT: SOLVED

      It looks like it was much simple than I thought and someone solved it on Reddit already. I won't delete, just leave the link if someone is interested.

      Runtime Environment

      Issue

      Sometimes I use "whereis" (aliased for "wh", but it doesn't make any difference...) for my own scripts.

      I usually copy their paths manually (using tmux) and paste to the command line resulting in something like this:

      nvim /home/my_username/my_scripts_folder/my_script
      

      Could I make that into a single command?

      Thanks in advance!

      3 votes
    8. Please tell me what you think about this idea for a text editor/Linux Distribution combo

      I know there are similar products I could buy in the US that would give me this experience, but I'm not in the US and I don't have much money. In the old days, my father had some kind of machine...

      I know there are similar products I could buy in the US that would give me this experience, but I'm not in the US and I don't have much money.

      In the old days, my father had some kind of machine that was not a proper laptop and not a proper typewriter. It opened instantly to a text editor. As far as I remember, there was no noticeable boot time. It had a keyboard and an entry for a floppy disk. You typed your stuff, saved it to the floppy disk, probably to send via email or to print in another machine. I loved that machine.

      I love these little gadgets that do one thing and one thing only. And, as someone with severe ADHD, they're often a necessity. If my Kindle had Youtube I would never read a book. If my PS4 had Emacs I would never play a game. The list goes on, but the principle is this: a lot of things are useful to me precisely because of what they cannot do.

      And that is why I wanna recreate my father's crazy computer-typewriter.

      Because I know how to use the command line, it really needs to be in total lockdown: I open it up, it shows a very simple text editor (with a few handy features that make it works even more like a typewriter) that I cannot configure, tinker or alter in any way. It's focused on writing (not editing) literature because that's what I need and other kinds of writing require an internet connection.

      It would save and back up automatically (like a typewriter) to one or more drives at your choice.

      There would need to be a few options because of different screen sizes, the number of screens etc, with an interface to make it easier.

      So the idea is an ultra-minimal, kiosk-mode Linux distribution that can either go on a flash drive or be installed on an old laptop. No package management, no internet connection, no access to the command line, no configuration files, no distractions whatsoever. I wanna forget I'm even using Linux. I wanna recreate my father's typewriter/computer that he never let me touch.

      How do I do this?

      14 votes
    9. Help me get my head around DNSCrypt and DoH/DoT

      I want to adopt these technologies b/c I'm moving to a home w/o WiFi: I'll only use mobile networks in order to save some money. But the general pipeline and setup are hard to digest, and I'm not...

      I want to adopt these technologies b/c I'm moving to a home w/o WiFi: I'll only use mobile networks in order to save some money. But the general pipeline and setup are hard to digest, and I'm not sure if I really understand what are the implications for my privacy, except for the fact that DNS queries are encrypted so I don't leak domain names. This is especially important to me because Turkish internet law and the censorship mechanism is really intrusive, with DPI & DNS blocking. My current ISP does not fiddle with my HTTPS traffic, but I won't have that with my mobile network.

      I'm also considering a VPN, but major VPNs are blocked here. To what extent do the purposes of VPNs and these DNS solutions overlap? Assuming most of my important traffic is over HTTPS+DoH/T, how safe am I, and most importantly how much can I penetrate the censorship mechanisms?

      6 votes
    10. My new Mini-ITX Gaming PC Build

      EDIT: Since a few people now have not realized how old this topic is before making a comment, see above date ↑. :) My old PC's CPU (i7 930) started to critically fail after 8+ years of being...

      EDIT: Since a few people now have not realized how old this topic is before making a comment, see above date ↑. :)

      My old PC's CPU (i7 930) started to critically fail after 8+ years of being overclocked from 2.8 to 4.0 GHz, so I decided to build a new one based on the Ultra-Compact Mini-ITX Gaming PC Build from TechBuyersGuru.

      I went with Mini-ITX this time since my old PC was in a huge Antec P193 tower which weighs 16.4kg (36.2lbs) before components and so was a giant PITA to move around. The new Sugo SG13 case is roughly 1/7th the volume and initial weight so is much more convenient to move (but not build!).

      p.s. I was unsure whether to post this 'buildapc' style content in ~tech or ~comp.... thoughts?


      PCPartPicker Part List
      Parts labeled incompatible are not... see "Notes" below in Build Process section.
      Salvaged from old PC:
      GPU   -     $0 - EVGA - GeForce GTX 980 Ti 6GB Superclocked ACX 2.0+ Video Card
      SSD   -     $0 - Samsung - 850 Pro Series 1TB 2.5" Solid State Drive
      SSD   -     $0 - Samsung - 840 Pro Series 256GB 2.5" Solid State Drive
      HDD   -     $0 - Hitachi - Deskstar NAS 4TB 3.5" 7200RPM Internal Hard Drive

      New Components:
      Case -   $72 - Silverstone - Sugo SG13B-Q Mini ITX Tower Case
      Mobo - $190 - Gigabyte - Z370N WIFI Mini ITX LGA1151 Motherboard
      CPU   - $325 - Intel - Core i5-8600K 3.6GHz 6-Core Processor
      Cool - $114 - Silverstone - NT06-PRO 74.0 CFM Sleeve Bearing CPU Cooler
      RAM   - $220 - Corsair - Vengeance LPX 16GB (2 x 8GB) DDR4-3000 Memory
      PSU   - $175 - Silverstone - 600W 80+ Gold Certified Fully-Modular SFX Power Supply
      M.2   - $143 - Crucial - MX500 500GB M.2-2280 Solid State Drive
      M.2   - $143 - Crucial - MX500 500GB M.2-2280 Solid State Drive

      Total:  $1382 (CAD)


      Build Process w/ Pictures:

      TL;DR - Behold my new Battlestation, IN ALL HER GLORY!!!

      After saying goodbye to my old, heavy, oversized, Antec P193 case...
      Unboxing the new one, which is almost the same volume as my UPS!...
      And prepping all the new PC components for a photo op...
      I began the arduous process assembling my new computer.

      Everything went fairly smoothly to start. I installed the RAM, M.2 Drives, CPU and CPU Cooler before mounting the motherboard to the case, as instructed in the build guide. The CPU Cooler was a PITA to attach but that's no surprise as they always are.

      Note: These "incompatible" parts listed on PCPartsPicker actually do fit together as the build guide said they would. However the RAM and CPU cooler fan are actually touching and I barely managed to squeeze them in together, so the build guide probably isn't lying when it said that particular low-profile RAM might be the only one that actually works with the cooler.

      I then mounted the motherboard to the case and began slowly plugging everything else in. This was a particularly slow and frustrating process as I have pretty large hands and everything was incredibly tiny, in incredibly cramped positions, and required more finesse to get in place than I could muster with my fingers alone. As a result I wound up using long needle-nose pliers, including some bent-angle ones, to get most everything plugged in.

      This is when I ran into my first major problem though... and one that was not mentioned in the build guide at all. The Case's front panel USB cable wouldn't fit in the motherboard with the CPU cooler fan in place. After trying fruitlessly to get the cable plugged in for 30min I finally gave up and decided to solve the issue the old fashioned way and it plugged in just fine afterwards. (Thanks for saving my ass yet again, Mr. Dremel!)

      The other potential issue was due to the CPU cooler and case mounted PSU, which aren't supposed to work together, but once again as the build guide suggested they actually do... with a whopping 3mm clearance between them! At this point I also decided to swap out some of the ribbon power cables that came with the new PSU for some spare braided ones I had from another build since they are much nicer looking and allow for better airflow.

      Note: The other supposed incompatibility listed on PCPartPicker is due to the fact that the case only officially supports 3x 2.5" drives or 1x 3.5" with 1x 2.5" but that's easy enough to get around, as explained below.

      I also decided to cram an extra SSD under the front case fan, secured with double sided tape to the properly mounted SSD on the case floor panel. It worked just fine and allowed me to get my 3.5" 4TB HDD properly mounted on the underside of the top plate. Linus Tech Tips, in his similar Sugo SG13 build, even managed to squeeze 2 more SSDs above the PSU using double sided tape as well, so I guess that even leaves me with some room to expand my storage later. ;)

      The rest of the build assembly process went relatively smoothly and once everything was hooked up, in position and plugged in, it booted straight into windows 10 (which was still on my old 1TB SSD). The moment when a new PC build gets past the POST is always a huge relief, however that momentary relief soon turned to dread as I quickly noticed a pretty big problem; The machine couldn't detect one of my new M.2 SATA drives.

      After several hours of frustrated tinkering and much googling I finally found out the reason why, cursing PCPartPicker for not warning me and face-palming pretty hard for not having read the motherboard specs more carefully. It turns out that the Z370N motherboard actually only supports 1x M.2 SATA drive and the second M.2 slot is NVMe only. I had apparently just wasted $140+ on an M.2 SATA drive I couldn't use and my plans to configure them both in RAID 0 was shattered. But that's honestly not the worst part... in order to get the useless M.2 drive back out I had to basically FULLY DISASSEMBLE my entire build again since the NVMe M.2 slot is located on the bottom of the motherboard!

      Despite the serious temptation to just leave it in there even though I couldn't use it, I wound up going through with the disassembly purely because I had a pretty good idea for how to actually make use of that second M.2 SATA drive based on something I saw on Linus Tech Tips a few months ago. So rather than leaving it in there or even returning it, after ordering myself the necessary enclosure I now have myself a pretty nice DIY 500GB Thumb drive. ;)

      So several hours later after completely taking apart my new build, removing the bottom mounted M.2 SATA drive, and fully reassembling my build once again, I booted it up, it got past the POST and into Windows 10 again. I then reactivated Win 10 on the new hardware configuration (which was surprisingly painless compared to how it used to be where you needed to actually phone Microsoft) and then began the process of installing Linux Mint on the M.2 SATA drive I still had remaining.

      Conclusion:
      After several days of going at it now, I am finally done and my new computer is fully assembled, functional and ready to use. As always with building computers it was a bit scary, a bit painful, and more than a bit frustrating but ultimately well worth it. I couldn't be happier with the results and can't wait to overclock this bad boy when I get the chance!

      36 votes
    11. Please recommend me a Linux distribution that is super-stable and never make me install again, but at the same time allows me to have some newer packages with ease (xpost /r/FindMeADistro)

      I currently use MX-Linux, which is a great distribution but does require me to reinstall it from time to time. It also comes with all the good/bad Debian legacy, and sometimes things can get...

      I currently use MX-Linux, which is a great distribution but does require me to reinstall it from time to time. It also comes with all the good/bad Debian legacy, and sometimes things can get really fucked up (okay, I admit it: MX IS NOT PERFECT. But nothing is, okay? Settle down.)

      My new Linux Distribution doesn't need to have all the new bells and whistles, but it needs to be able to stay reasonably current with new packages and innovations. I don't mind some manual work, but I also don't wanna spend my days maintaining the system.

      This distro is supposed to be a tool to work with, not a hobby to be pimped, riced or whatever. I will occasionally play and edit videos on it (don't worry, it's all AMD, thank you advice for the Tildes ;)

      I use the i3wm window manager (not the gaps fork), so native support is a must and current versions are preferable (MX's version is from 2016. 2016!). If there's not a current version of Emacs, I'll compile my own. The same is true for Neovim, dmenu, rofi and the suckless terminal.

      Configurations on text files do not scare me, but I don't wanna spend all my time scripting stuff. I don't mind compiling stuff either so Gentoo and other source-based distributions are valid options (as long as they allow me to work on stuff instead of working on the distribution...). That said, I have no preference whatsoever between binary and source-based.

      Unstable distributions like Arch and even Manjaro are a no-no. I need my computer to work 99.99% of the time, like a fucking refrigerator. That said, I would like some newer packages and tools such as Gimp, Inkscape and a video editor like Kdenlive. Maybe flatpak is an option? I was never able to get it to work properly.

      I'm also open to crazy things like Nix, but only if it'll make my life easier: I have no philosophies on the mater.

      Any suggestions?

      21 votes