*NIX enthusiast, Metal Head, MUDder, ex-WoW head, and Anon radio fan.

  • 1 Post
  • 62 Comments
Joined 1 year ago
cake
Cake day: June 12th, 2023

help-circle

  • I do greatly appreciate my management and general company tech culture, they’re great.

    I agree with your stance here, because it’s part of my point. I tend to see more people bitching about Agile itself and not management or their particular implementation.

    The jobs where I was only given enough info to plan 2 - 4 weeks out were so stressful because I frequently felt like I was guessing at which work was important or even actually relevant. Hated it.

    Turns out it’s a skill issue ;p (on the management level to be clear). Folks, don’t let your lazy managers ruin you on a system that can be perfectly fine if done right.



  • 2-3 sprints?! Y’all really flying by the seat of your pants out here huh?

    My teammates and I have no trouble planning multiple quarters in advance. If something crops up like some company wide security initiative, or an impactful bug needing fixed, etc then the related work is planned and then gets inserted ahead of some of the previously planned things and that’s fine because we’re “agile”.

    I delivered a thing at the end of Q3 when we planned to deliver at the start of Q3? Nobody is surprised because when the interruptions came leadership had to choose which things get pushed back.

    I love it. I get clear expectations set in regards to both the “when” and the “what”, and every delay/reprioritization that isn’t just someone slacking was chosen by management.




  • You’re absolutely right. For what it’s worth, it’s just the first part that’s important.

    When you pick up a new concept from a “resource” such as a tutorial, take a minute to explore the concept and understand the semantics of what you’re doing. In the name of illustrating a concept tutorials can often be misleading in subtle ways.

    An explanation of my “useless use of cat” example:

    The command line has a concept called “piping”. This lets one command send output to a second command. It’s very handy. There is usually also a “cat” command, which will read a file and send the contents where you tell it. This is often your screen, or through a “pipe” to a second command. There is also a “grep” command that lets you search data for certain words.

    Many “linux newbie” tutorials combine these tools to show how “piping” lets you send data from one command to another. “cat” some text file, then “pipe” the output to “grep” to search for your words. It usually looks something like cat ./my_address_book.txt | grep Giles to find lines in “./my_address_book.txt” that contain the word “Giles”. The thing is that “grep” can take a file name as an argument. You can just do grep Giles ./my_address_book.txt, and cat is for concatenating files into one. If you want to simply read a file there are more appropriate tools such as “less”. This by the way is the “useless use of cat”

    When you’re a newbie though, it may be the first time you’re seeing either “grep” or “cat”. The tutorial is just trying to show you “pipes”. Along the way you’re picking up these “bad habits”. I’ve met professional sysadmins who didn’t know grep took a filename as an argument. It was always “cat blah | grep my_search”. I will see people type “cat /some/file | less” instead of “less /some/file”. It shows a lack of understanding of what these tools actually do, and IMO it just comes down to regurgitating tutorial actions without bothering to understand the semantics of what you’re being shown.


  • Don’t follow tutorials, understand them. I’m so tired of seeing useless uses of cat because some asshole writing a tutorial 20 years ago decided to illustrate how pipes work with a good ol cat file | grep string as if grep didn’t take a file name as an argument.

    The more time I spend being mad about this the more I notice people using horrible practices in tutorials because they’re too lazy to setup a legit use case.

    A new user sees this and thinks this is how grep works.

    Loops are another common one. People going around not knowing you can pass a glob to a shell for loop. Because the tutorial they read was lazily written and they didn’t bother to understand the bits of what they were being shown, only how to reproduce/mangle the command until they manage to get close enough to what they want out of it.


  • That’s my bad, I asked an incomplete question.

    What does the approach of spawning a grep process and having ls send ALL of it’s output to grep have over just passing a glob to ls?

    Like:

    $ ls /usr/share/*.lm
    
    /usr/share/out-go.lm  /usr/share/ril.lm     /usr/share/rlhc-crack.lm   /usr/share/rlhc-d.lm   /usr/share/rlhc-java.lm  /usr/share/rlhc-julia.lm  /usr/share/rlhc-ocaml.lm  /usr/share/rlhc-rust.lm
    /usr/share/ragel.lm   /usr/share/rlhc-c.lm  /usr/share/rlhc-csharp.lm  /usr/share/rlhc-go.lm  /usr/share/rlhc-js.lm    /usr/share/rlhc-main.lm   /usr/share/rlhc-ruby.lm
    


  • What’s the benefit of spawning a subshell and executing “ls” here instead of just passing a glob to your loop?

    $ for lol in /usr/share/*.lm;do printf "I found a file named '%s'\n" "$lol";done
    
    I found a file named '/usr/share/out-go.lm'
    I found a file named '/usr/share/ragel.lm'
    I found a file named '/usr/share/ril.lm'
    I found a file named '/usr/share/rlhc-c.lm'
    I found a file named '/usr/share/rlhc-crack.lm'
    I found a file named '/usr/share/rlhc-csharp.lm'
    I found a file named '/usr/share/rlhc-d.lm'
    I found a file named '/usr/share/rlhc-go.lm'
    I found a file named '/usr/share/rlhc-java.lm'
    I found a file named '/usr/share/rlhc-js.lm'
    I found a file named '/usr/share/rlhc-julia.lm'
    I found a file named '/usr/share/rlhc-main.lm'
    I found a file named '/usr/share/rlhc-ocaml.lm'
    I found a file named '/usr/share/rlhc-ruby.lm'
    I found a file named '/usr/share/rlhc-rust.lm'
    





  • Same here. Reference, particularly sheet music and cooking recipes work fine for me digitally.

    I can sit at the computer and read social/news media for hours with no problem, but the way ebooks are displayed tires my eyes very quickly for some reason.

    While I don’t have this issue with the e-ink/e-paper stuff, I’ve never owned one. I also appreciate that physical books are often much harder to damage and will work without electricity.



  • I also have a small domain that is relatively low traffic. A lot of the “all in one” software on the list you linked looks pretty cool, I can’t deny.

    What I found is that I make very few changes. I used to add mailbox aliases fairly often, but the fact is there are only two users and enabling the “+” syntax in addresses put a stop to me needing to make new aliases when I wanted a new address.

    I just don’t feel like I need a management interface. Because of this I’ve just sort of frankensteined my own setup together and I love it. It operates how I expect it to, and enforces the standards I care about to the extent that I desire (e.g. which SPF result codes am I ok accepting?).

    • Postfix as SMTP/Submission server. I chose to go w/PAM based for outbound SMTP auth.
    • Courier for IMAPS
    • Dovecot for LDA (sieve is delightful)
    • Snappymail for webmail (served by apache httpd)