Skip Navigation
Isn't capitalism great?
  • though this pic is in winter, and there could well be a bunch of trees just to the right off-camera

    (also the cars and the satellite dish give away that this is what a commieblock looks 50 years after being built)

  • Why make it complicated?
  • Yeah, it's in my edit I realized the same thing. I'm thinking it doesn't actually really make sense and the real reason is more "the specific way C does it causes a lot of problems so we're not poking syntax like that with a 10 foot pole" + "it makes writing the parser easier" + maybe a bit of "it makes grepping easier"

  • Why make it complicated?
  • So I think it's still probably unclear to people why "mix of keywords and identifiers" is bad: it means any new keyword could break backwards compatibility because someone could have already named a type the same thing as that new keyword.

    This syntax puts type identifiers in the very prominent position of "generic fresh statement after semicolon or newline"

    ..though I've spent like 10 minutes thinking about this and now it's again not making sense to me. Isn't the very common plain "already_existing_variable = 5" also causing the same problem? We'd have to go back to cobol style "SET foo = 5" for everything to actually make it not an issue

  • Occurences of swearing in the Linux kernel source code over time
  • And most of those cases are of course using the word sarcastically

    collapsed list of them
    The next function to implement is called, amazingly, next(); its job is to
    move the iterator forward to the next position in the sequence.
    
    if (lc->sync == NOSYNC)
    	for (i = lc->header.nr_regions; i < lc->region_count; i++)
    		/* FIXME: amazingly inefficient */
    		log_set_bit(lc, lc->clean_bits, i);
    else
    	for (i = lc->header.nr_regions; i < lc->region_count; i++)
    		/* FIXME: amazingly inefficient */
    		log_clear_bit(lc, lc->clean_bits, i);
    
    /*
     * Amazingly, if ehv_bc_tty_open() returns an error code, the tty layer will
     * still call this function to close the tty device.  So we can't assume that
     * the tty port has been initialized.
     */
    
     *   this header was blatantly ripped from netfilter_ipv4.h
     *   it's amazing what adding a bunch of 6s can do =8^)
    
    /*
     * I studied different documents and many live PROMs both from 2.30
     * family and 3.xx versions. I came to the amazing conclusion: there is
     * absolutely no way to route interrupts in IIep systems relying on
     * information which PROM presents. We must hardcode interrupt routing
     * schematics. And this actually sucks.   -- zaitcev 1999/05/12
    
     * corresponding ABS_X and ABS_Y events. This turns the Twiddler into a game
     * controller with amazing 18 buttons :-)
    
     * In an amazing feat of design, the Enhanced Features Register (EFR)
     * shares the address of the Interrupt Identification Register (IIR).
     * Access to EFR is switched on by writing a magic value (0xbf) to the
     * Line Control Register (LCR). Any interrupt firing during this time will
     * see the EFR where it expects the IIR to be, leading to
     * "Unexpected interrupt" messages.
    
     * Thanks BUGabundo and Malmostoso for your amazing help!
    
  • Anon predicts the future
  • getting the picture to perfectly replicate the image on the screen without it being noticeable that it's just a picture of a screen would be so difficult it would probably be easier to modify the camera instead

  • Anon predicts the future
  • blockchain is a totally useless extra bit glued on there. All the real evidence will be the cryptographic signatures added by the hardware manufacturer (which can be faked, but requires extracting the keys from the "security chip" in the camera which may be very difficult)

    all the blockchain does at that point is provide a timestamp of "signed hash of the picture+metadata was uploaded on x date" which can easily be done without blockchain too

  • Find the bug (a classic)

    ``` class Node: def init(self, edges = set()): self.edges = edges

    def main(): foo = Node() bar = Node() quz = Node()

    foo.edges.add(bar) bar.edges.add(foo)

    assert(foo is not bar) # assertion succeeds assert(foo is not quz) # assertion succeeds assert(bar is not quz) # assertion succeeds assert(len(quz.edges) == 0) # assertion fails??

    main() ```

    spoiler

    Mutable default values are shared across objects. The set in this case.

    12
    2
    InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)SU
    sus @programming.dev
    Posts 13
    Comments 290