Jason Mauss' Blog Cabin

Because someone's got to do the dirty work

Blog-Flair

Blogroll

Links

November 2004 - Posts

How would you store the information?

One of the new products I'm developing for my company is "NQuery", a SQL builder WinForms UserControl. It displays various schema information so the user can drag and drop tables, choose some fields, set some criteria values, etc. in order to have the SQL statement created for them. (btw, props to Scott for coming up with the name "NQuery" - I'll try to round up some swag for you, Scott.)

When the information needs to be saved, I need to store all of the relevant schema information, criteria, and visual display settings to a file.

My first (and only) thought so far has been XML. I could store the information like so:

<nquery version="0.1" release="Alpha">

   <sqlstatement type="select">

      <select distinct="false" top="0" percent="100">

         <selectitems>

            <selectitem>

               <alias></alias>

               <expression></expression>

               <field></field>

            </selectitem>

         </selectitems>

         <from>

            <tables>

               <table>

                  <owner>dbo</owner>

                  <name>Orders</name>

               </table>

            </tables>

         </from>

      </select>

      <update>

         <table>

            <owner>dbo</owner>

            <name>Orders</name>

         </table>

         <setvaluefields>

            <field name="orderdate" value="10/15/2004" />

         </setvaluefields>

         <criteriafields>

            <field name="orderid" value="100" />

         </criteriafields>

      </update>

      <delete>

         <table>

            <owner>dbo</owner>

            <name>Orders</name>

         </table>

         <criteriafields>

            <field name="orderid" value="100" />

         </criteriafields>

      </delete>

      <insert type="into">

      <into>

         <table>

            <owner>dbo</owner>

            <name>Orders</name>

         </table>

         <fields>

            <field name="customerid" value="10" />

            <field name="employeeid" value="5" />

            <field name="orderdate" value="10/15/2004" />

         </fields>

         </into>

         <from>

         </from>

      </insert>

   </sqlstatement>

   <options>

      <displayownername value="false" />

   </options>

   <displaysettings>

   </displaysettings>

</nquery>

(This XML snippet encompasses all possible SQL types (Sel/Ins/Upd/Del) and is not entirely complete but you get the idea...)

Can anyone think of a better way to store this type of information? My concerns are

  1. Parsing the whole tree to populate the object model seems like it could be costly performance-wise
  2. There might be a better format to express this in other than XML
  3. There might be a simpler way I just haven't thought of

If anyone has any thoughts and/or ideas they'd like to share - please - feel free in the comments or through the contact link or email me at jason dot mauss at gmail dot com.

I-Hate-Oracle Club (IHOC)

In addition to the hilarious posts found at TheDailyWTF site, Alex started up an I-Hate-Oracle Club for all of us that find SQL Server be an absolute developers' dream compared to working with Oracle. If you've done any Oracle development before and found Oracle to be less than intuitive, you owe it to yourself to join this club.

I almost feel like starting up an "I-Hate-TOAD Club" too since it crashes on me about 3 to 4 times a day while I'm trying to bypass the righteous tools like SQL * Plus and DBAStudio.

Mike Gunderloy's Daily Grind hits #500

I've actually been making a mental note to post about this since Mike reached Daily Grind #475 or so..so it's nice to see he's finally hit #500.

I've had the pleasure of working with Mike back when Pinnacle's "Hardcore Web Services" magazine was still alive. His Daily Grind blog posts are a great way to hear about all the latest interesting tech news. I like the fact that Mike never makes more out of the news than there actually is either. Maybe he's just cynical after being a techie for so long, heh.

Anyway, go check it out and subscribe to his feed if you haven't already.

The Daily Grind (website)
The Daily Grind (rss feed url)

EA and what every dev already knows

bit of a rant here (again)...you've been warned.

I found this post (linked by many places, including Slantdot) from a spouse of an EA employee (that's 'Electronic Arts' for anyone that doesn't know - a video game company) that chronicles the long, long hours her spouse put in working at EA and for what...? overtime? comp days? bonus pay? No, not even a pat on the back or a "good job".

Now, I've been a developer for almost 7 years now so, I'm fully aware of this kind of thing. I know it happens. I've never approved of it...and I've been in the situation myself plenty of times before. Nobody likes the "death march" phase of projects, I know. But, there are two things that really bother me when reading this.

1. Why do developers (as a whole) seem to be so afraid to stand up for themselves when they're being abused like this? Guys and gals...DO SOMETHING. I think part of the reason developers are overworked and underpaid is because they allow it to happen. Stop letting Mr. Corporate "I make more in one day than you do all year" take advantage of you. Do I need to say, "5t0p 13771ng j00rself get pwn3d!" for you to understand?

2. Why do the managers/bosses/whatever still think it's OK to work people like this without any kind of additional compensation? Perhaps I answered this question with #1 but, I'd like to offer a sentiment that I think would be shared by a lot of developers. A LITTLE GOES A LONG WAY. I'm talking about money here. Give the people that continually save your business (see: "ass") some rewards for doing so. A christmas bonus. Give out $100 gift certificates to Fry's. Have the company buy them lunch every once in a while. I don't care what you do for them...just show some appreciation every now and then. Whatever happened to "hey, thanks for all the hard work!" in this industry?

