• InternetTroll (unregistered) in reply to ¯\(°_o)/¯ I DUNNO LOL

    You're a manager, aren't you. Right? Yeah, you definitely sound like a manager. "Why tell the client the truth when we can bury them under false platitudes." Also, who let a manager on TDWTF?

  • Neil (unregistered) in reply to minim
    minim:
    huppenzuppen:
    Am I the only one who finds it difficult to read the article when a Jenga tower is constantly collapsing on the right?
    Right click, Inspect element. Right click, Delete node.
    On my browser I can just press the Escape key and all the animations stop.

    iusto make jokes about captchas.

  • Vendaface (unregistered) in reply to huppenzuppen
    huppenzuppen:
    Am I the only one who finds it difficult to read the article when a Jenga tower is constantly collapsing on the right?
    I found it impossible to read the article until I had blocked the gif.
  • emaN ruoY (unregistered) in reply to minim
    minim:
    huppenzuppen:
    Am I the only one who finds it difficult to read the article when a Jenga tower is constantly collapsing on the right?
    Right click, Inspect element. Right click, Delete node.

    Chrome is a nice browser.

    Firefox has the same capability. :) But that may be a Selenium or Firebug feature.

  • Anonymous') OR 1=1 (unregistered) in reply to ¯\(°_o)/¯ I DUNNO LOL

    Actually Unicode has over 1.1 million code points in it, though only about 110,000 of those are currently assigned to valid characters.

  • foo AKA fooo (unregistered) in reply to Pero perić
    Pero perić:
    I've read the first word and went to check comments before reading further. Judging from the lack of rage it looks like it's not about German ninja/samurai IT Hiro.
    You're confusing Hiro AKA Hiroo with Hansi AKA Hanzo.
  • (cs)

    Don't your roll new products out to your small clients first? So if this sort of things happens the damage is more contained.

  • (cs)

    This story is entirely faked.

  • El Guaco (unregistered) in reply to Meta-Reader
    Meta-Reader:
    WTF the first (or was that frist): Corporate mandates without the buy in of any of the clients it will affect WTF the second: Corporate's support was not on speeddial for the ~2 weeks of burn in/commissioning for support WTF the third: Mythical Man Month FUBAR from Hiro's boss WTF the fourth:The Daily WTF needs to re-work the masking tool to give all the companies/people who will be playing large roles in the story consistent names so we don't have to re-read the story 5 times to figure out whos WTF is greater

    WTF the Zero-th: Corporate mandated the use of software that they didn't even know was in an unfinished state.

    I'm trying to imagine how that went down. Did engineering promise something they couldn't deliver and lie about the result, causing corporate to assume it would be ready? Did the engineers simply keep quiet or did they not know that management had pushed their mistake on their customers? How did so much happen with so few people knowing what was going on?

    WTF indeed!

  • John (unregistered) in reply to minim
    minim:
    huppenzuppen:
    Am I the only one who finds it difficult to read the article when a Jenga tower is constantly collapsing on the right?
    Right click, Inspect element. Right click, Delete node.

    Chrome is a nice browser.

    OH MY DOG THAT'S AWESOME!

  • ⇈⇊←→←→BA (unregistered)

    Heh, at least that's just long to int. We deal with db people who think that storing an integer primary key as a string is a great idea.

  • (cs)

    I like to think that they were rolling out a piece of software called "ASAP" . As in "Another SAP," clearly an in-house attempt to do better than the Lovecraftian monster that is SAP.

  • (cs)

    Two words: Change Control.

    Sure, it slows things down but nothing gets implemented unless everyone is the same page.

    When Hiro implemented a major system change to production based on the "ASAP" he saw in an email, he started the nightmare.

  • (cs) in reply to PedanticCurmudgeon
    PedanticCurmudgeon:
    JimM:
    MiniMax:
    ... boolean flags as ints ...

    Could be worse, I recently discovered an entirely new way to store boolean values in SQL server: nvarchar(1). An internet cookie to the first person who can guess how the value is encoded in this field ;)

    0 = true, 1 = false, amirite?
    More like: Y=true any other character=false (including 0-9) empty String=true null=FILE_NOT_FOUND

  • gcochard (unregistered) in reply to RFoxmich
    RFoxmich:
    At least it's a Remy posting so the comments are worth it...and I may not be frist, by my captcha is secundum.

    This is useful if you want to read the comments without having to view source: https://github.com/gcochard/tdwtf-uncommenter

    Can't post a link, akismet says it's spam.

  • (cs) in reply to ⇈⇊←→←→BA
    ⇈⇊←→←→BA:
    Heh, at least that's just long to int. We deal with db people who think that storing an integer primary key as a string is a great idea.

    I am taking a database class, and this was used as an example in the book. And I don't mean an example of what not to do.

    (Yesterday in the class we learned SQL. Everything from basic select statements to subqueries to triggers. Because, you know, SQL is clearly on par with what we learn in a typical class, like how to create a particular type of report in Access.)

  • (cs) in reply to lizardfoot
    lizardfoot:
    Two words: Change Control.

    Sure, it slows things down but nothing gets implemented unless everyone is the same page.

    When Hiro implemented a major system change to production based on the "ASAP" he saw in an email, he started the nightmare.

    Only that Hiro did not "implement a major system change to production", it was Hiro's office that "did what they were told, and to prove their loyalty to their corporate overlords, they started by bringing their largest customer, Initech, on line."

    Change control usually covers only inhouse systems.

    What is needed here is sales control. And it need to control not only sales drones' stupid orders, it also needs to control sales drones' bonusses!

  • Qazwsx (unregistered) in reply to gcochard
    gcochard:
    RFoxmich:
    At least it's a Remy posting so the comments are worth it...and I may not be frist, by my captcha is secundum.

    This is useful if you want to read the comments without having to view source: https://github.com/gcochard/tdwtf-uncommenter

    Can't post a link, akismet says it's spam.

    I use this bookmarklet someone posted ages ago:

    javascript:(function(){var b=document.getElementById('ArticleFull')||document.getElementsByClassName('ArticleBody')[0];b.innerHTML=b.innerHTML.replace(/<!\-\-/g,'<span style="color: green;">').replace(/\-\->/g,'');})()

    Captcha: eros - it knows that Remy articles get the reader hot and bothered

  • eggplant (unregistered) in reply to Hannes

    Worked just fine in IE11.

  • (cs) in reply to Hannes
    Hannes:
    The only browser without any feature would be Internet Explorer. ;)
    No, it would be Firefox. It used to have whatever feature everybody else has, but Mozilla decided to remove it because it might confuse their users who only want to see grumpycat.
  • I Tried Best Practice But It Hurt My Balls (unregistered) in reply to QJo
    QJo:
    Happened on a project of ours once. The devs were new to Java, and thought an int was 16 bit and a long 32 bit, so used long throughout (even, WTF, for variables which were only ever going to be as big as 3).

    Apparently it's a common anti-pattern.

    Best practice, right there. What if those variables need to be updated so that their maximum goes from 3 to 9,223,372,036,854,775,808? Using long solves that problem.

  • Joel (unregistered) in reply to Roby McAndrew

    I would have done this regardless to what stress it involved during the day. Free trip to Japan? Hell yes.

    CAPTCHA: facilisis - That illness you contract when you visit that client office that is really, really disturbingly gross.

  • anonymous (unregistered) in reply to gcochard
    gcochard:
    RFoxmich:
    At least it's a Remy posting so the comments are worth it...and I may not be frist, by my captcha is secundum.

    This is useful if you want to read the comments without having to view source: https://github.com/gcochard/tdwtf-uncommenter

    Can't post a link, akismet says it's spam.

    I like mine better.
    // ==UserScript==
    // @name        TDWTF
    // @namespace   custom
    // @description This script makes "hidden" content visible on TDWTF without needing to view-source, along with a handful of other tweaks and fixes.
    // @include     http://thedailywtf.com/*
    // @include     http://.thedailywtf.com/
    // @grant       none
    // run-at       document-start
    // ==/UserScript==
    
    try {
    // add a stylesheet to the document head before the document starts loading
        document.head.appendChild(document.createElement("style")).innerHTML =
    ".ArticleBody img,.ForumPostBodyArea blockquote img{max-width:128px;max-height:128px}" +
    ".ArticleBody img:hover,.ForumPostBodyArea blockquote img:hover{max-width:none;max-height:none}" +
    ".ArticleBody blockquote img,.ForumPostContentText img{max-width:100%;height:auto}" +
    ".ArticleBody blockquote img:hover,.ForumPostContentText img:hover{max-width:none}";

    </span><span style="color:#008000;">// script to do the heavy lifting after the DOMContentLoaded event occurs
    

    window.addEventListener("DOMContentLoaded", function () { try { var pgbase = window.location.hostname.match(/[^.]+.[^.]+$/).pop(), id; id = (window.location.hostname == "forums.thedailywtf.com" ? "CommonBody" : "MainContent"); for (e = [document.getElementById(id)]; e.length > 0 && e[0] != null; e.shift()) { if (e[0].nodeType === e[0].COMMENT_NODE) { // Make comments visible by inserting the contents of the comment node inside a new element with (e[0].parentElement.insertBefore(document.createElement("span"), e[0])) { e[0].parentNode.removeChild(e[0]);

                        </span><span style="color:#000080;font-weight:bold;font-style:italic;">with</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">style</span><span style="color:black;font-weight:bold;">)</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">{</span><span style="color:black;">
                            </span><span style="color:black;">fontStyle</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:#808080;">"italic"</span><span style="color:black;font-weight:bold;">;</span><span style="color:black;">
                            </span><span style="color:black;">color</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:#808080;">"#008000"</span><span style="color:black;font-weight:bold;">;</span><span style="color:black;">
                        </span><span style="color:black;font-weight:bold;">}</span><span style="color:black;">
                        
                        </span><span style="color:#000080;font-weight:bold;font-style:italic;">var</span><span style="color:black;"> </span><span style="color:black;">text</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">data</span><span style="color:black;font-weight:bold;">;</span><span style="color:black;">
                        </span><span style="color:#000080;font-weight:bold;font-style:italic;">if</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">text</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">match</span><span style="color:black;font-weight:bold;">(</span><span style="color:#8000ff;">/^\s*([^\s])/</span><span style="color:black;font-weight:bold;">)[</span><span style="color:red;">1</span><span style="color:black;font-weight:bold;">]</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">==</span><span style="color:black;"> </span><span style="color:#808080;">"<"</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">&&</span><span style="color:black;"> </span><span style="color:black;">text</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">match</span><span style="color:black;font-weight:bold;">(</span><span style="color:#8000ff;">/([^\s])\s*$/</span><span style="color:black;font-weight:bold;">)[</span><span style="color:red;">1</span><span style="color:black;font-weight:bold;">]</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">==</span><span style="color:black;"> </span><span style="color:#808080;">">"</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">&&</span><span style="color:black;"> </span><span style="color:black;">text</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">split</span><span style="color:black;font-weight:bold;">(</span><span style="color:#808080;">"<"</span><span style="color:black;font-weight:bold;">).</span><span style="color:black;">length</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">==</span><span style="color:black;"> </span><span style="color:black;">text</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">split</span><span style="color:black;font-weight:bold;">(</span><span style="color:#808080;">">"</span><span style="color:black;font-weight:bold;">).</span><span style="color:black;">length</span><span style="color:black;font-weight:bold;">)</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">{</span><span style="color:black;">
                            </span><span style="color:#008000;">// this looks like HTML, so try setting it as the innerHTML
    

    innerHTML = text; title = text; } else { // assume it's plain text style.whiteSpace = "pre-line"; appendChild(document.createTextNode(" " + text + " ")); }

                        </span><span style="color:#008000;">// Add new child nodes to the list so they will be processed (for instance, images or text URLs)
    

    if (hasChildNodes()) for (j = 0; j < childNodes.length; ++ j) e.push(childNodes[j]); }

                </span><span style="color:black;font-weight:bold;">}</span><span style="color:black;"> </span><span style="color:#000080;font-weight:bold;font-style:italic;">else</span><span style="color:black;"> </span><span style="color:#000080;font-weight:bold;font-style:italic;">if</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">nodeType</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">===</span><span style="color:black;"> </span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">ELEMENT_NODE</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">&&</span><span style="color:black;"> </span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">tagName</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">==</span><span style="color:black;"> </span><span style="color:#808080;">"IMG"</span><span style="color:black;font-weight:bold;">)</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">{</span><span style="color:black;">
                    </span><span style="color:#000080;font-weight:bold;font-style:italic;">if</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">complete</span><span style="color:black;font-weight:bold;">)</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">{</span><span style="color:black;">
                        </span><span style="color:#008000;">// Image has finished loading, check it directly
    

    if (e[0].naturalWidth == 0 && e[0].src.indexOf("//img.thedailywtf.com/") >= 0) { // Image appears to be broken - try changing the extension var f = e[0].src.split("."), ext = f.pop(); f.push(ext == "jpg" ? "png" : "jpg"); with (e[0].parentElement.insertBefore(document.createElement("img"), e[0].nextSibling)) { style.display = "none"; onload = function () { if (this.naturalWidth != 0) this.style.display = ""; }; src = f.join("."); } }

                    </span><span style="color:black;font-weight:bold;">}</span><span style="color:black;"> </span><span style="color:#000080;font-weight:bold;font-style:italic;">else</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">{</span><span style="color:black;">
                        </span><span style="color:#008000;">// Image has not finished loading, so set events to fire when it finishes or if there's an error
    

    e[0].onerror = function () { if (this.naturalWidth == 0 && this.src.indexOf("//img.thedailywtf.com/") >= 0) { // Image appears to be broken - try changing the extension var f = this.src.split("."), ext = f.pop(); f.push(ext == "jpg" ? "png" : "jpg"); with (this.parentElement.insertBefore(document.createElement("img"), this.nextSibling)) { style.display = "none"; onload = function () { if (this.naturalWidth != 0) this.style.display = ""; }; src = f.join("."); } } }; }

                </span><span style="color:black;font-weight:bold;">}</span><span style="color:black;"> </span><span style="color:#000080;font-weight:bold;font-style:italic;">else</span><span style="color:black;"> </span><span style="color:#000080;font-weight:bold;font-style:italic;">if</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">nodeType</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">===</span><span style="color:black;"> </span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">TEXT_NODE</span><span style="color:black;font-weight:bold;">)</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">{</span><span style="color:black;">
                    </span><span style="color:#008000;">// Turn URLs into hyperlinks
    

    var parent = e[0].parentElement; while (parent && parent.tagName != "A" && !parent.classList.contains("CommentSubHeading")) parent = parent.parentElement; if (!parent || parent.tagName != "A" && !parent.classList.contains("CommentSubHeading")) { var text = e[0].data, url;

                        </span><span style="color:#000080;font-weight:bold;font-style:italic;">if</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">text</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">indexOf</span><span style="color:black;font-weight:bold;">(</span><span style="color:#808080;">"ht<b></b>tp colon slash slash "</span><span style="color:black;font-weight:bold;">)</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">>=</span><span style="color:black;"> </span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">)</span><span style="color:black;"> </span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">data</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:black;">text</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:black;">text</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">replace</span><span style="color:black;font-weight:bold;">(</span><span style="color:#808080;">"ht<b></b>tp<b></b> colon slash slash "</span><span style="color:black;font-weight:bold;">,</span><span style="color:black;"> </span><span style="color:#808080;">"ht<b></b>tp://"</span><span style="color:black;font-weight:bold;">);</span><span style="color:black;">
                        </span><span style="color:#000080;font-weight:bold;font-style:italic;">if</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">text</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">indexOf</span><span style="color:black;font-weight:bold;">(</span><span style="color:#808080;">"ht<b></b>tps colon slash slash "</span><span style="color:black;font-weight:bold;">)</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">>=</span><span style="color:black;"> </span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">)</span><span style="color:black;"> </span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">data</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:black;">text</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:black;">text</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">replace</span><span style="color:black;font-weight:bold;">(</span><span style="color:#808080;">"ht<b></b>tps colon slash slash "</span><span style="color:black;font-weight:bold;">,</span><span style="color:black;"> </span><span style="color:#808080;">"ht<b></b>tps://"</span><span style="color:black;font-weight:bold;">);</span><span style="color:black;">
                        
                        </span><span style="color:#008000;">// Attempt to separate the URL from the surrounding text
    

    if (url = text.match(/([^\s]?)[\s](((https?|ftp):?//|www.|[a-zA-Z0-9]+.com/)[^\s:/<>[]"]+(:[0-9]+/)?[^\s:<>[]"])/)) { var braces = ["()", "{}", "[]", "<>", "''", '""']; while (braces.length) { if (url[1] == braces[0].charAt(0) && (j = url[2].indexOf(braces[0].charAt(1))) >= 0) { var count = url[2].split(braces[0].charAt(1)).length - url[2].split(braces[0].charAt(0)).length; while (count > 0 && url[2].indexOf(braces[0].charAt(1), j + 1) >= 0) { j = url[2].indexOf(braces[0].charAt(1), j + 1); -- count; } url[2] = url[2].substring(0, j); } braces.shift(); }

                            </span><span style="color:#000080;font-weight:bold;font-style:italic;">while</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">url</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">2</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">length</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">></span><span style="color:black;"> </span><span style="color:red;">0</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">&&</span><span style="color:black;"> </span><span style="color:#808080;">";.!?'"</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">indexOf</span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">url</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">2</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">charAt</span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">url</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">2</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">length</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">-</span><span style="color:black;"> </span><span style="color:red;">1</span><span style="color:black;font-weight:bold;">))</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">>=</span><span style="color:black;"> </span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">)</span><span style="color:black;">
                                </span><span style="color:black;">url</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">2</span><span style="color:black;font-weight:bold;">]</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:black;">url</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">2</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">substring</span><span style="color:black;font-weight:bold;">(</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">,</span><span style="color:black;"> </span><span style="color:black;">url</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">2</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">length</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">-</span><span style="color:black;"> </span><span style="color:red;">1</span><span style="color:black;font-weight:bold;">);</span><span style="color:black;">
                            
                            </span><span style="color:#000080;font-weight:bold;font-style:italic;">var</span><span style="color:black;"> </span><span style="color:black;">j</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:black;">text</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">indexOf</span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">url</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">2</span><span style="color:black;font-weight:bold;">]),</span><span style="color:black;"> </span><span style="color:black;">a</span><span style="color:black;font-weight:bold;">,</span><span style="color:black;"> </span><span style="color:black;">h</span><span style="color:black;font-weight:bold;">;</span><span style="color:black;">
                            </span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">data</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:black;">text</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">substring</span><span style="color:black;font-weight:bold;">(</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">,</span><span style="color:black;"> </span><span style="color:black;">j</span><span style="color:black;font-weight:bold;">);</span><span style="color:black;">
                            </span><span style="color:black;">h</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:black;">url</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">2</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">replace</span><span style="color:black;font-weight:bold;">(</span><span style="color:#8000ff;">/^(ht<b></b>tps?|ftp)\/\//</span><span style="color:black;font-weight:bold;">,</span><span style="color:black;"> </span><span style="color:#808080;">"$1://"</span><span style="color:black;font-weight:bold;">).</span><span style="color:black;">replace</span><span style="color:black;font-weight:bold;">(</span><span style="color:#8000ff;">/^www\./</span><span style="color:black;font-weight:bold;">,</span><span style="color:black;"> </span><span style="color:#808080;">"ht<b></b>tp://www."</span><span style="color:black;font-weight:bold;">);</span><span style="color:black;">
                            </span><span style="color:#000080;font-weight:bold;font-style:italic;">if</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">h</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">indexOf</span><span style="color:black;font-weight:bold;">(</span><span style="color:#808080;">"://"</span><span style="color:black;font-weight:bold;">)</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;"><</span><span style="color:black;"> </span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">)</span><span style="color:black;"> </span><span style="color:black;">h</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:#808080;">"ht<b></b>tp://"</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">+</span><span style="color:black;"> </span><span style="color:black;">h</span><span style="color:black;font-weight:bold;">;</span><span style="color:black;">
                            </span><span style="color:#000080;font-weight:bold;font-style:italic;">with</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">a</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:black;">document</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">createElement</span><span style="color:black;font-weight:bold;">(</span><span style="color:#808080;">"a"</span><span style="color:black;font-weight:bold;">))</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">{</span><span style="color:black;">
                                </span><span style="color:black;">setAttribute</span><span style="color:black;font-weight:bold;">(</span><span style="color:#808080;">"target"</span><span style="color:black;font-weight:bold;">,</span><span style="color:black;"> </span><span style="color:#808080;">"_blank"</span><span style="color:black;font-weight:bold;">);</span><span style="color:black;">
                                </span><span style="color:black;">setAttribute</span><span style="color:black;font-weight:bold;">(</span><span style="color:#808080;">"href"</span><span style="color:black;font-weight:bold;">,</span><span style="color:black;"> </span><span style="color:black;">h</span><span style="color:black;font-weight:bold;">);</span><span style="color:black;">
                                </span><span style="color:black;">appendChild</span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">document</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">createTextNode</span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">url</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">2</span><span style="color:black;font-weight:bold;">]));</span><span style="color:black;">
                            </span><span style="color:black;font-weight:bold;">}</span><span style="color:black;">
                            </span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">parentNode</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">insertBefore</span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">a</span><span style="color:black;font-weight:bold;">,</span><span style="color:black;"> </span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">nextSibling</span><span style="color:black;font-weight:bold;">);</span><span style="color:black;">
                            </span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">push</span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">a</span><span style="color:black;font-weight:bold;">);</span><span style="color:black;">
                            </span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">parentNode</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">insertBefore</span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">j</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:black;">document</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">createTextNode</span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">text</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">substring</span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">text</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">indexOf</span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">url</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">2</span><span style="color:black;font-weight:bold;">])</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">+</span><span style="color:black;"> </span><span style="color:black;">url</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">2</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">length</span><span style="color:black;font-weight:bold;">)),</span><span style="color:black;"> </span><span style="color:black;">a</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">nextSibling</span><span style="color:black;font-weight:bold;">);</span><span style="color:black;">
                            </span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">push</span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">j</span><span style="color:black;font-weight:bold;">);</span><span style="color:black;">
                        </span><span style="color:black;font-weight:bold;">}</span><span style="color:black;">
                    </span><span style="color:black;font-weight:bold;">}</span><span style="color:black;">
                    
                    </span><span style="color:#000080;font-weight:bold;font-style:italic;">if</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">data</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">length</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">></span><span style="color:black;"> </span><span style="color:red;">200</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">&&</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">!</span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">data</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">match</span><span style="color:black;font-weight:bold;">(</span><span style="color:#8000ff;">/\s/</span><span style="color:black;font-weight:bold;">))</span><span style="color:black;"> </span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">[</span><span style="color:red;">0</span><span style="color:black;font-weight:bold;">].</span><span style="color:black;">parentElement</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">style</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">wordBreak</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">=</span><span style="color:black;"> </span><span style="color:#808080;">"break-all"</span><span style="color:black;font-weight:bold;">;</span><span style="color:black;">
                    
                </span><span style="color:black;font-weight:bold;">}</span><span style="color:black;"> </span><span style="color:#000080;font-weight:bold;font-style:italic;">else</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">{</span><span style="color:black;">
                    </span><span style="color:#008000;">// Make elements with display="none" or visibility="hidden" visible if they have no id and no class
    

    if (e[0].style && e[0].id == "" && e[0].className == "") { with (e[0].style) { if (display == "none" || visibility && visibility != "visible") { display = ""; visibility = "visible"; fontStyle = "italic"; color = "#008000"; } } }

                    </span><span style="color:#008000;">// Add [host.com] after links to third-party websites
    

    if (e[0].nodeType === e[0].ELEMENT_NODE && e[0].tagName == "A" && e[0].hostname > "") { var host, base = e[0].hostname.indexOf(".") > 0 ? e[0].hostname.match(/[^.]+.[^.]+$|[0-9]+.[0-9]+.[0-9]+.[0-9]+$/).pop() : e[0].hostname; if (base == "ac.uk" || base == "co.uk" || base == "gov.uk" || base == "ltd.uk" || base == "net.uk" || base == "org.uk") { if (host = e[0].hostname.match(/[^.]+.[^.]+.[^.]+$/)) base = host.pop(); } if (e[0].host.indexOf(":") >= 0) base += ":" + e[0].host.split(":").pop(); if (pgbase != base) { if (e[0].href == e[0].innerHTML && window.getComputedStyle(e[0]).whiteSpace == "pre") { e[0].title = base; } else { e[0].parentNode.insertBefore(document.createTextNode(" [" + base + "]"), e[0].nextSibling); } } }

                    </span><span style="color:#008000;">// Add child nodes to the list to recursively check all the nodes in the document
    

    if (e[0].hasChildNodes()) { for (j = 0; j < e[0].childNodes.length; ++ j) { if (e[0].childNodes[j].nodeType != e[0].ELEMENT_NODE || (t = e[0].childNodes[j].tagName) != "INPUT" && t != "TEXTAREA") { if (!e[0].childNodes[j].classList || !e[0].childNodes[j].classList.contains("ForumReplyToPostArea")) e.push(e[0].childNodes[j]); } } } } }

        </span><span style="color:black;font-weight:bold;">}</span><span style="color:black;"> </span><span style="color:#000080;font-weight:bold;font-style:italic;">catch</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">)</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">{</span><span style="color:black;">
            </span><span style="color:black;">console</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">log</span><span style="color:black;font-weight:bold;">(</span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">name</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">+</span><span style="color:black;"> </span><span style="color:#808080;">": "</span><span style="color:black;"> </span><span style="color:black;font-weight:bold;">+</span><span style="color:black;"> </span><span style="color:black;">e</span><span style="color:black;font-weight:bold;">.</span><span style="color:black;">message</span><span style="color:black;font-weight:bold;">);</span><span style="color:black;">
        </span><span style="color:black;font-weight:bold;">}</span><span style="color:black;">
    </span><span style="color:black;font-weight:bold;">});</span><span style="color:black;">
    

    } catch (e) { console.log(e.name + ": " + e.message); }

  • (cs) in reply to huppenzuppen
    huppenzuppen:
    Am I the only one who finds it difficult to read the article when a Jenga tower is constantly collapsing on the right?
    No, you are not. This is Web Usability 101, Remy. No ****ing constant animations in content areas.
  • (cs) in reply to huppenzuppen
    huppenzuppen:
    Am I the only one who finds it difficult to read the article when a Jenga tower is constantly collapsing on the right?

    After reading your comment I had to go back to the article to look for the tower... which means I've completed my training for ignoring ad like behavior. muhahahah.

    Either that or I'm simply not a lemming is easily distracted.

  • mv (unregistered) in reply to huppenzuppen

    ProTip: Hit ESC to stop animated GIFs

  • anonymous (unregistered) in reply to mv
    mv:
    ProTip: Hit ESC to stop animated GIFs
    I wish. Firefox removed that feature around version 9000 or so.
  • (cs)

    So is this an overly-obfuscated article about healthcare.gov, or is it an overly-obfuscated article based on the hundreds of other articles already posted that are similar?

  • (cs) in reply to anonymous
    anonymous:
    mv:
    ProTip: Hit ESC to stop animated GIFs
    I wish. Firefox removed that feature around version 9000 or so.

    Even IE9 has that. Wow.

  • (cs)

    I've found that if you print the offending web page, for some reason the gif files are no longer animated.

    So once printed, take a picture of the printout on a wooden table, then copy that picture and open it up through your browser. Guaranteed to work for any browser.

  • anonymous (unregistered) in reply to DrakeSmith
    DrakeSmith:
    I've found that if you print the offending web page, for some reason the gif files are no longer animated.

    So once printed, take a picture of the printout on a wooden table, then copy that picture and open it up through your browser. Guaranteed to work for any browser.

    I tried opening it through my browser but it told me I need to use Word to open a "docx" file.

  • My thought exactly. (unregistered) in reply to Nagesh
    Nagesh:
    This story is entirely faked.

    My thought exactly.

  • anonymous (unregistered) in reply to My thought exactly.
    My thought exactly.:
    Nagesh:
    This story is entirely faked.

    My thought exactly.

    A man of few words, and even fewer thoughts.

  • (cs) in reply to InternetTroll
    InternetTroll:
    You're a manager, aren't you. Right? Yeah, you definitely sound like a manager. "Why tell the client the truth when we can bury them under false platitudes." Also, who let a manager on TDWTF?
    Sounds like what our government has been doing for about 2 months on their IT project (I'm waiting for WTFs on it!).

    Note to others: Please don't get political in replies, it will overwhelm things.

  • mv (unregistered) in reply to John
    John:
    minim:
    huppenzuppen:
    Am I the only one who finds it difficult to read the article when a Jenga tower is constantly collapsing on the right?
    Right click, Inspect element. Right click, Delete node.

    Chrome is a nice browser.

    OH MY DOG THAT'S AWESOME!

    Or just hit ESC - in any major browser

  • mv (unregistered) in reply to anonymous
    anonymous:
    mv:
    ProTip: Hit ESC to stop animated GIFs
    I wish. Firefox removed that feature around version 9000 or so.
    Wow, you're right! I hadn't noticed because most animated GIFs are ads, and my ad blocker blocks them.

    Why would they remove something like that?

  • anonymous (unregistered) in reply to mv
    mv:
    anonymous:
    mv:
    ProTip: Hit ESC to stop animated GIFs
    I wish. Firefox removed that feature around version 9000 or so.
    Wow, you're right! I hadn't noticed because most animated GIFs are ads, and my ad blocker blocks them.

    Why would they remove something like that?

    Well, Esc also aborted XMLHttpRequest and WebSocket connections, which basically resulted that if an Ajaxy page was taking too long to load and the user pressed Esc, the entire page was basically broken.

    Reasoning that the user wanted it to stop loading visible stuff, but still have the Ajax keep functioning behind the scenes, they fixed that bug (https://bugzilla.mozilla.org/show_bug.cgi?id=614304), but now the Esc key no longer stops playing animated GIFs either.

    This was filed as a new bug (https://bugzilla.mozilla.org/show_bug.cgi?id=825486) which has been closed as "wontfix" with the note "workaround: use https://addons.mozilla.org/en-US/firefox/addon/superstop/".

  • Free Pascal Lazarus FTW! (unregistered) in reply to anonymous
    anonymous:
    mv:
    ProTip: Hit ESC to stop animated GIFs
    I wish. Firefox removed that feature around version 9000 or so.
    FFS I used to use that when such things bothered me, now on FF25 it doesn't work?! WTF is WRONG with FF devs?! There isn't even a Stop button available in the Customise Toolbar options! Time to ditch this POS it seems :(
  • Martijn (unregistered) in reply to JimM
    JimM:
    MiniMax:
    ... boolean flags as ints ...

    Could be worse, I recently discovered an entirely new way to store boolean values in SQL server: nvarchar(1). An internet cookie to the first person who can guess how the value is encoded in this field ;)

    How about a CMS that doesn't have booleans, so it uses "yes" and "no" strings instead.

  • ¯\(°_o)/¯ I DUNNO LOL (unregistered) in reply to Free Pascal Lazarus FTW!
    Free Pascal Lazarus FTW!:
    FFS I used to use that when such things bothered me, now on FF25 it doesn't work?! WTF is WRONG with FF devs?! There isn't even a Stop button available in the Customise Toolbar options! Time to ditch this POS it seems :(
    ESC key still stops animated gifs in SeaMonkey.
  • File Not Found (unregistered) in reply to JimM

    'Y' = True 'N' = False 'F' = File Not Found

  • Reductio Ad Ridiculousum (unregistered) in reply to SuperousOxide
    SuperousOxide:
    Don't your roll new products out to your small clients first? So if this sort of things happens the damage is more contained.
    Exactly right. One starts w/ a small beta tester. A large one, besides causing c-level headaches when it goes foobar, will also start causing creature feep.
  • S (unregistered) in reply to Hannes
    Hannes:
    The only browser without any feature would be Internet Explorer. ;)

    Nope... every version of IE from 8 onwards has at least basic developer tools built in. They're still not as good as those provided by other browsers, but they're better than nothing.

  • foxyshadis (unregistered) in reply to ObiWayneKenobi
    ObiWayneKenobi:
    Boss is an idiot, and typical boss. We can't admit that we fucked up, because we'd look stupid. Here's a hint bucko: You already look stupid for having software that doesn't work. The best thing to do is damage control, explain there are issues and present an alternative TO THE CLIENT:

    Boss: Okay, Initech, here's the situation (... explain what happened in brief terms). One of our guys says that we can scrap this and give you solid, working software in two months' time, so that's probably the best option. If that's not acceptable we can keep using this existing package and fix things as we go, but that's likely to take longer and be more frustrating for you with the issues.

    Initech: Hmm let me think on that... (decides what option is best for them)

    If you are in such danger of losing your "biggest customer" that you'd go belly up without them, then sorry but you don't belong in business because you have no sustainability at all. If your corporate are so stupid as to not let you take the time to fix garbage so it works, whether that's bug fixes or throwing it away and doing things right, then you have much bigger issues that you should address before worrying about your clients.

    TRWTF is Hiro's brag that he could do it all by himself in 2 months. If that was the case, he could have just as well ripped out the guts of the current one and done it. No, his boss was right, Hiro is exactly the same as every other overconfident rock star wannabe programmer.

    Just like the guy who made the monstrosity he inherited.

  • Hannes (unregistered) in reply to S
    S:
    They're still not as good as those provided by other browsers, but they're better than nothing.

    Same can be said for IE's way of interpreting HTML standards.

  • Tongle (unregistered) in reply to JimM

    I have seen something similar but instead of nvarchar(1) it was about nvarchar(100). Lots of boolean configuration fields stored in one string that looked like: NNNNNNNNNNYNYNYNNYNYNNNNYYYYNNNNNNYYYYYYYYYYYYYYNNNNNNY

  • Jibble (unregistered) in reply to Isikyus
    Isikyus:
    Now this is the kind of thing I look for on this site!

    It will take me a long time to understand why anyone would declare all their variables

    long
    , and all function parameters
    int
    .

    Ah, the joys of a language with no "typedef".

  • Kasper (unregistered) in reply to MiniMax
    MiniMax:
    Like nominally numeric primary keys stored as Strings in the database and passed around as both String and int in code, casted/converted on the spot as needed, boolean flags as ints, etc.
    I am developing for a system, which works just like that. Except in my case it is even worse, as the system is not the least bit consistent about it.

    In some tables they are strings in others they are ints. Additionally in each table, there are different limits on the highest allowed value for this number. The error message you get, by attempting to exceed the maximum varies. One error message if you exceed a 32 bit signed integer, another error message if you stay within that limit, but exceed the other arbitrary limit imposed on this particular table. Of course those two error messages are different depending on whether this particular table uses ints or strings to represent the primary key.

    You think that sounds like a WTF? Well, I haven't really gotten started yet.

    There are two different ways to access the data in these tables. The two different ways do not enforce the same limits. Some of the arbitrary limits are only enforced for data entered through one of these methods, while the other method can exceed the limits. Some of the limits are however enforced through both access methods.

    The limits are also enforced when you edit data. Which means if you create an entry through one interface, then editing it through the other interface has to respect the limit applicable to that second interface. That is a bit tricky, if the primary key used through the first interface was too large for the second interface.

    Luckily there is a way around that problem. There is a per user configuration page, that will give access to change the primary key on existing rows. So each user can choose on which tables, she wants to be able to change primary keys. Though, not all tables are selectable on that configuration page.

    The interesting part about strings whose values are nominally numeric, is that you can be quite inconsistent about it. Thus one table actually allow non-numeric values in the primary key.

    That table allow any character in the windows-1252 character set to be used in the value. Comparison of values is done case-insensitive for characters, which exist in iso-8859-1 and case-sensitive for characters which exist in windows-1252 but not in iso-8859-1.

  • Jasper (unregistered)
    Corporate didn’t use source control.
    This is the biggest WTF in this story.

    RUN, Hiro, RUN AWAY!!

  • Free Pascal Lazarus FTW! (unregistered) in reply to ¯\(°_o)/¯ I DUNNO LOL
    ¯\(°_o)/¯ I DUNNO LOL:
    Free Pascal Lazarus FTW!:
    FFS I used to use that when such things bothered me, now on FF25 it doesn't work?! WTF is WRONG with FF devs?! There isn't even a Stop button available in the Customise Toolbar options! Time to ditch this POS it seems :(
    ESC key still stops animated gifs in SeaMonkey.
    I got around it with the add-on "Active Stop Button" which makes the big X do what it should :)

Leave a comment on “Managed Order Management”

Log In or post as a guest

Replying to comment #:

« Return to Article