10 comments

  • kace918 hours ago
    (Let me start clarifying that this is not at all a criticism of the author)<p>I am usually amused by the way really competent people judge other&#x27;s context.<p>This post assumes understanding of:<p>- emacs (what it is, and terminology like buffers)<p>- strace<p>- linux directories and &quot;everything is a file&quot;<p>- environment variables<p>- grep and similar<p>- what git is<p>- the fact that &#x27;git whatever&#x27; works to run a custom script if git-whatever exists in the path (this one was a TIL for me!)<p>- irc<p>- CVEs<p>- dynamic loaders<p>- file priviledges<p>but then feels important to explain to the audience that:<p>&gt;A socket is a facility that enables interprocess communication
    • ericmcer4 hours ago
      That feels like part of why some juniors are so confident while more senior engineers are plagued with self-doubt.<p>Juniors know how much they have learned whereas a 10+ year senior (like the author) forget most people don&#x27;t know all this stuff intuitively.<p>I still will say stuff like &quot;yeah it&#x27;s just a string&quot; forgetting everyone else thinks a &quot;string&quot; is a bit of thread&#x2F;cord.
    • hakunin8 hours ago
      As a blogger who makes similar assumptions, I think we depend on how a lot of us from that time &quot;grew up&quot; similarly. Sockets came to relevance later in my career compared to everything else listed here.
      • kace917 hours ago
        That might be part of it, yes.<p>As someone younger, ports and sockets appeared very early in my learning. I&#x27;d say they appeared in passing before programming even, as we had to deal with router issues to get some online games or p2p programs to work.<p>And conversely, some of the other topics are in the &#x27;completely optional&#x27; category. Many of my colleagues work on IDEs from the start, and some may not even have used git in its command line form at all, though I think that extreme is more rare.
      • Thorrez3 hours ago
        git was released in 2005.<p>&gt;The term socket dates to the publication of RFC 147 in 1971, when it was used in the ARPANET. Most modern implementations of sockets are based on Berkeley sockets (1983), and other stacks such as Winsock (1991).<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Network_socket" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Network_socket</a>
    • goranmoomin8 hours ago
      I haven&#x27;t even realized that while I was reading the article, but it is amusing!<p>Though one explanation is that I think for the other stuff that the writer doesn&#x27;t explain, one can just guess and be half right, and even if the reader guesses wrong, isn&#x27;t critical to the bug ­— but sockets and capabilities are the concepts that are required to understand the post.<p>It still is amusing and I wouldn&#x27;t have even realized that until you pointed that out.
    • Retric3 hours ago
      I found that specific clarification useful while everything else was easy to follow.<p>It’s not that I was unaware that’s how Unix worked here, just that I rarely think of sockets in that context.
    • dwedge8 hours ago
      I found it interesting that they know how to use strace, but not how to list open files held by a process which to me seems simpler. Again, not criticism just an observation and I enjoyed the article
      • parliament327 hours ago
        Given the &quot;(hi Julia!)&quot; immediately after the strace shenanigans, I interpreted this as a third-party hint; the author most likely had not used strace before.<p>The author is both an example of and an example for how we can get caught in &quot;bubbles&quot; of tools&#x2F;things we know and use and don&#x27;t, and blog posts like this are great for discovery (I didn&#x27;t know about git invoking a binary in the path like his &quot;git re-edit&quot;, for example, until today).
    • derefr4 hours ago
      All of the things you listed are ops topics. But sockets are a programming concept.<p>I would expect a person with 10+ years of Unix sysadmin experience — but who has never programmed directly against any OS APIs, “merely” scripting together invocations of userland CLI tools — to have exactly this kind of lopsided knowledge.<p>(And that pattern is more common than you might think; if you remember installing early SuSE or Slackware on a random beige box, it probably applies to you!)
    • mr_toad5 hours ago
      Most people these days are using http and don’t need to touch sockets. (Except for the people implementing http of course).
    • kragen5 hours ago
      To be fair, it does link the CVE, so if you don&#x27;t know what a CVE is, you can click the link.<p>I agree that it&#x27;s amusing.
    • addled6 hours ago
      I mean, the title is a quote from Buckaroo Banzai. Lack of context is part of the fun!
  • svat8 hours ago
    (2016)<p>Also, “direct” link: <a href="https:&#x2F;&#x2F;blog.plover.com&#x2F;tech&#x2F;tmpdir.html" rel="nofollow">https:&#x2F;&#x2F;blog.plover.com&#x2F;tech&#x2F;tmpdir.html</a> (This doesn&#x27;t really matter, as the posted link is to <a href="https:&#x2F;&#x2F;blog.plover.com&#x2F;2016&#x2F;07&#x2F;01&#x2F;#tmpdir" rel="nofollow">https:&#x2F;&#x2F;blog.plover.com&#x2F;2016&#x2F;07&#x2F;01&#x2F;#tmpdir</a> i.e. the blog post named “tmpdir” posted on 2016-07-01 and there is only post posted on that date, so the content of the page is basically the same.)
  • adrianmonk8 hours ago
    &gt; <i>This computer stuff is amazingly complicated. I don&#x27;t know how anyone gets anything done.</i><p>I wonder what could be done to make this type of problem less hidden and easier to diagnose.<p>The one thing that comes to mind is to have the loader fail fast. For security reasons, the loader needs to ensure TMPDIR isn&#x27;t set. Right now it accomplishes this by un-setting TMPDIR, which leads to silent failures. Instead, it could check if TMPDIR is set, and if so, give a fatal error.<p>This would force you to unset TMPDIR yourself before you run a privileged program, which would be tedious, but at least you&#x27;d know it was happening because you&#x27;d be the one doing it.<p>(To be clear, I&#x27;m not proposing actually doing this. It would break compatibility. It&#x27;s just interesting to think about alternative designs.)
    • LorenPechtel1 hour ago
      Yeah, this case is a good example of why many people don&#x27;t like linux. Too much interconnected stuff that can go wrong.
    • tetha5 hours ago
      Mh, I am starting to dislike this kind of hyper-configurability.<p>I know when this was necessary and used it myself quite a bit. But today, couldn&#x27;t we just open up a mount namespace and bind-mount something else to &#x2F;tmp, like SystemDs private tempdirs? (Which broke a lot of assumptions about tmpdirs and caused a bit of ruckus, but on the other hand, I see their point by now)<p>I&#x27;m honestly starting to wonder about a lot of these really weird, prickly and fragile environment variables which cause security vulnerabilities, if low-overhead virtualization and namespacing&#x2F;containers are available. This would also raise the security floor.
      • josephcsible6 minutes ago
        &gt; But today, couldn&#x27;t we just open up a mount namespace and bind-mount something else to &#x2F;tmp, like SystemDs private tempdirs?<p>No, because unless you&#x27;re already root (in which case you wouldn&#x27;t have needed the binary with the capability in the first place), you can&#x27;t make a mount namespace without also making a user namespace, and the counterproductive risk-averse craziness has led to removing unprivileged users&#x27; ability to make user namespaces.
    • ericmcer4 hours ago
      It is complex. There was another posting on HN where commenters were musing over why software projects have a much higher failure rate than any other engineering discipline.<p>Are we just shittier engineers, is it more complex, or is the culture such that we output lower quality? Does building a bridge require less cognitive load then a complex software project?
      • rout395743 hours ago
        I think it&#x27;s a cultural acceptance of lower quality, happily traded for deft execution, over and over.<p>We&#x27;re better at encapsulating lower-level complexities in e.g. bridge building than we are at software.<p>All the complexities of, say, martensite grain boundaries and what-not are implicit in how we use steel to reinforce concrete. But we&#x27;ve got enough of it in a given project that the statistical summaries are adequate. It&#x27;s a member with thus strength in tension, and thus in compression, and we put a 200% safety factor in and soldier on.<p>And nobody can take over the ownership of leftpad and suddenly falsify all our assumptions about how steel is supposed to act when we next deploy ibeam.js ...<p>The most well understood and dependable components of our electronic infrastructure are the ones we cordially loathe because they&#x27;re composed in <i>shudder</i> COBOL, or CICS transactions, or whatever.
        • LorenPechtel1 hour ago
          Exactly. The properties rarely matter outside the item. The column is of such-and-such a strength, that&#x27;s it. But when things get strange we see failures. Perfect example: Challenger. Was the motor safe sitting on the pad? Yes. Was the motor safe in flight? Yes. Was the motor safe at ignition? On the test stand, yes. Stacked for launch, ignition caused the whole stack to twang--and maybe the seals failed....
      • jcynix2 hours ago
        &gt; Are we just shittier engineers, is it more complex [...]<p>Both IMO: first, anybody could buy a computer during the last three decades, dabble in programming without learning basic concepts of software construction and&#x2F;or user-interface design and get a job.<p>And copying bad libraries was (and is) easy. I still get angry when software tells me &quot;this isn&#x27;t a valid phone number&quot; when I cut&#x2F;copy&#x2F;paste a number with a blank or a hyphen between digits. Or worse, libraries which expect the local part of an email address to only consist of alphanumeric characters and maybe a hyphen.<p>Second, writing software definitely is more complex than building physical objects. Because there are &quot;no laws&quot; of physics which limit what can be done. In the sense that physics tell you that you need to follow certain rules to get a stable building or a bridge capable of withstanding rain, wind, etc.
        • jz3911 hour ago
          Absolutely. As an Electrical Engineer turned software guy, Ohm&#x27;s&#x2F;Kirchhoff&#x27;s laws remain as valid and significant as when I was taught them 35 years ago. For software however, growth of hardware architectures&#x2F;constraints made it possible to add much more functionality. My first UNIX experience was on PDP-11&#x2F;44, where every process (and kernel) had access to an impressive maximum of 128K of RAM (if you figured out the flag to split address and data segments). This meant everything was simple and easy to follow: the UNIX permission model (user&#x2F;group&#x2F;other+suid&#x2F;sgid) fit it well. ACLs&#x2F;capabilities etc were reserved for VMS&#x2F;Multics, with manuals spanning shelves.<p>Given hardware available to an average modern Linux box, it is hardly surprising that these bells and whistles were added - <i>someone</i> will find them useful in some scenarios and additional resource is negligible. It does however make understanding the whole beast much, much harder...
  • jcynix7 hours ago
    BTW, the author &quot;mjd&quot; is the author of the excellent book &quot;Higher-Order Perl&quot; which is available online at <a href="https:&#x2F;&#x2F;hop.perl.plover.com&#x2F;book&#x2F;" rel="nofollow">https:&#x2F;&#x2F;hop.perl.plover.com&#x2F;book&#x2F;</a>
    • pinkmuffinere6 hours ago
      I love mjd! He once replied to me on an HN thread and it lives forever in my memory :)
  • thayne6 hours ago
    Setting a capability on the perl executable seems like a very bad idea. That effectively grants tha capability to everything that is able to invoke perl (without being restricted to NO_NEW_PRIVILEGES).
    • aftbit1 hour ago
      Yeah why did he want non-root perl to be able to bind to low-numbered ports? Seems like one of those typical footguns of applying non-standard configurations.
  • linsomniac9 hours ago
    The Internet needs more Buckaroo Banzai references. Because wherever you go, there you are.
    • neilk6 hours ago
      Yup. I nearly had this movie memorized when I was a child.<p><a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=aWXuDNmO7j8" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=aWXuDNmO7j8</a><p>Peter Weller, playing Buckaroo Banzai, is late for his military-particle-physics-interdimensional-jet-car test because he&#x27;s helping Jeff Goldblum&#x27;s character with neurosurgery. Later that day he will go play lead guitar in an ensemble.<p>Scriptwriting gurus advise that your protagonist should have flaws and character progression. The writers of this movie disagree.
      • linsomniac3 hours ago
        Kevin Smith has an introduction to this movie where he calls it a true piece of art: &quot;It doesn&#x27;t care what you bring to the table, it bring itself to the table and says: figure it out&quot;. <a href="https:&#x2F;&#x2F;youtu.be&#x2F;N8R8wmlggwc?si=sva2-jF1Kl5eFsU4" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;N8R8wmlggwc?si=sva2-jF1Kl5eFsU4</a>
  • markstos9 hours ago
    And this was written 10 years ago, when computers were far less complicated and vibe coding sleeper bugs wasn&#x27;t a thing.
    • WJW9 hours ago
      Vibe coded sleeper bugs have always been a thing, they just came from the bosses&#x27; nephew who was still learning PHP at the time and left several years ago.<p>Also, computers in 2015 were not meaningfully less complex than today. Certainly not when the topic is weird emacs and perl interactions.
      • marcosdumay8 hours ago
        Even if the topic was web applications (that are where Big Complexity thrives), 2015 was about peak complexity. Things have improved a bit since then.
      • add-sub-mul-div8 hours ago
        The problem isn&#x27;t that AI is doing something new, we all know that it isn&#x27;t. The problem is that the boss&#x27; nephew is becoming the rule now rather than the exception.
        • jama2118 hours ago
          It also makes bugs easier to find and resolve. You win some you lose some. Perhaps by the time it is the rule they’ll be better at writing safer code.
    • detourdog9 hours ago
      From my perspective vibe coding was always a thing.
  • LordGrey6 hours ago
    Buckaroo Banzai: You can check your anatomy all you want, and even though there may be normal variation, when it comes right down to it, this far inside the head it all looks the same. No, no, no, don’t tug on that. You never know what it might be attached to.
    • buckaroobanzi1 hour ago
      See, this is the point, for me, where it started to look like a problem. You know, I wanted to sacrifice the precentral vein in order to get some exposure, but because of this guy&#x27;s normal variation, I got excited, and all of a sudden I didn&#x27;t know whether I was looking at the precentral vein, or one of the internal cerebral veins, or the vein of Galen, or the vascular vein of Rosenthal. So, on my own, to me, at this point, I was ready to say that&#x27;s it, let&#x27;s get out.
  • Scott-David6 hours ago
    [dead]