• Activity
  • Votes
  • Comments
  • New
  • All activity
    1. 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
    2. 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
    3. 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
    4. 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
    5. 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
    6. 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
    7. 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
    8. 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
    9. Fortnightly Programming Q&A Thread - 2019W40

      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?
      
      12 votes
    10. Is programming science?

      There's no doubt computer science is indeed a science, but what about programming itself? Does it fulfill the basic requirements that make something a science? I'm not an academic, just trying to...

      There's no doubt computer science is indeed a science, but what about programming itself? Does it fulfill the basic requirements that make something a science? I'm not an academic, just trying to start a conversation.

      In many ways, programming is like Math: a means to an end. And Math is a science. Like math, programming has several fields with vastly different ideas of what constitutes programming. Because it is applied logic, programming is also provable and disprovable. There are many disputing hypothesis and, even though absolute truth is a distant dream, it is certain that some sentences are truer than others. Again, like Math, Programming has many practical applications, such as finances and engineering.

      Some people consider Math a propaedeutics: not a science in itself, but a discipline that provides fundamentals to actual sciences such as chemistry and physics. The same reasoning could be applied to programming, as nothing more than a tool for computer science. I personally think there's something unique about programming and it's problem-solving methods that can be considered a field of its own.

      What you guys and girls think?

      6 votes
    11. What are some startup scripts you have on your daily driver?

      In the everlasting quest to customize my laptop and make my life easier, I'm looking for any ideas for startup scripts to run on user login. Personally, I don't know how to write bash scripts yet...

      In the everlasting quest to customize my laptop and make my life easier, I'm looking for any ideas for startup scripts to run on user login.
      Personally, I don't know how to write bash scripts yet and unfortunately I won't have time to pick it up on the side in the near future seeing as how I'm swamped between my studies and work—nevertheless, it's always nice to see how others might have under the hood for future tinkering :)
      I'm currently running i3-gaps on Arch Linux. I have a few programs that I like to run inside i3's config file (Polybar, firefox, file manager, Thunderbird) every time I start i3.
      The problem that I seem to have is that I lack imagination. I don't know the potential of what else I could be doing with startup scripts, so I'm turning to Tildes to see what you guys might have.

      6 votes
    12. Should I Get Into Gentoo? (x-post from /r/Gentoo)

      I've been using Linux for the past 5 to 10 years. I'm not a developer, but a mid-to-advanced user. I don't really know bash (or any programming language for that matter), but I got a folder with...

      I've been using Linux for the past 5 to 10 years. I'm not a developer, but a mid-to-advanced user. I don't really know bash (or any programming language for that matter), but I got a folder with 100 bash scripts I wrote myself. I compile my own Emacs (which I configured from scratch and contains more than 200 crudes functions of my own), Neovim (also configured from scratch) and other programs such as suckless terminal. I'm an i3wm user and currently use MX-Linux. I'm very good at Googling and pattern recognition.

      I got a brand new AMD desktop with a Ryzen processor (no dedicated graphics, wifi works fine with a USB adapter). Should I try Gentoo, or maybe I should study more (maybe with something like Linux Journey)in order to get a better experience?

      Reasons to install Gentoo:

      1. Learning experience
      2. A completely customized desktop experience
      3. Never having to reinstall my operating system again
      4. Masochism
      5. Putting my powerful processor to work
      6. It seems cool (and less painful than LFS)
      7. Some hypothetical performance gain
      3 votes