• (cs)

    Oh, how I wish that some people here got promoted out of my way... At least the crap levels wouldn't rise..

  • JimmyCrackedCorn (unregistered)

    Perfect example of the Peter Principle in action, and of an organization that doesn't respect 90% of any kind of software process for an enterprise.

    ..and frist.

  • JimmyCrackedCorn (unregistered) in reply to JimmyCrackedCorn

    Doh. I have to type faster!

  • doctor_of_ineptitude (unregistered)

    He got a promotion for his efforts. yay! OTOH, how come Maxime became bullet proof without being a nephew of anyone? Was it blackmail?

    Off-topic: I expected Maxime to be she. Is it a normal name for a Belgian guy?

    Captcha: illum. Illium was fun.

  • Alex the Pretty Good (unregistered)

    "Maxime" is not an unusual French name for a guy.

    And living/working in Belgium myself, I wouldn't be surprised that a French speaking co-worker gets promoted upward before a Dutch speaker with a lot of experience. Especially in Brussels where most financial corporations have their main seats.

    Catchpa "secundum": after all the Flemish are often still treated as secundum citizens.

  • CaptainPenguin (unregistered)

    Err, also, wouldn't a static HashMap cause massive concurrency issues? They're not thread safe from what I know...

  • Skandranon (unregistered) in reply to CaptainPenguin

    "The Get method was called exactly zero times."

    Fortunately, Maxime was clever enough to avoid concurrency issues by never actually using the information in the cache, so it wouldn't matter if threads were overwriting each others information.

  • (cs) in reply to doctor_of_ineptitude
    doctor_of_ineptitude:
    Off-topic: I expected Maxime to be she. Is it a normal name for a Belgian guy?
    In the south of The Netherlands, it's also a male given name. One of the previous ministers of foreign affairs was called Maxime Verhagen. He was a rat too, by the way.
  • (cs) in reply to Skandranon
    Skandranon:
    "The Get method was called exactly zero times."

    Fortunately, Maxime was clever enough to avoid concurrency issues by never actually using the information in the cache, so it wouldn't matter if threads were overwriting each others information.

    doesn't matter the put should also be synchronized, otherwise you can get general map corruption

  • RFoxmich (unregistered) in reply to Skandranon
    Skandranon:
    "The Get method was called exactly zero times."

    Fortunately, Maxime was clever enough to avoid concurrency issues by never actually using the information in the cache, so it wouldn't matter if threads were overwriting each others information.

    Well he was calling get but that introduced mysterious failures so he took it out.

  • faoileag (unregistered)
    the article said:
    The Get method was called exactly zero times.
    Maxime's Cache implementation would have paired nicely with Signetic's Write-Only Memory: http://www.repeater-builder.com/humor/signetics-wom.pdf
  • pecus (unregistered)

    So Tom tackles someone elses problem and gets punished for it?

    He should have let Maxime swing for it.

  • Skandranon (unregistered) in reply to ratchet freak
    ratchet freak:
    Skandranon:
    "The Get method was called exactly zero times."

    Fortunately, Maxime was clever enough to avoid concurrency issues by never actually using the information in the cache, so it wouldn't matter if threads were overwriting each others information.

    doesn't matter the put should also be synchronized, otherwise you can get general map corruption

    But it doesn't matter if the map is corrupted, as it was never read from.

  • (cs) in reply to JimmyCrackedCorn
    JimmyCrackedCorn:
    Perfect example of the Peter Principle in action, and of an organization that doesn't respect 90% of any kind of software process for an enterprise.
    More like the Dilbert principle here: The incompetent one gets promoted.
  • faoileag (unregistered)

    If I were Tom I'd leave the company asap. So a developer can submit jar-files but gets away without submitting a single line of source code? This is bad enough in a mom-and-pop-shop, but for an insurance company it is unacceptable.

    A memory leak in a server is a major inconvenience at least, but there's no guarantee that Maxime's code doesn't create real havoc, for instance with the customer data.

    Once that happens you're in deep **** and you might well end up in court fighting disciplinary action (or dismissal) for damages you didn't cause.

    If Tom's affluent enough, the best thing would be to hand in his notice that same day and do little more than a "peer review" of Maxime's code for the remaining time.

  • (cs) in reply to Skandranon
    Skandranon:
    ratchet freak:
    Skandranon:
    "The Get method was called exactly zero times."

    Fortunately, Maxime was clever enough to avoid concurrency issues by never actually using the information in the cache, so it wouldn't matter if threads were overwriting each others information.

    doesn't matter the put should also be synchronized, otherwise you can get general map corruption

    But it doesn't matter if the map is corrupted, as it was never read from.

    put requires the previous value to be found and returned, this is reading

  • (cs)

    Synchronizing has the additional benefit of slowing down the process even more, especially when called frequently.

    Typical case of keeping yourself in business. After all, if it was hard to write, it should be hard to read and even harder to modify...

  • JM (unregistered) in reply to ratchet freak
    ratchet freak:
    Skandranon:
    ratchet freak:
    Skandranon:
    "The Get method was called exactly zero times."

    Fortunately, Maxime was clever enough to avoid concurrency issues by never actually using the information in the cache, so it wouldn't matter if threads were overwriting each others information.

    doesn't matter the put should also be synchronized, otherwise you can get general map corruption

    But it doesn't matter if the map is corrupted, as it was never read from.

    put requires the previous value to be found and returned, this is reading

    +1. For example, the steaming pile that is https://code.google.com/p/owasp-esapi-java/source/browse/trunk/src/org/owasp/esapi/codecs/HTMLEntityCodec.java?r=343 seems to allow two threads to go into an endless loop, I think because unsynchronized rebucketing during expansion of the HashMap leads to circular linking.

  • (cs) in reply to JM
    JM:

    +1. For example, the steaming pile that is https://code.google.com/p/owasp-esapi-java/source/browse/trunk/src/org/owasp/esapi/codecs/HTMLEntityCodec.java?r=343 seems to allow two threads to go into an endless loop, I think because unsynchronized rebucketing during expansion of the HashMap leads to circular linking.

    yeah I found a blog post where that is explained: http://mailinator.blogspot.nl/2009/06/beautiful-race-condition.html

  • (cs)
    “Tom promoted changes to TTM last week. He must have introduced a memory issue. That’s just what happens with junior developers.”

    “‘Junior?’” Tom repeated. “I’m younger than you, but I have eight years-”

    “It’s clear that you introduced this issue, and you should get to work,” Maxime cut him off.

    “You just put TelPoint and ComPoint into production last Friday,” Tom countered. He tilted his head at the list on the wall.

    “Now Tom, I don’t think we should point fingers,” the boss said.

    Should be followed by, "Well, he just did, why aren't you getting at him for it?".

    Or, "Why don't you tell Maxime that?".

    Or you pull the GAU-8 out of your back pocket and lay waste to the other(*) inhabitants of the room.

    (*) The ones who aren't you.

  • WL (unregistered) in reply to Alex the Pretty Good
    Alex the Pretty Good:
    And living/working in Belgium myself, I wouldn't be surprised that a French speaking co-worker gets promoted upward before a Dutch speaker with a lot of experience. Especially in Brussels where most financial corporations have their main seats.

    It would more depend on whether the boss is speaking French or Dutch, no?

    Sent from an entirely Flemish office :)

  • (cs) in reply to faoileag
    faoileag:
    If I were Tom I'd leave the company asap. So a developer can submit jar-files but gets away without submitting a single line of source code? This is bad enough in a mom-and-pop-shop, but for an insurance company it is unacceptable.
    It probably (depending on the jurisdiction) violates assorted regulatory rules nine ways to Sunday, especially in these days of Sarbanes-Oxley and the like. Not that Belgium is known for a major presence on the World Stage of high finance, but you get the idea...
  • michael (unregistered) in reply to CaptainPenguin
    CaptainPenguin:
    Err, also, wouldn't a static HashMap cause massive concurrency issues? They're not thread safe from what I know...
    Of course not in Maxime's self-coded JVM.
  • faoileag (unregistered) in reply to Steve The Cynic
    Steve The Cynic:
    It probably (...) violates assorted regulatory (...) especially in these days of Sarbanes-Oxley
    Sarbanes-Oxley did come to my mind when I wrote the post, but then it is US legislation and I don't know if similar regulations exist in Belgium. Or, come to think of it, *any* country other than the US.
  • belzebub (unregistered)

    Just a thought: most of us here are developers who do (or at least pretend to) care about their work. Wouldn't it be nice to KNOW which companies are really bad place for software development? Or to know actual names of pointy-haired bosses, moronic coworkers etc. So - you know - we don't end up working there (or with them) thanks to deviously cunning HR personel..

    I know I shouldn't just propose some plan, but I should DO IT. I can't. Sorry.

    But here's the plan: let's just WRITE DOWN THEIR FULL NAMES AND ADDRESSES! Or let's make website for rating company developer-friendliness. Like/Dislike, writing comments.. Something like "+1 good place to work" "-1 here be dragons and pointy-haired bosses".

    I understand that there may be some legal issues.. I do. But I regulary WARN my friends not to go where I suffered. Wouldn't you like to KNOW what other developers think about the mysterious "new dynamicaly growing company which is fun to work in" ? Wouldn't you like to know that your promising candidate for project lead is notoriously moronic pointy-haired boss?

    I know I would..

    If we could somehow add it to stackexchange.com's Carriers 2.0.. that would be cool :)

  • SHA (unregistered) in reply to faoileag
    faoileag:
    Steve The Cynic:
    It probably (...) violates assorted regulatory (...) especially in these days of Sarbanes-Oxley
    Sarbanes-Oxley did come to my mind when I wrote the post, but then it is US legislation and I don't know if similar regulations exist in Belgium. Or, come to think of it, *any* country other than the US.

    SOX separates duties, as long the dude isn't moving the jars from integration/test to production, they're fine. As far source control, I can only hope that they're using something good like svn, git, cvs, et. al. and not clearcase, pvcs, sourcesafe, et. al.

    Captcha illum: This promotion story hits so close to home it makes me illum.

  • (cs)

    Well, no good deed goes unpunished.

  • radarbob (unregistered)
    Maxime is getting promoted

    Ah, the PTSD flashbacks. Gee, wouldn't it be nice if the Peter Principle was only about the code. In a previous life our IT dept had a very successful management in-breeding program. I called my boss's boss "the black hole" because ideas & suggestions went in and nothing came out. A contemporary of his, a division chief, protected her incompetence through the poison pen. Woe betides (s)he who exhibits initiative.

  • Charles F. (unregistered)
    His variable names and comments were in French, a language spoken by only 40% of Belgians.
    When will people get it? Always comment in Esperanto.
  • (cs) in reply to belzebub
    belzebub:
    Just a thought: most of us here are developers who do (or at least pretend to) care about their work. Wouldn't it be nice to KNOW which companies are really bad place for software development? Or to know actual names of pointy-haired bosses, moronic coworkers etc. So - you know - we don't end up working there (or with them) thanks to deviously cunning HR personel..

    I know I shouldn't just propose some plan, but I should DO IT. I can't. Sorry.

    But here's the plan: let's just WRITE DOWN THEIR FULL NAMES AND ADDRESSES! Or let's make website for rating company developer-friendliness. Like/Dislike, writing comments.. Something like "+1 good place to work" "-1 here be dragons and pointy-haired bosses".

    I understand that there may be some legal issues.. I do. But I regulary WARN my friends not to go where I suffered. Wouldn't you like to KNOW what other developers think about the mysterious "new dynamicaly growing company which is fun to work in" ? Wouldn't you like to know that your promising candidate for project lead is notoriously moronic pointy-haired boss?

    I know I would..

    If we could somehow add it to stackexchange.com's Carriers 2.0.. that would be cool :)

    Already exists.

    http://www.glassdoor.com/index.htm

  • No Name (unregistered)

    It's called the FUMU Principle.

    'Fuck Up, Move Up'

  • Bill Coleman (unregistered)

    It's not the Peter Principle, but the Inverse Peter Principle. The Peter Principle is that "Everyone rises to their own level of incompetence." The Inverse Peter Principle is "The competent don't rise -- they have to stay where they are to do the work."

  • faoileag (unregistered) in reply to belzebub
    belzebub:
    Or let's make website for rating company developer-friendliness. Like/Dislike, writing comments..
    Let me break this to you gently: such websites already exist.

    And if you use them to find out whether or not a specific company makes a great place to work at, you will find out that the larger the company, the more diversified the opinions.

    Or in short: employee A's hell is heaven for employee B.

    The next problem is that of choice. I could (and in the past did) "float", i.e. I moved freely from one end of the country to the other. If, on the other hand, you have built a house, have to feed a family and perhaps care for an elderly relative, then it doesn't matter much if a company 500 mls away is a nicer workplace, you stay where you are and try to make the best out of the regional offerings.

    I've met a lot of people who said "I would leave, if I could". And I've seen companies that seemed to bank on that - that people could not, or at least were very reluctant, to leave.

    But for the pleasure of all of us, there exists this site, The Daily WTF. Where we can vent our anger by telling others about all the wtfs happening at our place or just lean back and enjoy the grim stories, sure in the knowledge that they couldn't possibly happen where we work :-)

  • faoileag (unregistered) in reply to Charles F.
    Charles F.:
    His variable names and comments were in French, a language spoken by only 40% of Belgians.
    When will people get it? Ĉiam diri en Esperanto.
    There. FTFY.
  • Tom (unregistered) in reply to faoileag

    This is 'Tom' here. I did leave the company. In fact, I was already negotiating with my current employer when all of this went down. I would't say Maxime was promoted, but he did get away with it by moving to another division of the company. A ex-collegue of mine told me later that he left not to long after I left.

    I submitted a whole bunch of WTF's about my experience with this guy. The author made a sort of 'best-of' compilation-story out of it. The memoryleak-source was in svn, but he did check-in 3th party jars on another location. Also did he promote things to production without tagging the source.

    The code in the story is not the actual code, but it does show the concept perfectly. There was a static map storing stuff for almost each request, without ever deleting anything. It made the complete server grind to a hold in the course of 2 weeks.

  • Popeye (unregistered)

    It's not possible to have a static class in Java. That's the real WTF.

  • Philip Newton (unregistered) in reply to Popeye
    Visionary Leak:
    It's not possible to have a static class in Java. That's the real WTF.

    Sure you can, if it's a nested class. See Map.Entry, for example: a static class nested inside java.util.Map.

  • Esse (unregistered) in reply to Popeye
    Popeye:
    It's not possible to have a static class in Java. That's the real WTF.

    Perhaps it's a nested class, copy-and-pasted into every class of the project? Makes sense, in a WTF kinda way.

  • Tom (unregistered) in reply to Esse
    Esse:
    Popeye:
    It's not possible to have a static class in Java. That's the real WTF.

    Perhaps it's a nested class, copy-and-pasted into every class of the project? Makes sense, in a WTF kinda way.

    This is 'Tom' speaking. In reality, there was 1 static HashMap in a piece of code in a certain projectA. One day, projectB needed to integrate with projectA (A needed some functionality from B), so my friend 'Maxime' copy-pasted a large chunk of projectA-source into projectB. From then on, there were 2 static HashMaps trying to bring down the server... A bad case of copy-paste oriented design.

  • PleaseBeHonest (unregistered) in reply to Alex the Pretty Good

    Are you kidding? In most corporations, the upper management is always dutch speaking. In Brussels, in the administration, there are quotas for promotion to have equal numbers, it's much easier to get promoted as dutch speaking since there are way less people.

    Flemish as secundum citizens is just a blatant lie or blindness with an agenda.

  • Scourge of Programmers! (unregistered)

    This is one example of the dilbert principle in action. Unfortunately we have seen this happen too many times. The person with the most political clout gets away with doing things that others shudder to think about.

  • O.G. (unregistered) in reply to faoileag
    faoileag:
    Charles F.:
    His variable names and comments were in French, a language spoken by only 40% of Belgians.
    When will people get it? Ĉiam komentariu en Esperanto.
    There. FTFY.
    And FTFY too.
  • ¯\(°_o)/¯ I DUNNO LOL (unregistered) in reply to faoileag
    faoileag:
    If I were Tom I'd leave the company asap. So a developer can submit jar-files but gets away without submitting a single line of source code? This is bad enough in a mom-and-pop-shop, but for an insurance company it is unacceptable.
    But you see, unless you run it through an obfuscator (which Maxime was clearly too incompetent to do), you can simply run a decompiler on the jar files! And as a bonus, all of those useless French-language comments are removed!
  • (cs) in reply to CaptainPenguin
    CaptainPenguin:
    Err, also, wouldn't a static HashMap cause massive concurrency issues? They're not thread safe from what I know...

    You're assuming that the application has more than one thread. Or that Maxime even knows what threads are.

  • SomeGuy (unregistered) in reply to faoileag
    faoileag:
    Steve The Cynic:
    It probably (...) violates assorted regulatory (...) especially in these days of Sarbanes-Oxley
    Sarbanes-Oxley did come to my mind when I wrote the post, but then it is US legislation and I don't know if similar regulations exist in Belgium. Or, come to think of it, *any* country other than the US.

    Even in the US, depending on the type of company and products sold, SOX compliance my not be required as insurance is not a securities product and therefore not regulated by the SEC.

  • Rollyn01 (unregistered)

    So...

    1. Screw up.
    2. Blame the other guy.
    3. Let other guy fix it.
    4. Convince the boss that the other guy wouldn't have fixed the problem without your contribution.
    5. Suggest promoting the other guy to do the work you should have done right.
    6. Get promoted to do nothing.

    I don't know about you guys, but I can clearly see I've been screwing up all my life.

  • copse1 (unregistered) in reply to Bill Coleman
    Bill Coleman:
    It's not the Peter Principle, but the Inverse Peter Principle. The Peter Principle is that "Everyone rises to their own level of incompetence." The Inverse Peter Principle is "The competent don't rise -- they have to stay where they are to do the work."

    I tend to go with '‘Ah well, they say that the biggest turds always rise to the top of the septic tank’.

    https://www.simple-talk.com/blogs/2006/08/28/the-septic-tank/

    ratis: Maxime is what a rat is

  • eVil (unregistered)

    Did the names get changed? If not, can everyone who works with a guy called Maxime link him to this article... if he's the wrong guy, then fine, and if he's the right guy, he'll probably pretend he's not (but secretly he'll know the shame).

  • (cs)

    Brilliant. This is the sort of WTF I get up for in the evening.

  • (cs)

    -totally expected Maxime to be female -why did Tom wait for the code to be committed before running it on a test server? -what does a "junior" guy like Tom have access to promote to production? -I can't even tell what that's a picture of -is there no one who manages the servers with the slightest hint of a clue around to figure out what's taking up so much memory? -"We think that we found the dev that's taking up so much memory, but we don't have an employee by the name of Sun Microsystems." -I've worked with "island" developer before. it's hard to get them to work with other devs, but it's always wise to give them isolated environments as well. their apps go on their on production servers, so when those crash, and they will, you know who to blame

Leave a comment on “Visionary Leak”

Log In or post as a guest

Replying to comment #:

« Return to Article