All that reading that EA spouse's post has really done for me is to reinforce the way I feel about achieving success in this industry. Either own what you do, (your own business) or prepare for a career of feeling underpaid, underappreciated, overworked, and taken advantage of. For me, the only way to feel good about having worked so hard, for so many hours, is to see a bulge in my wallet. I'm to the point now where I can fully understand why the success of the project comes second to money earned for some people. Just as the EA management tells their employees to put up or shut up (work somewhere else), I think the employees should all yell back, "yeah...? well pay up or shut up!" (figure out how you're going to handle bankruptcy).

Am I the only one that thinks/feels this way?

Posted: Nov 11 2004, 09:43 AM by jamauss | with 5 comment(s)
Filed under:
I've sinned and I'm going to gather requirements

I really don't understand why putting together software program requirements tends to be such a hellish, ill-fated task. I just have to rant today because if I don't, I might break some piece of equipment I need to be able to work. Then again, maybe I'd finally be able to take some time off if that happened.....but I digress.

So, without further ado, here are the profiles of some Dilbert-esque characters that, despite the best efforts of recruiters, head-hunters, and interviewers, still manage to pervade almost every business I've ever built software for. I bring them to you in no particular order since, what they give me is never in any particular order either.

1. Captain Assumption
This is the person that assumes since you know computers so well, you're also an omniscient mind-reader and don't need to be told anything about anything. I realize mastering keyboard and mice skills are impressive but, really, I need you to work with me here Cap'n. If you want me to build you reports from a database that I have absolutely no knowledge of, and there are over 100 tables in the schema, and I don't have a diagram of the schema, and you won't give me access to your DBA, I'm gonna need you to give me some kind of idea which fields from which tables you want to see on your reports. No, Crystal Reports doesn't have a wizard that will tell me what you want, despite what you say it's done for you in the past. No, neither does Access. I can put on a sparkly hat with moons and stars on it if you really feel you must use a wizard to accomplish defining the report requirements...shall I?

Another thing Captain Assumption is really good at is assuming you know what all the acronyms he uses stand for as well as their meanings and translations. When he tells you that they want to be able to filter the reports by PRNS ID, CostFactor, TPE, OUB, and other arbitrary strings of letters, he assumes you know what that means. Especially if the acronyms he uses are nowhere to be found among field and table names. I mean, c'mon...the people he's worked with for 5 years now know what those acronyms mean, why don't you?

Lastly, The Good Cap'n is also really good at assuming that, regardless what he says, however misleading it may be, you understand what he meant. When Captain says "and then it will write back to the database"...he knows you understood that what he really meant was, "it will write back to a staging database that will have nightly processes run on it to transfer the data to the database you got the original data from so that it can run through a series of arbitrary business rules." Same thing. No explanation needed.

2. MatrixLearningMan
MatrixLearningMan got his name from his ability to go from a know-nothing on a subject to expert in the blink of an eye. It's as if he was plugged into The Matrix and got a download for the subject to his brain. MatrixLearningMan can be overheard making statements like, "Here's how the screen should look". Now remember, even though you've spent countless hours reading through books learning about UI design and have years of experience building user interfaces, MatrixLearningMan knows better than you. He'll tell you about UI standards you didn't even know existed because...yep, you guessed it, you're not him. Even though you know the difference between bitmap and vector graphics tools, he'll tell you how you should use MS Paint to build the preliminary mock-up screen images. And then he'll even crack open Paint and show you what he means. You can also detect the secret identity of MatrixLearningMan when you hear him say things like, "whoa...I know Kung Fu".

3. SuperFalseTechnologyTruthsBelieverMan
This guy comes from the planet Slashdotia in the OSD galaxy where they speak in a language called "31337". He will tell you how you shouldn't use a certain technology or development platform because of some rumors he read about it that were scribbled on his pirated DVD copy of Tron by a colleague that can't even spell XML. His only-known weakness is that you can stick a piece of tape under his mouse and he'll be helpless for days. Put him in a requirements meeting and he'll really destroy you. SFTTBM has been known to derail requirements meetings for hours at a time just in an effort to point out how superior PHP is to ASP.NET. Then he'll take you out for a working lunch and explain how superior tofu is to real meat. Order some tofu too, or you'll offend him. Clashing opinions aren't long for the world of SFTTBM.

4. ArbitraryRequirementsMan (a.k.a ARM)
ARM is really one of the biggest villians of them all. He'll toss around requirements like there's no tomorrow and is hard to stop. ARM will say things like, "oh...and this needs to be entirely web-based" and "this needs to meet ISO software standards" and even occasionally he'll say something like, "this needs to be unicode compliant and support multiple languages". Don't worry though, he'll save that last quote until development is almost complete. Whatever you do, don't ask ARM "why?". He doesn't need to give justification for his requirements.

I'm sure you and I both could think up some more characters but, for now, I'm done.

Posted: Nov 08 2004, 07:01 PM by jamauss | with 16 comment(s)
Filed under:
More Posts