• (cs)

    You can't be too forward with disaster. You kinda have to play hard to get; make subtle hints that let disaster know you're interested. Then, see how disaster reacts and proceed from there.

  • (cs)

    Quadruple panic mode: data is sent to a dot matrix printer guarded by a crocodile infested moat?

  • (cs) in reply to DropDeadThread

    Quintuple panic mode: The computer blinks the text "OH FUCK US" in big red letters. Then, it actually cries.

    Also, by panic mode 15 (at least), some goats are gonna need to be sacrificed.

  • Schnapple (unregistered)

    "VB application ...needs to be rock solid"

    And pretty much the whole thing was downhill from here...

  • Russ (unregistered)

    I plead the fith!

  • (cs)

    "Sadly, the developers behind this system are really nice and, to be honest, have been successful (so far as corporate is concerned) every year."

    All hail generateRandomDataToFoolCorporate().

    Of course that function also failed and the intern just invented the data.

  • Alex (unregistered)

    The WTF is the fact that real database: Microsoft Access, doesn't have quotes around "real".

  • Barf 4Eva (unregistered) in reply to Schnapple
    Schnapple:
    "VB application ...needs to be rock solid"

    And pretty much the whole thing was downhill from here...

    Y U Trollin? :P

    But honestly... Can somebody answer me this...

    I normally don't develop in VB, but honestly, if we were talking about the differences of c# vs vb.net, I never have to PInvoke anything anyways, a few minor differences in supported keywords (using statement, etc), and woopdie doo... what's the biggest difference between the two of them?

    I don't believe there is a big difference. At all. Except that VB.NET syntax is ugly as hell. It's almost as hot as C# when you put the paper bag over VB.NET.............

  • Become a member now (unregistered)

    See, NPR listeners, your spring drive dollars help everyone. Not only do your contributions help keep great programming like "Car Talk" on the air, you also help support local businesses that write software like this. So lines are open, please call now. We have a daily pledge package goal of $20k, and with each membership at the bronze level and above, you get a free tote bag and a travel coffee mug. At the gold level and above, a signed copy of Peter Sagal's latest book!

  • Kuba (unregistered)

    That's the problem with the usual corporate "if it ain't broke, don't fix it attitude" -- things can be completely broken, yet they appear not to be. I'm oh so happy to work in a place where we do things right -- maybe after a few iterations, think extreme programming, but they do come out right in the end...

  • Jeff (unregistered) in reply to Schnapple

    VB has a bad reputation for enterprise level software, but coded well, it can be rock solid.

    What I saw, as a C programmer "forced into the VB world in the 90s, was a slew of horrible programming practices implemented by first time coders.

    I did like the quip regarding using Access as a real database though :)

  • JT (unregistered) in reply to Barf 4Eva
    Barf 4Eva:
    Schnapple:
    "VB application ...needs to be rock solid"

    And pretty much the whole thing was downhill from here...

    Y U Trollin? :P

    But honestly... Can somebody answer me this...

    I assume he was refering to all version of VB before .NET, and whilst I agree that it's a foul abomination of a language it can actually stable. There are in fact several (probably more) major European broadcasters who control transmission using a (large) app written in VB5 that runs flawlessly for months/years at a time...

    You should see the code though, it really, really hurts me.

  • protected static (unregistered) in reply to Barf 4Eva

    Well... Given that the OP is talking about a five-year time span and 'upgrading' to MS Access, I'd give it even odds that the app is actually VB5 or 6, and not VB.NET. That said...

    what's the biggest difference between the two of them?

    Do you have all your switches set properly? Option Strict is on, VB6 compatibility is off? Then there's very little difference apart from the syntax, and the MSIL produced by a C# app and a VB.NET app will be almost indistinguishable.

    (Almost. C# does some things more efficiently than VB.NET, and VB.NET's system hooks trade some inefficiencies for ease of access to Win32 APIs...)

    OTOH, if Option Strict is off, or VB6 compatibility is on, then forget it - the MSIL produced by the C# compiler is far more efficient that that produced by VB.NET.

  • (cs) in reply to JT
    JT:
    I assume he was refering to all version of VB before .NET, and whilst I agree that it's a foul abomination of a language it can actually stable.
    It can stable what? Horses? I'm glad to hear you found a use for it. Heh, just kidding. It's always possible to make a pig fly, as shown by your European broadcaster example.
  • (cs) in reply to Alex
    Alex:
    The WTF is the fact that real database: Microsoft Access, doesn't have quotes around "real".
    The real WTF is that everyone understands sarcasm without textual formatting cues.
  • Bill Curnow (unregistered)
    jjeff1:
    The database contained dozens of stored procedures for no apparent reason. During testing, they found deadlocks occurring constantly. After blaming the database server (the same one they’d been using for years), they modified/removed most of the stored procedures, upon which the system started operating mostly normally.

    Oh dear. "For no apparent reason" suggests that there were a number of stored procedures that weren't being used and which should simply be deleted. Looking at the rest of what you wrote you meant something more along the lines of "Stored Procedures!?! [rolling eyes] Why on earth are you using those things?"

    Stored Procedures improve performance, maintenance and security. Rather than removing most of the stored procedures, why not simply fix the issues that were causing the deadlocks. You know what those reasons are, they're in the trace, but I'm betting they were caused by bad or missing indexes, dates and numbers being stored in Char fields, missing locking hints and bad WHERE clauses.

  • (cs)

    And thanks to the title of this article, I have the Molly Hatchet song in my head.

    For the record, this is a good thing.

  • SomeCoder (unregistered) in reply to protected static
    protected static:
    Well... Given that the OP is talking about a five-year time span and 'upgrading' to MS Access, I'd give it even odds that the app is actually VB5 or 6, and not VB.NET. That said...
    what's the biggest difference between the two of them?

    Do you have all your switches set properly? Option Strict is on, VB6 compatibility is off? Then there's very little difference apart from the syntax, and the MSIL produced by a C# app and a VB.NET app will be almost indistinguishable.

    (Almost. C# does some things more efficiently than VB.NET, and VB.NET's system hooks trade some inefficiencies for ease of access to Win32 APIs...)

    OTOH, if Option Strict is off, or VB6 compatibility is on, then forget it - the MSIL produced by the C# compiler is far more efficient that that produced by VB.NET.

    I'm currently being forced to write some stuff in VB.NET. Truth is, I really, really hate VB.

    However, as the previous poster said, VB.NET is essentially C#. Also, with Visual Studio 2005, the IDE writes 99% of the code for you so I NEVER have to type the following abominations: End If, Next, End While, etc. I'm sooooooooo glad for that because otherwise, I'd go insane.

    I do still have to type Dim blah As Integer which is just as bad (if not worse) though :(

  • Barf 4Eva (unregistered) in reply to protected static
    protected static:
    Well... Given that the OP is talking about a five-year time span and 'upgrading' to MS Access, I'd give it even odds that the app is actually VB5 or 6, and not VB.NET. That said...
    what's the biggest difference between the two of them?

    Do you have all your switches set properly? Option Strict is on, VB6 compatibility is off? Then there's very little difference apart from the syntax, and the MSIL produced by a C# app and a VB.NET app will be almost indistinguishable.

    (Almost. C# does some things more efficiently than VB.NET, and VB.NET's system hooks trade some inefficiencies for ease of access to Win32 APIs...)

    OTOH, if Option Strict is off, or VB6 compatibility is on, then forget it - the MSIL produced by the C# compiler is far more efficient that that produced by VB.NET.

    All things I was unaware of, yet it makes sense that this would be the case. I'm not a big fan of prior VB (I've even worked on some lovely offshoot of VB3 for old school handhelds and... it's the devil)

    Have you ever run in to performance problems where switches are set appropriately so as not to take in to account legacy compatability, where the performance problem was primarily a cause of the language itself and NOT poor coding practices?

    You mention VB.NET's system hooks.. Any examples you can think of where performance in accessing win32 api would hurt enough that C# would be a wiser choice? Thanks for the info!

  • (cs) in reply to Barf 4Eva

    more irish girl in the comic comments

  • (cs) in reply to DropDeadThread
    DropDeadThread:
    Quadruple panic mode: data is sent to a dot matrix printer guarded by a crocodile infested moat?

    It's actually a flaming moat filled with fire retardant crocodiles.

    "Crikey! Look at that asbestos alligator, roight there!"

  • Steve Irwin (unregistered) in reply to DropDeadThread
    DropDeadThread:
    Quadruple panic mode: data is sent to a dot matrix printer guarded by a crocodile infested moat?

    I hadda go ovah to the dot maytrix printah. It was SOOOO dangerous! Crocys swimmin this way and that in the moat. Then I saw him! The BIGGEST crocy evah! He was SOOOO dangerous!

  • (cs) in reply to Schnapple
    Schnapple:
    "VB application ...needs to be rock solid"

    And pretty much the whole thing was downhill from here...

    Tired cliches are getting "Featured Comment" status now?
  • Schnapple (unregistered) in reply to JT
    JT:
    Barf 4Eva:
    Schnapple:
    "VB application ...needs to be rock solid"

    And pretty much the whole thing was downhill from here...

    Y U Trollin? :P

    But honestly... Can somebody answer me this...

    I assume he was refering to all version of VB before .NET, and whilst I agree that it's a foul abomination of a language it can actually stable. There are in fact several (probably more) major European broadcasters who control transmission using a (large) app written in VB5 that runs flawlessly for months/years at a time...

    You should see the code though, it really, really hurts me.

    Indeed, I was going on the assumption that due to the timetable laid out and the "greenness" of the original developers that it was a VB6-or-earlier app. But yeah, it is sort of annoying how when someone says "VB" you don't know if it's VB.NET, VB6, VBScript, etc.

  • Erm (unregistered)

    That's sad, I could probably write something that did that in less than a week using php, xajax, mysql, and apache.

    It wouldn't be pretty by any means, but really what do you need? 2 tables? first, middle, last, address, city, state, zip, pledge_amount, uid

    users: uid, username password.

  • Schnapple (unregistered) in reply to SomeCoder
    SomeCoder:
    I'm currently being forced to write some stuff in VB.NET. Truth is, I really, really hate VB.

    However, as the previous poster said, VB.NET is essentially C#. Also, with Visual Studio 2005, the IDE writes 99% of the code for you so I NEVER have to type the following abominations: End If, Next, End While, etc. I'm sooooooooo glad for that because otherwise, I'd go insane.

    I do still have to type Dim blah As Integer which is just as bad (if not worse) though :(

    You're being generous there - VB.NET is essentially C# with training wheels and those helmets that retarded children wear.

    Bah, I went on a tear on my Blog, I won't repeat it here http://www.schnapple.com/2006_06_25_archive.html

    But yeah I too am on a side project right now where the dude insisted on me doing it in VB2005. I charge him by the hour so if he wants to pay more since it will take longer, that's his prerogative.

  • Erm (unregistered) in reply to Erm

    Forgot to mention 3 other important columns. A credit card type, expire date, and cc number.

  • (cs)

    So what happens in double secret panic mode?

  • (cs)

    DEFCON 5 PANIC MODE: The monitor explodes, sending glass shards into the face of the person looking at it, cutting all the information into the skin on their face.

    You don't want to know what happens on the 6th level, although I'm pretty sure someone here will say.

  • (cs) in reply to Zylon
    Zylon:
    Schnapple:
    "VB application ...needs to be rock solid"

    And pretty much the whole thing was downhill from here...

    Tired cliches are getting "Featured Comment" status now?

    I think this comment was featured to stop people from reposting the seemingly obligatory (read annoying) comments. And that would stop other people from writing back, "VB is actually blah blah blah." Which would give a pre-emptive SHHH to the very tired debate, "Well C# is better than VB because the MSIL blah blah blah." It doesn't seem to be working, though.

    Remember the "C tic-tac-toe" incident? Lesson learned, I imagine.

  • protected static (unregistered) in reply to Barf 4Eva

    Barf 4Eva:

    Have you ever run in to performance problems where switches are set appropriately so as not to take in to account legacy compatability, where the performance problem was primarily a cause of the language itself and NOT poor coding practices?
    All things being equal, probably not. Programming practices make a lot of difference.
    You mention VB.NET's system hooks.. Any examples you can think of where performance in accessing win32 api would hurt enough that C# would be a wiser choice?
    How often are you calling them? Every layer of abstraction introduces a little more lag into response time, as well as the chance for badly written code (because the abstraction keeps you from having to understand what you're doing).

    By way of example, being able to access My.Computer.FileSystem may be faster to code - but it'll be slower than just going right to an I/O stream directly, or whatever you ultimately need to do. Each '.' operator you use is another layer of method calls that need to be executed before you actually get down to business. And since the whole 'My' class structure is built around static methods, a lot more crap is going to be loaded into memory before you need it. Hell, a lot more crap is going to be loaded than you actually need...

    Each release of VB.NET seems like it has reintroduced many of the concepts that made it so easy to write the same kind of bad (or lazy) code that gave VB a bad rap in the first place. IMO, C# forces you to have a better understanding of your platform, and to be more aware of your resource use.

  • (cs) in reply to Schnapple
    Schnapple:
    You're being generous there - VB.NET is essentially C# with training wheels and those helmets that retarded children wear.

    Bah, I went on a tear on my Blog, I won't repeat it here http://www.schnapple.com/2006_06_25_archive.html

    But yeah I too am on a side project right now where the dude insisted on me doing it in VB2005. I charge him by the hour so if he wants to pay more since it will take longer, that's his prerogative.

    Personally I think you are being as elitist as you think everyone else is being. Here's my take on things, and it is short because I don't need a lot of explanation to it. It is simple.

    I'm a .Net developer, not a VB.net or C# developer, a .Net developer. What language am I faster in? The language I am currently working in. When I change languages there is an acclimation period but then I speed up. Each language requires different habits and I simply have to change them. Vb.Net and C# in themselves are neither faster to code in then the other, it's all about the developers comfort level.

    So you code faster in C#, do so. Don't blame VB.net for being slower, recognize that it is your lack of comfort with that syntax. Someone else will be just the opposite and be just as correct as you are.

  • jkupski (unregistered) in reply to DropDeadThread
    DropDeadThread:
    Quadruple panic mode: data is sent to a dot matrix printer guarded by a crocodile infested moat?

    No, if you reach quadruple panic mode, the developer is placed on double-secret probation.

  • Jay (unregistered) in reply to Erm
    Erm:
    That's sad, I could probably write something that did that in less than a week using php, xajax, mysql, and apache.

    Not to ridicule the poster, but I don't know how many times I've heard some student or new programmer respond to a discussion of a problem-filed app by saying, "Hey, I could write a program to solve that problem in a week." From a simple statement of the problem -- "record gifts from donors", "count the number of votes for each candidate", etc -- it might sound like an easy problem that could be quickly solved. But real life is rarely that easy.

    Like, a few weeks ago I was working on converting a customer address list and sales information from an old system to a new system. How hard could it be?, you might wonder. An address is an address, a payment is a payment, etc, right? Just read the date, reshuffle the format, and you're done. Except ... except for all the tedious details. Like in the old system returns were recorded as a new transaction, while in the new system they are attached to the original sale. The new system uses a different format stock number, and we had to generate that from available information in the old system. In the old system sales of products from certain suppliers were all under a single "vendor code", but in the new system we have different vendor codes for different divisions of the same company, and we had to figure out which division it was by various characteristics of the product. Etc etc.

    The difference is that in school, the instructor typically creates a problem with no special cases. He'll say, for example, "write a program to read in these sales records and calculate total sales by division". Then all the records have the same format, all the data is valid and consistent, etc. Maybe he creates one or two special cases to throw at the students. But he isn't going to bog the students down in all the complexities that typically arise in the real world. Normally that's a good thing, because he wants to create a problem that can be solved in a week or two, make sure that the student learns how to use hash tables or SQL group-by clauses or whatever the current lesson is, and move on.

    But some students seem to come out of school assuming that all problems in the real world are as clean and neat as their textbook problems, and that a programmer who takes two months to write a "simple total-the-sales program" must be a real incompetent.

  • MindChild (unregistered) in reply to Schnapple

    VB can be a great development tool... especially for simplistic DB oriented apps such as this. This actually is akin to racism. For instance, one would say "I hate black people", when in fact they really want to say "I hate the typical black culture". See, not every black person acts like an inner city thug. In the case of VB, most VB developers learned using VB, with no real computer science training whatsoever... so most of what you see made in VB is garbage. You hate the VB "culture", not the language/environment itself.

  • Anon (unregistered)
    We discovered their system stored a unique value for each user containing the PC name concatenated with the username. The database field for that value was only 15 characters. Our PC names were 12 characters. The developer’s name was Bob.

    I love that one!

  • Schnapple (unregistered) in reply to KattMan
    KattMan:
    Personally I think you are being as elitist as you think everyone else is being. Here's my take on things, and it is short because I don't need a lot of explanation to it. It is simple.

    I'm a .Net developer, not a VB.net or C# developer, a .Net developer. What language am I faster in? The language I am currently working in. When I change languages there is an acclimation period but then I speed up. Each language requires different habits and I simply have to change them. Vb.Net and C# in themselves are neither faster to code in then the other, it's all about the developers comfort level.

    So you code faster in C#, do so. Don't blame VB.net for being slower, recognize that it is your lack of comfort with that syntax. Someone else will be just the opposite and be just as correct as you are.

    Well, I was aiming more for facetious than elitist but yeah, it did come across that way.

    Most of my side projects are short-term gigs where in the time it would take me to get back up to speed on VB's quirks actually add to the project. I'm actually trying to save my clients money by staying with what I know better but hey, it's their money. And truth be told they often want it, needlessly, in VB for the same reason I want it, needlessly, in C# - language snobbery.

    That all being said, it's essentially true that VB.NET is an evolution of a programming language that was designed for idiots. Seriously - they wanted inept people to make Windows programs so that Windows would sell (yes, I know it was also on DOS for a time). VB prior to VB.NET had this "glass ceiling" above which things were impossible. So you're left with VB.NET which annoys C-based developers to no end because of its asinine syntax and annoys VB6 developers to no end because it's too different. And at the same time is constantly playing catch-up to C# in terms of features and IDE usability.

    Language interoperability is designed to make it easier to staff projects - instead, it's wound up making developers have to needlessly learn close-but-not-quite languages and has made clients lock into particular languages even though they don't need to. Oh, and J# and COBOL.NET and the 50 other languages never took off anyway so it doesn't really matter or work anyway.

  • Jay (unregistered) in reply to Erm
    Erm:
    Forgot to mention 3 other important columns. A credit card type, expire date, and cc number.
    What if the donor wants to pay by check or bank draft?

    Do we send donors a tote bag or some other token gift? If they have a choice -- and surely they have at least "yes I want the tote bag or no I don't" -- then we have to record their selection.

    Do we send them a membership card? If a married couple makes a donation, do they get two membership cards or one? If two, is each in their own name or do both say "Mr & Mrs Jones" or "Fred and Mary Jones" or what?

    Surely we send some sort of confirmation letter. Where does the text of that letter come from? Does it vary between donors or is it always the same?

    Does this system have to interface to our general accounting software? How is that done?

    What reports do we produce? Surely someone wants to know how much we raised, probably with breakdowns based on some characteristics of the donor. What characteristics are those? How do we collect and record that information?

    I believe you could produce a piece of unusable junk that resembled a solution to this problem in a week. So could I. But a quality product? No. It would surely take at least several weeks just to interview the users and get the basic requirements together. I was about to write "nail down the requirements", but that would take even longer, because in real life it isn't until you show the users version 1 that they suddenly remember all the additional little details that they forgot to mention earlier.

    Usually at this point they express amazement that the ignorant programmer didn't realize that OF COURSE there are special rules for donors from California and Nebraska and any county in Massachusetts with a population of more than 5000 because of special laws in those states. And, oh, we have donors who prefer to remain anonymous, if we enter a bunch of donations with a name of "Anonymous" your program won't assume those are all the same person and add them together, will it? Etc.

  • Schnapple (unregistered) in reply to Jay
    Jay:
    I believe you could produce a piece of unusable junk that resembled a solution to this problem in a week. So could I. But a quality product? No. It would surely take at least several weeks just to interview the users and get the basic requirements together. I was about to write "nail down the requirements", but that would take even longer, because in real life it isn't until you show the users version 1 that they suddenly remember all the additional little details that they forgot to mention earlier.
    I think the real goal of this story was that they only ever visited this thing once a year and it nearly fell apart every single time, for a different reason. The client never wanted to spend any real money or time on it so it could never be the robust application the client needed and, paradoxically, was considered a success because it never outright *failed*.

    So, I think what most people are saying is that they could get the basics of this app up and running in a less-brittle way in a small amount of time but that's not the point - the point is that the client wouldn't pay for it.

  • Franz Kafka (unregistered) in reply to Bill Curnow
    Bill Curnow:
    jjeff1:
    The database contained dozens of stored procedures for no apparent reason. During testing, they found deadlocks occurring constantly. After blaming the database server (the same one they’d been using for years), they modified/removed most of the stored procedures, upon which the system started operating mostly normally.

    Oh dear. "For no apparent reason" suggests that there were a number of stored procedures that weren't being used and which should simply be deleted. Looking at the rest of what you wrote you meant something more along the lines of "Stored Procedures!?! [rolling eyes] Why on earth are you using those things?"

    No, it suggests that they were implemented without any clear design behind them - sure, stored procs can be handy, but just tossing some in the app doesn't make any sort of sense.

  • (cs) in reply to TakeASeatOverThere
    TakeASeatOverThere:
    DEFCON 5 PANIC MODE: The monitor explodes, sending glass shards into the face of the person looking at it, cutting all the information into the skin on their face.

    You don't want to know what happens on the 6th level, although I'm pretty sure someone here will say.

    DEFCON 5 denotes normal peacetime operations. It is the state of lowest military activity.

  • iMalc (unregistered)

    6th panic level, the application actually crashes, generates a large crash dump file, and automatically restarts. The data has to be extracted from the dump file post-mortem.

  • sf (unregistered) in reply to Barf 4Eva
    Barf 4Eva:
    Schnapple:
    "VB application ...needs to be rock solid"

    And pretty much the whole thing was downhill from here...

    Y U Trollin? :P

    But honestly... Can somebody answer me this...

    I normally don't develop in VB, but honestly, if we were talking about the differences of c# vs vb.net, I never have to PInvoke anything anyways, a few minor differences in supported keywords (using statement, etc), and woopdie doo... what's the biggest difference between the two of them?

    I don't believe there is a big difference. At all. Except that VB.NET syntax is ugly as hell. It's almost as hot as C# when you put the paper bag over VB.NET.............

    I've used C# but have no experience with VB.NET. Does VB.NET have all of the OOP constructs that C# does?
  • Franz Kafka (unregistered) in reply to iMalc
    iMalc:
    6th panic level, the application actually crashes, generates a large crash dump file, and automatically restarts. The data has to be extracted from the dump file post-mortem.

    Silly human! VB doesn't do crashdump - just the first part.

  • (cs) in reply to Anon
    Anon:
    We discovered their system stored a unique value for each user containing the PC name concatenated with the username. The database field for that value was only 15 characters. Our PC names were 12 characters. The developer’s name was Bob.

    I love that one!

    Stupid edge cases!

  • (cs) in reply to Erm
    Erm:
    Forgot to mention 3 other important columns. A credit card type, expire date, and cc number.

    And a secret page do download the whole thing to a secret account on gmail. Or so. Or another hole. TJX learned it the hard way that you don't want to keep CC numbers around.

  • (cs) in reply to Alex
    Alex:
    The WTF is the fact that real database: Microsoft Access, doesn't have quotes around "real".
    For truth.
  • Max (unregistered) in reply to TakeASeatOverThere

    6th panic mode generates nuclear explosion.. and there is no need in any data or processing of any kind -) also there is no 7th panic mode, as nothing is needed after 6th

  • Schnapple (unregistered) in reply to xtremezone
    xtremezone:
    Alex:
    The WTF is the fact that real database: Microsoft Access, doesn't have quotes around "real".
    For truth.
    I just wonder what they were using before that, comparatively, was a fake database.
  • SomeCoder (unregistered) in reply to sf
    sf:
    I've used C# but have no experience with VB.NET. Does VB.NET have all of the OOP constructs that C# does?

    Yes it does, it's just got the god-awful syntax to do it with.

Leave a comment on “Flirting With Disaster”

Log In or post as a guest

Replying to comment #:

« Return to Article