WTF Bites



  • @topspin It's not an excuse. The cross-referencing between spreadsheets is quirky and weird, but changing how it works would break people's spreadsheets, because people totally do use that feature.


  • Discourse touched me in a no-no place

    @topspin said in WTF Bites:

    @loopback0 said in WTF Bites:

    @topspin said in WTF Bites:

    Some things never change.

    It'd break a lot of people's spreadsheets if it did.

    The same excuse as 25 years ago. Maybe come up with a solution. (Microsoft, not you, obviously).

    I imagine that they've quite fairly realised that "fixing" this "problem" will cause more grief than not "fixing" it.



  • @sloosecannon said in WTF Bites:

    Unfortunately the last user who was opinionated and criticized @julianlam ended up descending into a spiral of madness.

    Pretty sure the descent into madness occurred long before the criticizing...



  • @Applied-Mediocrity said in WTF Bites:

    @dkf said in WTF Bites:

    @topspin said in WTF Bites:

    @sloosecannon is it worth reading? I've avoided it like the SpectateSwamp Swampy threads.

    I got a little way in and then decided that SpectateSwamp was closer to sane most of the time.

    bfbba534e1e8f3ea4be2b93d9b4d0b23.gif

    Just scroll quickly. There's bits and pieces in there that are interesting. Usually things posted by our regulars...

    Oh screw it, just hit Ctrl+End


  • Notification Spam Recipient

    @topspin said in WTF Bites:

    @loopback0 said in WTF Bites:

    @topspin said in WTF Bites:

    Some things never change.

    It'd break a lot of people's spreadsheets if it did.

    The same excuse as 25 years ago. Maybe come up with a solution. (Microsoft, not you, obviously).

    I actually did come up with a solution, but the result easily causes path reference errors and sheet reference corruption. Very quickly. And is even more confusing to the user ("Which data.xlsx is it? The one with the triangle 2 or the triangle 1?").

    It especially played havoc with Excels "auto-fix data file locations" fuckery. πŸ™€


  • Considered Harmful

    @topspin said in WTF Bites:

    @loopback0 said in WTF Bites:

    @topspin said in WTF Bites:

    Some things never change.

    It'd break a lot of people's spreadsheets if it did.

    The same excuse as 25 years ago. Maybe come up with a solution. (Microsoft, not you, obviously).

    Obviously.



  • @Tsaukpaetra said in WTF Bites:

    path reference errors ... sheet reference corruption ... even more confusing ... played havoc

    You have an interesting definition of "solution".


  • Notification Spam Recipient

    @HardwareGeek said in WTF Bites:

    @Tsaukpaetra said in WTF Bites:

    path reference errors ... sheet reference corruption ... even more confusing ... played havoc

    You have an interesting definition of "solution".

    It's a solution in the sense that it allowed you to open two books of the same name. The fact that it caused issues elsewhere is simply another ticket to be submitted. :mlp_smug:



  • @HardwareGeek said in WTF Bites:

    You have an interesting definition of "solution".

    Hint: Tsaukpaetra


  • Discourse touched me in a no-no place

    @Tsaukpaetra said in WTF Bites:

    "Which data.xlsx is it? The one with the triangle 2 or the triangle 1?"

    Since I will now call all my spreadsheets data.xlsx, the answer is β€œyes”.


  • BINNED

    @Tsaukpaetra said in WTF Bites:

    @topspin said in WTF Bites:

    @loopback0 said in WTF Bites:

    @topspin said in WTF Bites:

    Some things never change.

    It'd break a lot of people's spreadsheets if it did.

    The same excuse as 25 years ago. Maybe come up with a solution. (Microsoft, not you, obviously).

    I actually did come up with a solution, but the result easily causes path reference errors and sheet reference corruption. Very quickly. And is even more confusing to the user ("Which data.xlsx is it? The one with the triangle 2 or the triangle 1?").

    It especially played havoc with Excels "auto-fix data file locations" fuckery. πŸ™€

    I assume you mean you came up with a solution theoretically and then broke it in your mind with your Midas touch.

    That's actually pretty easy: What happens when Foo.xlsx references Bar.xlsx and both A/Bar.xlsx and B/Bar.xlsx are open? The same thing that happens when none of them are open. There. Solved!

    If it's acceptable that things don't update when the file isn't open, and it's acceptable to pop up a dialog that says "Sorry, but we're the only program in the world that can open multiple files at once but not if they have the same name", then it's also acceptable that things don't update when you have ambiguous references and pop up a dialog "cell references won't be updated while you have multiple documents open they can refer to" if and only if you checked that this unlikely situation actually occurs, i.e. you both have such references and there's multiple files with the same name open.

    Where do I send the invoice?


  • Notification Spam Recipient

    @topspin said in WTF Bites:

    Where do I send the invoice?

    Mary in Accounts Payable, but good luck getting there...


  • Notification Spam Recipient

    @topspin said in WTF Bites:

    The same thing that happens when none of them are open. There. Solved!

    This is only slightly mostly true, by the way. As someone who engineered an entire subsystem dependant upon how when why and where cross-workbook links updated, it gets fucking messy...


  • Discourse touched me in a no-no place

    @Tsaukpaetra If you add a workbook as an external source it's not true at all.


  • Considered Harmful

    @Tsaukpaetra said in WTF Bites:

    @topspin said in WTF Bites:

    Where do I send the invoice?

    Mary in Accounts Payable, but good luck getting there...

    If you have trouble, ask Helen. She used to go by Mike but transitioned because of the jokes. In medical ethics they're calling it the Hunt Precedent.


  • Trolleybus Mechanic

    Ok, now I have a real "Tom"/"Bob" moment like from thedailywtf posts.
    So last week I've been asked for help by a high school friend, with whom I sometimes do some side projects. Turns out he hired another friend (a graduate of THE most prestigious university), to do some C++ coding, but now the genius found some other high paying job in a bank and started flaking out so he thought I could help with some new functionality.

    Well, I like cash, so why not? I cloned the project. First thing: simply running make doesn't work. Why? Because our high-IQ friend somehow couldn't get git submodules to work. He tried for weeks, and it just didn't work for him. So he wrote this ridiculously long bash script to be executed by Jenkins, which fetched the main repo and all submodules separately, then merged the main repo into another branch while putting last submodule commit hashes in the commit message.
    Then, another script parsed the commit message, checked out the submodules on correct commit hashes, removed some tracked files , and finaly ran make. As a bonus, you need some other non-submodule code outside the project directory referenced in Makefile, so no IDE can realy navigate the code (at least not without some weird tricks). When I asked what IDE did the author use, I was told it was... Notepad++.

    Bonus: Most of the logic is actually in database views and triggers, the C++ code just does some simple calculations, while using the old C libpq (for unknown reasons - there is an object-oriented alternative, with which I don't find anything obviously wrong) to connect to the database. No prepared statements, just a bunch of string concats (going to great lengths). Fortunately there is no user-supplied text data.



  • @sebastian-galczynski said in WTF Bites:

    but now the genius found some other high paying job in a bank

    And now we know why bank software sucks so badly. They hire people like this.


  • Trolleybus Mechanic

    @Benjamin-Hall said in WTF Bites:

    And now we know why bank software sucks so badly. They hire people like this.

    No, they hire even worse people. This guy's software, while somewhat weird, actually works and even has tests. Some years ago he told me that he uncovered a bug which allowed any subcontractor ("agency") in Bumfuck to completely fuck up the transaction system in one of the biggest polish banks. But of course he couldn't fix it, because there was no ticket for it.

    Edit for Americans: Polish consumer banking is actually great. Did you know that I can make a transfer to any other bank for free just by clicking on their website, and it's executed the same day? That we don't use shady companies like PayPal, because there's a payment API in every major bank for stuff like online shopping? There are advantages to being late to the game - no legacy COBOL or some morse-based "wire transfer" crap.


  • BINNED

    @sebastian-galczynski said in WTF Bites:

    or some morse-based "wire transfer" crap.

    That... please tell me that’s not actually a thing!


  • Considered Harmful

    @topspin said in WTF Bites:

    @sebastian-galczynski said in WTF Bites:

    or some morse-based "wire transfer" crap.

    That... please tell me that’s not actually a thing!

    Don't worry, it's very secure.


  • Trolleybus Mechanic

    @topspin said in WTF Bites:

    That... please tell me that’s not actually a thing!

    I don't know, but I've seen posts on Reddit from Americans complaining that the postman stole a paper check which they mailed to pay their bills...


  • BINNED

    @sebastian-galczynski said in WTF Bites:

    a paper check

    94e851b5-61c4-4135-9cfd-c480b13b1ae9-image.png


  • BINNED

    @sebastian-galczynski said in WTF Bites:

    a graduate of THE most prestigious university

    Does it violate any rules to guess that this is Ohio State?



  • @sebastian-galczynski said in WTF Bites:

    C++ coding […] Most of the logic is actually in database views and triggers

    W-H-Y-?-!-?

    Lately I've come to think that C++ is the wrong tool for any job, but it's certainly always been the wrong tool for just talking to the database.

    I mean, I've been there and done that. 10 years ago, C++ was the only language portable to all mobile platforms, so the application had to be that (so back than C++ was right for that job; only recently better alternatives appeared). And the data preparation tool was created by a NIH-syndrome guy, without using database, before I came to the company. I introduced SQLite into that tool, because SQL was much better for large part of the data processing than C++, but it still needed to run some complex algorithms (the larger maps took days to process), so C++ still gave some performance benefit (again alternatives only appeared later), plus it shared some code with the application to ensure the serialization matches, so it still made some sense.

    But for application that does mostly communicate with a database and only simple calculations, C++ has been wrong tool for the job for ages.


  • Discourse touched me in a no-no place

    @sebastian-galczynski said in WTF Bites:

    he wrote this ridiculously long bash script

    What, longer than one line!?




  • Notification Spam Recipient

    @sebastian-galczynski said in WTF Bites:

    There are advantages to being late to the game - no legacy COBOL or some morse-based "wire transfer" crap.

    Everything in Polish banking runs on COBOL, believe me.
    It's just the stuff on top of it that is good.


  • BINNED


  • Considered Harmful

    @MrL said in WTF Bites:

    @sebastian-galczynski said in WTF Bites:

    There are advantages to being late to the game - no legacy COBOL or some morse-based "wire transfer" crap.

    Everything in banking runs on COBOL, believe me.
    It's just the stuff on top of it that is good.

    ο‚­


  • BINNED

    @Gribnit said in WTF Bites:

    @MrL said in WTF Bites:

    @sebastian-galczynski said in WTF Bites:

    There are advantages to being late to the game - no legacy COBOL or some morse-based "wire transfer" crap.

    Everything in banking runs on COBOL, believe me.
    It's just the stuff on top of it that is good.

    Si nihil dico, just post an empty reply?!


  • Trolleybus Mechanic

    @Bulb said in WTF Bites:

    W-H-Y-?-!-?

    I suspect it was influenced by the company and their ecosystem in general. They do mostly some embedded/industrial stuff on tiny devices, so they mostly use compiled languages. They already have some libraries operating on the same datatypes written in C++ and so on. Now that they moved some operations to better hardware, they're kinda stuck with it.

    I still wouldn't do it and just use Python though. With minimal use of stored procedures. I hate this shit much more than C++, maybe because I once wasted a whole day trying to reproduce a bug which relied on a trigger only present in the production database, which nobody told me about. In general, I don't like it when I can't just set a breakpoint and see what happens. That's also why I'm skeptical of the container mania.


  • Discourse touched me in a no-no place

    @sebastian-galczynski said in WTF Bites:

    I don't like it when I can't just set a breakpoint and see what happens

    I've worked for a very long time on systems where, for various reasons, you simply can't do that. Often it's because they've got critical components running on different machines (and I'm debugging time-sensitive communications) or because the pieces run in different security contexts. It can take a lot of thought to debug such systems. (The worst was where I had to use wireshark to find out what was actually going on in the packets because the protocol had several parts that were virtually undocumented. I scared my colleagues a bit when I was looking at alignment errors in the raw packets and debugging things like that, but that's really just pattern matching and counting.)


  • Considered Harmful

    @dkf yeah but most folks get the garbage os or have bios issues.


  • Trolleybus Mechanic

    @dkf

    Yeah, but a lot of software today is hard to debug for no good reason. Look, I can debug (like with breakpoints and watches, not print('dupa')) the following:

    • a microcontroller with 2KB RAM
    • Turbo Pascal 5.0 on a 8086 running from a floppy drive
    • a PHP script serving the website of a local used tire shop written by the owner's nephew 10y ago

    while I can't:

    • a modern web app written in typescript, because something is broken with the source maps, god knows what (every change in webpack configuration requires hours of trial-and-error, better don't touch it). Either way I can't do it directly from the editor.
    • a python script, because it runs in a fucking container. "Hey boss, how do I run this locally? When I try it crashes" "Uhh, you're not supposed to run this locally, we don't do that anymore"
    • genius' ETL from above, because stored procedures.

    I did some rev-eng and recording signals with a digital oscilloscope too, but such cases are vanishingly rare. Most systems talking to other systems are not so time-sensitive that you can't stop them, including all webservers and db-based apps I've seen.


  • Discourse touched me in a no-no place

    @sebastian-galczynski said in WTF Bites:

    Look, I can debug (like with breakpoints and watches, not print('dupa')) the following:

    a microcontroller with 2KB RAM

    I've got something very much like that… except I can't debug it. The problem is (apart from the realtime nature of the code that means that stopping it in a breakpoint would guarantee that it would fail) I can't attach a debugger to the code. Basically, the hardware in question is in service and can't have JTAG connectors attached to it (unlike the development boards we had at one point); there's no room for the connector if nothing else. There's no meaningfully useful simulators for it either (because it has complex custom hardware modules for its comms).


  • Discourse touched me in a no-no place

    @sebastian-galczynski said in WTF Bites:

    a python script, because it runs in a fucking container

    Remote debugging is a thing, and it is a thing supported by several IDEs.


  • Notification Spam Recipient

    ο‰°: Oh hai, starting your kindle, huh? It's been a long time since you used it.
    πŸ‘¦πŸ»: Wtf are you talking about? I was reading on this kindle yesterday.
    ο‰°: Yes, so as I was saying, a long time ago. Therefore I took the libery to reorganize your library.
    πŸ‘¦πŸ»: Wha...
    ο‰°: I reset per cent read for your fully read books, most of them to 70%, but not all of course. I added 'fully read' tag to some books, quite randomly of course, so you can have 12% completed fully read books and even fully read books you never even downloaded.
    πŸ‘¦πŸ»: ...
    ο‰°: Also, 3/4 of your library is now dumped to root direcory. For easy access. Enjoy.


  • Considered Harmful

    @MrL said in WTF Bites:

    ο‰°: Oh hai, starting your kindle, huh? It's been a long time since you used it.
    πŸ‘¦πŸ»: Wtf are you talking about? I was reading on this kindle yesterday.
    ο‰°: Yes, so as I was saying, a long time ago. Therefore I took the libery to reorganize your library.
    πŸ‘¦πŸ»: Wha...
    ο‰°: I reset per cent read for your fully read books, most of them to 70%, but not all of course. I added 'fully read' tag to some books, quite randomly of course, so you can have 12% completed fully read books and even fully read books you never even downloaded.
    πŸ‘¦πŸ»: ...
    ο‰°: Also, 3/4 of your library is now dumped to root direcory. For easy access. Enjoy.

    The market will fix it.



  • @dkf: use one of the output pins to send bit-banged serial.

    If you can't, use a near-field magnetic probe, and experiment to find a way to generate recognizable signals by running different code patterns.

    Filed under: only half-kidding. I did use similar tricks in practice, including debugging a Windows driver by generating beeps with different pitches on the internal speaker.



  • cphwtf.png
    What's more wrong with this picture, the use of personal identification number (consists of birth date and a 4-digit number which includes one bit for sex, one digit for century of birth, and a check digit) instead of a password, or the ability to DoS some poor bugger out of their test result by choosing a 7-sigit test ID at random and repeatedly submitting the wrong password?


  • Trolleybus Mechanic

    @dkf said in WTF Bites:

    there's no room for the connector if nothing else.

    You can't just solder some wires to the board? Or is the JTAG disabled because those pins double as something else?

    By the way, that's why this high school friend of mine always designs his boards with at least an additional UART spitting logs, usually also a JTAG or USB. It pays off. I honestly can't imagine doing what I did there without it, given the complexity and broken specs of some peripherials (i'm looking at you, uBolx)



  • @aitap said in WTF Bites:

    one bit for sex

    But there is more than 2 gender :half-trolling:


  • BINNED

    enum sex
    {
        NOT_MY_TYPE,
        YES_PLEASE
    };


  • @sebastian-galczynski said in WTF Bites:

    I suspect it was influenced by the company and their ecosystem in general. They do mostly some embedded/industrial stuff on tiny devices, so they mostly use compiled languages. They already have some libraries operating on the same datatypes written in C++ and so on. Now that they moved some operations to better hardware, they're kinda stuck with it.

    Yeah. Well, we (the consultation company I work for) have a customer who is also just used to C++. It's excusable for the 20 years old MFC-based client. Sound processing on a typical computer 20 years ago kinda called for C++. But writing new server components that just pass JSON packets around is just wasting effort. We tried to tell them, but the few architects they have are unwilling to learn.

    @sebastian-galczynski said in WTF Bites:

    I still wouldn't do it and just use Python though. With minimal use of stored procedures. I hate this shit much more than C++, maybe because I once wasted a whole day trying to reproduce a bug which relied on a trigger only present in the production database, which nobody told me about. In general, I don't like it when I can't just set a breakpoint and see what happens.

    Database take some discipline to do sanely: you should only ever touch the schema with scripts, and always apply the scripts to the test, staging and production in that order. Then you can't have a trigger in production that isn't in test.

    @sebastian-galczynski said in WTF Bites:

    That's also why I'm skeptical of the container mania.

    Containers actually help a bit here. They are a way to minimize the differences between the environments. Of course there are still a lot of ways to mess it up, but it's less likely to happen by mistake (as opposed to idiocy).



  • @sebastian-galczynski said in WTF Bites:

    "Hey boss, how do I run this locally? When I try it crashes" "Uhh, you're not supposed to run this locally, we don't do that anymore"

    Just run it under debugger in the container. The entrypoint can by overridden, and you can also run any additional commands in it.



  • c3f001b0-0a30-4c68-8fbe-edcb4306389d-image.png

    Grill brushes are sold by the pound? I guess?



  • @TimeBandit You can see it's an old system. They already gave up on the check digit when they ran out of valid 4-digit numbers for some birth dates, maybe the sex bit is next.



  • @aitap said in WTF Bites:

    maybe the sex bit is next.

    Tsaukpaetra Yes, please.



  • @aitap said in WTF Bites:

    cphwtf.png
    What's more wrong with this picture, the use of personal identification number (consists of birth date and a 4-digit number which includes one bit for sex, one digit for century of birth, and a check digit) instead of a password, or the ability to DoS some poor bugger out of their test result by choosing a 7-sigit test ID at random and repeatedly submitting the wrong password?

    That has been known for centuries. Already Shakespeare quoted common knowledge when he said:

    something is rotten in the state of Denmark


  • Discourse touched me in a no-no place

    @Zerosquare said in WTF Bites:

    use one of the output pins to send bit-banged serial.

    I got better options than that! I can send UDP messages up to 256 bytes long.


Log in to reply