• brassattax (unregistered) in reply to biziclop
    biziclop:

    I had to deal with a library like that. We started off with v26-v32 when suddenly a new branch called v36 emerged but we still got bugfixes for v32 (labelled v32a-v32l). From v36 we progressed with the second branch v38-v44 (even numbers only), and a brand new one (odd numbers between v37-v49), v49 continued to live on as versions v491-v499 and
    finally v500 came which progressed to v530, then we have thrown away the whole library.

    Of course no changelog had been maintained, the secret knowledge of versions was passed on by spoken words, we were just like the druids of old.
     

    A library?  Now you're anonymizing.  Surely you're talking about Linux. 

  • Robbak (unregistered) in reply to Kemp
    Kemp:

    Reminds me of that Fight Club quote:

     

    Narrator: A new car built by my company leaves somewhere traveling at 60 mph. The rear differential locks up. The car crashes and burns with everyone trapped inside. Now, should we initiate a recall? Take the number of vehicles in the field, A, multiply by the probable rate of failure, B, multiply by the average out-of-court settlement, C. A times B times C equals X. If X is less than the cost of a recall, we don't do one.
    Business woman on plane: Are there a lot of these kinds of accidents?
    Narrator: You wouldn't believe.
    Business woman on plane: Which car company do you work for?
    Narrator: A major one.

    I recall that being a major point in a large lawsuit - was it the Ford Pinto - a cute little car that had a tendency to explode in minor rear-end collisions (and, co-incidentally, had also tended to slip from Park to Reverse all by itself!). No, I think it was another, but it's name escapes me. It was air-cooled, had bushes instead of crankcase bearings, was rear-engined, and had too light a rear axel, which tended to break at speed. It's the case that brought Ralph Nader into the public eye, with his book, "Unsafe at any Speed". All of that was enough info for a google search: the car was the Corsair.

     Him, wikipedia states that it was the Pinto.

    Anyway, in the lawsuits about that car, the calculation that you quoted was revelaled. It lead the jury to impose crushing Punitive Damages. Still, companies still seem to use that excuse today, and enormous damages are still occasionally imposed. It seems that the judge reduced the Punitive Damages back to within that calculation's boundries. Hmm. Alive and well, I think.

  • (cs) in reply to Brad
    Anonymous:
    Anonymous:

    Management believed that testing was unnecessary since the customers were just going to run the software themselves anyway.  They would find the bugs and call us. 

    The canard "user's make the best testers" is true, it's just that usually it's accepted that if you actually practiced this, you'd be out of business.  Apparently in this case, the user's have no choice but to use 3 Stooge Inc's software.  Is there a monopoly here or is this an opportunity waiting?
     

     

    By "this", I assume you mean having users be the only testers, and furthermore having them "test" in a production environment.

     

  • Anonymous (unregistered) in reply to MBV

    > Everything I've ever heard of the banks disagrees with these kind of articles.

    I lost faith in banking software when the ATM I was using decided to spend its spare time during the transaction to print several receipts of big ascii art smiley faces...

     

  • phs3 (unregistered) in reply to Robbak
    Anonymous:

    I recall that being a major point in a large lawsuit - was it the Ford Pinto - a cute little car that had a tendency to explode in minor rear-end collisions (and, co-incidentally, had also tended to slip from Park to Reverse all by itself!). No, I think it was another, but it's name escapes me. It was air-cooled, had bushes instead of crankcase bearings, was rear-engined, and had too light a rear axel, which tended to break at speed. It's the case that brought Ralph Nader into the public eye, with his book, "Unsafe at any Speed". All of that was enough info for a google search: the car was the Corsair.

     Him, wikipedia states that it was the Pinto.

    The Pinto was the one that had the rear-end explosion problem. The Corsair was the "Unsafe At Any Speed" car, 12 or so years earlier.

    ...phsiii

    Captcha: enterprisey

    Why, yes, I am, thank you... 

  • (cs) in reply to XMLord
    Anonymous:

    Few things are as bad as a programmer/manager. I remember one discussion with my manager once that dealt with our web reports:

    Him:  Why are there so many objects?

    Me: Because we want to separate the data layer, the presentation layer and our specific business rules.

    Him:  But all you do is take the data from the result set, put it into some other object and then use that object to generate the page.

    Me: Exactly, this way -

    Him:  Why can’t you just take the result set and send it to the JSP?

    Me: I can, but -

    Him:  That would be much more efficient!

    Me: You know what? That’s brillant!

    I disagree, I think this is actually a good strategy.  You will always, at some point, have to map knowledge of the result set's identifiers and datatypes into your presentation layer.  Concentrating all this code into a separate object mapping data layer allows it to be tested independently.  I find code that does not use an intermediary object will invariably end up having many typobugs and invalid casts as the system evolves.

  • (cs) in reply to phs3

    Ford Pinto?!?!?!? 

    the word "Pinto" here in brasil, means the same as "Dick"... 

    "Oh look! it's the new Ford's Dick!"

    i guess that's why they never released it here...

  • (cs) in reply to MBV

    Anonymous:
    Ehm, Alex: how well did you check this? I really can't believe this is actually happening to some major stock market. It is just too obvious, and I really can't imagine any stockmarket would accept that. Or things must be very different in Europe than they are in the USA. Everything I've ever heard of the banks disagrees with these kind of articles.

    When i read today's post I thought they were talking about an old company I worked for. They had some major software that ran at the london stock exchange, they would lose money all the time, I mean the software would. I have to say I believe everything in this story is 100% true based on my own experience.

    To me your reply sounds like upper mangement response to ignorance and technical incompetance. Banks are the worst full of clowns and cowboy consultants

     Everything I've ever heard of the banks totally confirms this kind of article

     

  • (cs)

    And the company still has customers?

  • anonymous (unregistered)

    "After all, the Certain Developer followed the software development methodology pioneered by The Executive Three (President, VP, CTO)"

     

    It's the 3 Retardeers 

  • Michael (unregistered)

    They really need to get the management out of the release cycle. They should also invest in version control. Not the software, but the discipline.

     

    They Make it Up,

    They Make it Interesting,

    They Make it GOLD,

    They should make it away...
     

    CAPTCHA: tps - tyranical property syndrome 

  • Anonymous (unregistered) in reply to rmg66
    Anonymous:
    Anonymous:
    Anonymous:

    Him:  That would be much more efficient!

     There's a real theoretic truth to that.

    Are you being sarcastic?

    Because frankly it *would* be more efficient. And the only reasion to follow the division of labor described by Anonymous would be so that it would fit in with and already defined model.

    Now if the manager didn't know about or care about the design model, that would be a WTF. 

     I totally agree with you. However, the real big WTF is that current software development tools do not offer adequate support for explicit design pattern implementations.
     

  • Anonymous (unregistered) in reply to Robbak
    Anonymous:
    Kemp:

    Reminds me of that Fight Club quote:

     

    Narrator: A new car built by my company leaves somewhere traveling at 60 mph. The rear differential locks up. The car crashes and burns with everyone trapped inside. Now, should we initiate a recall? Take the number of vehicles in the field, A, multiply by the probable rate of failure, B, multiply by the average out-of-court settlement, C. A times B times C equals X. If X is less than the cost of a recall, we don't do one.
    Business woman on plane: Are there a lot of these kinds of accidents?
    Narrator: You wouldn't believe.
    Business woman on plane: Which car company do you work for?
    Narrator: A major one.

    I recall that being a major point in a large lawsuit - was it the Ford Pinto - a cute little car that had a tendency to explode in minor rear-end collisions (and, co-incidentally, had also tended to slip from Park to Reverse all by itself!). No, I think it was another, but it's name escapes me. It was air-cooled, had bushes instead of crankcase bearings, was rear-engined, and had too light a rear axel, which tended to break at speed. It's the case that brought Ralph Nader into the public eye, with his book, "Unsafe at any Speed". All of that was enough info for a google search: the car was the Corsair.

     Him, wikipedia states that it was the Pinto.

    Anyway, in the lawsuits about that car, the calculation that you quoted was revelaled. It lead the jury to impose crushing Punitive Damages. Still, companies still seem to use that excuse today, and enormous damages are still occasionally imposed. It seems that the judge reduced the Punitive Damages back to within that calculation's boundries. Hmm. Alive and well, I think.

     
    Actually, it was the Corvair. The Corsair is a plane

  • (cs) in reply to Brad
    Anonymous:

    The canard "user's make the best testers" is true, it's just that usually it's accepted that if you actually practiced this, you'd be out of business.  Apparently in this case, the user's have no choice but to use 3 Stooge Inc's software.  Is there a monopoly here or is this an opportunity waiting?

    Well, some users actually want to be testers. Of course not when buying of-the-shelf software, but when a large system is made specifically for them, they want to monitor the progress (not by trusting the "95% finished" reports, but hands-on) and they want to be able to give feedback early (i.e. when it runs into the development budget and is not considered a change request with costs). Obviously, there is the challenge that such feedback can complicate the project, overturning plans and invalidating the design. So many project managers might prefer the sink-or-swim approach.

  • Grimble Gromble (unregistered) in reply to MBV

    Anonymous:
    Ehm, Alex: how well did you check this? I really can't believe this is actually happening to some major stock market. It is just too obvious, and I really can't imagine any stockmarket would accept that. Or things must be very different in Europe than they are in the USA. Everything I've ever heard of the banks disagrees with these kind of articles.

    I've worked with US, European and Asian banks and exchanges for <i>quite some time</i> and I really have no idea how the above poster comes by his wacky ideas.  Maybe it's some kind of religious cult, or perhaps it's a drug in the water that gives people faith in the financial system?  Maybe the poster attended some kind of 'merchant banking boot camp' at the age of 5, and there was indoctrinated into believing in stable, well-managed financial markets?  Or maybe he isn't really a human, but some kind of alien whose million-year quest is to log onto forums across the galaxy and be sarcastic?  Or perhaps 'everything he's ever heard of the banks' simply consists of one homeless guy who stands at a street corner and yells "Banks generally produce and use a high quality of software!" all day.

    A more interesting question would be 'why does the finance industry have such a high tolerance for unstable software compared to the other industries'?  And it's answerable; it has to do with competitiveness, a tendency to believe in 'the next big thing', and the fact that when disaster occurs nobody actually directly dies (investors may lose money but investing was their decision).  It also has to do with the particular relationship between IT and business in the relevant institutions.

     

     

     

  • Anonomous (unregistered) in reply to MBV

    This does happen, you would be surprised what banks accept. Software that leads the day has been described as like being beaten with a wet towel in a customer survey. I found it rather funny when the system I worked on sudenly had to be made work so that a reboot wasnt required every night, programming quidence up to then had been agh sure its grand we will just bounce the server. In the end the bank accepted the need for a reboot as magic memory leaks happened all over the shop.


    I find it hard to belive that someone hasnt been sucessfull in stepping into the fray in financial software, however I think its impossible as bank trusts the big vendors who deliver shit on a stick.

     

    And just to let you know  its happens Europe, Asia and bless your cotton socks in America too.

  • Anonymous Coward (unregistered) in reply to Unklegwar

    Pffft you!

    How about a "platform architect" in a C# shop who spends close to 2 hours arguing how interfaces slow down execution "because you're now passing everything through an interface class" [sic]?  Same guy never heard of ORM, hates normalization "because it clutters the view in SQL Server Enterprise Manager", uses quasi-hungarian notation (all non-String variables are prefixed with the ever-so-helpful 'obj', while Strings are of course 'str'), somehow manages to write a design document without a single UML (all diagrams consist of boxes, where box can be anything from a class to a module to a server to a datastore to another physical location - yes, I'm serious), and thinks MVC is a type of packaging material (the only pattern he ever heard of is pinstripe).  Oh, and let's not forget he never, *ever*, used a memory profiler ("you can see memory usage in task manager") or a CPU tracer ("you can see CPU usage in task manager").

     

    Sadly, I could go on...

  • (cs) in reply to skippy

    skippy:
    I think everyone's worked at "this" company before.  By "this" company I mean any small company that uses their own version of customer-driven, unattainable-dates-promised-by-salesman development methodology to push stuff out as fast as possible withouth ANY regard to thought or planning.  I left mine less than a year ago, but last I heard was that they were on their 6th or 7th "re-release" of their latest version...

     I'm working at "this" company at the moment. It's not quite as bad as the one in today's WTF, but most of our clients have slightly differing versions of the software etc.

     Needless to say, unless things improve I won't be here much longer (i.e., I'd better start looking for new jobs pronto...)  
     

  • Metaspace (unregistered) in reply to biziclop
    biziclop:
    Kemp:

    Not unlike last week's article, Paul's company develops financial software that's used by major stock markets.

    Reminds me of that Fight Club quote:

     

    Narrator: A new car built by my company leaves somewhere traveling at 60 mph. The rear differential locks up. The car crashes and burns with everyone trapped inside. Now, should we initiate a recall? Take the number of vehicles in the field, A, multiply by the probable rate of failure, B, multiply by the average out-of-court settlement, C. A times B times C equals X. If X is less than the cost of a recall, we don't do one.
    Business woman on plane: Are there a lot of these kinds of accidents?
    Narrator: You wouldn't believe.
    Business woman on plane: Which car company do you work for?
    Narrator: A major one.

    In an ideal world you'd also have to add the value of lost sales due to bad publicity to the costs of not calling back.
     

    ...assuming that the puiblic get's to know about the accident and it's cause. Therefore, in the real world, variable D is added to the multiplication, representing the probability the company will receive the blame for the accident.

  • Someone in the financial industry in the US (unregistered)

    Just my $0.02...

    Traders/Brokers/Market Makers have the attention span of a gnat; all they can see is the next trade. Forget next year, next quarter, or tomorrow; long term planning for these folks involves their next trip to the bathroom.

    When they ask for software, they want it for the trade they need to do for the customer they have on the phone *now*. Everyone gets paid by bonus (financial folks, software managers, programmers). Nobody cares that the software will be better if we take the time to do it right; they get paid better if they deliver more quickly. Don't worry about fixing the bugs, we can circumvent QA and source repository requirements to get the emergency-release-du-jour/hour out more quickly.

    Multiply this across frequent releases, business users, development groups, etc, and you wind up with unmaintainable spaghetti that is re-org'd to the next manager to deal with. If you try to fix stuff, you are the one slowing things down.

    After a few times of getting dinged at bonus time, you relent, and just try to keep your little corner as clean as possible, and insulate yourself from other peoples' messes as best you can. For me personally, it's a matter of professional pride, so I put in the time to do my stuff correclty, and always add a wrapper layer to puke legible errors to deflect the blame to the system/component that caused the error, instead of the one that detected it.

    Not saying I approve, only that I've lived with it for a long time.

  • (cs) in reply to Anonymous Coward

    Anonymous:
    uses quasi-hungarian notation (all non-String variables are prefixed with the ever-so-helpful 'obj', while Strings are of course 'str')

    O_o wtf?!

    So "someInt" would be "objSomeInt", and "someChar" would be "objSomeChar"?

     WTF is the point of that?  If you're going to use Hungarian notation (for some reason), use it in a way that's at least somewhat helpful to the reader.

  • Dr_Barnowl (unregistered) in reply to Anonymous Coward

    > all diagrams consist of boxes, where box can be anything from a class to a module to a server to a datastore to another physical location - yes, I'm serious

    This sounds rather like the chap we had a few years back ; that was at a VB shop,  so the obj and str nonsense would make sense....

     His design documents consisted of the same Word document, with certain key words replaced ; class names, tables, etc.

    His diagrams consisted of - yes, five identical, plain, titled boxes stacked on top of each other.

    Not possessed of a ginger buzzcut and a bizarre fetish for Thai ladyboys, is he?
     

  • (cs)

    Well, there's simple way to handle this... As everyone knows, Make's syntax has quite a few WTFs of its own. These days, a lot people consider Make somewhat outdated, and are moving to other build systems like Ant, SCons, Rake, and other heavy competitors. The push is clearly toward more organic, programmatic build environments with sane, programmer-friendly syntaxes...

    "Good morning, gentlemen. The programmers have been hard at work to roll out our new build process to increase the flexibility and programmer-friendliness. It uses GNU Autotools, with some small additions, because we felt bare Autotools wasn't powerful enough. There's additional backend codenamed Nondependant Object Oriented Development Linking Environment, which does a lot of magic for us, generating the M4 scripts for autoconf automatically and patching the resulting "configure" scripts on the fly. Each module has been ported to use this new build process already; we made it as flexible as possible, so each developer could choose their own scripting language for their own modules - it's time to pick the best tool for the job. We have quite a bit of Perl there, some Ruby, a few PHP configuration scripts, a few Python ones, a couple were in raw C++, a few in Lua, a few even used funny ones like ObjectRexx and that funny guy from the basement wrote his 4000-line configuration package in a hybrid of RPG and Fortran IV, like the rest of his module. The way his module converts IBM JCL to Bourne shell for inclusion in "configure" is truly a marvel to behold... Oh, and thanks to the fact we hired that one  GNU expert who had nothing better to do, you can now play text adventure games while configuring the build. Neat, huh?"

    There. The VP can then write their own build module in Basic for all they care... 

  • (cs) in reply to Anonymous Coward
    Anonymous:

    Pffft you!

    How about a "platform architect" in a C# shop who spends close to 2 hours arguing how interfaces slow down execution "because you're now passing everything through an interface class" [sic]?  Same guy never heard of ORM, hates normalization "because it clutters the view in SQL Server Enterprise Manager", uses quasi-hungarian notation (all non-String variables are prefixed with the ever-so-helpful 'obj', while Strings are of course 'str'), somehow manages to write a design document without a single UML (all diagrams consist of boxes, where box can be anything from a class to a module to a server to a datastore to another physical location - yes, I'm serious), and thinks MVC is a type of packaging material (the only pattern he ever heard of is pinstripe).  Oh, and let's not forget he never, *ever*, used a memory profiler ("you can see memory usage in task manager") or a CPU tracer ("you can see CPU usage in task manager").

     

    Sadly, I could go on...

     

    I consider ORMs and UML pretty much crap as well. 

  • Calli Arcale (unregistered)

    Dear sweet lord....

    Of this, are software configuration management's nightmares made.  However, despite being in SCM at a company that actually thinks its worth having somebody doing that full-time, I still see this kind of attitude.  Sometimes it's on programs with insane schedules, such that there's is absolutely no way in hell to test before shipping, so they have been known to test and ship *concurrently*.  And of course then there are the engineers who think "it's just an R&D program, why do we need configuration control?"  Or the one engineer I dealt with who was convinced rigorous testing was unneccesary because the product was not "safety critical".  (It was a product designed to be an autonomous lethal weapon, so I had a pretty hard time with that argument.  Fortunately, my bosses sided with me on that one.)

  • Cody (unregistered) in reply to Calli Arcale

    Anonymous:
    ...the product was not "safety critical"... an autonomous lethal weapon...

    Maybe he meant it's okay if it killed things accidentally since that was its job anyway?  Then again, maybe he was just scared to be anywhere near it when it was tested.

  • (cs) in reply to Calli Arcale
    Anonymous:

    Dear sweet lord....

    Of this, are software configuration management's nightmares made.  However, despite being in SCM at a company that actually thinks its worth having somebody doing that full-time, I still see this kind of attitude.  Sometimes it's on programs with insane schedules, such that there's is absolutely no way in hell to test before shipping, so they have been known to test and ship *concurrently*.  And of course then there are the engineers who think "it's just an R&D program, why do we need configuration control?"  Or the one engineer I dealt with who was convinced rigorous testing was unneccesary because the product was not "safety critical".  (It was a product designed to be an autonomous lethal weapon, so I had a pretty hard time with that argument.  Fortunately, my bosses sided with me on that one.)

     

    You worked on the ED209? 

  • The Captain Answers (unregistered) in reply to Unklegwar
    Anonymous:

    Pfff. My last manager/director was some sort of engineer by training. Didn't know how to code for snot. But that didn't stop him from occasionally finding some "free" software (open source or shareware with source) and "integrating" it into our code base. He'd make a total mess complete with memory leaks, horrible logic, performance black holes and every other godawful disaster you can think of. Then he'd grow tired of it, or just get to the point where he couldn't figure out why it wouldn't work right. Then he'd pass it off to a coworker of mine, declaring it should only take "a week or so" to polish up.  Recipient developer would work several 80 hour weeks and weekends in a row to get the thing cleaned up, and then get dinged on his review for poor performance and "inability to estimate and meet deadlines".

    <just wondering> 

    Doesn't a PBH (performance black hole) crush all ones and zeroes at the event horizon and eventually spew out a thin line of green dollars at the speed of light? (in the competition's direction, of course).

    </just wondering> 

    if(CAPTCHA.equals("whiskey")) EndWith.Cheers();

     

  • LionsPhil (unregistered) in reply to Cody
    Anonymous:

    Anonymous:
    ...the product was not "safety critical"... an autonomous lethal weapon...

    Then again, maybe he was just scared to be anywhere near it when it was tested.


    YOU NOW HAVE TEN SECONDS TO COMPLY.
  • (cs) in reply to Chris F
    Chris F:
    Anonymous:

    Few things are as bad as a programmer/manager. I remember one discussion with my manager once that dealt with our web reports:

    Him:  Why are there so many objects?

    Me: Because we want to separate the data layer, the presentation layer and our specific business rules.

    Him:  But all you do is take the data from the result set, put it into some other object and then use that object to generate the page.

    Me: Exactly, this way -

    Him:  Why can’t you just take the result set and send it to the JSP?

    Me: I can, but -

    Him:  That would be much more efficient!

    Me: You know what? That’s brillant!

    I disagree, I think this is actually a good strategy.  You will always, at some point, have to map knowledge of the result set's identifiers and datatypes into your presentation layer.  Concentrating all this code into a separate object mapping data layer allows it to be tested independently.  I find code that does not use an intermediary object will invariably end up having many typobugs and invalid casts as the system evolves.

    I think the meaning of "brillant" is lost on you.

  • (cs) in reply to TeeSee
    TeeSee:
    I think the meaning of "brillant" is lost on you.

    Noit really.  Brillant conveys your conclusion but not your reasoning.  Have a nice day.

     

  • Matt K (unregistered) in reply to MBV

    I worked with Paul Tomblin at this place.

    It is absolutely true.  I also worked later at an investment bank that used the product.  They had 3 people dedicated full time to supporting this one product.  6 people supported all other software used on the trading floor.

  • Rich (unregistered) in reply to ptomblin

    Hmmmmm..... upstairs office on the main street of Canandaigua?

     

    If so, I inteviewed there.  The interview primarily consisted of them asking me about C string manipulation functions, and then asking to write a quicksort.

     

    I quickly decided that any company that thought that asking a developer with 10+ years of experience *only* about syntax and CS-101 programming tasks were appropriate interview questions was probably not someplace I'd want to work.

     

     

  • Paps (unregistered) in reply to anonymous

    Well i am sure that the Certain Developer must have made some real progress in the company!!! after he did what was asked of him.......

  • (cs) in reply to Rich
    Anonymous:

    Hmmmmm..... upstairs office on the main street of Canandaigua?

    They used to be there, but they moved closer to Rochester before I was hired.  I believe I was the only developer ever hired there who *wasn't* asked to write a sort algorithm in the interview, which is just as well because I didn't remember that CS-101 shit.

     

  • (cs) in reply to icelava

    icelava:
    And the company still has customers?

     

    I wonder if they have a "pointy-haired" boss?

  • David Masover (unregistered)

    I don't think anyone else has suggested this...

    Put unit tests in the Makefiles, and do test-driven development.

    It's not an excuse to ship broken code, but at least this way, it'll be more likely that the make "won't work" if the build is actually broken.

  • ELIZA (unregistered) in reply to phs3
    phs3:
    Anonymous:
    I recall that being a major point in a large lawsuit - was it the Ford Pinto - a cute little car that had a tendency to explode in minor rear-end collisions (and, co-incidentally, had also tended to slip from Park to Reverse all by itself!). No, I think it was another, but it's name escapes me. It was air-cooled, had bushes instead of crankcase bearings, was rear-engined, and had too light a rear axel, which tended to break at speed. It's the case that brought Ralph Nader into the public eye, with his book, "Unsafe at any Speed". All of that was enough info for a google search: the car was the Corsair. Him, wikipedia states that it was the Pinto.
    The Pinto was the one that had the rear-end explosion problem. The Corsair was the "Unsafe At Any Speed" car, 12 or so years earlier....phsiiiCaptcha: enterpriseyWhy, yes, I am, thank you... 
    The Corvair was the one that slightly oversteered instead of grossly understeering, which with car-naive drivers is a good thing given that dilemma, but not with American drivers: American drivers took a sophisticated and well-engineered car, to American cars what the Volkswagen Beetle was to European cars, and steered it as if it were the period equivalent of the Oldsmobile Toronado and subsequently acted surprised when it failed to understeer and consequently spun out or flipped over under the titanic control inputs. But then again, some cars were reputedly withdrawn from the US market because some idiots hit the accelerator rather than the brake and blamed the resulting accident on the vehicle.

Leave a comment on “MAKEing Fools' GOLD”

Log In or post as a guest

Replying to comment #:

« Return to Article