Non-Compileant



  • The odd corners of the IT field tend to draw some odd characters, such as... well, myself. While I will confess that I am rather a crank, those who know the likes of @SpectateSwamp and Terry Davis know that I am positively vanilla compared to some of the alleged programmers out there. It is no surprise that the OSDev Forums would draw such people - again, including myself - like honey draws bees.

    In addition to the site's official topic, several of the denizens of the OSDev forum have an interest in compiler implementation and language development. One of these, a poster who uses the screen name '~' (that is, the tilde character), has recently begun talking about his plans for a C compiler, and, well, it needs to be seen to be believed.

    Actually, seeing it may foster disbelief, specifically in his coding ability, but that's getting ahead of things.

    Tilde is one of the more colorful characters of the forum, in that he says a lot of ridiculous things about how MS-DOS was the greatest OS ever and how we all need to go back to it. He also shows a persistent, willful ignorance of some fairly basic aspects of software development, or even just basic computing skills, such as how to use an offsite repo. He talks of 'portable x86 assembly language' as if this were actually a thing anywhere other than his own mind. His inability to grasp even basic design ideas is only slightly less extreme than Swampy's, and his code is... well, it doesn't make my eyes bleed, so it is better than SSDS at any rate, but that's about the best I can say about it.

    OK, now I will admit that I have said and done some fucking ludicrous things over the years, and I can see in his code some of the same mistakes I made when I was starting out (as opposed to the new and exciting mistakes I have made since). I also know what it is like to have what seem like Great Ideas in your head which turn out to be terrible ones when you try to follow through on them. I understand how hard it is to explain unusual ideas to others - fuck knows I'm pretty terrible at that.

    That's all fine - we all make mistakes when trying something new. The problem is that he really doesn't seem to listen when you point out that something is a mistake, or even try to explain himself sensibly when asked about it. Yes, he is not a native English speaker, but his English isn't too bad - not great, but better than many who do speak and read English as their native tongue - so it isn't as if language is the primary barrier. He understands what others are saying; he simply seems to be dismissing the critiques and questions, or answering them in ways that are too elliptical or incomplete to make sense out of.

    He could have some great ideas, and just be presenting them terribly. However, his code seems to indicate otherwise. A few highlights:

    • Using a single, massive source file for the whole thing. OK, so this isn't uncommon early in a project's development, and this project is anything but complete. Still, that file is now over 2 KLOC, and is mostly comprised of (ill-conceived) support functions, so breaking it up should have been a priority by now.

    • This comment, which seems to indicate a desire to emulate the advanced styling and techniques of PHP:

      //Comments with PHP-style verbosity for the full
      //effects that each of them cause. It will make
      //for a much better reference from the code itself
      //and much easier to read and understand.
      
    • Adding header file #include statements for several standard C and Unix headers, then commenting them out with the requisite prototypes and definitions added manually to the source file.

    • The use of Unix-specific functions such as mkdir() and stat() in an allegedly portable program.

    • Prefixing every function name with either OPCODE__Application_ or OPCODE__Compiler_, despite the fact that it is all in a single source file and has no external declaration header. It sounds as if he's heard of namespace control, but didn't quite understand the idea - much like he failed to understand how offsite repos such as SourceForge work.

    • A lot of small wrapper functions around standard I/O functions, with names that make them less clear and usable than the functions they wrap around.

      int OPCODE__Application_get_Executable_Path(char **Executable_Path);
      FILE * OPCODE__Application_open_Local_ReadOnly_ASCII_7bit_Name_BinaryFile(char *file_name);
      FILE * OPCODE__Application_open_Local_ReadWrite_ASCII_7bit_Name_BinaryFile(char *file_name);
      int OPCODE__Application_read_C_long_BinaryFile(FILE *srcfilehandle, long *longvalue);
      int OPCODE__Application_write_C_long_BinaryFile(FILE *srcfilehandle, long longvalue);
      int OPCODE__Application_write_C_long_BinaryFile_Position(FILE *srcfilehandle, long longvalue, unsigned long filepos);
      int OPCODE__Application_write_C_long_BinaryFile_PositionPreserve(FILE *srcfilehandle, long longvalue, unsigned long filepos);
      int OPCODE__Application_read_C_unsigned_char_byte_BinaryFile(FILE *srcfilehandle, unsigned char *charvalue);
      long OPCODE__Application_read_C_unsigned_char_buffer_BinaryFile(FILE *srcfilehandle, unsigned char **charvalue, long length);
      long OPCODE__Application_write_C_unsigned_char_buffer_BinaryFile(FILE *srcfilehandle, unsigned char *charvalue, unsigned long length);
      long OPCODE__Application_writeln_C_unsigned_char_buffer_BinaryFile(FILE *srcfilehandle, unsigned char *charvalue, unsigned long length);
      long OPCODE__Application_write_C_unsigned_char_buffer_BinaryFile_PositionPreserve(FILE *srcfilehandle, unsigned char *charvalue, unsigned long length);
      long OPCODE__Application_writeln_C_unsigned_char_buffer_BinaryFile_PositionPreserve(FILE *srcfilehandle, unsigned char *charvalue, unsigned long length);
      long OPCODE__Application_get_Opened_File_Size(FILE *filehandle);
      int OPCODE__Application_move_File_Position(FILE *srcfilehandle, long newabspos);
      long OPCODE__Application_get_File_Position(FILE *srcfilehandle);
      int OPCODE__Application__is_EOF(FILE *filehandle);
      long OPCODE__Compiler_BinarySourceFile_ASCII_8bit_find_Nearest_NewlineMarkers(FILE *src, FILE *lines_dat_file);
      void OPCODE__Compiler_copy_ASCIIZ_string(unsigned char *src, unsigned char **dest);
      int OPCODE__Compiler_Print_ASCII_7bit_String(char *str);
      int OPCODE__Compiler_Println_ASCII_7bit_String(char *str);
      int OPCODE__Compiler_Print_ASCII_7bit_C_long_HexString(long value);
      int OPCODE__Compiler_is_Version_String_Request(char *cmdlinearg);
      void OPCODE__Compiler_Print_Version_to_Screen();
      int OPCODE__Compiler_Create_build_Directory(char *str);
      int OPCODE__Compiler_Open_Global_Compilation_Files();
      int OPCODE__Compiler_define_ASCII_text_lines(FILE *lines_metadata_file, FILE *srcfilehandle);
      int OPCODE__Compiler_Load_ASCII_Text_File(FILE *filehandle, FILE *line_data_file);
      void OPCODE__Compiler_Unload_ASCII_Text_File(FILE *filehandle);
      int OPCODE__Compiler_Switch_ASCII_Text_File(FILE *filehandle);
      long OPCODE__Compiler_BinarySourceFile_ASCII_8bit_readline(FILE *src, FILE *lines_dat_file, unsigned long linenumber);
      long OPCODE__Compiler_BinarySourceFile_ASCII_8bit_readline_char_size(FILE *src, FILE *lines_dat_file, unsigned long linenumber, unsigned long charpos, unsigned long size);
      long OPCODE__Compiler_BinarySourceFile_ASCII_8bit_getLength_line_char(FILE *lines_dat_file, unsigned long linenumber, unsigned long charpos);
      long OPCODE__Application_read_C_ASCIIZ_byte_string_BinaryFile(FILE *srcfilehandle, unsigned long length);
      long OPCODE__Compiler_BinarySourceFile_ASCII_8bit_goto_line_char(FILE *src, FILE *lines_dat_file, unsigned long linenumber, unsigned long charpos);
      long OPCODE__Compiler_BinarySourceFile_ASCII_8bit_get_line_char_from_fileOffset(FILE *src, FILE *lines_dat_file, unsigned long fileOffset, unsigned long *linenumber, unsigned long *charpos);
      int OPCODE__Compiler_BinarySourceFile_ASCII_8bit_compare_string(FILE *src0, unsigned long file0ptrpos, FILE *src1, unsigned long file1ptrpos, unsigned long length, int movePointer);
      int OPCODE__Compiler_ASCII_8bit_compare_string(unsigned char *str0, unsigned char *str1, unsigned long str0len);
      
    • Hard-coding file paths? Brillant idea!

        lines_dat=OPCODE__Application_open_Local_ReadWrite_ASCII_7bit_Name_BinaryFile("_build_/lines.dat");
        if(lines_dat==NULL)return 0;
        includes_dat=OPCODE__Application_open_Local_ReadWrite_ASCII_7bit_Name_BinaryFile("_build_/includes.dat");
        if(includes_dat==NULL)nofail=0;
        function_dat=OPCODE__Application_open_Local_ReadWrite_ASCII_7bit_Name_BinaryFile("_build_/function.dat");
        if(function_dat==NULL)nofail=0;
      /// this goes on for six more files
      
    • This. Just... THIS

      ///
      //General use variables:
      ///
      unsigned char *COMPILER__fileBuf0000=NULL;
      long           COMPILER__fileBuf0000_logical_file_offset=0;
      long           COMPILER__fileBuf0000_file_buffer_offset=0;
      long           COMPILER__fileBuf0000_charbuflen=0;
      long           COMPILER__fileBuf0000_origfilepos0=0;
      long           COMPILER__fileBuf0000_newlineMarkerSZ=0;
      long           COMPILER__fileBuf0000_bufferOverrun=0;
      

    I could go on, but really, if you want to see for yourself, go ahead. The code doesn't go anywhere near actually being a compiler at this stage, and it doesn't look as if it ever will, but he's talking about it as if it were finished.



  • What's the maximum identifier length in standard C nowadays?



  • @scholrlea said in Non-Compileant:

    • This. Just... THIS

      ///
      //General use variables:
      ///
      unsigned char *COMPILER__fileBuf0000=NULL;
      long           COMPILER__fileBuf0000_logical_file_offset=0;
      long           COMPILER__fileBuf0000_file_buffer_offset=0;
      long           COMPILER__fileBuf0000_charbuflen=0;
      long           COMPILER__fileBuf0000_origfilepos0=0;
      long           COMPILER__fileBuf0000_newlineMarkerSZ=0;
      long           COMPILER__fileBuf0000_bufferOverrun=0;
      

    Good habits right there. I especially like how they waste no whitespace around the assignment operator. From the variable naming it's clear that the programmer is prepared to handle up to 10k files which is probably more than most compilers are designed to handle.They also show great foresight in writing a compiler that performs well by re-using variables. Some advantages of variable re-use:

    • Improved stack locality by reducing stack-pointer jitter
    • Improved branch prediction by having condition at predictable memory location
    • Avoids needless re-initialization

    It's one of the easiest ways to get good performance right from the start. As Ken Thompson famously said: When in doubt, re-use variables.


  • Discourse touched me in a no-no place

    @gleemonk 10/10 That's good trolling right there. I don't care who you are. If you don't like that, there's something wrong with you.



  • I attempted to write a cross compiler from an educational programming language to C++ in my first semester of university. Somewhat representative line:

    if (tokens[j].IsAVarName() && tokens[j+1]=="[")
        for (j++; !(tokens[j]=="]" && tokens[j+1]!="["); j++); // that was intentional

  • Discourse touched me in a no-no place

    @scholrlea said in Non-Compileant:

    that file is now over 2 KLOC

    You do realise that that's small beans when it comes to source files? I've seen single functions (in C) get more than 5 times longer than that (the cores of complex bytecode engines can get quite lengthy).

    The use of Unix-specific functions such as mkdir() and stat() in an allegedly portable program.

    Depending on POSIX then. That's fairly portable unless you really want to build on top of Windows.

    OPCODE__Application_writeln_C_unsigned_char_buffer_BinaryFile_PositionPreserve

    Reminds me of some of the dumber identifiers we used to have in our codebase at work. Except those were method names in Python, for extra undefined

    The code doesn't go anywhere near actually being a compiler at this stage, and it doesn't look as if it ever will, but he's talking about it as if it were finished.

    He sounds just like a plain old incompetent braggart with a touch of the gavino about him (but not full gavino; he's produced some actual code, some of which might even pass a compiler). Meh.



  • @dkf said in Non-Compileant:

    @scholrlea said in Non-Compileant:

    that file is now over 2 KLOC

    You do realise that that's small beans when it comes to source files? I've seen single functions (in C) get more than 5 times longer than that (the cores of complex bytecode engines can get quite lengthy).

    OK, that is true; but the thing is, he's got all of these (mostly useless or counter-productive) utility functions in what is supposed to be the main program file for a compiler. It isn't so much the size that I have a problem with, as it is the lack of any attempt at modularity - there's no reason why they need to all be in this one file, and plenty of reason for them not to be (assuming they were actually worth having at all, which I don't see being the case).

    As for Tilde himself, yeah, pretty much. He's not nearly as crazy as, say, Geri (the OISC-obsessed guy who got banninated there a while back), and certainly no Swampy, but he's definitely annoying.

    Filed Under: Sort of like me.


  • Discourse touched me in a no-no place

    @scholrlea said in Non-Compileant:

    there's no reason why they need to all be in this one file

    That's not actually true, but the reasons for are usually quite a bit weaker than the reasons against. The reasons for are that you get better performance (IIRC it's about 1–2% difference on a project the scale of SQLite, which builds the single file version automatically) and your code is easier to redistribute. The big reason against is that it'll drive you mad to work with a program on that scale; #include is right there if you need it.

    But 2kloc is still tiny.


  • Impossible Mission - B

    @dkf said in Non-Compileant:

    But 2kloc is still tiny.

    It's still twice as big as any decent source code file ought to be. 🚎



  • @masonwheeler said in Non-Compileant:

    @dkf said in Non-Compileant:

    But 2kloc is still tiny.

    It's still twice as big as any decent source code file ought to be. 🚎

    Ok, I guess that means https://github.com/BenLubar/df-ai/blob/master/population.cpp is too big? Should I split it into more arbitrary pieces?



  • @ben_lubar said in Non-Compileant:

    @masonwheeler said in Non-Compileant:

    @dkf said in Non-Compileant:

    But 2kloc is still tiny.

    It's still twice as big as any decent source code file ought to be. 🚎

    Ok, I guess that means https://github.com/BenLubar/df-ai/blob/master/population.cpp is too big? Should I split it into more arbitrary pieces?

    Yes, in fairly distributed pieces. I rolled a dice and got five.


  • Impossible Mission Players - A

    @rhywden said in Non-Compileant:

    rolled a dice

    *twitch*



  • @tsaukpaetra said in Non-Compileant:

    @rhywden said in Non-Compileant:

    rolled a diced onion and a diced tomato

    *twitch*

    we making burritos now


  • Impossible Mission - B

    @ben_lubar said in Non-Compileant:

    Ok, I guess that means https://github.com/BenLubar/df-ai/blob/master/population.cpp is too big?

    Yes, and even worse, it's in C++! 🚎



  • @masonwheeler said in Non-Compileant:

    @ben_lubar said in Non-Compileant:

    Ok, I guess that means https://github.com/BenLubar/df-ai/blob/master/population.cpp is too big?

    Yes, and even worse, it's in C++! 🚎

    But at least it's not Go. (Or BIT.)



  • @ben_lubar said in Non-Compileant:

    @masonwheeler said in Non-Compileant:

    @dkf said in Non-Compileant:

    But 2kloc is still tiny.

    It's still twice as big as any decent source code file ought to be. 🚎

    Ok, I guess that means https://github.com/BenLubar/df-ai/blob/master/population.cpp is too big? Should I split it into more arbitrary pieces?

    Bah! Look at this line bloat:

            if (sq->orders.empty())
            {
                if (html)
                {
                    out << "<li><i>(none)</i></li>";
                }
                else
                {
                    out << "(none)\n";
                }
            }
    

    If you only learned to brace correctly you'd be much shorter.


  • Impossible Mission - B

    @hardwaregeek Meh. At least Go has some redeeming qualities. C++ is a dumpster fire from beginning to end. It may not be the worst programming language ever created, but it is without a doubt the worst ever to be taken seriously.



  • @masonwheeler said in Non-Compileant:

    @hardwaregeek Meh. At least Go has some redeeming qualities. C++ is a dumpster fire from beginning to end. It may not be the worst programming language ever created, but it is without a doubt the worst ever to be taken seriously.

    I'd love to be able to write this code in Go, but last time I tried getting SWIG to work with DFHack it did not end well.



  • @boomzilla Hm, if there's a lot of that kind of thing subclassing the output stream might help.



  • @boomzilla said in Non-Compileant:

    If you only learned to brace correctly

    He did. 😛

    @boomzilla said in Non-Compileant:

    you'd be much shorteraltitudinally-challenged.


  • Impossible Mission - B

    @hardwaregeek said in Non-Compileant:

    @boomzilla said in Non-Compileant:

    If you only learned to brace correctly

    He did. 😛

    Not really. The best way is not at all. Code that has to wear braces is just as ugly as teeth that have to wear braces.



  • @masonwheeler said in Non-Compileant:

    The best way is not at all.

    goto fail



  • @masonwheeler said in Non-Compileant:

    @hardwaregeek said in Non-Compileant:

    @boomzilla said in Non-Compileant:

    If you only learned to brace correctly

    He did. 😛

    Not really. The best way is not at all. Code that has to wear braces is just as ugly as teeth that have to wear braces.

    I prefer braces over

    function bit[31:0] foo(in bit[7:0] bar, inout bit[23:0] baz) begin
        if (condition) begin
            do_thing(.fuzz({baz, bar}) .frutz(17'b011010110z01xx110)); // '
        end else if (some_other_condition) begin
            do_other();
        end else begin
            do_stuff();
        end
        return whatever;
    endfunction: foo
    

    Edit: Interesting attempt at syntax highlighting. It starts out ok, but looses it at the bit literal. I wonder if I can fix that... Yup; mostly.


  • Impossible Mission - B

    @ben_lubar Exactly! The C language family is set up to fail in cases like that!


  • Impossible Mission - B

    @hardwaregeek said in Non-Compileant:

    I prefer braces over

    function bit[31:0] foo(in bit[7:0] bar, inout bit[23:0] baz) begin
        if (condition) begin
            do_thing(.fuzz({baz, bar}) .frutz(17'b011010110z01xx110));
        end else begin
            if (some_other_condition) begin
                do_other();
            end
        end else begin
                do_stuff();
            end
        end
        return whatever;
    endfunction: foo
    

    Better still:

    def foo(in bar as bit[7:0], inout baz as bit[23:0]) as bit[31:0]:
        if condition:
            do_thing(.fuzz({baz, bar}) .frutz(17'b011010110z01xx110)) //'
        else:
            if some_other_condition:
                do_other()
        else: //logical error existed in the original
                do_stuff()
        return whatever
    


  • @masonwheeler said in Non-Compileant:

    //logical error existed in the original
    

    Argh. I had it right the first time, then tried to make it look a little more like our style convention and bodged it up.


  • kills Dumbledore

    @masonwheeler said in Non-Compileant:

    @ben_lubar Exactly! The C language family is set up to fail in cases like that!

    Not if you use braces. The failure is allowing them to be optional


  • Impossible Mission - B

    @jaloopa My point exactly. Get rid of the braces altogether, and the fail goes away.


  • Discourse touched me in a no-no place

    @masonwheeler said in Non-Compileant:

    Get rid of the braces altogether, and the fail goes away.

    … And then you get other failure modes instead. You're damned either way if you assume that the computer will save you from being sloppy without it being fussy instead; the width of the gap between the two domains is downright negative.

    But the bracing/indentation debate is just a silly distraction.



  • @masonwheeler said in Non-Compileant:

    @hardwaregeek said in Non-Compileant:

    @boomzilla said in Non-Compileant:

    If you only learned to brace correctly

    He did. 😛

    Not really. The best way is not at all. Code that has to wear braces is just as ugly as teeth that have to wear braces.

    #include "pascal.h"



  • @masonwheeler said in Non-Compileant:

    def foo(in bar as bit[7:0], inout baz as bit[23:0]) as bit[31:0]:
    if condition:
    do_thing(.fuzz({baz, bar}) .frutz(17'b011010110z01xx110)) //'
    else:
    if some_other_condition:
    do_other()
    else: //logical error existed in the original
    do_stuff()
    return whatever

    I highlighted your post and clicked reply. Please put this into a compiler as-is.



  • @ben_lubar Removing stuff from code makes it not work. Shocking!


  • Discourse touched me in a no-no place

    The point.
    undefined
    @anonymous234



  • @rhywden said in Non-Compileant:

    Yes, in fairly distributed pieces. I rolled a dice and got five.

    Oh come on. We all know that's supposed to be 4! (too lazy for that obligatory xkcd link)



  • @dkf said in Non-Compileant:

    @scholrlea said in Non-Compileant:

    there's no reason why they need to all be in this one file

    you get better performance (IIRC it's about 1–2% difference on a project the scale of SQLite, which builds the single file version automatically)

    Wait, what?

    I can see why it would affect the compile time, as well as processing time for an interpteted language (though in most cases only on the first pass), but why would there be a measureable impact in a statically linked executable file? Unless the linker is doing a terrible job of combining the object files, or if the compiler is using global optimizations (which would not be the case for either GCC or VC++ to the best of my knowledge - AFAIK, the only non-experimental C compiler capable of it is the Intel Optimizing Compiler), there shouldn't really be a difference in how the linker lays out a the functions regardless of the source files they were in when compiled... Right?

    I can see some possibilities for why that might happen, but it wouldn't be anything consistent enough to predict. Am I missing something?


  • Discourse touched me in a no-no place

    @scholrlea said in Non-Compileant:

    Unless the linker is doing a terrible job of combining the object files, or if the compiler is using global optimizations

    Linkers are usually pretty stupid. Smart linkers exist, but they can really make compilation times blow up awfully. (The problem is that the complexity of the task is really super-linear and tends to blow up on a big program.)

    However, compilers do use “global” optimisations. Well, compilation-unit-global to be exact. When the compiler can see all the definitions at once and know all the uses, it will do substantially more aggressive optimisation because there is typically rather more that the compiler can work out about the code than is encoded in the average function declaration (such as the true lifetime of the pointers to variables on the stack). These sorts of things do make a difference; I've seen the statistics (though I haven't the patience to run the tests myself).

    Both gcc and clang do this sort of thing. I know that there's a link-time optimiser in the LLVM suite, but I don't know if clang makes use of it by default; it might need an extra link option to turn it on.



  • @dkf Hmmn, OK then, TIL. Thanks.



  • @scholrlea said in Non-Compileant:

    It is no surprise that the OSDev Forums would draw such people - again, including myself - like honey draws bees.

    OMG they have an AUTO-DELETE forum!!



  • @sockpuppet7 said in Non-Compileant:

    @scholrlea said in Non-Compileant:

    It is no surprise that the OSDev Forums would draw such people - again, including myself - like honey draws bees.

    OMG they have an AUTO-DELETE forum!!

    Oh god it puts the session ID in the URL so random internet hobos can steal your session!!!



  • @ben_lubar said in Non-Compileant:

    @sockpuppet7 said in Non-Compileant:

    @scholrlea said in Non-Compileant:

    It is no surprise that the OSDev Forums would draw such people - again, including myself - like honey draws bees.

    OMG they have an AUTO-DELETE forum!!

    Oh god it puts the session ID in the URL so random internet hobos can steal your session!!!

    Yeah... We've discussed going to a forum software that isn't 10 years out of date a lot over there. For about 10 years, actually, since it wasn't all that good to begin with as you have noticed.

    OTOH, who would bother stealing the session ID for that site? The only person who has seriously tried to attack the forum was so incompetent that he couldn't manage to make a DOS attack (not DDOS, just him running a script that posted to sockpuppet accounts over and over) stick for more than a few minutes. Of course, that doesn't mean that nothing nefarious is happening, just that any bigger stuff hasn't been visible.

    The real problem is that the owner and sole admin, Chase, is not actively working on the site, only showing up rarely. Even the mods have difficulty reaching him, so any problems that do occur which they can't fix often take hours or days to resolve even if they were simple fixes. He has shown no interest in doing anything about the forum software, or even about moving to HTTPS with the Mozilla-pocalpse and all. So that's bad.



  • On a side note, I've noticed here and in other threads where I've brought it up that no one has been sporking Geri (the SubLEQ-obsessed guy). Is it just so banal a type of delusion that it just isn't interesting enough to mock?

    Maybe another Sidebar WTF thread is called for just for him.



  • @scholrlea Aaaaand... I just noticed that what @ben_lubar said was a joke (the session IDs aren't actually in the URL). Me R Teh Dummasss.

    Still, the forum software is phpBB 3, so... fuck me hard.



  • @scholrlea said in Non-Compileant:

    @scholrlea Aaaaand... I just noticed that what @ben_lubar said was a joke (the session IDs aren't actually in the URL). Me R Teh Dummasss.

    Still, the forum software is phpBB 3, so... fuck me hard.

    What's SID if it's not Session ID?



  • @ben_lubar SID? Where? The URLs I posted earlier were:

    • http://forum.osdev.org/
    • http://forum.osdev.org/viewtopic.php?f=2&t=32600&start=0&p=280993&view=show#p280993
    • http://forum.osdev.org/viewtopic.php?f=13&t=32575&start=15&p=280881&view=show#p280881
    • http://forum.osdev.org/viewtopic.php?f=6&t=31404

    Or was this in a different thread?



  • @scholrlea said in Non-Compileant:

    Or was this in a different thread?

    It was posted (and not yet deleted) by someone else:

    @sockpuppet7 said in Non-Compileant:

    @scholrlea said in Non-Compileant:

    It is no surprise that the OSDev Forums would draw such people - again, including myself - like honey draws bees.

    OMG they have an AUTO-DELETE forum!!



  • @boomzilla said in Non-Compileant:

    @scholrlea said in Non-Compileant:

    Or was this in a different thread?

    It was posted (and not yet deleted) by someone else:

    @sockpuppet7 said in Non-Compileant:

    @scholrlea said in Non-Compileant:

    It is no surprise that the OSDev Forums would draw such people - again, including myself - like honey draws bees.

    OMG they have an AUTO-DELETE forum!!

    http://forum.osdev.org/viewforum.php?f=7&sid=1a48d591182a3fdae9f8921fd8a1f973

    undefined? Oh, shit.

    EDIT: ERR_NOREPRO. This is what I get when I look at that forum, regardless of whether I am logged in or off:

    http://forum.osdev.org/viewforum.php?f=7

    I'm using FF57 (please don't give me shit about that) under Linux Mint (ditto). Dunno if FF hides those sorts of things somehow or not.



  • @scholrlea said in Non-Compileant:

    @ben_lubar SID? Where? The URLs I posted earlier were:

    • http://forum.osdev.org/
    • http://forum.osdev.org/viewtopic.php?f=2&t=32600&start=0&p=280993&view=show#p280993
    • http://forum.osdev.org/viewtopic.php?f=13&t=32575&start=15&p=280881&view=show#p280881
    • http://forum.osdev.org/viewtopic.php?f=6&t=31404

    Or was this in a different thread?

    FWIW I'm currently on http://forum.osdev.org/viewforum.php?f=18&sid=615bd0456e46601b3e545cbb6008e1a9

    Steal my session! (I'm not logged in or anything)



  • @zemm OK, I'm not seeing the SID field in FF or Opera, but if I go it without logging in, it does show up in Lynx, NetSurf, Hv3, and Dillo, at least when I am not logged in.

    In fact, in Opera it isn't even showing the viewforum field.

    Xombrero showed it when I didn't log in, but then stopped when I logged in, and came back when I logged out.

    And it was showing up in Chromium and Arora, but then I logged in using Arora now it... isn't? Even when I am still logged out in Chromium? undefined ?



  • @scholrlea it happened on Chrome on Windows, but when I tried again I couldn't reproduce



  • @sockpuppet7 OK... Midori shows it until I log in, and then after I log in it doesn't, even after I log back out. This just keeps getting weirder.

    EDIT: Same thing in Epiphany.


Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.