"Spreadsheet Gear" - NAME! KROON!



  • For the past few months I have been seeing banner ads for something called "Spreadsheet Gear" all over the place, on programming and IT-related websites. One of the main such ads that I see has a quote saying something like "our queries returned over 100 times faster!" This nugget is attributed to the "Chief .NET Architect at Applied OLAP, Inc."



    This is not the sort of ad that normally excites me; my idea of a slick reporting tool is "stdio.h" and my attitude toward .NET is roughly that of a streetwalker contemplating a drunk business traveler.



    Nevertheless, for some strange reason, I found myself exploring the Applied OLAP website today. I guess I am just a true professional, and am thus driven to expose myself to as many perspectives as possible, in an effort to uncover value.



    What I found was a reasonably well-developed website in no apparent distress. I was somewhat amused by this picture, shown in one of their "case studies":



    http://www.appliedolap.com/images/stories/ao/casestudies/case-cantor1.jpg



    I contemplate the currency list along the right side with the greatest of confusion. What does a company in Huntsville, AL want with the Cape Verde Dinar? Shouldn't they correct the currency entry reading NAME before they expand into the Indies? Do the Falkland Islands really have their own currency? (I guess they won that war.) What is "Unidad de Valor C?" And what happened to Unidades A y B? What about the entry reading simply "Kroon" ? And shouldn't they fix these things before putting together a "case study"?


    Beyond that, the blurred out central area really dominates the picture for me. Am I supposed to glean something from the remainder of the picture? Most of this remainder is dedicated to listing obscure currencies (along with NAME, Kroon, etc.) So maybe the message is that I can report on Certain Things involving obscure currencies, and that the lookup list for these will be long, confusing, and inaccurate.



    Who buys this sort of thing? And in what way is Applied OLAP, Inc. a consumer of "Spreadsheet Gear?" I would tend to think (here in my ivory tower, building the firmware for bomber dashboards and such) that the makers of Spreadsheet Gear would be competitors with Applied OLAP... how many fricking layers can be placed between VB and Oracle, anyway? And how can adding layers ever make anything "100x faster?"



  • @bridget99 said:

    my attitude toward .NET is roughly that of a streetwalker contemplating a drunk business traveler.

    You may think of yourself as a streetwalker but I object to .Net being called a drunk business traveler.



  • @bridget99 said:

    my attitude toward .NET is roughly that of a streetwalker contemplating a drunk business traveler.

    My feeling towards .NET is more like a sober business traveller coontemplating a drunken streetwalker.

     


  • Garbage Person

     "Currency for Cons" intrigues me. Cigarettes, porno and buttsex?



  • *googles* Kroon is a real currency (from Estonia).

     

    I imagine the train of "thought" here was "let's make it clear that they're not limited to just a handful of choices", without getting as far as "let's also make it clear that they don't have to wade through a bunch of crap they're not actually gonna use".  (If they actually can't remove the crap they're not actually gonna use, then that's an extra bonus WTF.)




  • To add to the other comments the Falklands Island Pound is also a real currency.



  • I'm more concerned with the blurry part... Were they really lazy enough not to whip up some demo data, and went and disguised some poor unsuspecting client's real data?!



  • @bridget99 said:

    Who buys this sort of thing? And in what way is Applied OLAP, Inc. a consumer of "Spreadsheet Gear?" I would tend to think (here in my ivory tower, building the firmware for bomber dashboards and such) that the makers of Spreadsheet Gear would be competitors with Applied OLAP... how many fricking layers can be placed between VB and Oracle, anyway? And how can adding layers ever make anything "100x faster?"

    Well, there's nothing wrong with OLAP, and applying OLAP where you were previously just using queries could easily give a 100x speedup, or more. (Depending on the size of the dataset.)

    But if you're going to use OLAP, why would you buy some weird third-party solution instead of using the OLAP tools that ship with your DBMS? I mean I can tell just by looking at the screenshot that Microsoft's SSIS is going to do a much better job than that tool. Edit: it just hit me... Oracle's OLAP tools are likely to be nightmarishly terrible, so I suppose in that case you'd want a third-party solution.

    I don't get the VB connection... OLAP can speed your application regardless of what the UI is built in. From my experience, it usually feeds into a web charting library or an Excel sheet. (Or were you just trying to be a "VB is crap because I program C and I'm SOOOOO much better than anybody who programs VB, which is crap!" snide jerk?)

    Anyway, compared to the OpenOffice screenshots I posted a couple weeks ago, this one's stellar.



  •  What is the current exchange rate for US Dollar and NAME?

     



  • I wonder just what "Currency for Cons" is... and which meaning of "con" they mean.  Hopefully not the French.

    Also, Georgian Coupons?  Seriously?



  • @bridget99 said:

    What is "Unidad de Valor C?" And what happened to Unidades A y B?
     

    Sounds like a Translate Server Error to me; I bet they tasked an intern with gathering the names of Latin American currencies, and he came back with that.



  • @bridget99 said:

    What is "Unidad de Valor C?" And what happened to Unidades A y B?

    It's a defunct Ecuadorian currency from the 1990s. The C stands for constante.



  • @Someone You Know said:

    @bridget99 said:
    What is "Unidad de Valor C?" And what happened to Unidades A y B?

    It's a defunct Ecuadorian currency from the 1990s. The C stands for constante.

    Actually you're close. It's the name of one of the most vicious Ecuadorian gangs. I'm not allowed to tell you what the C stands for but it's not good.



  • @emurphy said:

    *googles* Kroon is a real currency (from Estonia).


    Well, not anymore. On jan 1, they switched to Euro.

    That said, Crown (kroon, krona, koruna) is used as the name of the currency in several countries, including Sweden, Denmark, Norway, and several others.



  • @blakeyrat said:

    a "VB is crap because I program C and I'm SOOOOO much better than anybody who programs VB, which is crap!" snide jerk?

    No; I've actually done a fair bit of both. More importantly, I think that there is more to the story than language. It's equally possible to call into crap OLAP tools in both C and VB.



  • @bridget99 said:

    It's equally possible to call into crap OLAP tools in both C and VB.

    Well, duh. However, it's equally possible that this is a great OLAP tool; all we know so far is that they have some sloppy data, and that you're not the world's greatest expert on currencies.



  • @b-redeker said:

    Well, duh. However, it's equally possible that this is a great OLAP tool; all we know so far is that they have some sloppy data, and that you're not the world's greatest expert on currencies.

    ^- What he said. Also from your initial post, you seemed unaware what OLAP even *was*, questioning the "100 times faster" claim which is more than reasonable. (Do you seriously think adding layers can never make programs faster? Kind of WTFy claim, there.)

    Sorry for assuming, but I guess your original post was kind of all over the place, and a snide VB insult wouldn't have been out-of-place in it.



  • @blakeyrat said:

    @b-redeker said:
    Well, duh. However, it's equally possible that this is a great OLAP tool; all we know so far is that they have some sloppy data, and that you're not the world's greatest expert on currencies.

    ^- What he said. Also from your initial post, you seemed unaware what OLAP even *was*, questioning the "100 times faster" claim which is more than reasonable. (Do you seriously think adding layers can never make programs faster? Kind of WTFy claim, there.)

    Sorry for assuming, but I guess your original post was kind of all over the place, and a snide VB insult wouldn't have been out-of-place in it.

    I think it's self-evident that layers cannot make anything faster. That's a simple matter of Physics. But I do have a high-level understanding of what that ad means by OLAP: take some relational data and copy a snapshot of it into a spreadsheet-like view (or other non-relational, array-like stucture) for reporting purposes. I can see where this might work, and might even be a good idea for some people, but to claim that it makes anything "faster" is disingenuous.

    Sure, once the data is in this over-simplified little matrix, certain aggregations are easier to calculate. But this is in no way a fair comparison to the original queries. A query engine can query the data in real time, without any need to copy it, or to artificially force it into a grid or hierarchy. The domain of questions that can be posed against the data when using a relational query tool, and the real-time accuracy of the data, are both unattainable by the OLAP tool. Many management reports end up being misleading oversimplifications in my opinion, and this technique only exacerbates this trend.

    Equally important, I don't see where a special product or layer is necessary to do any of these things. I have (unfortunately) a copy of Excel. I also have a copy of SQL Server Visual Enterprise Integrated Query Management e-Studio (or whatever they're calling it now). So it's not much of a leap from "relational data" to "report-friendly view," at least for me, and I think products like this one thus address a need which really does not exist. It's thus no surprise that such products rely on heavy-handed marketing (which we're seeing).



  • @bridget99 said:

    I think it's self-evident that layers cannot make anything faster.

    Seriously? What if the layer is a cache?

    @bridget99 said:

    But I do have a high-level understanding of what that ad means by OLAP: take some relational data and copy a snapshot of it into a spreadsheet-like view (or other non-relational, array-like stucture) for reporting purposes. I can see where this might work, and might even be a good idea for some people, but to claim that it makes anything "faster" is disingenuous.

    OLAP's summary data can be used to create derived stats without hitting the original database... which means your analyst can go from "what would happen if I did this..." to "here's the results" in 15 seconds instead of 15 hours. (This all depends on the size of the database of course.) So it's practically faster for the analyst.

    Since the OLAP cube can be built using simple queries without complicated joins or WHERE clauses, it's also faster for the database to report from the cube. Even if you disregard the previous point and your analysts only run canned reports all the time.

    So yes, using an OLAP cube for reporting is always faster for any decent-sized database.

    (Building the OLAP cube isn't "pre-cache reporting queries we know we'll need," it's more "pre-cache aggregations we know we'll need, so we can create our reports from the aggregations.")

    @bridget99 said:

    The domain of questions that can be posed against the data when using a relational query tool, and the real-time accuracy of the data, are both unattainable by the OLAP tool.

    How do you figure?

    (I concede that if your OLAP isn't currently aggregating some piece of data that your analysts will later need, this could potentially be true. But the solution is to fix the OLAP cube, not to throw out OLAP altogether.)

    (I've never personally come across a system where "real-time" reporting was a design concern. I also concede they might exist, and that OLAP might be a bad solution for such a system.)

    @bridget99 said:

    Many management reports end up being misleading oversimplifications in my opinion, and this technique only exacerbates this trend.

    How do you figure?

    @bridget99 said:

    Equally important, I don't see where a special product or layer is necessary to do any of these things.

    Then you have a very small dataset. OLAP isn't for small datasets.

    @bridget99 said:

    I also have a copy of SQL Server Visual Enterprise Integrated Query Management e-Studio (or whatever they're calling it now). So it's not much of a leap from "relational data" to "report-friendly view," at least for me, and I think products like this one thus address a need which really does not exist.

    If the need doesn't exist, why does the product exist? (Metaphysical! OooOOOooOOOoooOOO!)

    Look, you haven't really said anything to convince me you know what OLAP is or what it's used for. And since you started your post with such a WTF-y statement that translates basically to "caching data can't possibly speed anything up"... well, my mind is unchanged. Not sure why you woke up this old thread to post that.



  • @bridget99 said:

    I think it's self-evident that layers cannot make anything faster.
     

    I discovered that jQuery.animate() was quite a bit faster than the very simple timed shit I wrote myself.

    jQuery is a layer. Quite a thick one, really.

    Next up we'll see you explaining why caching and jQuery are not layers.

    @bridget99 said:

    That's a simple matter of Physics.


    TDEMSYR.



  • @blakeyrat said:

    If the need doesn't exist, why does the product exist?

    The obvious flaw in this logic is that SSDS exists.



  • @Scarlet Manuka said:

    @blakeyrat said:
    If the need doesn't exist, why does the product exist?
    The obvious flaw in this logic is that SSDS exists.

    You think there isn't a need for SSDS?  I think you'll find Swampy has provided ample evidence to the contrary.



  • @Hatshepsut said:

    You think there isn't a need for [b]more licensed psychotherapists[/b]?  I think you'll find Swampy has provided ample evidence to the contrary.

    FTFY.



  • @dhromed said:

    I discovered that jQuery.animate() was quite a bit faster than the very simple timed shit I wrote myself.
    That's because jQuery's animating algorithm was better than yours. If you had used the same algorithm that jQuery uses then it would have been even faster.
    @dhromed said:
    jQuery is a layer.
    jQuery is a library. It's part of the same layer where all your own javascript is.



  • @julmu said:

    jQuery is a library. It's part of the same layer where all your own javascript is.
     

    When a library so completely replaces the javascript I would otherwise have written, largely leaving only control structures, I'm strongly inclined to call it a layer.

    @julmu said:

    That's because jQuery's animating algorithm was better than yours. If you had used the same algorithm that jQuery uses then it would have been even faster.

    I have doubts about this until I see it demonstrated. jQuery performs a ton of periferal stuff to any given method call, so on the face of it it's strange that adding a big library makes things zippier.

     



  • @dhromed said:

    @julmu said:

    That's because jQuery's animating algorithm was better than yours. If you had used the same algorithm that jQuery uses then it would have been even faster.

    I have doubts about this until I see it demonstrated. jQuery performs a ton of periferal stuff to any given method call, so on the face of it it's strange that adding a big library makes things zippier.

     

    But it doesn't do anything that you couldn't do yourself if you knew how. It's pure JavaScript.


  • Trolleybus Mechanic

    @Someone You Know said:

    But it doesn't do anything that you couldn't do yourself if you knew how. It's pure JavaScript.
     

    Yeah, other people have put a few hundred thousand man-hours into it to figure out how to do dumb shit in IE so I don't have to.



  • @Lorne Kates said:

    @Someone You Know said:

    But it doesn't do anything that you couldn't do yourself if you knew how. It's pure JavaScript.
     

    Yeah, other people have put a few hundred thousand man-hours into it to figure out how to do dumb shit in IE so I don't have to.


    IE uses something called JScript, which is a combination of JavaScript, VB, and anything they could find under their bathroom sink.



  • @Ben L. said:

    IE uses something called JScript, which is a combination of JavaScript, VB, and anything they could find under their bathroom sink.

    I think JScript (the OS scripting language) and JavaScript (the web scripting language) are officially two different things now. JScript was 99% JavaScript from day one, once in a blue moon you hit an operation it does differently than JavaScript, but it's pretty rare. (And in some cases, JScript is actually smarter than JavaScript... in JScript, you can do:

    var gebi = document.getElementById;
    gebi("hello").style.border = '1px solid red';

    That don't work in JavaScript.)

    In any case, JScript has never had anything to do with VB other than both having the same libraries.

    Edit: If you want mutant ECMAScript implementations, take a look at ActiveScript. Especially AS2.0.



  • @blakeyrat said:

    If you want mutant ECMAScript implementations, take a look at ActiveScript. Especially AS2.0.
     

    It's an alien merger that we must name "ECMADelphi"



  • @blakeyrat said:

    And in some cases, JScript is actually smarter than JavaScript... in JScript, you can do:

    var gebi = document.getElementById;
    gebi("hello").style.border = '1px solid red';

    That don't work in JavaScript.

     

    Really? What about that doesn't work in JavaScript?



  • @Someone You Know said:

    @blakeyrat said:

    And in some cases, JScript is actually smarter than JavaScript... in JScript, you can do:

    var gebi = document.getElementById;
    gebi("hello").style.border = '1px solid red';

    That don't work in JavaScript.

     

    Really? What about that doesn't work in JavaScript?

    Try it. You can't set a var to a built-in function.

    Although, admittedly, the ECMAScript spec may or may not allow it, so it might be an implementation thing. Either way, IE is the only browser that'll run that code, at least a few years ago when I checked.



  • @Someone You Know said:

    Really? What about that doesn't work in JavaScript?

    Firefox gives this exception:

    uncaught exception: [Exception... "Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)" location: "JS frame :: file:///C:/search/ssrr-rocks.html :: <TOP_LEVEL> :: line 10" data: no]

    In my IE 8 (using XP (I know)), it gives an ActiveX warning (?) and then after I confirm that it's okay to run, it correctly changes the style.

    Looks like touching native functions is a security concern. That kind of maybe would sort of make sense if you were redefining them or whatever, but not just pointing to them as far as I can see. Bah.



  • @Xyro said:

    file:///C:/search/ssrr-rocks.html

    The ActiveX warning is because you're running it from a local drive. Put it on a webserver, and there won't be a warning.



  •  repointing document.getElementById becomes a noop inthe firebug console. Doesn't even give an error.



  • @blakeyrat said:

    @Xyro said:
    file:///C:/search/ssrr-rocks.html

    The ActiveX warning is because you're running it from a local drive. Put it on a webserver, and there won't be a warning.

    TRWTF! Sure I trust my own hard drive less than teh Interwebs.



    Also, I can't open a fricken chm help file from a shared drive inside my VM! I have to copy it over.



  • @derula said:

    @blakeyrat said:
    @Xyro said:
    file:///C:/search/ssrr-rocks.html

    The ActiveX warning is because you're running it from a local drive. Put it on a webserver, and there won't be a warning.

    TRWTF! Sure I trust my own hard drive less than teh Interwebs.

    Not the point; the point is running scripts from your own HD (by definition) breaks IE's sandbox.



  • Hmm, that is interesting. IE does indeed allow the gebi reference when the script is on a proper web server, whereas Firefox throws an "Illegal operation" error. Chrome throws it as an "Illegal invocation" TypeError.



  • Oh wait, I see why. When you grab the function, the meaning of "this" changes. In the case of document.getElementById("hello"), the "this" is the document. With a plain gebi("hello"), the "this" is the context of the call, which in the test case falls back to the window, and that breaks the function. However, if you use an apply instead to directly specify the "this" to be the document, it works fine: gebi.apply(document, ["hello"]). That makes sense, at least, although I agree with you that the IE function's behavior should probably be the correct one.



  • @Xyro said:

    Oh wait, I see why. When you grab the function, the meaning of "this" changes. In the case of document.getElementById("hello"), the "this" is the document. With a plain gebi("hello"), the "this" is the context of the call, which in the test case falls back to the window, and that breaks the function. However, if you use an apply instead to directly specify the "this" to be the document, it works fine: gebi.apply(document, ["hello"]). That makes sense, at least, although I agree with you that the IE function's behavior should probably be the correct one.

    Right. There should be no difference in behavior between that example, and this one:

    var fakeDoc = new Object();
    fakeDoc.fakeGebi = function( a ) { return document.getElementById( a ) };

    var gebi = fakeDoc.fakeGebi;
    gebi('testID').style.border = '1px solid red';

    (Untested code; probably has typos; don't be a pedant)



  • But if the function needs "this" to be a specific object, then it makes sense that it would fail. Consider this off-the-cuff,-probably-has-typos example:

    var foo = {
    coolGuy: "blakeyrat",
    coolFunction: function(madLib){
    alert(this.coolGuy+" is a "+madLib+" guy.");
    }
    };

    var cf = foo.coolFunction;

    cf("cool");


    What will it return? "undefined is a cool guy.", of course. But if I write the full foo.coolFunction("furious"), it works as expected.

    Ripping the document reference out of the gebi function has some adverse behavior because it depends on "this" being document. It makes sense, although there are clearly better ways to write the function.



  • @blakeyrat said:

    don't be a pedant)

    Fat chance



  • @blakeyrat said:

    @Xyro said:
    Oh wait, I see why. When you grab the function, the meaning of "this" changes. In the case of document.getElementById("hello"), the "this" is the document. With a plain gebi("hello"), the "this" is the context of the call, which in the test case falls back to the window, and that breaks the function. However, if you use an apply instead to directly specify the "this" to be the document, it works fine: gebi.apply(document, ["hello"]). That makes sense, at least, although I agree with you that the IE function's behavior should probably be the correct one.

    Right. There should be no difference in behavior between that example, and this one:

    var fakeDoc = new Object();
    fakeDoc.fakeGebi = function( a ) { return document.getElementById( a ) };

    var gebi = fakeDoc.fakeGebi;
    gebi('testID').style.border = '1px solid red';

    (Untested code; probably has typos; don't be a pedant)


    I think this would be the difference:
    	var fakeDoc = new Object();
    	fakeDoc.doc = document;
    	fakeDoc.fakeGebi = function( a ) { return this.doc.getElementById( a ) };
    
    var gebi = fakeDoc.fakeGebi;
    fakeDoc.fakeGebi('testID').style.border = '1px solid red';
    gebi('testID').style.border = '1px solid blue';
    


  • @Xyro said:

    Ripping the document reference out of the gebi function has some adverse behavior because it depends on "this" being document. It makes sense, although there are clearly better ways to write the function.

    I'm not ripping the function out of its container, though. I set gebi to document.getElementById, not just getElementById. So there's no reason getElementById shouldn't have access to anything in document it needs. EDIT: that was a stupid paragraph.

    The problem is that as a native code function, its getting some special treatment a JS function doesn't. Leading to unpredictable behavior to code jockeys just trying to save a few bytes. EDIT: this one too

    Point is, it should work, and editing posts on a fucking phone is too hard.



  • @blakeyrat said:

    @bridget99 said:
    I think it's self-evident that layers cannot make anything faster.

    ...Blah blah blah cloud, blah blah blah paradigm, herp derp Bridget99 is dumb etc....

    I actually think I'm going to do something like this at work. I seriously doubt we will end up using Alabama Micro DickWidgets 5.0 (or whatever it's called) but I do think we need some sort of reporting playpen to throw the senior managers into if they get too annoying. I think I said something about Excel earlier... that may or may not be the answer. Maybe I'll just write a nightly batch process that dumps some kind of simplification of the data into a CSV file. I could do this using GCC inside of an ancient copy of Cygwin 2.0 beta that I like to use. Maybe I'll even name my variables after people who dislike me. That would be fun.



  • @blakeyrat said:

    [quote user="derula"][quote user="blakeyrat"][quote user="Xyro"]file:///C:/search/ssrr-rocks.html

    The ActiveX warning is because you're running it from a local drive. Put it on a webserver, and there won't be a warning.[/quote]

    TRWTF! Sure I trust my own hard drive less than teh Interwebs.[/quote]

    Not the point; the point is running scripts from your own HD (by definition) breaks IE's sandbox.[/quote]

    And it should be noted that this isn't a "run-it-in-protected-memory" type sandbox, but rather a "don't-give-it-access-to-the-shell" type sandbox. Don't believe me? Try the following code:

    <script language="JScript">
    var shell = new ActiveXObject("WScript.Shell");
    if (shell){
    	shell.Run("notepad.exe");
    }
    </script>


  • @MiffTheFox said:

    @blakeyrat said:
    @derula said:
    @blakeyrat said:
    @Xyro said:
    file:///C:/search/ssrr-rocks.html

    The ActiveX warning is because you're running it from a local drive. Put it on a webserver, and there won't be a warning.

    TRWTF! Sure I trust my own hard drive less than teh Interwebs.

    Not the point; the point is running scripts from your own HD (by definition) breaks IE's sandbox.

    And it should be noted that this isn't a "run-it-in-protected-memory" type sandbox, but rather a "don't-give-it-access-to-the-shell" type sandbox. Don't believe me? Try the following code:

    <script language="JScript">
    var shell = new ActiveXObject("WScript.Shell");
    if (shell){
    shell.Run("notepad.exe");
    }
    </script>
    If you double-click (or otherwise launch) an HTML file from your own HD, doesn't it tend to come up in IE's "local zone", with full privs to everything?



  • @DaveK said:

    @MiffTheFox said:

    @blakeyrat said:
    @derula said:
    @blakeyrat said:
    @Xyro said:
    file:///C:/search/ssrr-rocks.html

    The ActiveX warning is because you're running it from a local drive. Put it on a webserver, and there won't be a warning.

    TRWTF! Sure I trust my own hard drive less than teh Interwebs.

    Not the point; the point is running scripts from your own HD (by definition) breaks IE's sandbox.

    And it should be noted that this isn't a "run-it-in-protected-memory" type sandbox, but rather a "don't-give-it-access-to-the-shell" type sandbox. Don't believe me? Try the following code:

    <script language="JScript">
    var shell = new ActiveXObject("WScript.Shell");
    if (shell){
    shell.Run("notepad.exe");
    }
    </script>
    If you double-click (or otherwise launch) an HTML file from your own HD, doesn't it tend to come up in IE's "local zone", with full privs to everything?

    I don't know about full privileges to everything. "Local zone" affects a bunch of boolean and three-state settings in "Tools->Internet Options" (or wherever they've squirelled this away these days) but I don't ever recall seeing "Give JavaScript Access to 'Shell'" in there. Not even Scott Guthrie / Ray Ozzie could be that stupid. Although JavaScript programming would be much easier.



    Anyway, that's all boring IT claptrap, so here are ten more things I dislike:



    10. Document viewers that show consecutive pages side by side



    9. Children's television



    8. Gesture-based UIs. Where do we draw the line on such things? Will IT technicians have to do the "'Control Panel' Dance" and the "'Internet Options' Shuffle" in a future version of Windows?



    7. Toyotas



    6. Girls' "Nights Out"



    5. Mardi Gras



    4. When sports journalists discuss the attendance of an event. I didn't tune into the Masters because I thought it was some kind of cool "flash crowd" event.



    3. Developers who try to shoehorn everything into a "design pattern"



    2. "[F]olks who live their whole lives out of fear. I mean, what are they hoping to accomplish? Follow the rules, sit in some box your whole life, and sell each other a bunch of offsetting insurance policies or whatever else? Even if you win at that game, you die in an adult nappy [diaper] at age 84. No thanks, man." -Roger Waters, 1997


    1. Clean-sheet redesigns

  • Garbage Person

    @bridget99 said:

    2. "[F]olks who live their whole lives out of fear. I mean, what are they hoping to accomplish? Follow the rules, sit in some box your whole life, and sell each other a bunch of offsetting insurance policies or whatever else? Even if you win at that game, you die in an adult nappy [diaper] at age 84. No thanks, man." -Roger Waters, 1997
    I have a friend from college, who for some idiotic reason still lives with his mother despite hating the shit out of her. "It's cheaper" is all he can come up with. Anyway, every time I cross paths with that woman, she decides to berate me for my supposedly risk-taking and fiscally irresponsible lifestyle.

    It's apparently alien to her that anyone could ever want something different out of life than to own a nice suburban house, a pair of Hondas, never leave a 20 mile radius of home except to go to the time-share in Rehobeth Beach, and raise perfect children as clones of themselves.



  • @bridget99 said:

    3. Developers who try to shoehorn everything into a "design pattern"

    jfklaqaoirjaifrs... Yes. Especially when everything they actually do tends to resembles the noble patterns of big-ball-of-mud and copy-paste programming.

    This is probably not what you meant, but I feel like a coworker rant...

    One of the developers with whom I often interact is big into "templating" her objects. What this means to her is that he copy-pastes a generic object, tweaks it, and calls it good. At this point, we've got dozens if not hundreds of these things. And yes, we frequently find the need to change an aspect of them all and cannot. This is the same guy who interrogates me on what design pattern I'm using in my code, as if I have a pile of "templated" pattern objects that I copy-paste out for myself. "Are you using a Singleton™?" - "Not really. The first instance can be accessed globally and controls the cache for the class, but you can make other instances to customize the particulars. Those will just use the first instance for the baseline behavior." - "Then it's not a Singleton™. You should be using Design Patterns™ like me." - "..."

    He likes to name drop the Gang of Four like they were his childhood friends, but the guy doesn't even know the difference between the stack and the heap.

    He also chides me for my choice of Java for programming, on account that "C is faster". He fancies himself a C programmer, even though he hasn't touched the language in all the years he's worked here. And oh man, the programs he produces are riddled with inefficiencies like linear lookups, constantly opening and closing the same config files instead of caching them, string-based conditionals, ... oh so much useless string manipulation. Like, instead of any sort of try-catch mechanism or even return codes, he returns error strings instead of a response strings, then substrings the return and compares it with the error string he expects in order to determine if a function failed or not. It boggles my mind that he ever thought this was a good idea, but it's in EVERY ONE of his "templated" objects. Somehow, he's got design pattern names for all of them.

    Whenever I point out these insanities, he either yammers out excuses about how his program isn't being used for its strengths, or he gives me an eye-glazing lecture about how much experience he has... arg...


Log in to reply