As was foretold, we've added advertisements to the forums! If you have questions, or if you encounter any bugs, please visit this thread: https://forums.penny-arcade.com/discussion/240191/forum-advertisement-faq-and-reports-thread/

[TRENCHES] Tuesday, September 24, 2013 - Concept Art - Quentin

GethGeth LegionPerseus VeilRegistered User, Moderator, Penny Arcade Staff, Vanilla Staff vanilla
edited September 2013 in The Penny Arcade Hub
Concept Art - Quentin


Concept Art - Quentin
http://trenchescomic.com/comic/post/concept-art-quentin

Local dialect

Anonymous

A bit of jargon from Russian developers, to lighten the mood a bit:

“Batman” - a memory corruption bug. From: “The goddamned Batman flew in and shat into the memory!”.

“Speedy Gonzalez” - a race condition bug, when process is “too fast” in reaching a certain point of code.

“Mount becomes hungry” - a situation where some action produces bug in completely unrelated piece of code. From a bug report where player’s mount became hungry after player sold something in auction house.

“Samurai Code” (also “Tough Code”) - A true Samurai is not afraid of death, and so is this code. It never checks anything and will crash if you pass it a wrong combination of parameters.

“Guerrilla Code” - A guerrilla fighter tries to protect his comrades to the end. This code tries to cover up a serious mistake. It does not handle it correctly, but make it so you will only discover it much
later, in a different module, where all context already disappeared.

“Ninja Code” - A code added to a module owned by another programmer without notifying owner, which drastically changes module’s behavior. Bonus points for making it only execute in very special circumstances which will only come up a few weeks later.

“‘Retarded Child’ architectural pattern” - A sub-system which can’t report error and can’t correctly handle it (for example, I once worked with a database connection which didn’t have any way to access error code or description for a query, and didn’t log it, but just returned general ERROR status to you, so you could only discern nature of error by setting breakpoint inside that connection’s code, which was in another library)

“Epic game development” - A development process where a lot of important information (location of critical resources, build-in cheat codes, status of some sub-systems) never gets written down, but instead is passed by the word of mouth from developer to developer, like a folk tale. Most game development in Russia is Epic.


Geth on

