1. 4

    I’ve got mixed feelings about this. It’s yet another syntax for Ruby, which is already fairly complicated. It is very close to duplicating pre-existing functionality in the form of Struct and OStruct - neither of which I actually like using because there’s no built-in immutability. I don’t know that this proposal is HARMFUL, but neither do I know that it is a benefit. So, “meh”

    1. 2

      I’ve been using dry-struct for this reason, in concert with dry-types, and I really like it.

      1. 1

        I like using Structs in Ruby, especially as a form of documentation and, as the author said, ensuring that a key passed in doesn’t silently fail. It’s much easier to see the options available for a bit of code where the struct is defined in one place instead of hunting for accessors of a hash.

        That being said, I don’t like this syntax at all. It just adds yet another way of doing something when, I feel, the current way is sufficient and easy enough already.

      1. 2

        I agree with what their saying about the two different camps of development. A lot of developers I know, including myself, tend to have interests that align with one or the other.

        However, the conclusion here should be applied to both camps. There is a ever growing mountain of resources to help the application (“plumber”) developers figure out and grow in their career path. There seems to be far less resources for the tooling and systems level developers though.

        This article seems to shrug that off as a something a CS degree gets you, but that is far from a guarantee you’ll be able to land a job working on tools, complex systems, or systems level development.

        On that note, any resources on the latter are appreciated.

        1. 2

          I am definitely more of the plumber type, but here’s some things that may be of interest to you:

        1. 2

          I’ve had a couple of pretty bad technical interviews from technical people. In those cases the interviewer wasn’t asking for a solution to the problem, but instead the exact solution that they had in their mind.

          1. 3

            I know someone who flunked a coding interview at Twitter because the graph-theory problem they used had two standard solutions (depending on what tradeoffs you cared about), the interviewer only knew one, she provided the other, and he just failed her without even checking whether it worked.

          1. 6

            If it wasn’t Initial commit I was going to call shenanigans.

            1. 0

              lolz

            1. 2

              !$ has been my favorite shell “command” lately. It inserts the last argument of the previous command. So, if I blame a file:

              git blame this-file
              

              And then I want to edit that file:

              vim !$
              

              It’s a decent time saver for me.

              1. 7

                Or use Alt-.

                1. 3

                  I think I have new favorite.

              1. 2

                At home, I go back and forth from wanting to work on some side projects I have queued up to wanting to focus on anything but computers. So, it’s a toss up there.

                At work, I’m on point for handling this week’s unplanned work. So, trying to chew through that small backlog that’s there and quickly resolve anything that pops up.

                1. 1

                  This is a really interesting way to set up your Airflow DAGs. We broke ours out into a couple of Airflow instances due to the size of one. They also had a logical separation based on what they were processing though.

                  Are you pulling directly into the current DAGs or are you pulling into a separate dir that you cut over to? IIRC, you have to signal Airflow to reload the DAGs.

                  1. 1

                    We pull directly into the current DAG directory. Airflow now automatically detects DAG change and reloads them on the fly, so we didn’t have to do anything special.

                  1. 2

                    I’d never heard of Airflow before. Something with workflows… How does it compare to Node Red?

                    1. 2

                      It’s mostly used as a ETL system, from my experience, and would be more akin to systems like Luigi.

                      1. 1

                        That’s right, Airflow solves the same problem that Luigi solves.

                        1. 1

                          Thanks, looked a little enterprisy :P Now I’m off to look what Luigi is ;)

                    1. 4

                      if you’re not on-call for your code, who is?

                      While each developer needs to have ownership over the code they write, the team also needs to have ownership over their feature sets. You don’t want your teams to be isolated engineers fighting their own battles. You want your teams to act as teams and fight battles together. Especially in production, your team’s main objective should be solving the problem, not finding out who to pass the issue off to. Obviously, you should pull the people in with the the most domain knowledge to solve the problem as fast as possible, but you never want to get caught casting blame and passing the buck.

                      QA Gates Make Quality Worse

                      I have worked in two distinct QA structures. One of them seems to be what the author is describing: a dedicated QA team that catches code tossed over the wall. This was a miserable way to work and did cause a lot of conflict that was described. But, I’ve also worked on teams with embedded QEs. This proved to have far better results. The QE assigned to the team was knowledgeable about the features being produced and worked closely during the planning to determine what the testing scenarios should be. This allows them to provide other insight and scenarios that the engineer may not have written tests for. It also helps with standardizing a lot of testing procedures within the teams for each given product.

                      Boring Technology is Great

                      I love this advice. Unless there is a business need for new and shiny, stick with what you know. It reduces friction allowing products to be produced faster with a higher quality.

                      Things Will Always Break

                      There’s a pretty big dichotomy here. You have to accept some risk when deploying new code and it is inevitable you will deploy bugs to production. That doesn’t mean you shouldn’t analyze the risks and ensure you’re mitigating the risks that could have the greatest negative impact. This is especially true when you’re dealing with systems that have a effect on physical objects. If you deploy a high-risk change set that requires physical labor and manual intervention to correct the cost to the company or clients is far greater than one that can be corrected by just another deploy. These need to be taken into account. There are times when you have no choice but to deploy those high-risk change sets, but you should have done your leg work already and identified it as a risk and be ready with a plan in case it goes wrong. But, if you’re able to reasonably mitigate this risk, you should do so ahead of time.

                      1. 9

                        This is a research paper that studied the effects of companies moving to a open office floor plan and what happened to social interaction. It actually decreased significantly, in their cases, and promoted digital communication:

                        https://royalsocietypublishing.org/doi/full/10.1098/rstb.2017.0239

                        I do work in a similar setting as you’ve described. I don’t think many people have in person conversations. However, there are a lot more barriers to include remote people in the meetings. The teleconferencing needs to be on the calendar, you need to book a room, or sometimes screen sharing/video doesn’t work properly. These definitely make it challenging to include remote teammates.

                          1. 3

                            I need to catch up on reading. I’m working my way through, what I consider, the Jocko trilogy: The Dichotomy of Leadership, Extreme Ownership, Leadership Strategy and Tactics. I finished Dichotomy and am almost through E.O.

                            Other than that, I’ll, hopefully, be mostly focused on family time and away from code for the weekend.

                            1. 3

                              I find thinking about concurrency as a code design problem a better way to reason about it than as a execution model. It’s about designing your application so that the individual units are agnostic of execution order. They could execute sequentially as defined by the source or reordered without effecting the overall outcome of the application.

                              1. 1

                                That’s definitely a good way to design an application. However, I am arguing in the blog post that you also need to consider the execution model if performance is critical for your application. And for many applications out there, performance is important because of latency constraints and volume of data. Today, to maximize performance, you are pretty much forced to exploit parallelism because single-threaded performance is stagnating. To exploit parallelism, you need to consider your specific workload and find a programming model and an application architecture that suits it best.

                                1. 2

                                  Oh, yeah I wasn’t arguing against that all. Just stating a difference between how I view parallelism and concurrency.They both have their benefits and with their powers combined you can have a well tuned application, barring any hard-to-debug errors.

                              1. 1

                                I, generally, explain how without privacy you’re also giving up your rights of disclosure. If you have privacy you have the choice of what information to share with whom. Once you give up that information you’re also allowing them to choose what information they find important and who to share it with. Essentially any information you allow them to have you should be comfortable with it being public.

                                1. 40

                                  I like how Edward Snowden phrases it in Permanent Record.

                                  I don’t have a quote easily available. But he basically says that you may think you have nothing to hide. But other folks may, and for good reasons (journalists, whistleblowers, minorities).
                                  By saying you don’t care about privacy because you have nothing to hide, you’re making it dangerous for those folks, who will therefore seem suspicious.
                                  Then, caring about privacy becomes an act of solidarity.

                                  I’ve found that argument to work quite well with folks who aren’t in tech.

                                  1. 17

                                    Lifted from Wikipedia:

                                    “Arguing that you don’t care about the right to privacy because you have nothing to hide is no different than saying you don’t care about free speech because you have nothing to say.”

                                    “When you say, ‘I have nothing to hide,’ you’re saying, ‘I don’t care about this right.’ You’re saying, ‘I don’t have this right, because I’ve got to the point where I have to justify it.’ The way rights work is, the government has to justify its intrusion into your rights.”

                                    I usually argue that if they have nothing to hide, then of course they would allow me to view their banking info, medical information, all their IMs, and allow me to setup cameras in all rooms in their home. This typically leads to “Oh no, I won’t allow YOU to see that, but it’s okay for the government, because they wouldn’t do anything bad to me.”

                                    And for that part of the argument, it’s taking a case of a government oppressing some group of people, and then either people gets it or gets bored of the discussion.

                                    1. 4

                                      I usually argue that if they have nothing to hide, then of course they would allow me to view their banking info, medical information, all their IMs, and allow me to setup cameras in all rooms in their home.

                                      I actually found cases when they even did not care about that and replied with screenshots of texts they’ve just sent.

                                      1. 7

                                        They still have the choice of which screenshots to send, in this scenario. That’s a lot different than having complete access where you’d be able to choose which you thought were important.

                                        1. 6

                                          Fair point. In my experience many won’t think that far or have the imagination. Maybe it could be simplified by asking them how much the earn a month or a year. If they refuse to answer they basically showed that they have something to hide.

                                        2. 4

                                          There’s a nice movie called “Perfect strangers” which plays exactly on this topic. People gather for dinner and decide to read all sms aloud and answer all calls on speakerphone.

                                      2. 6

                                        Also people fleeing spousal or parental abuse!

                                        Also even if someone doesn’t care about their privacy, they do still need integrity for their communications, i.e. they would probably prefer that randos with a copy of FireSheep can’t just steal access to their FaceSpacePinstagram account or mess with the content of the pages they’re reading or inject malware into the software they are downloading. The off the shelf solutions to integrity of data in transit also solve confidentiality of data in transit.

                                        1. 4

                                          While it might work on majority of adult people with common sense, I can’t imagine how teens or students who prefer comfort and “not caring” over anything would even take that as an argument at all. They’ll most likely say “it’s their own problem” or “i am not a journalist, I don’t care about them”. It’s quite sad they lack these bits of empathy, but it’s a bit larger topic on it’s own and I don’t want to derail this one too much. But it’s even more terrifying if you know they’re the future and with that attitude everything might get even worse than it is already, in privacy domain at least.

                                          1. 3

                                            Quite frankly, I don’t appreciate the ageism employed here.

                                            1. 1

                                              Thankfully, young people learn, just like we did when we were young and stupid. The presence of stupidity is no reason to be terrified. Vigilant, perhaps. Active, involved, definitely. But not terrified. There’s hope for them yet.

                                              1. 4

                                                When I was 15 I was one of those “I have nothing to hide” people. Then I was 16 and started dating, and suddenly I didn’t want my parents reading my messages. So, there’s that argument too.

                                                But yeah, don’t give up on youth just because they’re too immature to understand everything right now. They will grow and learn.

                                            1. 10

                                              This may be better handled with cdpath, which is available in both Zsh and Bash.

                                              If arg does not begin with a slash, the behaviour depends on whether the current directory ‘.’ occurs in the list of directories contained in the shell parameter cdpath. If it does not, first attempt to change to the directory arg under the current directory, and if that fails but cdpath is set and contains at least one element attempt to change to the directory arg under each component of cdpath in turn until successful.

                                              Combined with auto_cd in Zsh, you get the same effect as defining all these aliases.

                                              1. 5

                                                cdpath looked extremely attractive to me but it appears that you need to install extra completion functions to make it work with tab completion. Drat.

                                                1. 2

                                                  That looks like a great solution. I’m going to give this a try. Thanks for info.

                                                  1. 2

                                                    I used CDPATH for a while. Turned it off because it was too confusing for me.

                                                    It even broke a build once because some shell script deep down changed its behavior due to CDPATH. It took quite a while to debug.

                                                  1. 2

                                                    At work, I’m cleaning up a revert I had to do last week.

                                                    At home, I’m starting a side-project I’ve been thinking about for some time. Hopefully, I’ll get something up and running within a few days that’s ugly but functional.

                                                    1. 3

                                                      The Age of Surveillance Capitalism, Shoshana Zuboff

                                                      1. 2

                                                        I’m about half way through this one. It, and the original paper, are eye opening, even if you’re already familiar with how money is made off data.

                                                        I think one is the biggest takeaways I’ve had so far if the concept of behavioral futures.

                                                      1. 2

                                                        I finished Tribe. It’s about the connections in small groups, particularly tribes and combat units. It was a pretty good, but very short read.

                                                        I just started Bowling Alone, which is supposed to be about the decay and revival of American communities.

                                                        1. 1

                                                          Personally, I don’t really care much about “tracking” per se. I don’t like it very much, but it seems like a reasonable compromise with getting easy-to-access content on the cheap, it’s not like humans are looking at most of the data they gather anyway, and most of the big problems are present in other cases. I’d be more worried about someone looking at my email inbox than I would at the ad profile.

                                                          What pisses me off about online ad networks is the lack of accountability or security. You get ads that pretend to be operating system dialogs, ads that are simply dishonest about where they lead, ads that integrate Monero miners, ads that include zero-day exploits, ads that ship PUPs, and ads that simply break the page they’re in. Even if I was actually interested in something that was advertised, I’d never actually click it anyway, because I’d be scared it would lead to a Vsearch install or worse.

                                                          The kind of crap that ad networks carry would never be tolerated if they weren’t getting money in exchange for running them. Online adverts should not be able to include anything that wouldn’t be allowed by GitHub-Flavored Markdown. There are ad networks that work like this, such as the Hiveworks banners (pure images), the older version of AdWords, and sponsored posts on The Orange Site.

                                                          More than that, ad servers need quality control. In a simple, ideal, case, sites that serve false or malicious ads should suffer legal consequences.

                                                          1. 2

                                                            I disagree with it being a reasonable compromise. In most other business transactions, we’re aware of what we’re paying for the service or product and what we get in return.

                                                            The transaction, in this nature, is so heavily skewed towards the advertisers and consumers of that data it’s grossly unfair.

                                                            We are not aware of what they are collecting, as this post itself indicates in the identification process alone, nor the true cost of it.

                                                            Whenever we give up data we pass the rights of disclosure, along with the data, to whatever company collected it. It’s not just that small amount of data, it’s the right to share it with whoever they choose.

                                                            What they collect, how the collect, and who they share it with (the cost) is largely hidden from one side of the transaction. This is intentional and not representative of how most fair transactions occur.