WTF Bites


  • Discourse touched me in a no-no place

    @BernieTheBernie said in WTF Bites:

    @DogsB said in WTF Bites:

    but the stack traces just clutter up the logs.

    Could be my :phb: too...

    They do clutter up the logs, and that's why it is important to log the exception at most once.

    Writing code to abbreviate exception logs is much much harder than it appears to be at first glance, as you have to accommodate all sorts of weird edge cases to do it right. I remember trying, and then ending up wondering WTF was going on the first time I had an exception that was truly framework-generated and which had its entire stack trace chomped. Not worth it. Easier to try to make the code not need to throw much in the first place. (And some exceptions need to never be logged; that's a property of those specific exceptions.)



  • WTF of my day: You may or may not have heard about the hubbub where Bungie (creators of Halo and Destiny, among others) seemingly issued a bunch of DMCAs to various YouTube content creators even though they explicitly promised not to do so in those cases (namely, doing something original with their IP, like remixing the sound score, stuff like that).

    Turned out that someone successfully managed to convince Google that his email address was the valid representative for the IP and thus could issue DMCAs. Basically, he created a new Gmail-Account (which you need for YouTube's DMCA process, a :wtf: all of its own) and named it jeremywilandcsc@gmail.com. Y'see, CSC is the company Bungie authorized to monitor YouTube and other channels for unauthorized use and Jeremy Wiland is indeed their main representative at CSC.

    Didn't matter for Google that the actual Bungie account had a completely different authorized email on its books.

    And when Bungie tried to revert the fraudulent DMCA requests they couldn't because drumroll the email adress which issued the requests was not the one they were trying to do the revertions with. And of course Google wouldn't tell them whodunnit without a lawsuit.

    So, they did that. Turns out that the culprit was inside the house all along:

    f0cbfd90-d6a2-418e-969b-011de6d66061-image.png

    The court filing is also a joy to read. ( https://storage.courtlistener.com/recap/gov.uscourts.wawd.308508/gov.uscourts.wawd.308508.19.0.pdf )

    First of all, the guy behind this is dumb as shit:

    45f77561-9d8c-4488-a705-62dd590ae5ef-image.png

    And someone had real fun writing the filing:

    The Manifesto reads like a hackneyed “look what you made me do” letter from the serial killer in a bad novel



  • @Bulb said in WTF Bites:

    @Kamil-Podlesak The part that's prevalent in Korea, but rare elsewhere, is that those big holdings have completely unrelated businesses in them. Big companies in other parts of the world usually stick to somewhat related businesses.

    Except when a restaurant chain made computers (in 1951!)

    Slightly tangential: when I tried to find the name of "Lyons" (memory deficiencies), I have found somewhat reverse example by accident. Now I know that blockchain :wtf: is usually not worth posting, but :um-actually: in this case, I must admit that peddling manure IS usually an essential part of food supply chain.


  • Notification Spam Recipient

    Status: Outlook you stupid fucking pile of shit...

    78a37a05-3463-42f4-97ac-536acfdba11e-image.png



  • @Rhywden said in WTF Bites:

    And someone had real fun writing the filing:

    The Manifesto reads like a hackneyed “look what you made me do” letter from the serial killer in a bad novel

    Bungie thus brings this action ... to demonstrate that serious consequences await anyone else
    foolish enough to volunteer as a Defendant by targeting Bungie’s community for attack.

    "Volunteer as a Defendant" is a witty way to put it.


  • Java Dev

    In a library we use:

    int WriteAsFoo(...)
    {
       if( global_configuration_flag )
       {
          return WriteAsBar(...);
       }
       else
       {
          /* ... */
       }
    }
    

    And of course they ignore this flag on the read side, meaning we are unable to read this file back if the flag caused it to be written in bar syntax. Plus the read side is on a different host which may or may not have received this configuration.



  • :wtf: of my day: So, we're finally ready to proceed into the Century of the Fruitbat and remove some more paper cruft, namely, keeping lesson plans, attendance and stuff on paper which we then pass around. Particularly attendance is annoying because every lesson has its own attendance sheet where, if someone is absent, pass a notification paper to the class teacher so he or she knows when one pupils is absent way too often - sometimes people forget which then leads to: "Wait, this guy only was present for 25% of your lessons? Why didn't I know about that?" at the grading conferences at year's end.

    So, instead we'll now get a website and a corresponding app where we can keep tabs more easily without shuffling paper. And, yes, it does work. There's the occasional weirdness but show me a software without weirdness and I'll show you a "Hello World" program with the same amount of features.

    This also allows the pupils to get notified if their absence approaches a critical ratio and if their lesson plan changed.

    But the administration side of things - here it becomes apparent that this was built upon existing software. For starters, we have 1700+ pupils and about 150 staff. We do not want to manually hand out usernames and passwords (we did that once for another service - let's just say, we're now using something else more sane).

    But it has an OpenID integration! Yay! And I have an OpenID-Server! Double-Yay!

    So, which scopes/claims am I supposed hand over (i.e. which key:value pairs should the server hand over on auth)? The online manual gives direction for every integration except OpenID. Upon emailing them I got a link to a completely different page which shows what to enter for an LMS called "iServ". Yes, I know it. We do not use iServ. And thus the example entries are only marginally useful because I do not exactly know which of those example entries is a key and which is a value (I can infer most of them based on what they're called, others are a mystery).

    So, another email: "Well, that's complicated and we'd need to start a project on that and need to do discovery of specs first and ... blah."

    Fuck that.

    So I took the keys/values I was sure of and did experimentation with the rest. It was very helpful that they included a complete stack trace every time something barfed... yes, this is a site in production, why do you ask?

    But I got it working. However, as it turns out, using sub as the identification for a user entry (which is recommended as it is immutable) yields a problem because they're also using that as the username. And f5091a88-6336-496e-b26b-a63639d2757a is such a userfriendly username! I mean, it's not as if the profile scope (which they demand!) includes such helpful claims as name or even preferred_username! Also, the configuration form does not say "username" for the field but "unique identifier".

    Got that fixed, too. Now I'm using preferred_username even though it isn't immutable but good enough... for the teachers that username is also their abbreviation - for example, if my lastname was "Hasselhoff" my abbreviation would be "Has" or "Hoff" (i.e. 2 to 4 letters only) and that's what appears on the lesson plans due to space constraints.

    But since OpenID does not offer a user sync, we need to create the users first. Okay, csv-import is not that bad. But the "list of users" does not have an "import"-button, just a "create"-button, i.e. create one single user manually where you then have to set the "external id" to the username of OpenID. Oh, I see, under the "master data" tab (somewhere completely different) there's a different list of users! And then I can reference one user from the first database to the "master data" database (but the form does not autofill - you have to enter everything again!)

    Weird, it does not have an "external id" field but a "foreign id". And if I set that...

    ... then it's not reflected in the other list.

    A bit of cursing and swearing like a sailor later

    So, basically what we have are two different databases: One for the "people at the school" and one for the "users at the school". First I import users into the "people" database, setting the "foreign id". Then I go into the "user" database and click on "import pupils" and then click on "import teachers". Then I click on "Set the external id by using the foreign id" button but this only does that for the pupils. For the teachers I click the "Set the external Id by using their abbreviation" button.

    Don't ask me why there are two different databases which are independent of each other.



  • @Rhywden said in WTF Bites:

    Don't ask me why ...

    You answered it yourself.
    @Rhywden said in WTF Bites:

    LMS


  • Discourse touched me in a no-no place

    @Rhywden said in WTF Bites:

    However, as it turns out, using sub as the identification for a user entry (which is recommended as it is immutable) yields a problem because they're also using that as the username.

    The sub field works fine as a primary key (it has the correct uniqueness properties), but really isn't usually human-readable. At all. If you actually care about who the users are instead of just "they're some user who I can link to something somewhere but I don't care" then you need the profile contents too.

    Which you worked out.

    Got that fixed, too. Now I'm using preferred_username even though it isn't immutable but good enough...

    In theory it is possible for that to change, but it's pretty rare. It's like changing your username in /etc/passwd; possible and things work, but really very unlikely and a lot of stuff will probably break in surprising ways.

    It's also possible for your OpenID Server deployment to have a policy statement that changing of usernames is not supported. (Changing of real names and nicknames must be supported though. Organisational roles too, if you support storing them in the OpenID level at all.)



  • @dkf said in WTF Bites:

    @Rhywden said in WTF Bites:

    However, as it turns out, using sub as the identification for a user entry (which is recommended as it is immutable) yields a problem because they're also using that as the username.

    The sub field works fine as a primary key (it has the correct uniqueness properties), but really isn't usually human-readable. At all. If you actually care about who the users are instead of just "they're some user who I can link to something somewhere but I don't care" then you need the profile contents too.

    Which you worked out.

    Well, it's weird because they have separate fields for "username" and "display name" but when checking the "create user if not exists", neither are filled with the correct values nor is it configurable where they take that value from.

    Got that fixed, too. Now I'm using preferred_username even though it isn't immutable but good enough...

    In theory it is possible for that to change, but it's pretty rare. It's like changing your username in /etc/passwd; possible and things work, but really very unlikely and a lot of stuff will probably break in surprising ways.

    It's also possible for your OpenID Server deployment to have a policy statement that changing of usernames is not supported. (Changing of real names and nicknames must be supported though. Organisational roles too, if you support storing them in the OpenID level at all.)

    It actually happens quite a lot at the beginning of a year - the problem is upstream where sometimes the name simply is spelt wrong because quite a number of parents feel the need to give their children a unique spellaring - y'know, the random replacement of an "i" with a "y" and stuff like that.



  • @Rhywden I do not miss dealing with that shit in the (multiple) LMSes I used to manage with various integrations which all suffered from that style of problem.



  • @Arantor said in WTF Bites:

    @Rhywden I do not miss dealing with that shit in the (multiple) LMSes I used to manage with various integrations which all suffered from that style of problem.

    It would have been sooo easy if they just went:

    The name of the claim for the UID goes here, for username here, for displayname here. Roles are defined with his attribute, the values for the roles go here. Empty fields mean that you adhere to the structure defined in the OpenID documentation.

    Done.


  • Discourse touched me in a no-no place

    @Rhywden said in WTF Bites:

    Well, it's weird because they have separate fields for "username" and "display name" but when checking the "create user if not exists", neither are filled with the correct values nor is it configurable where they take that value from.

    There's nothing like integration for exposing where stuff is just presented to the wrong fields (or plain bad in the first place).

    Another way to look at it all is to pick clear examples from elsewhere.

    I don't mind that my username here is dkf but I don't want to set a separate display name; I wish to be known here by my username. At my doctor's website though, I don't want to have to use the (quite long and horrible!) username that they assigned, but fortunately I only need that when logging in; the rest of the time the software uses my display name (correctly). I've no idea what the subject ID would be, and I don't want to know it either. (It might be my NHS number, or it might be a UUID, or it might be some integer picked by a DB. It's someone else's worry.)



  • @dkf I should see if my Lounge threads talk about the major integration WTF I worked on. If not I’ll write it up, it was full of this sort of genius level thinking and did all the wrong things, all of them.




  • Notification Spam Recipient

    Status: Apparently, if you "Export to Excel" a sharepoint view that has filters on it, Excel just flat-out refuses to load the data, full stop.

    This behaviour is explained in some forum posts, but has nothing in the Microsoft documentation (as far as I can't find).

    What the shit!


  • I survived the hour long Uno hand

    @HardwareGeek said in WTF Bites:

    https://www.youtube.com/watch?v=L8sqiX9zBr8

    Not at all surprising to hear he's from Hamiltucky. :half-trolling:


  • Notification Spam Recipient

    @PleegWat said in WTF Bites:

    this configuration

    If only there was some way to denote the format of a file,..


  • Trolleybus Mechanic

    The client set up his ifrastructure behind a NAT without hairpinning, but his DNS returns internet IPs for everything. We told him to fix this a year ago. We sent the Wikipedia article about NAT. Nope.

    Now, behind the NAT, the traffic to each container is routed by traefik, which relies on HTTP/1.1 Host header. You can guess what happens when I try to talk between containers on different hosts behind the same NAT.

    Extremely tiresome.


  • Considered Harmful

    This post is deleted!

  • Notification Spam Recipient

    Status: None of these things are software resolutions...

    e383437f-3a81-4c4f-bcc3-ac81a71be6e9-image.png

    :pebkac: "I fixed your Windows Activation issue by unplugging the keyboard!"



  • @Tsaukpaetra they’re not even consistent about spaces after the dash, why would usefulness suddenly be a criteria?


  • Notification Spam Recipient

    @Arantor said in WTF Bites:

    why would usefulness suddenly be a criteria?

    Because then I could explain I was touched by a panda.

    3573b105-71e6-4207-b737-6ab42e84fded-image.png



  • @Tsaukpaetra in a no-no place?


  • Java Dev

    @PleegWat said in WTF Bites:

    In a library we use:

    int WriteAsFoo(...)
    {
       if( global_configuration_flag )
       {
          return WriteAsBar(...);
       }
       else
       {
          /* ... */
       }
    }
    

    And of course they ignore this flag on the read side, meaning we are unable to read this file back if the flag caused it to be written in bar syntax. Plus the read side is on a different host which may or may not have received this configuration.

    Update: Supposedly, the read function will autodetect the format and support either. This makes sense, since the file data starts with a line telling the format. But it's not working for me.



  • @Arantor said in WTF Bites:

    @Tsaukpaetra in a no-no place?

    In a :disco:🐎 place.


  • Considered Harmful

    @Tsaukpaetra said in WTF Bites:

    Status: None of these things are software resolutions...

    e383437f-3a81-4c4f-bcc3-ac81a71be6e9-image.png

    :pebkac: "I fixed your Windows Activation issue by unplugging the keyboard!"

    Psht. You've never heard of a software microphone?


  • Discourse touched me in a no-no place

    @Gribnit said in WTF Bites:

    @Tsaukpaetra said in WTF Bites:

    Status: None of these things are software resolutions...

    e383437f-3a81-4c4f-bcc3-ac81a71be6e9-image.png

    :pebkac: "I fixed your Windows Activation issue by unplugging the keyboard!"

    Psht. You've never heard of a software microphone?

    I prefer to print my microphone out on a piece of paper and put it on a wooden table.



  • In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/experimental/filesystem:38:
    /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/experimental/bits/fs_path.h:1209:9: error: 'begin' is missing exception specification 'noexcept'
      path::begin() const
            ^
    /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/experimental/bits/fs_path.h:428:14: note: previous declaration is here
        iterator begin() const noexcept;
                 ^
    

    Clang is not wrong, but wtf do you want me to do about that?



  • @cvi said in WTF Bites:

    In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/experimental/filesystem:38:
    /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/experimental/bits/fs_path.h:1209:9: error: 'begin' is missing exception specification 'noexcept'
      path::begin() const
            ^
    /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/experimental/bits/fs_path.h:428:14: note: previous declaration is here
        iterator begin() const noexcept;
                 ^
    

    Clang is not wrong, but wtf do you want me to do about that?

    Stop using experimental 💩 ❓



  • @cvi Not upgrade to gcc 11.3.0. Debian and Ubuntu probably know why they don't have it yet. Perhaps it's even that same issue.

    … or use clang's own libc++ instead of gnustdlibc++.



  • @dcon said in WTF Bites:

    Stop using experimental

    Yeah, that would be the right solution. (External code was including it for whatever reason.)


  • Discourse touched me in a no-no place

    From an ad on Facebook for soap:

    eb21a852-9fc0-4caf-ad70-b316ddc6dc36-image.png

    Probably, but I don't go driving over it 🤷


  • Notification Spam Recipient

    @loopback0 said in WTF Bites:

    From an ad on Facebook for soap:

    eb21a852-9fc0-4caf-ad70-b316ddc6dc36-image.png

    Probably, but I don't go driving over it 🤷

    Did you know soap is classified as a detergent?!?!?


  • BINNED

    @loopback0 what is “this”? What did they expect??




  • 🚽 Regular

    @Bulb Whoever produced the CGI rendering didn't realize that maybe showing the landing gear was against the whole point.

    Fake edit: :hanzo:d by someone quoted in the article.


  • Discourse touched me in a no-no place

    @Bulb Oh look, something intended to stay in operation for many years without significant maintenance on the propulsion units? And where failure would lead to an incident in the absolutely-most-difficult-to-get-insurance-against category? Silly season has started early this year.


  • BINNED

    @Bulb not going to RTFA, but that’s not news, that’s shitty fantasy by some design students.



  • @dkf said in WTF Bites:

    @Bulb Oh look, something intended to stay in operation for many years without significant maintenance on the propulsion units? And where failure would lead to an incident in the absolutely-most-difficult-to-get-insurance-against category? Silly season has started early this year.

    Maybe they plan maintenance in flight. I remember at least one aircraft back in the 30s had internal access hatchway to the engines and it was expected the flight engineer will occasionally go replace failed spark plugs in flight.

    @topspin said in WTF Bites:

    @Bulb not going to RTFA, but that’s not news, that’s shitty fantasy by some design students.

    It's kind of news in the sense that for reasons I didn't bother to investigate the promo video went viral something like two days ago.

    … might be even attempt to bring in the silly season as everybody is getting tired of the much ado about Roe.


  • Considered Harmful

    “If physics and aerodynamics didn’t exist, then this vessel might actually be able to take off.”

    ⬆



  • @Applied-Mediocrity Yes, that comment is spot on.

    (due to square-cube law, the wings are waaaaay too small—and if they tried to make them large enough, they wouldn't be able to make them strong enough anyway)


  • BINNED

    @Bulb I’ve actually RTFA now. This is definitely the dumbest thing I’ve read in awhile.

    The first to have in-flight repair/maintenance? I’m sure Star Trek and the things that came before did it first. What do you mean, “those aren’t real”?!

    However, the comment about future people looking back at what people in the past (now) thought the future would be is interesting. Puts in perspective some of the things we’ve actually seen from the past about predictions about our time. Maybe some of them that look hilarious now also weren’t taken serious by anyone back then.



  • Minor nitpick in the context, but landing (which involves breaking) when you're carrying an open pool full of water is going to be interesting. Can't exactly tell the water to put the seatbelt on to help keep it in place...


  • Considered Harmful

    @topspin said in WTF Bites:

    future people looking back at what people in the past (now) thought the future would be is interesting

    Future, if any, will not look kindly upon us.

    q5po691lps231.jpg


  • Considered Harmful

    @topspin said in WTF Bites:

    @Bulb not going to RTFA, but that’s not news, that’s shitty fantasy by some design students.

    Toby faire, it shows the New York Post logo so nobody would mistake it for news.


  • 🚽 Regular

    @cvi said in WTF Bites:

    landing (which involves breaking)

    It probably would, yes.


  • 🚽 Regular

    @Applied-Mediocrity said in WTF Bites:

    q5po691lps231.jpg

    What is that thing?

    INB4 "it's a wooden table"


  • Notification Spam Recipient

    @Zecc said in WTF Bites:

    @Applied-Mediocrity said in WTF Bites:

    q5po691lps231.jpg

    What is that thing?

    INB4 "it's a wooden table"

    Ridiculously expensive slab of metal, known in some circles as Apple monitor stand.


  • Considered Harmful

    @Zecc said in WTF Bites:

    What is that thing?

    The result of many millennia worth of advances in material science, all engineering disciplines, economics and philosophy, rivalling if not surpassing the Universal Constructor itself. Gazeth thine eyes upon it, the worthy shall be exalted whereas the unworthy shall perish in its magnificient radiance:


Log in to reply