Posts

  • HevachHevach Registered User regular
    edited September 2013
    “Guerrilla Code” - A guerrilla fighter tries to protect his comrades to the end. This code tries to cover up a serious mistake. It does not handle it correctly, but make it so you will only discover it much
    later, in a different module, where all context already disappeared.

    I would never have graduated if my professors ever realized that 80% of my programming assignments contained the comment "//I'm not sure why this line works but everything breaks if you change it"

    Works great in the moment when you only care about sorting a linked list, but months later if you... I don't know, try to sort by a different variable, you might as well just skip class and go to the bar because now it's going to start repointing all your links to what should be protected memory and by the time you're finished kludging that there's going to be three pages of global variables at the top of the code that you tried to give official and cryptic sounding names to cover the fact that you're shuffling half of memory around every operation because WHY IS IT INCREMENTING ALL MY INTEGERS NOW I NEVER TYPED THAT.

    Hevach on
  • CasualCasual Wiggle Wiggle Wiggle Flap Flap Flap Registered User regular
    Hevach wrote: »
    “Guerrilla Code” - A guerrilla fighter tries to protect his comrades to the end. This code tries to cover up a serious mistake. It does not handle it correctly, but make it so you will only discover it much
    later, in a different module, where all context already disappeared.

    I would never have graduated if my professors ever realized that 80% of my programming assignments contained the comment "//I'm not sure why this line works but everything breaks if you change it"

    Works great in the moment when you only care about sorting a linked list, but months later if you... I don't know, try to sort by a different variable, you might as well just skip class and go to the bar because now it's going to start repointing all your links to what should be protected memory and by the time you're finished kludging that there's going to be three pages of global variables at the top of the code that you tried to give official and cryptic sounding names to cover the fact that you're shuffling half of memory around every operation because WHY IS IT INCREMENTING ALL MY INTEGERS NOW I NEVER TYPED THAT.

    To a non-programmer like myself, this gibberish just sounds like a decent into madness.

  • HevachHevach Registered User regular
    edited September 2013
    Casual wrote: »
    Hevach wrote: »
    “Guerrilla Code” - A guerrilla fighter tries to protect his comrades to the end. This code tries to cover up a serious mistake. It does not handle it correctly, but make it so you will only discover it much
    later, in a different module, where all context already disappeared.

    I would never have graduated if my professors ever realized that 80% of my programming assignments contained the comment "//I'm not sure why this line works but everything breaks if you change it"

    Works great in the moment when you only care about sorting a linked list, but months later if you... I don't know, try to sort by a different variable, you might as well just skip class and go to the bar because now it's going to start repointing all your links to what should be protected memory and by the time you're finished kludging that there's going to be three pages of global variables at the top of the code that you tried to give official and cryptic sounding names to cover the fact that you're shuffling half of memory around every operation because WHY IS IT INCREMENTING ALL MY INTEGERS NOW I NEVER TYPED THAT.

    To a non-programmer like myself, this gibberish just sounds like a decent into madness.

    Think of it like original sin. The first one is easy - it's low hanging fruit and just one bite will fix your program, getting kicked out of Eden doesn't seem that bad at first. But once you've done it, every additional step becomes harder, unless you just take one more bite - every bite will fix an immediate problem but take you farther from the correct path. And so, damned either way, you take another, and then just one more, and then before you know it people are eating each other and it won't stop raining and your boat is made out of goto lines.

    Hevach on
  • PedroAsaniPedroAsani Brotherhood of the Squirrel [Prime]Registered User regular
    Hevach wrote: »
    “Guerrilla Code” - A guerrilla fighter tries to protect his comrades to the end. This code tries to cover up a serious mistake. It does not handle it correctly, but make it so you will only discover it much
    later, in a different module, where all context already disappeared.

    I would never have graduated if my professors ever realized that 80% of my programming assignments contained the comment "//I'm not sure why this line works but everything breaks if you change it"

    Works great in the moment when you only care about sorting a linked list, but months later if you... I don't know, try to sort by a different variable, you might as well just skip class and go to the bar because now it's going to start repointing all your links to what should be protected memory and by the time you're finished kludging that there's going to be three pages of global variables at the top of the code that you tried to give official and cryptic sounding names to cover the fact that you're shuffling half of memory around every operation because WHY IS IT INCREMENTING ALL MY INTEGERS NOW I NEVER TYPED THAT.

    And that's why I am not a programmer. Seven hours poring through code for an unspecified error, turns out that ` and ' both looked identical in the font chosen by the professor for the compiler. One line of a module imported from a group-mate had a typo. A typo that now hid from view like a tiger in the long grass, waiting to eat your face.

    After copying the whole thing into Notepad to print it out and take it home (compiler couldn't print, and this was a lab stuck in the pre-internet age despite being 1999) I spotted the problem, screamed "What the fuck is this shit?!?" and dropped the class.

    Now I'm working with Powershell. Some says I can feel those moments approaching when a piece of code that worked perfectly well on the previous version needs rewriting because the command went from Add-StrangeVariable to New-StrangeVariable with a whole new collection of switches. But at least I can see ` and '.

  • agoajagoaj Top Tier One FearRegistered User regular
    edited September 2013
    Every bug is a memory leak until I figure out the actual cause is something dumb.
    Spent hours in our booth at PAX East debugging the build we were supposed to be showing. Convinced it was a memory leak because it was so random. The actual issue turned out to be that I had left a phase of the Boss Mode switched on, which caused the code to compare an uninitialized variable and execute code that assumed Boss Mode was actually set up and crashed trying to read empty stuff. When I finally found it I beat myself with a water bottle. I could not have done it without our professional testers who were able to find the situations that caused the bug. Always treat your testers with respect, you'll need them!

    For 4-5 hours before it was fixed, we had a build with no color, limited animation, and red square placeholder graphics.

    agoaj on
    ujav5b9gwj1s.png
  • Grey PaladinGrey Paladin Registered User regular
    edited September 2013
    I have never worked on a project that didn't go Epic at some point. By the end there are a couple of competing mythologies and a holy war looms on the horizon.

    Grey Paladin on
    "All men dream, but not equally. Those who dream by night in the dusty recesses of their minds wake in the day to find that it was vanity; but the dreamers of the day are dangerous men, for they may act their dream with open eyes to make it possible." - T.E. Lawrence
  • PsykomaPsykoma Registered User regular
    His name's quentin???

    .....I'm okay with this.

  • BobbleBobble Registered User regular
    Casual wrote: »
    Hevach wrote: »
    “Guerrilla Code” - A guerrilla fighter tries to protect his comrades to the end. This code tries to cover up a serious mistake. It does not handle it correctly, but make it so you will only discover it much
    later, in a different module, where all context already disappeared.

    I would never have graduated if my professors ever realized that 80% of my programming assignments contained the comment "//I'm not sure why this line works but everything breaks if you change it"

    Works great in the moment when you only care about sorting a linked list, but months later if you... I don't know, try to sort by a different variable, you might as well just skip class and go to the bar because now it's going to start repointing all your links to what should be protected memory and by the time you're finished kludging that there's going to be three pages of global variables at the top of the code that you tried to give official and cryptic sounding names to cover the fact that you're shuffling half of memory around every operation because WHY IS IT INCREMENTING ALL MY INTEGERS NOW I NEVER TYPED THAT.

    To a non-programmer like myself, this gibberish just sounds like a decent into madness.

    Let me confirm your suspicion (Degree in CompSci). That's what it is.

    Hevach wrote: »
    and then before you know it people are eating each other and it won't stop raining and your boat is made out of goto lines.

    Oh God. The horror D:

  • wormspeakerwormspeaker Objectively Terrible Registered User regular
    Geth wrote: »
    “Guerrilla Code” - A guerrilla fighter tries to protect his comrades to the end. This code tries to cover up a serious mistake. It does not handle it correctly, but make it so you will only discover it much later, in a different module, where all context already disappeared.

    Oh, God. This is like every day for me. I find myself screaming, "Why are you catching the exception and then doing nothing with it, and returning true?"

    Some people should never become programmers.

    On a related note, if you like to read programmer jargon, you should check out the Jargon File, it's filled with great stuff like Heavy Wizardry, Voodoo Programming, and Chernobyl Packets.

    http://www.catb.org/jargon/oldversions/jarg262.txt

  • SmrtnikSmrtnik job boli zub Registered User regular
    Now I want to read the dailywtf

    steam_sig.png
  • HevachHevach Registered User regular
    Bobble wrote: »
    Casual wrote: »
    Hevach wrote: »
    “Guerrilla Code” - A guerrilla fighter tries to protect his comrades to the end. This code tries to cover up a serious mistake. It does not handle it correctly, but make it so you will only discover it much
    later, in a different module, where all context already disappeared.

    I would never have graduated if my professors ever realized that 80% of my programming assignments contained the comment "//I'm not sure why this line works but everything breaks if you change it"

    Works great in the moment when you only care about sorting a linked list, but months later if you... I don't know, try to sort by a different variable, you might as well just skip class and go to the bar because now it's going to start repointing all your links to what should be protected memory and by the time you're finished kludging that there's going to be three pages of global variables at the top of the code that you tried to give official and cryptic sounding names to cover the fact that you're shuffling half of memory around every operation because WHY IS IT INCREMENTING ALL MY INTEGERS NOW I NEVER TYPED THAT.

    To a non-programmer like myself, this gibberish just sounds like a decent into madness.

    Let me confirm your suspicion (Degree in CompSci). That's what it is.

    Hevach wrote: »
    and then before you know it people are eating each other and it won't stop raining and your boat is made out of goto lines.

    Oh God. The horror D:

    You think that was a decent into madness, the program that finally cured me of slipshod quick solutions like that was a chess program:
    It started when I noticed that knights in corner slots were being allowed to make moves they shouldn't. I wasn't sure why, but I did notice immediately that making the board 12x12 instead of 8x8, but only displaying the center 8x8 so the player couldn't move pieces outside fixed the issue by making sure the code always saw all 8 possible moves for every knight, no matter where they were on the "real" board.

    An unintended side effect of this was that the castling process was broken in a fascinating way that caused the rook to overwrite the king if white attempted to castle on the queen's side. I saw an easy kludge to fix this. However, something else broke in the fix, and a player could castle more than once (provided they returned the king and rook to their starting positions). An unlikely event, but still against the rules. This was easily fixed with a set of 8 global variables to track if the kings or rooks had moved and if castling had been performed - making these non-global would require going back to the base engine and changing how I take input, or passing them all over the place.

    New bug: The code couldn't tell the rooks apart, so if one rook was captured before it moved, the other could move to its position, and you could use it to castle (you couldn't castle on its correct side but if it was in the opposite corner the game thought it was *that* rook, which had not moved and was legal for castling). Again, unlikely event, but still illegal. A change in how the global variables fixed this.

    And at this point, the game did not include pawns. Things got immensely worse when I started coding how to handle en passant situations.

  • El GuacoEl Guaco Registered User regular
    As a professional software developer, I've run into all of these. I'm far enough into my career to understand what causes these kinds of issues and how they can be prevented.

    Despite all the efforts by the writers of OOP languages, it's amazing how few programmers truly understand the concept of encapsulation and practice it. So much misery can be saved by taking a little extra effort. Programming is one area where doing things the easiest and quickest way is likely to bite you in the ass later.





Sign In or Register to comment.