Excel-lent Design

  • ParkinT 2012-11-13 06:45
    CRAP Code == Code Responsible for Aram's Puzzlement.
  • TheCPUWizard 2012-11-13 08:12
    Aram got it all re-installed and added to the License Compliance system, but he had one question.


    That is the real WTF. Microsoft Office Licenses specifically prohibit the applications from being used in a Server Environment. This is the biggest reason why Server Applications that *must* create Office "documents" need to use the OpenXML implementation.

    Adding something to the "License Compliance System" does *NOT* make something actually comply with legal licensing requirements.
  • Medinoc 2012-11-13 08:18
    I didn't know about the license thing, but I know there is an article on MSDN that recommends against using Office Automation on server-side code, because there is no official support for it and the UI can't be disabled, only hidden.

    It means that there is nothing, nothing, that prevents the automated Office application from displaying (visibly or not) a modal dialog box.

    Some old code of ours (thankfully replaced with OpenXML since) used Word automation and someday was paralyzed by an unforeseen, invisible "spellchecker overloaded by too many spelling errors" modal message box.

    Addendum (2012-11-13 09:17):
    Duh, the "license thing" is on the page itself:
    Besides the technical problems, you must also consider licensing issues. Current licensing guidelines prevent Office applications from being used on a server to service client requests, unless those clients themselves have licensed copies of Office. Using server-side Automation to provide Office functionality to unlicensed workstations is not covered by the End User License Agreement (EULA).
  • letatio 2012-11-13 08:21
    TheCPUWizard:
    Aram got it all re-installed and added to the License Compliance system, but he had one question.


    That is the real WTF. Microsoft Office Licenses specifically prohibit the applications from being used in a Server Environment. This is the biggest reason why Server Applications that *must* create Office "documents" need to use the OpenXML implementation.

    Adding something to the "License Compliance System" does *NOT* make something actually comply with legal licensing requirements.


    I cringe merely at the thought of Microsoft in a server environment.
  • Smug Unix User 2012-11-13 08:22
    Just make them connect to a VM on the server technically they are processing on a server rather than a client. Problem solved.
  • Omego2K 2012-11-13 08:25
    Real men use BIFF
  • foo 2012-11-13 08:37
    And that's why sane systems implement functionality in a library or batch-mode program first and build the GUI on top, rather than the other way around.

    (OK, bring on the flames. I don't have to work with that CRAP. :)
  • ubersoldat 2012-11-13 08:42
    Medinoc:
    used Word automation and someday was paralyzed by an unforeseen, invisible "spellchecker overloaded by too many spelling errors" modal message box.


    Wow, good luck debugging that!

    TRWTF is pussy whipped managers that when reached with this kind of requirements, sheeply accepts them as valid. But, OTOH at the time, since it was a client-side application, maybe it made sense.
  • Joe 2012-11-13 08:42
    Oh, I hope the part where the CRAP handles multiple simultaneous requests properly was left out of the story by editorial license.

    It would be a bad thing if user A got the spreadsheet user B just uploaded instead of the one 'e's waiting for.

    --Joe
  • Sarten X 2012-11-13 08:49
    TheCPUWizard:
    That is the real WTF. Microsoft Office Licenses specifically prohibit the applications from being used in a Server Environment.

    As an admin currently working through an audit, I'll point out that Microsoft's licensing is TRWTF.
  • Medinoc 2012-11-13 08:56
    ubersoldat:
    Medinoc:
    used Word automation and someday was paralyzed by an unforeseen, invisible "spellchecker overloaded by too many spelling errors" modal message box.


    Wow, good luck debugging that!

    It wasn't that bad, because launching Word first and launching the server process in an interactive session made the Word automation visible on the server machine. Still shows that server-side Office automation = WTF and even Microsoft agrees on that.
  • LoremIpsumDolorSitAmet 2012-11-13 09:02
    I was expecting the story to end like this: he found out that the spreadsheet just did simple multiplication and addition, so he simply inlined the calculation into the code and got rid of the Excel nonsense altogether. Wishful thinking, apparently!
  • ¯\(°_o)/¯ I DUNNO LOL 2012-11-13 09:08
    I don't see the WTF here. I mean, Excel is Turing-complete, right? Party on!

    I'm sorry, I meant to say "Excel is WTF-complete".
  • Abico 2012-11-13 09:10
    If I wanted to read I'd pick up a book. Where's the code? Code me!
  • WC 2012-11-13 09:13
    It's an excel spreadsheet. It's got formulas in it. Turn them into server-side code and eliminate all that craziness.

    I've written some seriously crazy Excel formulas in my day, but every one of them would have been a lot easier in a normal language that would run on that server with no problems.
  • Code Master 2012-11-13 09:15
    LoremIpsumDolorSitAmet:
    I was expecting the story to end like this: he found out that the spreadsheet just did simple multiplication and addition, so he simply inlined the calculation into the code and got rid of the Excel nonsense altogether. Wishful thinking, apparently!


    In my experience the excel spreadsheet would be running several VBA add ins, and few COM libraries, plus maybe some xlls, and the calculation would involve calling serveral of these. Replacing this functionality in your code would be difficult assuming it wasn't all documented (fairly safe assumption).
  • justanotheradmin 2012-11-13 09:25
    TheCPUWizard:
    Microsoft Office Licenses specifically prohibit the applications from being used in a Server Environment. This is the biggest reason why Server Applications that *must* create Office "documents" need to use the OpenXML implementation.

    Adding something to the "License Compliance System" does *NOT* make something actually comply with legal licensing requirements.


    Not quite. It prohibits installing it to a server for the purposes of serving requests to unlicensed clients. In other words, doing Excel-y things for users who don't have Excel installed.

    As long as Excel is installed as part of your standard build, so all users using the server app have a local installation, you're golden.
  • emaNrouY-Here 2012-11-13 09:26
    I'm wondering if an enterprising hacker would be able to insert a little code injection into those forms and have excel pwn the web server.

    Seems like this solution as bad as it is on the surface is just as bad, or worse, underneath.
  • Cbuttius 2012-11-13 09:47
    Got the cornify image to come up.

    where this line is:
    Aram had heard that the core developers were gradually migrating it to a more SOA implementation.

    click on the word SOA
  • Tiki 2012-11-13 09:50
    The CRAP hit the fan... an nobody cleaned it up.

    CAPTCHA: causa - causes nausea
  • ObiWayneKenobi 2012-11-13 10:02
    Ah, the joys of people that have no idea about IT operations wanting to utilize IT for their business; it always ends up with a clusterfuck because the people making the high-level decisions don't know anything other than computers are some magic box. That's where this nonsense about "enterprise assets" and "required to use SOA" comes from - somebody that clearly has no clue what they're doing but heard/used a few buzzwords in a past life.

    This is why IT policy should only ever be decided by people with modern IT background; I'm so tired of having the IT boss be some nimrod who cut their teeth on mainframes or Foxpro or some ancient and obsolete technology decades ago but who never bothered to evolve with the industry. They ALWAYS cause major WTFs because they don't understand how technology works in the modern age.
  • pif 2012-11-13 10:19
    > sane systems implement functionality in a library or batch-mode program first and build the GUI on top

    You may s/sane/Unix/.

    Captcha: immitto; indeed, I'm "immitting" my comment.
  • Leak 2012-11-13 10:23
    letatio:
    I cringe merely at the thought of Microsoft in a server environment.

    I'm pretty sure this whole site is run using IIS and ASP.Net...
  • WaffleSauce 2012-11-13 10:31
    :(

    I don't want to live on this planet anymore......
  • tim 2012-11-13 11:18
    TheCPUWizard:
    Aram got it all re-installed and added to the License Compliance system, but he had one question.


    That is the real WTF. Microsoft Office Licenses specifically prohibit the applications from being used in a Server Environment. This is the biggest reason why Server Applications that *must* create Office "documents" need to use the OpenXML implementation.

    Adding something to the "License Compliance System" does *NOT* make something actually comply with legal licensing requirements.

    and TRWFT is, no they don't - get your facts straight
  • Coyne 2012-11-13 11:23
    Any solution so...wrong...could only be the brainchild of a PHB. Is this from a Dilbert comic?
  • El Ka-Ben 2012-11-13 11:34
    It sounds mostly like a stopgap measure to me -- they get it working now and add this to the bug tracking list. When they get a chance to tackle it then it can be rewritten in code.

    Right now someone has disabled the current production version, not their development version, and that needs to be addressed before the root cause can be tackled.

    It'd be like putting the doughnut spare back on the car to get to the shop and have a tire replaced.
  • Little Bobby Excel 2012-11-13 11:35
    emaNrouY-Here:
    I'm wondering if an enterprising hacker would be able to insert a little code injection into those forms and have excel pwn the web server.
    Exactly. This situation does not call for persuading management to do The Right Thing, because they've already demonstrated that their comprehension of such matters has drifted inside the event horizon of a black hole.

    Instead, this is where compliance is your friend. If you can't get them on the license* nonsense, go to an unsecured wi-fi and use TOR to upload a malicious spreadsheet that splatters ugly colors all over the place but does no real harm. (They need to see the threat to understand it.) Then arrange for your company's auditor to hear that OMFG our server was haxxor3d!! Stand back and watch in amazement as idiots get fired and management takes a day off from playing golf to try to figure out WTF is going on.

    * Seriously, if paying good money for something that's available free doesn't bother you, then what about the legal risk? And all the hassle of license management? Free software is so much better even if the only thing it adds is freedom from the abuse heaped upon you by license-checking mechanisms
  • Jack 2012-11-13 11:38
    pif:
    > sane systems implement functionality in a library or batch-mode program first and build the GUI on top

    You may s/sane/Unix/.
    That's pretty much a tautology.

    In other words, s/sane/Unix/g
  • Oh My 2012-11-13 11:40
    Sounds like a few "team members" need a large dose of Specialized High Intensity Training.
  • Cbuttius 2012-11-13 11:43
    What, you mean a rewrite?

    The next best thing after doing a totally green field project is being allowed to do a rewrite.

    A good rewrite will not necessarily throw everything away but will often mean a re-architecture and then bring in what you find useful and throw away whatever isn't. A bit like demolishing a building or vehicle but being able to use some of the parts to rebuild.

    In my history I have joined many a project who brought in a moderate to large development team to do a "rewrite" but then the team sat for months waiting for permission whilst having to "just wait until after the next release" and spending their time doing small enhancements and endless test runs instead, after which most got bored and left.

    And during all that time the team could be writing ahead: developing and prototyping and ensuring things work better, but that often requires investment, and possibly a bit of extra hardware which always seems to go begging and is often not justified by the fact that after 6 months or whatever they haven't written much "production" code.

    There is also a misconception that the more code that is changed, the more chance of introducing bugs and the harder the maintainence. That is NOT the case. The more obscure the codebase and the requirements, the more chance of bugs and the harder the maintenance. When you rewrite, you will end up far more familiar with the codebase. And good documentation and specifications will ensure you are properly familiar with the requirements.

    And yes, sometimes the process changes.
  • foxyshadis 2012-11-13 11:48
    WC:
    It's an excel spreadsheet. It's got formulas in it. Turn them into server-side code and eliminate all that craziness.

    I've written some seriously crazy Excel formulas in my day, but every one of them would have been a lot easier in a normal language that would run on that server with no problems.

    Sadly, the users probably STILL send updated "templates" regularly, and can't be bothered with learning any templating language other than their homegrown Excel one.
  • Another Andrew 2012-11-13 11:50
    I got to the paragraph where he mentioned excel on the server and I threw up a little in my mouth.

    I've approached problems with excel on the server and never have I concluded that it was a good enough for production. The only reason you would want excel invoked is so that you can offer the results in a downloadable spreadsheet and there are .net components that will do that for you without having to work with excel on the server.

    Aside from the nasty usage of excel formulas, how many instances can excel manage server-side before it crashes, one? A database and asp.net would be far superior for processing the form and then if they needed to export to excel then they could use a .net component. It would handle all the requests you could throw at it and would be much easier to support.
  • shinyemptyhead 2012-11-13 11:58
    I ran into a similar situation years ago, working on a Visual C application that created documents using MS Word templates owned by the users, which were then populated via a set of WordBasic commands. The idea was that the users would be able to customise the tmeplates - but nobody ever did, they just treated it as another impenetrable directory of application data. It was thus pretty pointless, but it worked - until the users were upgraded to Office 97 and WordBasic was no longer supported. After some heated discussions, the code was updated to produce RTF files directly instead.
  • foo2 2012-11-13 12:02
    Medinoc:
    I didn't know about the license thing, but I know there is an article on MSDN that recommends against using Office Automation on server-side code, because there is no official support for it and the UI can't be disabled, only hidden.

    It means that there is nothing, nothing, that prevents the automated Office application from displaying (visibly or not) a modal dialog box.

    Some old code of ours (thankfully replaced with OpenXML since) used Word automation and someday was paralyzed by an unforeseen, invisible "spellchecker overloaded by too many spelling errors" modal message box.


    Excel is rather behaved when automated; so when you turn dialogs off, well, they turn off.

    Word, on the other hand, just loves tossing up weird & wonderful messages and bringing the whole show to a standstill. Automating Word client-side is bad enough...
  • foo2 2012-11-13 12:03
    foo2:
    Excel is rather behaved when


    ...well-behaved..., that is.
  • Mason Wheeler 2012-11-13 12:33
    pif:
    > sane systems implement functionality in a library or batch-mode program first and build the GUI on top

    You may s/sane/Unix/.


    Actually, s/sane/designed to be automated/. Even on Linux, I doubt there are too many games (to pick just one example) designed as a command line system with a UI built on top of it.
  • mag 2012-11-13 12:34
    I hope Customer/Regulation Administration Processor was commonly referred to as C/RAP
  • Valczir 2012-11-13 12:57
    I kinda think that was the point. And I fully agree. Microsoft anything is useless. Microsoft anything in a server environment is frightening.
  • Michael 2012-11-13 12:59
    Some code of ours (which is still there) uses Microsoft Office applications to print documents with a special printer and convert them to fax messages. If conversion takes to long, it attempts to click on modal dialogs.

    Usually this only happens if the print area differs from the printer's, otherwise works just fine. Of course, if it happens, then for the 10000+ fax jobs that were spawned from documents created by the marketing department [please do not add bleed to ads to be sent via fax, thank you] ;)
  • foo2 2012-11-13 13:09
    Michael:
    print documents with a special printer and convert them to fax messages.
    I vaguely remember what a 'printer' is, but what's this 'fax' you speak of?
  • Some Random Texan 2012-11-13 13:20
    So if someone screwed with the Excel calculation spreadsheet, they could make an error pop up on Excel, and everyone's "calculator" on the client side would return all 0's without any notification otherwise.

    Looks like TRWTF is unmitigated client requirements.

    Code does what the client wants, how the client wants.

    captcha.
    caecus - old English for blind. Oh the irony
  • Ragnax 2012-11-13 13:45
    Medinoc:
    I didn't know about the license thing, but I know there is an article on MSDN that recommends against using Office Automation on server-side code, because there is no official support for it and the UI can't be disabled, only hidden.

    From personal experience; the older COM interop assemblies for Office automation would leak entire instances of Excel.exe when the application pool happened to recycle in the midst of an operation, because dispose operations tied into freeing everything would never be called correctly in that scenario.

    I guess you could call that 'not being officially supported'...

    One of my former employers actually worked the issue by using a dedicated (virtual) machine to mangle Excel I/O and putting it on a 15min reboot cycle. Good lord that application was awful.
  • Slapout 2012-11-13 14:14
    I've been fighting with the OpenXMLSDK for the last two days. You'd think it'd be easy to find a content control by tag name and replace it's contents, but no...
  • G Applqst 2012-11-13 14:35
    ClosedXML is a free wrapper of OpenXML that improves productivity tremendously for reading/writing xlsx.
  • Michael 2012-11-13 15:02
    Amazing! TRWTF is that my old workplace (a German Investment Bank in London) did something similar about 10years ago. And it was waved through with the same arguments: The front-office people love Excel and want to be able to update their formulas easily.
  • LANMind 2012-11-13 15:18
    Michael:
    Amazing! TRWTF is that my old workplace (a German Investment Bank in London) did something similar about 10years ago. And it was waved through with the same arguments: The front-office people love Excel and want to be able to update their formulas easily.


    It would be nice if dot net provided a runtime interpreter. I manage a bunch of contantly changing pricing formulas that I would love to present to the users in a UI, and if it isn't right then it isn't my problem...
  • Maurits 2012-11-13 15:22
    foo2:
    Michael:
    print documents with a special printer and convert them to fax messages.
    I vaguely remember what a 'printer' is, but what's this 'fax' you speak of?


    Image download over POTS (except that fax machines actually predate telephones)
  • Frostie 2012-11-13 16:47
    Sparkly ones!

    The power of SOA!
  • barf 4 eva 2012-11-13 17:08
    letatio:
    TheCPUWizard:
    Aram got it all re-installed and added to the License Compliance system, but he had one question.


    That is the real WTF. Microsoft Office Licenses specifically prohibit the applications from being used in a Server Environment. This is the biggest reason why Server Applications that *must* create Office "documents" need to use the OpenXML implementation.

    Adding something to the "License Compliance System" does *NOT* make something actually comply with legal licensing requirements.


    I cringe merely at the thought of Microsoft in a server environment.


    Happens all the time, so cringe away..
  • Matthijs 2012-11-13 17:49
    pif:
    > sane systems implement functionality in a library or batch-mode program first and build the GUI on top

    You may s/sane/Unix/.

    Yeah.. except for that little issue that a lot of Unix programs never really seem to grow past the library / batch-mode stage, or with a GUI that is really spiffy but has about half the functionality and tends to crash every five minutes, and then what *should* be a two-click operation turns into a half-hour manpage search and a string of command-line arguments that would scare the heck out of any nethack player.
  • Art 2012-11-13 17:57
    Unix is like a lawn mower. It is great for when you want to do the same operation to 100,000 blades of grass. However, if you don't know what you're doing, and you aren't careful, you can cut off your own toes.

    Windows is like a fingernail clipper. It is very easy to figure out how to clip that first blade of grass. If you only ever do one, you're fine. But if you ever want to scale up... well try mowing your lawn with a nail clipper and you'll understand why Unix people hate the hell out of everything from a certain glitzy but clueless vendor.
  • Meep 2012-11-13 17:57
    pif:
    > sane systems implement functionality in a library or batch-mode program first and build the GUI on top

    You may s/sane/Unix/.

    Captcha: immitto; indeed, I'm "immitting" my comment.


    Right, plenty of systems, like Unix, implement functionality in a library etc. and are still bat-shit crazy.

    Just not as barking mad as Windows.
  • A. Nonymous 2012-11-13 18:14
    I wouldnt think twice about firing the developer in question. Even thinking about running excel on the server... And he kind of cheated the task to fulfill the requirement that business logic should be reusable. His implementation clearly is not reusable at all. And he must be aware that he cheated. No mercy for him!
  • Meep 2012-11-13 18:19
    Jack:
    pif:
    > sane systems implement functionality in a library or batch-mode program first and build the GUI on top

    You may s/sane/Unix/.
    That's pretty much a tautology.

    In other words, s/sane/Unix/g


    You've either never used Unix, or you're insane. Not that there's anything wrong with either possibility.
  • Huzzah 2012-11-13 19:02
    Art:
    Unix is like a lawn mower. It is great for when you want to do the same operation to 100,000 blades of grass. However, if you don't know what you're doing, and you aren't careful, you can cut off your own toes.

    Windows is like a fingernail clipper. It is very easy to figure out how to clip that first blade of grass. If you only ever do one, you're fine. But if you ever want to scale up... well try mowing your lawn with a nail clipper and you'll understand why Unix people hate the hell out of everything from a certain glitzy but clueless vendor.
    Nice Analogy.

    I think (sort of related) that MS's biggest mistake has been trying to accomodate the dumb user. The more a system is designed for dumb people, the dumber your userbase becomes.

    Admittedly, UNIX can be a little too unforgiving for home users (sometimes it would be nice if "rm" had some failsafe - either prompting the user or having a temporary Recycle Bin type thing) - although I think the GUI interfaces for it (which I'm guessing is the less technical people would use) have those sort of measures in place....

    The one that has caught me out many, many, many, many times on UNIX (to the point where I aliased the commands) was crontab -r (for some reason I have "r" in my head as READ not REMOVE)....
  • Bill (not that one) 2012-11-13 19:13
    Art:
    Unix is like a lawn mower
    and you'll have problems if you try to use it for a nail clipper. Nobody ever said it was good for that. Plus, you'll probably lose a finger.

    Really, I think one of the biggest mistakes of Linux developers is joining the dumb-it-down stampede to the point where people expect it to play games and imitate their familiar GUI, candy-coated-bug for bug.
  • Jack 2012-11-13 19:16
    Meep:
    You've either never used Unix, or you're insane.
    s/sane/Unix/
    You've either never used Unix, or you're inUnix.

    Huh???
  • VictorSierraGolf 2012-11-13 19:32
    Bill (not that one):

    Really, I think one of the biggest mistakes of Linux developers is joining the dumb-it-down stampede to the point where people expect it to play games and imitate their familiar GUI, candy-coated-bug for bug.


    Bill (not that one):

    where people expect it to play games and imitate their familiar GUI, candy-coated-bug for bug.


    Bill (not that one):

    play games and imitate their familiar GUI


    This.
    Also, you forgot lots and lots of eye-candy.

    To be honest, I want to visit every KDE developer and kick thier face in.
  • Mr.Bob 2012-11-13 19:33
    Little Bobby Excel:
    emaNrouY-Here:
    I'm wondering if an enterprising hacker would be able to insert a little code injection into those forms and have excel pwn the web server.
    Exactly. This situation does not call for persuading management to do The Right Thing, because they've already demonstrated that their comprehension of such matters has drifted inside the event horizon of a black hole.

    Instead, this is where compliance is your friend. If you can't get them on the license* nonsense, go to an unsecured wi-fi and use TOR to upload a malicious spreadsheet that splatters ugly colors all over the place but does no real harm. (They need to see the threat to understand it.) Then arrange for your company's auditor to hear that OMFG our server was haxxor3d!! Stand back and watch in amazement as idiots get fired and management takes a day off from playing golf to try to figure out WTF is going on.

    * Seriously, if paying good money for something that's available free doesn't bother you, then what about the legal risk? And all the hassle of license management? Free software is so much better even if the only thing it adds is freedom from the abuse heaped upon you by license-checking mechanisms


    My surly and pessimistic side predicts that this scenario would play out differently. Instead of being called out for their ineptitude, management will throw the admins and developers under the bus for "allowing" such a security hole to exist.

    Prove me wrong, kind sir...
  • badcaseofspace 2012-11-13 20:22
    TheCPUWizard:
    Microsoft Office Licenses specifically prohibit the applications from being used in a Server Environment.

    WTF are you on about? Office installed in a Terminal Services environment is completely allowed and useful. The end user needs a valid license for Office, though. You can't license office for a single server.

    You didn't hear me say that makes it any easier.
  • Scarlet Manuka 2012-11-14 00:49
    In the project I'm currently working on, there is a component for which I've managed to preserve the designation Custom Role Assignment Package. It's one of the few things about the project that makes me happy.
  • foo 2012-11-14 01:40
    Huzzah:
    Admittedly, UNIX can be a little too unforgiving for home users (sometimes it would be nice if "rm" had some failsafe - either prompting the user
    I thought "alias rm='rm -i'" was the default on most systems these days ...

    or having a temporary Recycle Bin type thing) - although I think the GUI interfaces for it (which I'm guessing is the less technical people would use) have those sort of measures in place....
    Yes. But indeed, a system-wide recycle bin would be a big improvement.
  • da Doctah 2012-11-14 02:50
    ¯\(°_o)/¯ I DUNNO LOL:
    I don't see the WTF here. I mean, Excel is Turing-complete, right? Party on!
    It's more than Turing-complete. It's self-aware.
  • Abe 2012-11-14 04:10
    This brings memories. Decade ago I was working for a company which abused Lotus Notes into performing unimaginable things. We had a set of "web applications" which was total mess of lotus forms printing HTML full of IFRAMEs and Javascript. A big "colorizing" function (as we called it) was triggered from onLoad(), scanned the html and changed the look of fields, buttons and many other objects. Validations were all also done by Javascript on the client browser, by which I mean IE only. And of course, there was a button which triggered a Loutsscript Agent running on the Domino server, which summoned up some data, invoked the Excel (yes, installed on the server), filled the data in, saved XLS into a temp directory and then attached the XLS to the LotusNotes document the user was working with. I remember having long argument with my boss about the "IE only", he literally swore that it will never be ran on anything else than IE. Recently, an ex-colleague told me that few months after I left he was assigned to make it work with Firefox. Yeah. He said wanted to kill me.
  • Iain 2012-11-14 04:49
    Code Master:
    LoremIpsumDolorSitAmet:
    I was expecting the story to end like this: he found out that the spreadsheet just did simple multiplication and addition, so he simply inlined the calculation into the code and got rid of the Excel nonsense altogether. Wishful thinking, apparently!


    In my experience the excel spreadsheet would be running several VBA add ins, and few COM libraries, plus maybe some xlls, and the calculation would involve calling serveral of these. Replacing this functionality in your code would be difficult assuming it wasn't all documented (fairly safe assumption).


    And those of us who have experienced it know that TRWTF beyond all other WTFs is when a simple Excel formula/macro that some business person spent years on (yes, that juxtaposition of simple and years is deliberate) somehow becomes enterprise critical because their clueless colleagues have come to depend on it.
  • Cbuttius 2012-11-14 04:51
    WC:
    It's an excel spreadsheet. It's got formulas in it. Turn them into server-side code and eliminate all that craziness.

    I've written some seriously crazy Excel formulas in my day, but every one of them would have been a lot easier in a normal language that would run on that server with no problems.


    The client side has Excel. You need to implement, on the server side, the notion of a spreadsheet, possibly multiple worksheets, as a DAG and the formulae as relationships between them, and get these formulae to recalculate when the data changes.

    Not trivial to do.

  • turist 2012-11-14 07:08
    This would make a great scenario for advertising MS SharePoint Server with Excel Services -- they allow you to do exactly this (drive calculations through Excel) in a somewhat more sensible manner.
  • Tom 2012-11-14 07:11
    Well I don't know what happened, exactly. I mean, I put the spreadsheet on the server like we discussed, but then the server immediately crashed. Next, everybody started calling in saying that their spreadsheets wouldn't open -- every computer, every spreadsheet! They were all just getting a pop-up that said "license violation". I've heard the software vendors have crazy new ways to "validate" your "genuine" software but I never heard of this before.

    No, I haven't tried deleting the spreadsheet from the server.

    You really think so?

    OK... how about now?

    Excel is working again? And you're sure you didn't do anything different? Wow. Ask someone near you to try a spreadsheet. Yeah? OK then I guess we're good.

    Great idea, by the way, deleting the spreadsheet from the server. I'm going to tell all the techies I know about your insightful solution.
  • Neil 2012-11-14 07:51
    foo:
    a system-wide recycle bin would be a big improvement.
    Novell Netware had undelete back in the 1980s. If you weren't careful your disk would run out of directory entries for deleted files. (One of the volume repair options was to purge all the deleted files.)
  • W. 2012-11-14 08:04
    Medinoc:
    It means that there is nothing, nothing, that prevents the automated Office application from displaying (visibly or not) a modal dialog box.


    I have this all the time.

    We have a system which generates a cover sheet in Word for every document that needs to be transmitted to our clients. In the background it starts a process on a "special server" - actually a box on the server room floor running WinXP professional. It opens Word and "prints" the cover sheet to PDF and then attaches it to the document using antiquated PDF freeware. Then the resulting file magically appears in the user's %temp% folder and that then has to be dragged and dropped into our document management system.

    It only takes some joker to use a font that isn't installed on the "special server" to make Word popup with a message and then nobody can make files for clients until they get hold of me to log into the remote server and click okay.

    Or someone makes their file read only.

    Or adjusts the print margins.

    Or uses any non-Latin encoding.

    Etc etc.
  • foo 2012-11-14 09:50
    Neil:
    foo:
    a system-wide recycle bin would be a big improvement.
    Novell Netware had undelete back in the 1980s. If you weren't careful your disk would run out of directory entries for deleted files. (One of the volume repair options was to purge all the deleted files.)
    Or out of disk space, which is of course always a danger with unrestricted "recycling".

    Or do you mean plain Dos style optimistic undeleting, i.e. if nothing happened to overwrite a sector it may work? Slightly better than nothing, but these days I'd rather have something more deterministic to rely on.
  • Paul Neumann 2012-11-14 10:58
    LANMind:
    Michael:
    Amazing! TRWTF is that my old workplace (a German Investment Bank in London) did something similar about 10years ago. And it was waved through with the same arguments: The front-office people love Excel and want to be able to update their formulas easily.


    It would be nice if dot net provided a runtime interpreter. I manage a bunch of contantly changing pricing formulas that I would love to present to the users in a UI, and if it isn't right then it isn't my problem...
    It's just awful that .NET doesnt have some AssemblyBuilder class which could emit generated code at runtime. Maybe when they release the 1.1 SDK they'll consider this.
  • DWalker59 2012-11-14 12:47
    Little Bobby Excel:

    * Seriously, if paying good money for something that's available free doesn't bother you, then what about the legal risk? And all the hassle of license management? Free software is so much better even if the only thing it adds is freedom from the abuse heaped upon you by license-checking mechanisms


    Yeah, if only the entirety of Excel 2007 or Excel 2010 was "available free", you might have a point.

    * Pain-free, transparent running of complex Excel code written in VBA, which might use COM automation to drive instances of Word, Access, or other non-Microsoft software?

    * Pivot tables and pivot charts, with data slicers, and the ability to store more than 1 million rows of data underlying the table INSIDE the Excel file?

    * Native consumption of OLAP cubes/SQL Analysis Services cubes by a pivot table?

    While free alternatives to Excel can do a lot for a lot of customers, don't make the mistake of thinking that everything Excel can do is "available free". It's not.



    Addendum (2012-11-14 12:54):
    * PowerPivot?
  • PiisAWheeL 2012-11-14 14:12
    El Ka-Ben:
    It sounds mostly like a stopgap measure to me -- they get it working now and add this to the bug tracking list. When they get a chance to tackle it then it can be rewritten in code.

    Right now someone has disabled the current production version, not their development version, and that needs to be addressed before the root cause can be tackled.

    It'd be like putting the doughnut spare back on the car to get to the shop and have a tire replaced.
    NO NO NO BAD DOG NO BISCUIT NO! You do not implement a stopgap measure of "reinstall the app and make it license compliant" when a few lines of fresh code on the server will take LESS time to implement than reinstalling that bulky crap.

    function process_the_crap ($box1,$box2,$box3,$box4,$box5)
    {
    return $box1 * box2 ($box3 - abs(box4)) more fictional math;
    }

    I think thats TRWTF.
  • shadowman 2012-11-15 00:55
    justanotheradmin:


    Not quite. It prohibits installing it to a server for the purposes of serving requests to unlicensed clients. In other words, doing Excel-y things for users who don't have Excel installed.

    As long as Excel is installed as part of your standard build, so all users using the server app have a local installation, you're golden.


    I don't know exactly how the Volume Licenses work for companies, but does it actually need to be physically installed on the workstation to be licensed?
  • Spudley 2012-11-15 05:41
    tim:
    TheCPUWizard:
    Aram got it all re-installed and added to the License Compliance system, but he had one question.


    That is the real WTF. Microsoft Office Licenses specifically prohibit the applications from being used in a Server Environment. This is the biggest reason why Server Applications that *must* create Office "documents" need to use the OpenXML implementation.

    Adding something to the "License Compliance System" does *NOT* make something actually comply with legal licensing requirements.

    and TRWFT is, no they don't - get your facts straight


    *Shhhhhh!* Don't correct him! The more people who believe what he said, the fewer systems will be created like the one in the story.
  • Medinoc 2012-11-15 06:25
    PiisAWheeL:
    a few lines of fresh code on the server will take LESS time to implement than reinstalling that bulky crap.

    function process_the_crap ($box1,$box2,$box3,$box4,$box5)
    {
    return $box1 * box2 ($box3 - abs(box4)) more fictional math;
    }

    I think thats TRWTF.

    Congratulations, you just hard-coded a behavior that the client wanted both soft-coded and compatible with Excel. And which used to work, so on top of not satisfying the client it's a regression.
  • Rester 2012-11-17 12:19
    Mark Antony: "The evil that men do lives after them; The good is oft interred with their bones".
  • Jonathan Wilson 2012-11-18 23:35
    I dont know exactly how its done but I have a program where one of the files is a .cs file that gets compiled at run-time and can be edited by the user.

  • Jonathan Wilson 2012-11-18 23:35
    I dont know exactly how its done but I have a program where one of the files is a .cs file that gets compiled at run-time and can be edited by the user.