• David Wright (unregistered) in reply to Design Pattern

    [quote user="Design Pattern"][quote user="JamesQMurphy"] ... (of course you can do it in MS SQL if you use a cursor) [/quote]

    TRWTF is using Cursors.

    And if Richard didn't, he was missing out a trick.

  • Anonymous (unregistered) in reply to Not a Lawyer
    Not a Lawyer:
    You forgot the part of the story where Richard sues the pants (and other assorted items of clothing) off of Stuart and perhaps Paul for violating Richard's copyright on his bletcherous losing festering pile of copyrighted sludge.
    This is a moot point, if they had the source code to modify in the first place then obviously it was sold under terms that allowed them to modify it.
    Not a Lawyer:
    Just because you can see the software doesn't necessarily mean you're allowed to modify it.
    Actually it does because if it had been sold under terms that disallow modification then why would they give them the source code in the first place??? Clearly they would have provided binaries only if this was the terms, no? Sure, I'm reading between the lines here since we don't know the contract but seriously, what sort of idiot software company would supply source code if the contract stipulated that it could not be modified? They're just going to trust that the customer doesn't modify it? No way, there's not a chance this would happen in my opinion. And the article makes it perfectly clear that there were .NET binaries and code beyond the ASPX pages, so it's clear that a lot of the system could have been supplied in binary form without source code if that was the terms of the contract.
  • Paul (unregistered) in reply to not so humble

    Ouch ouch ouch ouch ouch my eyeballs

  • Drew (unregistered) in reply to JamesQMurphy
    SCSimmons:
    Well, that sucks. What if you need that functionality for some reason? Say, for instance, that you ... um ...

    (pondering)

    ... wanted to damn your immortal soul to Hell for all eternity? Why won't Microsoft let you just do it? Huh?

    Simple. Microsoft wants your soul. Why would they allow you to damn your soul to Hell? For all eternity? When you can instead damn your soul to EULA for all eternity?

    That would be bad business!

  • (cs) in reply to Not a Lawyer
    Not a Lawyer:
    You forgot the part of the story where Richard sues the pants (and other assorted items of clothing) off of Stuart and perhaps Paul for violating Richard's copyright on his bletcherous losing festering pile of copyrighted sludge.

    Just because you can see the software doesn't necessarily mean you're allowed to modify it.

    For his own uses? IANAL either, but shouldn't simple customizations in your production environment (like adding data to a table) be allowed?

    Still, it's this part that got me:

    ...give the source code to the client...
    The article's a little vague about it, so I'll admit I'm only assuming this means they gave actual ownership of the code to Stuart. But I'm also assuming that you can charge a lot more if you are selling ownership of the code in addition to the work itself. Obfuscate the code enough, and you can practically guarantee continued business with that client.

  • Anonymous (unregistered) in reply to trwtf
    trwtf:
    Yes, I call them "consultants" as well. Sounds so much nicer that way.
    I find they get offended if you call them by their official appellation of "blood sucking leeches".
  • trwtf (unregistered) in reply to Anonymous
    Anonymous:
    trwtf:
    Yes, I call them "consultants" as well. Sounds so much nicer that way.
    I find they get offended if you call them by their official appellation of "blood sucking leeches".

    Oh. You mean actual consultants. Sorry, I thought... Oh, silly me. Never mind.

  • Bill's Kid (unregistered) in reply to Design Pattern
    Design Pattern:
    JamesQMurphy:
    I just tried in SQL Server 2005. Can't do it there either.
    well the following does work:
    exec ('select * from table1 ; select * from table2')
    But how do we define a string containing a select statement for each table in the database? Closest so far:
    select ('select * from ' + name + '; ') from sysobjects where type='U'
    
    But it's not a single string, it's a result set!

    If only we had MySQLs GROUP_CONCAT!

    So it might be possible in MySQL, a database that supports more WTFs than any other database known to humanity (MUMPS begs to differ!).

    (of course you can do it in MS SQL if you use a cursor)

    declare @tableList varchar(500)

    select @tableList = coalesce(@tableList + '; ', '') + 'selct * from ' + name from sys.tables

    select @tablelist

  • drusi (unregistered) in reply to trwtf
    trwtf:
    WhiskeyJack:
    Sometimes when people charge high prices it's because they really don't want the job, but if the client is really willing to pay, then at least they get something for it. Personally I call that the "F-U" price.

    I really hope you don't use that cursed abbreviation in actual speech. There's little in this world more pathetic than a grown man who would like to use the word "fuck" but dares not. (hey, at least it's a different sort of language nit-picking)

    Congratulations! You're being pretentious over swearing! As such, you have entered my top ten saddest Internet Complainers ever.

  • (cs) in reply to Anonymous
    Anonymous:
    trwtf:
    Yes, I call them "consultants" as well. Sounds so much nicer that way.
    I find they get offended if you call them by their official appellation of "blood sucking leeches".
    I'm not so sure; I used to work for a consulting firm and I had quite a few colleagues that would probably just laugh at that.

    If you really want to annoy them, call them "contractors"; I'm not sure why, but that always seems to eat away at them, or at least in my experience. I was lectured many times after using the terms interchangeably. "Consultants aren't contractors!" That's what I was always told.

  • trwtf (unregistered) in reply to drusi
    drusi:
    Congratulations! You're being pretentious over swearing! As such, you have entered my top ten saddest Internet Complainers ever.

    Pretentious? Moi?

  • Ian (unregistered)

    There's too many bold names, I can't tell who the good guy's supposed to be!

  • uuang (unregistered)

    Yay for Paul

  • aking (unregistered) in reply to kikito
    kikito:
    "Sometimes, bad software can be profitable"

    Just to give some context to that phrase: Selling drugs or killing people can be profitable sometimes, too.

    Remind me, what are the two industries that refer to their customers as "Users"?

  • (cs)
    OP:
    In fact, six of the tables only contained two columns, the first the ID, and the second a value. The original author had simply added another table any time he needed to add another property to the inventory system.

    If both columns are foreign keys, then that's what fourth normal form basically means ya?

  • Bill's Kid (unregistered) in reply to aking
    aking:
    kikito:
    "Sometimes, bad software can be profitable"

    Just to give some context to that phrase: Selling drugs or killing people can be profitable sometimes, too.

    Remind me, what are the two industries that refer to their customers as "Users"?

    McDonald's refers to their customers as users. Those who visit 3 time or more a week are "Super Heavy Users" and those who go once or twice are "Heavy Users"

  • MrPibb (unregistered)

    I think I'm working on a "Richard" project right now!

    It has all these elements. Aspx pages, a few classic pages and a bunch of PHP, MySQL and SQL-Server. And everything from code design to database design is the mess you'd expect. Mine doesn't have any Java, although I do have an Access database as well.

    But do people really do this on purpose? I guess so.

    In my case I am about the 6th different contractor hired for the site during it's lifetime, each of whom seemed to have very different ideas but the main problems I think are due to the (poor) attempt to merge two different sites into one (company merger) coupled with the last two years where it was off-shored to a company who apparently got paid by the line. Incompetence surely but not really malicious. This story sounds more just evil for evil sake.

  • Dave (unregistered) in reply to TheThing

    [quote user="TheThing"]At the very least, you can't say TRWTF is (php/apache/IIS/java/.Net).

    No, but you could say TRWTF isd (php+apache+IIS+java+.Net)

  • trwtf (unregistered) in reply to Dave

    [quote user="Dave"][quote user="TheThing"]At the very least, you can't say TRWTF is (php/apache/IIS/java/.Net).

    No, but you could say TRWTF isd (php+apache+IIS+java+.Net)[/quote]

    Yeah, with the first one you get a divide-by-zero.

  • not so humble (unregistered) in reply to Paul

    Think that hurts? first saw this at Red Gate but can only find it here:

    http://www.sqlservercentral.com/blogs/philfactor/archive/2009/08/14/evil-code.aspx

  • (cs) in reply to drusi
    drusi:
    trwtf:
    WhiskeyJack:
    Sometimes when people charge high prices it's because they really don't want the job, but if the client is really willing to pay, then at least they get something for it. Personally I call that the "F-U" price.

    I really hope you don't use that cursed abbreviation in actual speech. There's little in this world more pathetic than a grown man who would like to use the word "fuck" but dares not. (hey, at least it's a different sort of language nit-picking)

    Congratulations! You're being pretentious over swearing! As such, you have entered my top ten saddest Internet Complainers ever.

    It's a Major Award. 'tis the season

  • (cs) in reply to trwtf
    trwtf:
    I really hope you don't use that cursed abbreviation in actual speech. There's little in this world more pathetic than a grown man who would like to use the word "fuck" but dares not. (hey, at least it's a different sort of language nit-picking)

    That's how the term popped into my head, and I felt the humour was in the fact that it conjures up the obvious meaning without, well, being obvious about it. And it can be said in (reasonably) polite company.

    Like a few months ago we were looking at quotes for some simple concrete foundation work. For the exact same work, Company A quoted $8,000, company B quoted $10,000, Company C quoted $27,000. Company C clearly wasn't actually interested in doing it.

  • Cosine (unregistered) in reply to Zylon

    I weep for the future.

  • neminem (unregistered)
    WhiskeyJack:
    Sometimes when people charge high prices it's because they really don't want the job, but if the client is really willing to pay, then at least they get something for it. Personally I call that the "F-U" price.
    Heh, yep - our company once sold a piece of software like that. A number of years ago, some major client asked for something our CIO didn't feel like allocating programmers to implement, but the client kept asking, so our company threw out a ridiculously enormous price for the feature. When the client agreed to pay, we were sort of stuck; the feature got implemented.

    As it turns out, after word got out, a bunch of other people wanted the feature too, and now it's being sold as a real addon for the current version that only costs a small fortune (we sell to government organizations and giant megacompanies; we don't do "cheap"), and was reimplemented so that it wasn't hacked together in a few days.

    But yeah, it does seem like the real wtf was that he only charged 250, to fix something that horrific, without checking how much the alternative would have been. Sounds like he could have requested a few thousand, and they would have been just as ecstatic about the price.

  • Ben (unregistered) in reply to Design Pattern
    Design Pattern:
    JamesQMurphy:
    I just tried in SQL Server 2005. Can't do it there either.
    well the following does work:
    exec ('select * from table1 ; select * from table2')
    But how do we define a string containing a select statement for each table in the database? Closest so far:
    select ('select * from ' + name + '; ') from sysobjects where type='U'
    
    But it's not a single string, it's a result set!

    If only we had MySQLs GROUP_CONCAT!

    So it might be possible in MySQL, a database that supports more WTFs than any other database known to humanity (MUMPS begs to differ!).

    (of course you can do it in MS SQL if you use a cursor)

    No one knows any relational algebra anymore, what a shame.

    It wouldn't be a union, it'd be a cartesian product, of every row of every table. Obviously the way you'd actually use it would be:

    SELECT a.foo, b.bar, c.qux
    FROM *
    WHERE a.this = b.that and b.that = c.those

    The optimizer can throw out the unused tables, and it's effectively a shortcut for FROM a, b, c.

    It's not in any SQL standard, and it's not in any vendor implementation I've heard of.

  • (cs) in reply to trwtf
    trwtf:
    WhiskeyJack:
    Sometimes when people charge high prices it's because they really don't want the job, but if the client is really willing to pay, then at least they get something for it. Personally I call that the "F-U" price.

    I really hope you don't use that cursed abbreviation in actual speech. There's little in this world more pathetic than a grown man who would like to use the word "fuck" but dares not. (hey, at least it's a different sort of language nit-picking)

    From a guy who's name is "trwtf" on a site called "thedailywtf"?

    Cut the guy some slack; at least he didn't write the word out with those cursed asterisks like some people do, those rotten bastards.

  • trwtf (unregistered) in reply to neminem
    neminem:
    [ But yeah, it does seem like the real wtf was that he only charged 250, to fix something that horrific, without checking how much the alternative would have been. Sounds like he could have requested a few thousand, and they would have been just as ecstatic about the price.

    If he was really concerned about it, the real WTF was delivering the fix before determining the price. If they'd balked at his $250, was he then going to go back and break it? Sounds like he was just being reasonable, though: he saw the solution, it was easy to implement, so he did it. Perhaps being reasonable is the real WTF? No - he's now a kid fresh out of school with a client who's going to talk about how he just went in and looked at this mess and got the job done in an afternoon, ie, he's a genius, and he's a reasonable person, too. I don't think he was thinking ahead that far, but I think his reflex was a good one.

  • trwtf (unregistered) in reply to boog
    boog:
    From a guy who's name is "trwtf" on a site called "thedailywtf"?

    Oh, gee, is that the time? I gotta go... :)

    Caught me, boog. I'm hoist, fair and square. Although in my defense, I never thought much about the username, I just typed in the three characters that came to mind. I'd never actually pronounce the name of the site as "wtf" - for one thing, at three syllables, there's not a lot of words that "w" is actually short for, in speech. (the name was extended when someone else posted under it. it seemed the right way to preserve the brand. :) ) Back in Oregon, I used to hear traffic reports referring to highway "99 double-yoo" instead of "99 West", it always made me wince a little.

  • (cs) in reply to WhiskeyJack
    WhiskeyJack:
    Like a few months ago we were looking at quotes for some simple concrete foundation work. For the exact same work, Company A quoted $8,000, company B quoted $10,000, Company C quoted $27,000. Company C clearly wasn't actually interested in doing it.
    In my experience, consultants rarely want to turn down work. My guess is that they quote such a high number as a way of over-budgeting their time for the project. That way they don't have to re-negotiate later.

    Still, even if the actual work is minimal, they'll stretch it out (and call it "being thorough") to use up all of the time they budgeted and get the most they can out of you. Some particularly unethical consultants will even bill you for the over-budgeted time that they are on-site while they are secretly doing remote work for other clients (and billing them simultaneously).

  • Anonymous (unregistered) in reply to trwtf
    trwtf:
    neminem:
    [ But yeah, it does seem like the real wtf was that he only charged 250, to fix something that horrific, without checking how much the alternative would have been. Sounds like he could have requested a few thousand, and they would have been just as ecstatic about the price.

    If he was really concerned about it, the real WTF was delivering the fix before determining the price.

    If I was Stuart and Paul asked me how much the original company was going to charge for the fix, I would say "F-U in the A, Paul, just give me your price. Don't F me around, I don't like being S'd up the A by opportunistic A-H's".

  • Anonymous (unregistered) in reply to neminem
    neminem:
    But yeah, it does seem like the real wtf was that he only charged 250, to fix something that horrific, without checking how much the alternative would have been. Sounds like he could have requested a few thousand, and they would have been just as ecstatic about the price.

    Chances are Paul had no idea whatsoever that the consultant would chage fees in that range; and being fresh thought that $250 was a reasonable fee. Certainly, what the consultant was going to charge is obsene, so no wonder Paul didn't think to add a zero to his fee.

  • Anon (unregistered) in reply to Anonymous
    Anonymous:
    Not a Lawyer:
    You forgot the part of the story where Richard sues the pants (and other assorted items of clothing) off of Stuart and perhaps Paul for violating Richard's copyright on his bletcherous losing festering pile of copyrighted sludge.
    This is a moot point, if they had the source code to modify in the first place then obviously it was sold under terms that allowed them to modify it.

    Doubly moot since judging from the article, it doesn't look like he changed the source code at all, he just added some entries to a database table.

  • Jay (unregistered) in reply to trwtf
    trwtf:
    WhiskeyJack:
    Sometimes when people charge high prices it's because they really don't want the job, but if the client is really willing to pay, then at least they get something for it. Personally I call that the "F-U" price.

    I really hope you don't use that cursed abbreviation in actual speech. There's little in this world more pathetic than a grown man who would like to use the word "fuck" but dares not. (hey, at least it's a different sort of language nit-picking)

    Of course one of the things in this world that is even more pathetic is a grown man who is unable to express himself without resorting to vulgarity. It's never been exactly clear to me how the ability to use words related to sexuality and/or excrement in totally inappropriate contexts marks someone as a "real man". I've met plenty of people who could save a lot of time if they just said at the beginning of a conversation, "Please assume that every noun that I use for the remainder of this discussion is modified by the adjective <insert your choice vulgarity here>". Then they could leave it out and cut the total number of words they have to say by at least 25%.

  • Design Pattern (unregistered) in reply to Bill's Kid
    RandomUser423706:
    I fear this can lead to little else but great evil, but (for MSSQL): EXEC sp_msforeachtable 'SELECT * FROM ?'
    Bill's Kid:
    declare @tableList varchar(500)
    

    select @tableList = coalesce(@tableList + '; ', '') + 'selct * from ' + name from sys.tables

    select @tablelist

    Actually had to change this to:
    declare @tableList varchar(8000)
    

    select @tableList = coalesce(@tableList + '; ', '') + 'select * from ' + name from sysobjects where type='U'

    exec (@tableList)

    but yes, it works and makes me shiver!

    So we have two options:

    1. Using an undocumented stored procedure in a production system vs.
    2. Using side-effects and intermediate values of a variable during calculation of the value of said variable.

    Cannot really decide which is more WTF-worthy but both are evil-expert-WTFery!

  • trwtf (unregistered) in reply to Jay
    Jay:
    trwtf:
    I really hope you don't use that cursed abbreviation in actual speech. There's little in this world more pathetic than a grown man who would like to use the word "fuck" but dares not.

    Of course one of the things in this world that is even more pathetic is a grown man who is unable to express himself without resorting to vulgarity. It's never been exactly clear to me how the ability to use words related to sexuality and/or excrement in totally inappropriate contexts marks someone as a "real man".

    Now that's a kettle of fish of a different color. Yes, I'd rather talk to someone who can speak without recourse to bodily functions usually performed in private, of course. But the abbreviation is the worst of both worlds. To use the abbreviation is to say "I realize this word is offensive to many people, but, on second thought, I'm going to use it anyway".

  • Matt (unregistered) in reply to F
    F:
    Maybe so, but you'd need to work from a proper spec. Which you'd presumably have to reverse-engineer from the existing disaster. If it's as bad as it's painted, that would be a major achievement for a rookie developer.

    Not to mention the fact that one of the most critical aspects to these kinds of projects is getting the requirements nailed down precisely. And if it's one thing I wish Comp Sci courses would add to their curriculum, it's requirements gathering. But then, most professors would rather play with their Pumping Lemmas and Context Free Grammars.

  • Matty (unregistered)
    Scott Selikoff:
    Navigating past the piles of database instances and the ASP
    FTFY
  • (cs) in reply to b_i_d
    b_i_d:
    Great story.

    And one every software developer learns at one point or another in his life (usually the hard way):

    Sometimes you just don't try to understand it. Just go with it, hack in your changes to the best of your knowledge and call it a day.

    And then one learns the importance of backing up everything first.

  • Matt (unregistered) in reply to WhiskeyJack
    WhiskeyJack:
    Sometimes when people charge high prices it's because they really don't want the job, but if the client is really willing to pay, then at least they get something for it. Personally I call that the "F-U" price.

    I do that with my company. There are certain customers that aren't worth the hassle so I quote them an inflated price. If they don't pay, then my sanity and time is saved. If they pay, then at least the job is worth it.

    Same goes for certain product configurations. There are some that are a real PITA and not symbiotic with my core business. So I say "fuck it" and put a huge price on them. Once in a while someone bites and it's worth it then. The ones that don't bite keep my sanity in check.

  • (cs) in reply to Jay
    Jay:
    trwtf:
    WhiskeyJack:
    Sometimes when people charge high prices it's because they really don't want the job, but if the client is really willing to pay, then at least they get something for it. Personally I call that the "F-U" price.
    I really hope you don't use that cursed abbreviation in actual speech. There's little in this world more pathetic than a grown man who would like to use the word "fuck" but dares not. (hey, at least it's a different sort of language nit-picking)
    Of course one of the things in this world that is even more pathetic is a grown man who is unable to express himself without resorting to vulgarity. It's never been exactly clear to me how the ability to use words related to sexuality and/or excrement in totally inappropriate contexts marks someone as a "real man". I've met plenty of people who could save a lot of time if they just said at the beginning of a conversation, "Please assume that every noun that I use for the remainder of this discussion is modified by the adjective <insert your choice vulgarity here>". Then they could leave it out and cut the total number of words they have to say by at least 25%.
    Fair enough, but I'm not sure how your comment applies. It seems trwtf was specifically referring to someone who wants to cuss and doesn't (through abbreviating), not someone who just doesn't cuss when they could. If you're abbreviating or substituting "non-swear" words, then clearly the intent is there, so why clean it up? Everyone knows what you really mean already.

    Example: I once dated a mormon girl, and she was appalled by my use of the phrase "Oh my god". Yeah, really. So I said "Oh my gosh" from that point on, which she was totally fine with. I didn't understand then, and still don't now. The syntax is different, but the meaning of the two phrases is exactly the same.

  • Englebart (unregistered) in reply to Bill's Kid
    Bill's Kid:
    aking:
    kikito:
    "Sometimes, bad software can be profitable"

    Just to give some context to that phrase: Selling drugs or killing people can be profitable sometimes, too.

    Remind me, what are the two industries that refer to their customers as "Users"?

    McDonald's refers to their customers as users. Those who visit 3 time or more a week are "Super Heavy Users" and those who go once or twice are "Heavy Users"

    as in drug "users".

    McDonald's considers themselves to be "pushers" and the food to be the "drugs."

    I know they have trained me to buy their $1 any size sugar laden drinks. I just read an article 10 minutes ago that says rats prefer sugar water to intravenous cocaine.

    Squeak!

  • Dan (unregistered) in reply to Matt
    Matt:
    if it's one thing I wish Comp Sci courses would add to their curriculum, it's requirements gathering.

    I actually had to take a course that the university called "Software Engineering" as part of the cirriculum. It was about requirements gathering, work planning, and UML modeling. Maybe it did some good, but I'm not really sure. The most definite thing I learned is that the time it takes to gather requirements grows exponentially with the number of people involved. And it will still be under-specified when coding starts anyway.

  • (cs) in reply to Matt
    Matt:
    And if it's one thing I wish Comp Sci courses would add to their curriculum, it's requirements gathering.
    Thank you.

    It seems like the only way most developers know how to gather requirements is to just ask the customer what the requirements are. Of course you're going to end up with incomplete and erroneous "requirements"; that's because it's not a list of requirements, it's a wish list.

    Techniques for requirement elicitation are a topic I wish there was way more discussion about in academia and online (not here though, unless Alex does a soapbox article on it someday).

  • Richard (unregistered)
    Navigating passed the piles of database instances ...

    ^ past.

    Learn to English - you no English so good.

  • EvenMoreAnonymous (unregistered)

    Here we have a freelance coder, fresh out of college with no work experience, complaining that a working system is too complicated. Any good reason to believe him? Because usually when this happens, TRWTF is the kid who has never seen a real system in his life.

    As to why the system is supposedly horrible, we have some handwaving about what Richard supposedly does on other apps (though not this one specifically), and then a single SQL statement which is obviously not valid SQL and therefore probably wasn't in the application. And a database with only 8 tables, where the developer supposedly added a table for each property, and that's where most of the data is? Is there one huge table and no normalization, or what exactly?? This description doesn't make much sense.

    In fact, this story makes no sense. It may have started with the idea of a consultant who wrote complex systems for job security, which might have provided some real WTF moements, but it's obviously been filled out into an article by somebody who has never written any code in their life.

  • luis.espinal (unregistered) in reply to Jeff
    Jeff:
    (Job) Security through obscurity?

    Sadly, I've seen it in real life as well (and way too often.) The software industry is plagued by both incompetence and lack of ethics.

  • luis.espinal (unregistered) in reply to Dan
    Dan:
    Matt:
    if it's one thing I wish Comp Sci courses would add to their curriculum, it's requirements gathering.

    I actually had to take a course that the university called "Software Engineering" as part of the cirriculum. It was about requirements gathering, work planning, and UML modeling. Maybe it did some good, but I'm not really sure. The most definite thing I learned is that the time it takes to gather requirements grows exponentially with the number of people involved. And it will still be under-specified when coding starts anyway.

    My soft.eng. undergraduate course was supposed to be about requirements gathering, planning and process. But in the end it was just a capstone project with PowerBuilder - nothing wrong with a capstone project, but it cannot be a substitute for an actual software engineering course.

    It wasn't until I took a grad-level soft. engineering course that we actually saw proper coverage of software engineering topics. Lucky that I took it; otherwise, I would have had to learn those concepts cold-turkey on the job.

    CompSci schools that do not properly cover soft.engineering in favor of a capstone project (as opposed to say, provide both!), they do a great disservice to students. Obviously, one really starts to learn when we work for real, but there are some things that, in hindsight, are very fundamental and that should be covered more appropriately in school.

  • Kjella (unregistered)

    “Look Paul, you’re a life saver. This is great! I thought nobody would be able to deal with it. How much do we owe you?” Stuart responded.

    Now this is the real WTF, if it's not just the story being spiced up. Any company that doesn't agree on the rates up front is insane - even if the work is no cure, no pay you still agree on what the pay is. Same with the coder, though if you don't actually have to give anything before they pay even that is saner.

  • ÃÆâ€â„ (unregistered)
    With a badly mangled screen shot that had been printed, laid on a wooden table, photographed, printed again, scanned, and emailed by hand , Paul set out to understand the application
    FTFY
  • Duke of New York (unregistered)

    If you have commented on this article please send me $1,000 for reading your comment. If I reply to your comment, please send an additional $4,000.

Leave a comment on “The Unmanaged Stock Management System”

Log In or post as a guest

Replying to comment #:

« Return to Article