• anonymous (unregistered) in reply to phaedrus
    phaedrus:
    ... And to reiterate, I already married her, and no she doesn't have a sister.

    I was about to ask :-(

  • (cs) in reply to anonymous
    anonymous:
    Joe:
    Joe Schmoe:
    When you say "Developed Internally", do you mean by people who actually have computer science degrees?

    Ah, you know, nevermind. It's actually obvious the answer to that question..

    I think it's worse for us, the CS degree folks, than it is for the hacks. At least the hacks are too stupid to know what they did. We KNOW why their work is so wrong on so many levels. And furthermore, we have to fix it.

    Ugh.

    Captcha: smile - You get to fix someone's nested for loops because they don't understand the performance implications of O(n^2) runtime.

    Once I tried to explain that to a girlfriend of mine (she was a techie) who didn't know why when she processed more than 1000 items in the program she wrote, it would hang for hours...

    I was met with a blank stare...

    I drew some graphs that illustrated the time vs items relationship...

    She said she needed to go see her parents...

    And I never saw her again.

    Why do you need graphs? Why not just say something simple like "Each time it looks at one of the items, it's comparing it to every other item. Now, if there's a thousand items, that's almost one million comparisons." - I mean, using jargon at first is understandable if she's supposedly a "techie", but when you get a blank stare, it's time to start dumbing things down, not throwing a bewildering array of unnecessary graphs at her to make it look even MORE obscure and complicated.

  • anonymous (unregistered) in reply to Random832
    Random832:
    Why do you need graphs? Why not just say something simple like "Each time it looks at one of the items, it's comparing it to every other item. Now, if there's a thousand items, that's almost one million comparisons." - I mean, using jargon at first is understandable if she's supposedly a "techie", but when you get a blank stare, it's time to start dumbing things down, not throwing a bewildering array of unnecessary graphs at her to make it look even MORE obscure and complicated.
    I start from the POV that everyone is as intelligent as me, when i'm confused i make a graph... guess i'm a visual thinker...
  • (cs) in reply to Rel
    Rel:
    >> which is true only if we define 'relational' strictly as meaning third-normal form relational data.

    3rd normal form is not a criteria for representing data using the relational model. 1st normal form is, though. 3rd normal form (actually, 5th normal form) is simply a design guideline that confers certain advantages.

    That's fairly relational. ... That too, is pretty relational.

    Ugh.

    I looked up 1st normal form - http://en.wikipedia.org/wiki/First_normal_form claims that "Every row-and-column intersection contains exactly one value from the applicable domain" implies no nulls. What if null is a part of the applicable domain?

  • Rel (unregistered) in reply to Random832

    Null is not a value, so the row-and-column intersection would not have a "one value" if there were a Null marker stored there.

    An empty set, however, is a value. Is this what you had in mind?

  • AdT (unregistered) in reply to nano
    nano:
    let's assume someone isn't trying to access the database while someone else deletes it, and noone tries to open the same file twice. We'll also have to rule out when the luser inevitably pours his coffee into the PSU, or can't understand why closing a file takes too long and hits reset.

    Let's just assume that making too many assumptions can be dangerous.

    Captcha: ninjas - Ha! I bet you didn't take the ninjas into account either!

  • Stas (unregistered) in reply to KenW
    KenW:
    Which version of Excel became enough of a database to support transactions? I must have missed that in the documentation.
    The one that started to support VBA that can use ADO to go the DB of your choice.
    KenW:
    And that's the point everyone here is trying to make. Excel is not the right tool to use as a database. Ever. It's a frickin' spreadsheet. Repeat after me, please:

    Excel is not a database. It's a spreadsheet. Excel is not a database. It's a spreadsheet. Excel is not a database. It's a spreadsheet. Excel is not a database. It's a spreadsheet. Excel is not a database. It's a spreadsheet.

    Enough said?

    Thank you.

    Now, seriously. I'm not talking about using Excel as a database. I'm talking about using Excel as a GUI front end. Execution environment for VBA script if you'd like. The perfect data grid.

    So, what's wrong with a VBA application running in Excel that uses ADO to load the data from the database? And yes, when it saves the data back, it opens a transaction, saves the data and commits the transaction. What's wrong with that?

    PS Did you ever program in Excel or VBA? I deeply dislike both, but I know that they do work.

  • Stas (unregistered) in reply to jimjim
    jimjim:

    Still, I would want to be sure the DB is always in a coherent state, and that each update to the DB leave it in a coherent state.

    I don't mind if the application has to be a VB application using Excell sheet invoking shell script calling web services.

    True, concurrency can be a big problem, but there exist a couple of simple patterns to avoid problems elegantly and easily.

    Yeah, like I said, I used optimistic concurrency. Load the data into Excel with hidden column holding row versions, send the updates back to the DB (using a stored procedure that has appropriate permissions set *rolling eyes*)... The regular implementation for optimistic concurrency.

    Once again, Excel only plays a role of immensely powerful data grid here. It is the VBA application that drives the data exchange. So, if you use transactions (via ADO) and the DB has appropriate constraints it will remain in the coherent state. If you don't, it doesn't matter if you use Excel, you can mess it up the same way with C# / Java.

  • Captain Spongebath (unregistered) in reply to FlySwat
    FlySwat:
    The biggest WTF here is the people here who think Excel is a database.

    :)

    My boss pays me to think Excel is a database. T_T

    Seriously.. they don't care about implementation details. They just know there are numbers in their Excel and they want everyone else to be able to use their numbers. If it's on a computer and it has numbers, it must be a database.

    I still remember that time I saved him all that typing by incrementing an entire column on numbers with my tricky computer voodoo. I really shouldn't have let him know I could do that, but I felt so helpless watching him manually punch each number into the calculator and re-type the cell.

  • Bela (unregistered)

    This is cool. rotfl. here's something also very painful:

    [image]
  • Rob G (unregistered) in reply to Joe Schmoe
    Joe Schmoe:
    When you say "Developed Internally", do you mean by people who actually have computer science degrees?

    Ah, you know, nevermind. It's actually obvious the answer to that question..

    And we all know that folks with Comp Sci degrees never make that kind of mistake...

  • Nomen Nescio (unregistered)

    Ouch. That reminds me of when I was repurposing a template based data driven web application recently. I had entered in the production data to drive the template (just 20 questions), and realized I didn't have a 'remove row from the table' feature. (The original user never made mistakes, it seems.)

    Should I test the remove row feature before deploying it and using it? Nah, how hard is it to remove a row..

    sure enough, it deleted all 20 rows. Not a huge loss, but still sad.

  • nano (unregistered) in reply to Stas

    Stas: "Please re-read my original post :). And I thought I stressed "when done right" part strong enough."

    I was unfair. I guess I overlooked that part, but I read your post and assumed you just implemented the exact same idea but with Wizards(TM). That's what riled me up enough to reply in the first place. I'm sure it can be done well, with concurrency manageable if you skip step 3 (or all) of the original plan - the delete the database once it's loaded crazy bit. Of course you can import/export excel to any DB using scripting if you do it right, just seriously what this guy did was wrong in so many ways, it broke concurrency with 2 users.

  • Stas (unregistered) in reply to nano
    nano:
    Stas: "Please re-read my original post :). And I thought I stressed "when done right" part strong enough."

    I was unfair. I guess I overlooked that part, but I read your post and assumed you just implemented the exact same idea but with Wizards(TM). That's what riled me up enough to reply in the first place. I'm sure it can be done well, with concurrency manageable if you skip step 3 (or all) of the original plan - the delete the database once it's loaded crazy bit. Of course you can import/export excel to any DB using scripting if you do it right, just seriously what this guy did was wrong in so many ways, it broke concurrency with 2 users.

    Agreed, the implementation described in the article is a WTF. And it would be a WTF even if one would replace Excel with Java/C#/C++/Python... Thanks!

  • Joe (unregistered) in reply to Random832
    Random832:
    anonymous:
    Joe:
    Joe Schmoe:
    When you say "Developed Internally", do you mean by people who actually have computer science degrees?

    Ah, you know, nevermind. It's actually obvious the answer to that question..

    I think it's worse for us, the CS degree folks, than it is for the hacks. At least the hacks are too stupid to know what they did. We KNOW why their work is so wrong on so many levels. And furthermore, we have to fix it.

    Ugh.

    Captcha: smile - You get to fix someone's nested for loops because they don't understand the performance implications of O(n^2) runtime.

    Once I tried to explain that to a girlfriend of mine (she was a techie) who didn't know why when she processed more than 1000 items in the program she wrote, it would hang for hours...

    I was met with a blank stare...

    I drew some graphs that illustrated the time vs items relationship...

    She said she needed to go see her parents...

    And I never saw her again.

    Why do you need graphs? Why not just say something simple like "Each time it looks at one of the items, it's comparing it to every other item. Now, if there's a thousand items, that's almost one million comparisons." - I mean, using jargon at first is understandable if she's supposedly a "techie", but when you get a blank stare, it's time to start dumbing things down, not throwing a bewildering array of unnecessary graphs at her to make it look even MORE obscure and complicated.

    And by "obscure" graphs you're referring to an X^2 graph of exponential growth? Any idiot can understand that.

  • Joe (unregistered) in reply to Stas
    Stas:
    KenW:
    Which version of Excel became enough of a database to support transactions? I must have missed that in the documentation.
    The one that started to support VBA that can use ADO to go the DB of your choice.
    KenW:
    And that's the point everyone here is trying to make. Excel is not the right tool to use as a database. Ever. It's a frickin' spreadsheet. Repeat after me, please:

    Excel is not a database. It's a spreadsheet. Excel is not a database. It's a spreadsheet. Excel is not a database. It's a spreadsheet. Excel is not a database. It's a spreadsheet. Excel is not a database. It's a spreadsheet.

    Enough said?

    Thank you.

    Now, seriously. I'm not talking about using Excel as a database. I'm talking about using Excel as a GUI front end. Execution environment for VBA script if you'd like. The perfect data grid.

    So, what's wrong with a VBA application running in Excel that uses ADO to load the data from the database? And yes, when it saves the data back, it opens a transaction, saves the data and commits the transaction. What's wrong with that?

    PS Did you ever program in Excel or VBA? I deeply dislike both, but I know that they do work.

    I do that for a living. ADO supports transactions. Hell, it even supports asynchronous query execution. Yes, Excel itself doesn't support transactions, but Excel implements COM and VBA uses COM very well. So by transitivity, Excel supports some decent DB functionality when it's your only choice.

  • Juan (unregistered) in reply to ParkinT

    Bug-fix: ignore negative balances ;-)

  • RogerWilco (unregistered) in reply to Zygo
    Zygo:
    (dialog pops up)

    DO NOT CLOSE THE BROWSER WINDOW. NOT EVEN AFTER YOU HAVE PRESSED THE "SUBMIT" BUTTON. YOU WILL BE TOLD WHEN IT IS SAFE TO CLOSE THE BROWSER WINDOW. SERIOUSLY. DO NOT CLOSE THE BROWSER WINDOW.

    Yes. I have seen that on live servers at my previous job. I'm glad I do no longer work there.

  • johan (unregistered) in reply to FredSaw

    Because "Hebrew She-Males" is more politic than "Hebrew Jews"?

Leave a comment on “One at a Time, Please”

Log In or post as a guest

Replying to comment #:

« Return to Article