The Cursed Computer Iceberg Meme

(suricrasia.online)

307 points | by _fnqu 1110 days ago

20 comments

  • InsOp 1110 days ago
    I found the "basilisk collection" (at the bottom of "bottom of the iceberg") the most fascinating one .

    I have the feeling that the whole iceberg only exists for us to click on this very article (as both share the same domain)

    • wayvey 1110 days ago
      Wow, I went to read the article and completely forgot you said "same domain". I was fooled for a while and couldn't believe I'd never heard of it before. Very facinating indeed. It'd be pretty wild if that stuff was real :)
      • simias 1110 days ago
        It took me a while to understand that it was fiction too. I spent a few minutes anxiously pondering if I could somehow have overlooked one of the most important cryptographic event in decades. It's very well made.
    • lifthrasiir 1110 days ago
      Sam Hughes' recent work [1] has the roughly same concept, a fictional Wikipedia article with enough details to believe. I enjoyed both.

      [1] https://qntm.org/mmacevedo

    • DaiPlusPlus 1110 days ago
      Before I read the SCP-like article, I thought it might be a reference to Roko’s Basilisk: an unrelated, but equally unsettling, proposition.
      • fanf2 1110 days ago
        Roko’s Basilisk is just the same as Pascal’s Wager.
        • ralfd 1110 days ago
          The twist of Rokos Basilisk is that it is an info hazard: it only is dangerous if one knows about it. Like a dark cult of Cthulhu who only conjures the elder god so they have the mercy to be eaten first.

          I think it is silly, but there are people anxious about it, which is not true about Pascals Wager.

          • YeGoblynQueenne 1109 days ago
            >> The twist of Rokos Basilisk is that it is an info hazard: it only is dangerous if one knows about it.

            Actually, it's only dangerous if one believes in it. Which is why it can't really work: a superintelligent AI would assume nobody is gullible enough to actually believe it, like, for real.

          • DaiPlusPlus 1110 days ago
            > I think it is silly, but there are people anxious about it, which is not true about Pascals Wager.

            There's reason to be anxious about Pascal's Wager: assuming one holds a charitable view of the historicity of religious texts then Pascal's Wager is very rational - but one might feel social pressure to not be religious - or more likely: social pressure to hold a particular religion) - and just procrastination to get-around-to-researching-this-whole-religion-thing, so the uncertainty and lack of confidence in ones' own actions can lead to anxiety like that.

  • erk__ 1110 days ago
    "unicode on punch cards" in the Abyss, should clearly point to UTF-EBCDIC [0] and not just EBCDIC [1]. UTF-EBCDIC is probably one of the most exotic unicode formats, and I don't believe it is used much anymore, if it ever were.

    [0]: https://en.wikipedia.org/wiki/UTF-EBCDIC

    [1]: https://en.wikipedia.org/wiki/EBCDIC

    • jmillikin 1110 days ago
      Unicode encoding is a rich source of strange behavior. A couple that come to mind:

      Decoders that try to restart on unexpected byte sequences: https://john-millikin.com/%F0%9F%A4%94/case-report-surugaya-...

      GHC 7.2 using Unicode to represent file paths on Linux (where paths are arbitrary bytes), an approach which was further explored in GHC 7.4 by using reserved codepoints.

      \u vs \U escapes in languages that added Unicode support before the codepoint space was expanded beyond 16 bits.

    • DaiPlusPlus 1110 days ago
      Correctly referred to as WTF-EBCDIC.
  • universenz 1110 days ago
    Haha whoa, I didn’t realise at one point EVE Online released an update that deleted the Boot.ini file. (Below the Iceberg)

    [0]: https://www.eveonline.com/news/view/about-the-boot.ini-issue

    • bombcar 1110 days ago
      That response is a well done description of how these things should be handled:

      1. mitigate ASAP (pull or fix the update)

      2. Make customers whole (anyone affected should be fixed no matter the hassle or cost - paying for Geek Squad is brilliant)

      3. Determine how testing could have caught it and didn’t (does your CI include rebooting? Nonstandard configurations?)

      4. Remove overlapping filenames

      5. Be open about all the above

    • jmillikin 1110 days ago
      It was big news at the time. CCP released a short video about it at a convention later: https://www.youtube.com/watch?v=msXRFJ2ar_E
  • gbuk2013 1110 days ago
    The OpenPGP SKS vulnerability gist was a sad read https://gist.github.com/rjhansen/67ab921ffb4084c865b3618d695...
    • bombcar 1110 days ago
      Given the extent of the issue they got off quite easy, in my estimation.

      Immutable distributed histories are all susceptible to the “encoded illegal content” and I don’t know how they’ll end up resolving it.

  • ralfd 1110 days ago
    Off topic: The draw-an-iceberg game posted recently here taught me that icebergs do not look like that. That thing would float sideways!
  • strogonoff 1110 days ago
    After reading “There’s no elegant solution to FizzBuzz”, immediately had to check how I might try to be unnecessarily clever if I had to do it in Python and arrived at:

        for i in range(1, 100):
          divisible_by_3 = i % 3 == 0
          divisible_by_5 = i % 5 == 0
          fizz = 'Fizz' if divisible_by_3 else ''
          buzz = 'Buzz' if divisible_by_5 else ''
          num = '' if divisible_by_3 or divisible_by_5 else i
          print "{0}{1}{2}".format(fizz, buzz, num)
    
    (In reality, of course, I would likely have had to look up the modulo operator first.)
    • inoursweetz 1110 days ago
      There is a nice paper, which explores possible elegant solutions to FizzBuzz. https://themonadreader.files.wordpress.com/2014/04/fizzbuzz....
      • strogonoff 1110 days ago
        > FizzBuzz in Haskell by Embedding a Domain-Specific Language

        I was not disappointed.

        > Meanwhile, we want there to be at most one place that outputs fizz, buzz, or the string representation, and each test to be performed only once.

        These do intuitively seem like the properties of an elegant solution.

    • Zarel 1110 days ago
      JavaScript can eliminate all repetition thanks to how its || operator works:

          for (let i = 1; i <= 100; i++) {
            console.log(
              (i % 3 == 0 ? "Fizz" : "") + (i % 5 == 0 ? "Buzz" : "")
              || i
            );
          }
      
      Whether or not you consider this more elegant is a matter of taste, though.
      • strogonoff 1110 days ago
        While I like to think the opposite, I can see myself using || with an empty string occasionally (at least with TS, where I can be reasonably sure the variable will definitely be a string at runtime). However, concatenating strings with + is a bit implicit to my taste.
    • makerofthings 1110 days ago
      I do it like this.

        fizzbuzz n = case (n^4 `mod` 15) of
          1 -> show n
          6 -> "fizz"
          10 -> "buzz"
          0 -> "fizzbuzz"
        main :: IO ()
        main = print $ map fizzbuzz [1..30]
    • xoudini 1110 days ago
      Here's a (perhaps "unnecessarily clever") Python 3 version I wrote a while back, for some reason:

          import functools
          
          def fizzbuzz(n):
              if not n % 3: yield (r := "fizz")
              if not n % 5: yield (r := "buzz")
              if not "r" in locals(): yield n
          
          compose = lambda f, g: lambda *args: f(g(*args))
          functions = "".join, functools.partial(map, str), fizzbuzz
          transform = functools.reduce(compose, functions)
          print("\n".join(map(transform, range(1, 100))))
    • finnh 1110 days ago
      I've always thought that an elegant solution wouldn't iterate by ones, but would instead increment the correct amount between each print statement... 0+3+2+1+3+1+2+3+3+2+...
    • yarcob 1110 days ago
      Maybe the fact that there is no elegant solution makes it useful.
    • tandav 1110 days ago
      My 2 cents:

        import itertools
        
        # this block is just for simple functional pipes
        class B:
            def __init__(self, f): self.f = f
        class Pipe     (B): __ror__ = lambda self, x: self.f(x)        
        class Map      (B): __ror__ = lambda self, x: map   (self.f, x)
        class MapValues(B): __ror__ = lambda self, it: it | Map(lambda kv: (kv[0], self.f(kv[1])))
        
        
        # here the actual FizzBuzz
        (
            range(1, 100)
            | Map(lambda i: (i, itertools.compress(('Fizz', 'Buzz'), (i % 3 == 0, i % 5 == 0))))
            | MapValues(''.join)
            | Map(lambda kv: kv[1] or kv[0])
            | Pipe(list)
        )
        
        [1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz', 11, 'Fizz', 13, 14, 'FizzBuzz', 16, 17, ... ]
      
      
      if you're interested in pipes like above - here my simple library for that (no install needed, just copy some lines)

      https://github.com/tandav/pipe#fizzbuzz

    • fanf2 1110 days ago
  • nynx 1110 days ago
    The Birth and Death of Javascript (near the end of the bottom of the iceberg) has played a big role in my life and I expect it to be relevant far into the future.
  • Jabbles 1110 days ago
  • nxpnsv 1110 days ago
    Das ist ein gameboy is remarkable
    • bombcar 1110 days ago
      There are a large number of specialized devices that used to have custom touchscreens - and many MANY of them are much more reliable now that they just have an iPad stuck in there instead.

      Seeing it done with a GBA is not surprising.

    • skytreader 1110 days ago
      I really didn't get this and Google search comes up with nichts. Maybe cause I'm in Germany so it doesn't ring a special bell to Google. Explainer someone?
      • dEnigma 1110 days ago
        The text on the iceberg is linked to whatever it is talking about so you can simply click on it to get to the source.
        • DaiPlusPlus 1110 days ago
          Ah, thanks! I’m on my iPad so there’s no :hover hints... at least until Apple adds support for off-screen finger detection.
      • lordgrenville 1110 days ago
        Just from the context, looks like just the fact that it's a serious-looking medical device which is literally a case around a GBA. (More here: https://www.theverge.com/circuitbreaker/2017/9/21/16339122/e...)
      • swiley 1110 days ago
        Searching on English google from the US also just brings up a bunch of German articles about the Gameboy.
  • ThisWasTaken 1109 days ago
    oh god, I'll never forget /usr/bin/[. I wasted too many God damn hours trying to understand why nothing was working... To this day I still curse whoever decided to call it that way.
  • tripa 1110 days ago
    "fonts can be malicious" (on iceberg) and "font hinting is Turing complete" (middle of iceberg) are the same.
    • simias 1110 days ago
      "Fonts can be malicious" made me think of security vulnerabilities in font engines that can be exploited remotely by untrusted websites through things like webfonts. That doesn't necessarily involve Turing completeness, just some bogus memory handling in a font library written in C for instance.
      • tripa 1110 days ago
        That was my understanding as well, but the links don't corroborate.
        • simias 1110 days ago
          Oh, I completely missed that the links were clickable until I read your comments. I thought it was an image.
  • enriquto 1110 days ago
    Now I want a printed poster of this to hang on my lab.
  • 1MachineElf 1110 days ago
    I was surprised to see "RAID write hole" so close to the bottom. Surely at least half or more users of ZFS are aware of that.
  • gsich 1110 days ago
    >Alexander Rhatushnyak broke Kolmogorov complexity and won 8000 euros

    I couldn't find that on the link?

    • hansel_der 1103 days ago
      same here. i guess it's a joke
  • weeboid 1110 days ago
    No refs to lexicon, sysadmin from hell, LISP, or manual garbage collect. F-
    • bear8642 1109 days ago
      >lexicon

      This the text editor?

      >LISP, or manual garbage collect

      This Lisp Machine garbage collection = reboot?

  • ac42 1110 days ago
    Oh, wow... I haven't felt so nerdy in a long, long time. Lovely :)
  • SubiculumCode 1110 days ago
    Is this like a "no true geek" test?
  • Palomides 1110 days ago
    why is alloca on this list? is it really that cursed?
    • swiley 1110 days ago
      Yes because you have no idea if it's going to result in the stack overwriting the heap. On many compilers it's just a macro that decrements the stack pointer by the value in the argument. You really shouldn't ever use it.
      • Palomides 1110 days ago
        doesn't that apply to any other function call also? (though obviously alloca can let you do it really fast)
        • majewsky 1110 days ago
          IIRC, there's a protected page between the stack and the heap, where any reads or writes will `kill -SEGV` the program. With regular function calls, you'll be advancing the stack pointer slowly enough to guarantee a hit on that page. With alloca(), you can move the stack pointer in larger steps, thus missing that page.

          (The lowest few pages of memory are protected in the same way to increase the likelihood that a NUL pointer correctly blows up in your face when you try to access its memory.)

  • Scuds 1110 days ago
    not sure what this is ordering
    • Sharlin 1110 days ago
      By apparent obscurity of the reference. At the bottom there's a link to a poll whose results the ordering is presumably based on.
      • lifthrasiir 1110 days ago
        I feel the order up to the Bottom of the iceberg is roughly correct, and anything below that is almost randomly ordered. For example I don't think GCJ-02 and Mario Wolczko's unix recovery is that obscure.
    • ac42 1110 days ago
      Responses to the poll, I would presume?