Monday, December 17, 2012

…delete-delete-delete…

It has been a helluva week-and-some. And, having written about a fifty page rant about the what-all and where-fors and what-the-#&^!s…it remains a better idea not to go into a whole lot of detail.

I honestly don’t know whether or not the whole situation is going to end in lawsuits being filed, or if I’ll be dragged into them if it does, or…what.

So I’ll have to content myself with the following observations in re: The Recent Drama (now with More Drama). It has been…

  • A massive upheaval
  • With rather reprehensible-no-matter-how-you-slice-it causes
  • Also, stupid causes
  • Affecting not just me but up to thirty people directly
  • …which doesn’t even begin to count the innocent bystanders who are also taking shrapnel of various sorts…
    • In the collective experience of said parties, we have never actually been party to something like this
      • Heard stories, but never seen first-hand
  • Also, it is stupid
  • AND upsetting
  • AND has added untold stress to the holidays
    • which may be a hanging offense
    • because they’re hardly stress-free as it is, am I right?!
  • We’ll all be OK in the end
  • But it ain’t gonna be fun, for anybody – even the perps
  • Not that anybody is all that concerned for them, really
  • By the way, did I mention the stupid part?
    • …because seriously, The Stupid, it deserves capital letters, that is how Stupid it is…
  • In related news, I’m very annoyed with myself for being unable to achieve pure wrath about the whole mess
    • Seriously, that damned ability of mine to simultaneously not forgive it one bit…
    • …buuuuuuut still “get” how it wasn’t necessarily done with malice aforethought by a mustache-twirling villain…
    • …is really annoying when you know you have every right to be “I am going to introduce your face to my knuckles” pissed off
      • Just. Sayin’.

ON THE BRIGHT SIDE, we are two and a half days away from putting this last sprint to bed – and then we have a week and a half of outright shut down. The building is literally closed. Like, locked. Like, I don’t care WHAT your badge says / how “urgent” and/or “vital” it is, you can’t come in until January 3 closed.

I am living for next week right now. I plan to spend most of that time off doing what I consider to be the best thing for surviving everything from work upheavals to Zombpocalypse: I shall knit on, with confidence and hope, through all crises.

(I just cast on a…well, I think it will be a vest. It’s one of those projects, so, I have a rough idea where it’s going but at the same time, it is doing stuff like being fine with being ‘a plain red vest’ but then abruptly deciding on the BART ride home that it must have some black accent around the bottom, like, right now, and that it probably wants some kind of motif above the black accent that may or may not involve birds.)

(I know which pattern it means by that, but I’m not convinced it would actually fit well given the number of stitches and the yarn type we’re working with here.)

(Projects are funny that way. They can be extremely artistic and have excellent ideas about what they could or should become, but their math and ability to balance concept with realistically possible stinks on ice.)

Sunday, December 09, 2012

It was a dirty, low-down trick to pull…

…but I just couldn’t resist…

So, it was Boo Bug’s fifth eleventh birthday today. She had been asking for an iPod for her birthday. Repeatedly. It was, in fact, the only thing she had asked for – even though every time she brought it up, I snarled, “NO! TOO EXPENSIVE! TOO DELICATE! PICK SOMETHING ELSE!”

I continued doing this even after I had the Nano safely hidden under the bills in my desk drawer.

Because I am evil.

Oh, you don’t believe me. Read on.

This morning, I had to run to the drug store for the usual two things that had completely slipped my mind until, like, an hour before Everybody was supposed to arrive. (If I ever didn’t do this, I’m pretty sure the world would end.)

As I walked through the door, my eye fell on a floor-to-ceiling display of toys. You know, the kind that are a) for babies and b) really, really cheap.

Not only were they on sale, they had enormous, red-and-yellow, 400-point font stickers on front of them declaring that they were half-price and also buy two get one free.

I began to giggle to myself. OH yeah, it MUST be done...

I combed that toy section looking for the most perfectly awful thing I could think of for my Boo. Something that would horrify her, but be juuuuuuust close enough to reasonable to have her thinking that dear Gah, her mother REALLY DID buy THAT for her birthday present.

Finally, I found it: A set of My Little Pony knockoffs, with horrifically cheap little brushes and other accoutrements and grins on their horse-faces that were all like, “HI! WE ARE SO HAPPY IT IS RIDICULOUS HOW HAPPY WE ARE! WE ARE GOING TO BE CHEERFUL LIKE THIS, LIKE, FOREVER! BECAUSE HAPPINESS IS OUR THING! GROUP HUG!!!!!” – because, of course, your average fifth grader is all about the fake My Little Pony with enormous plastic grins.

And I left that damned ‘half off / buy three get one free’ sticker on the front of the box.

Also, I got the kind of poofy-princess gift bag your average five year girly-girl type old would die for, and the fairy-castle tissue paper.

And a super-sized Kit-Kat bar. And a super-frilly blue ribbon. Which I stuck more-than-a-bit off-center onto the candy bar before dropping it into the wadded up tissue on top of the ponies in the bag.

And then…I waited. Like a malevolent spider tending the web. I watched her open her friend’s present. I watched her pull out the new pajamas from Grandma (who also had gotten her an iTunes card, which I’d hidden in the office with the Nano).

And then…then…she picked up the bag. An eyebrow raised over the Princessy Princess of All-Star Pinkity-Pink Princess (now with more princess!) bag, but she made no comment.

She pulled out the candy bar, and looked at me suspiciously.

I attempted to look innocent while inwardly choking half to death on laughter.

She pulled out the Plastic Ponies.

There was a long pause.

“Oh. These are…really cute…” she said politely, surreptitiously peering into the bag. Empty. She made a couple more passes at acting like she liked the stupid things, before zinging me with a typical example of Boo Bug humor.

“Oh. And they were on sale,” she observed, drily, tapping the ENORMOUS sticker.

“Ooooooooooh, no! Did I forget to take the stupid sticker off?!” I shrieked.

“Ya, I think you did,” she smiled serenely. Zzzzzzzzzzzing!!

Now, the really awesome thing is: She actually bought it. For the, like, thirty seconds that I let her suffer before bringing out her real present, she actually thought that her poor, obviously-not-altogether-with-it mother had really bought her a $6.99 $3.50 set of cheap plastic not-my-little-ponies, complete with unusable brush and three-pronged comb.

MWAAAAAAAAAAAAA!!! HAHAHAHA!  HA!! HAHAHAHA!!!!!! {gasp-sputter}.

Oh, yeah. Giving the Denizens things to tell their therapists about in years to come…it is my mission in life…

I’m rather proud of her, though. I suspect in that moment when she was looking at this thing and thinking that this had to be in the top ten worst birthdays of all time, she was half-ready to ask for a divorce from this whole family. And when I was eleven, I’m not sure I would have handled that sort of disappointment so handily; at best, I would have pulled an immediate and thorough disappearing act.

But she handled it so beautifully, with grace and good-nature and by the way a side-helping of teasing me right back.

Heh.

Yeah. I like the woman she is growing to be. Sweet and spicy. Kind and (a little) sarcastic.

Loving but don’t mistake her for an emotional boot-scraper.

That’s my girl.

Happy birthday, kiddo. Hope you enjoy being able to listen to your music, without arguing with your sisters (or your parents, for that matter) about whether it is cool or lame or too loud or too soft or theirs or yours or anybody else’s.

Wednesday, December 05, 2012

Random Observations and Ramblings

I just realized today that the difference between ‘sleeping’ and ‘speeding’ really isn’t as LARGE as previously thought. IN POINT OF FACT, it is only two (2) letters!

I realized this shortly after I had fired off a “dude, you are, like, ON FIRE today!” comment to one of my team members who has been generating not only emails with questions that kept making me furrow my brow and go, “Hmm, that’s a damn good question, right there…” but also emails that said things like “OK, the stored procedure usp_something_something_something is on DEV. Your review would be appreciated.”

He immediately returned fire with “if I am fast, YOU are a speeding bullet!”

And I began to ponder my day overall, most particularly the actual, MEASUREABLE output of it, and found myself grousing that I was more of a sleeping bullet.

And then I went, ‘Oh. Hey. Never noticed that before.’

Which actually pretty much sums up the whole day, because it was that kind of day. A day full of useless bits of valuable information, spinning my wheels, answering the same question over and over again, asking the same question over and over again, and otherwise just kind of sitting around watching paint dry.

With occasional bursts of incoming hurricane.

It began with the annual IEP meeting for Captain Adventure (who is mainstreaming for a large part of his day [with an aid to protect/guide him] into a “regular” third grade classroom, and overall doing very well indeed).

This was followed by the usual fumbling around with forms and things that urgently needed to be done, like, right-now afterward.

During this fumbling around, I had a random blast of actually remembering something and realized that a) I hadn’t remembered to pay the property taxes due in three days (!!) nor the registration for the van due in four days (!!!) plus there was this stupid $25 bill from the doctor that has been sitting on my inbox for, like, two months (!! overdue embarrassment !!) AND THEN there was the registration for the Civic and I had this moment where I thought to myself if this, too, is due in, like, eight minutes, I WILL scream…but then I remembered that Al’s Rendering Unto Caesar isn’t due until February and was all …whew…but then I actually LOOKED at it and the words “SMOG certificate” jumped out at me and then I may have snarled something unladylike, hurled it back into the inbox and turned instead to my work laptop, which seemed like a much safer proposition at that point.

And then I fired off about half a dozen emails in rapid succession.

Then I watched a data load not go very fast.

And then watched a calculation process also not go very fast.

Interspersed with episodes of trying to work on the same paragraph of the design document even though it was becoming QUITE clear that merely THINKING about this document causes EVERYBODY IN THE WORLD to think of something they need to URGENTLY message me about.

And then I became somewhat frozen with indecision over some really minute details.

Then I spent way more time than I probably should have trying to come up with a gentle way to break it to somebody that I couldn’t “just” take “only” a couple hours away from sprint-tasks to join meetings about something completely unrelated to it. It’s like a RULE or something.

And no, next week won’t work either.

And…no, actually…there isn’t a gap, of any sort, between sprints…it’s just “finish on Friday / right back in on Monday.”

And then I spent a few minutes cruising the job boards on my phone, because this is a seriously not-sustainable deal right here.

And then I got to the end of the day with that peculiar blend of feeling exhausted because I hit the ground running and never stopped…but at the same time, when I look back and try to point out what I actually DID, I’m all, like, “…uh…well, there was…I did the…{whining tone} do all the emails about things like field types count?!?!”

NOT IN SCRUM, THEY DON’T. If it ain’t an official product backlog item task, it doesn’t count.

So, officially? I didn’t accomplish a damn thing, all day.

And my SCRUM master is going to be giving me Scowl Face tomorrow.

And I’m going to be all, like, “Wah-huh, not mah fauuuuult! I did stuff! And also other stuff! Plus, it’s like, you know, meh-meh-meh-wah-wah-wah!”

Sigh.

Another completely unrelated thing I realized today is that I currently have a perhaps unhealthy love for bento boxes. They’re just so…efficient. Particularly the “grown up” ones that are basically designed by people who are thinking to themselves, Hmm. What would be able to hold a lunch capable of sustaining a human being for an eight hour work day, but yet fit neatly into a backpack or briefcase…

It’s cunning in the same way that vertical gardening is cunning: You have relatively narrow boxes, that stack. Each little box would be way too little, but put two or three of them on top of each other? Awesome.

All held together with simple little bands or ties, or fancy wraps that require way too much intelligence for someone like me to deal with, so, rubber band, please.

AND THEY CAN BE INSANELY NOT-EXPENSIVE. Like, less than five dollars not-expensive. {swoon!}

They can, of course, also be insanely not not-expensive. Like, $200+ not-not-expensive. And I will look at those hand-carved, hand-painted works of art and think, Wow. That’s just…SO amazing…and then I ponder eating off it and promptly turn back to the versions with sloppily-by-comparison cranes or cats or Pokemon stenciled onto them.

Or nothing at all. Just a set of black or brown boxes with a plain black elastic band to hold them together. Simple, unassuming, and opening up to reveal a startling amount of food.

People with more time and/or talent can get all artsy-fartsy with them and carve little animals out of carrots and some junk. I just pack them with rice and hard-boiled eggs and random bits of leftover meat and stuff like that, then add slices of red bell pepper or parsley fronds or encircle the lunchmeat with Cheez-Its (yes, I really did that once…bento boxes have a way of encouraging such behavior somehow…) and pretend it’s fancy.

WHICH IT IS! Because, true story, ‘bento’ is a Japanese word! Which automatically translates to “exotic and fancy.”

You know, when you’re an American.

We…tend to view all sorts of things other cultures think of as “um, what? You, uh, know that it’s just a {shoelace, boat, head-covering, comfort food, lunchbox}, right?” as being boundlessly fascinating, and/or cunning, and/or fancy, and/or exotic, and/or I have to put my pinkie into the air and assume a REALLY bad imitation of a British accent whenever I refer to this.

Sigh. Over 200 years old, and yet we’re still like a bunch of obnoxious children who have never been let out into public before, suddenly turned loose in the world’s biggest combination candy-and-toy store, running all over the place screaming, “OHMYGAH, CAN I HAVE ONE? PLEEEEEEEEASE?!?!” about darn near everything we see. (But at least we’re enthusiastic?)

Ahem. Anyway. I now have four of them.

One is a chunky, round ‘Thermos’ like one that I love to death even though it is as graceful and elegant as a rather large cylindrical brick because a) it stacks, four things on top of each other, and b) it keeps things hot for a ridiculously long time, so I don’t have to get in line for the microwave at lunch time.

And also I have three ‘little box suitable for carrying in a briefcase’ styles. Which is up from one because I just got two of them I about forgot I’d ordered (one downside of the inexpensive straight-from-Japan sources, sometimes the delivery time should be measured in geologic time or something)  in the mail today.

And I showed them off to my anime-loving daughters and then cackled wildly because ha ha, I leave before you, *I* get first pick of the new beeeeennntoooos, neener-neener…! (<= I know. ‘Mature’ is totally my new middle name)

Yesterday, somebody at work told me that this funky Japanese version of a dollar store not too far from the office carries a bunch of the “super cute” ones with, like, anime characters on them and stuff.

And I was all, oh, REALLY?! (while staring at my Soul Eater mouse pad, eat your heart out, y’all…)

I sense another example of my ‘maturity’ coming on…ha-ha, that’s right, it IS a Ouran High School Host Club bento box, and it’s MINE, all MINE, BWAAAAAAAA-HAHAHAHAHA!!!!

(They can have the Hello Kitty ones. Pffft. Everybody has, like, five of those.)

(Now, if I could get a Black Butler one? I might actually die from The Happy.)

(AL-THOUGH, a Vic Mignogna one would have such major “only somebody who is REALLY several blocks away from normal would even GET that reference” as to be a super-extra-major Crowning Achievement in Nerdiness.)

(Crap. Now I have yet another life’s mission…to the Internet, AWAY…!!!!)

vic_mignogna_by_dei_chan_luv-d305wpu

(From Dei-chan-luv at Deviant Art. Source of all kinds of cool, weird, freaky, childish, good, bad and indifferent fun stuff. Deviant Art, I mean. Not Dei-chan-luv. Any fifteen year old who has a Vic Mignogna collage available on demand for weird people she’s probably glad aren’t her mother EVEN THOUGH HE IS NO LONGER HER FAVORITE VOICE ACTOR, is two hundred kinds of pure awesome.)

(I think he’s still mine, though, at least when it comes to English-dubbed animes. Which I’m sure would open up a major flame war if this were an anime site, but, ha ha, it’s not. Plus, I’m way too old to be all, like, “Squeeeeeee! Full Metal Alchemist + Ouran High School Club + Scythe!!!” in the first place. So. There you are. I’m old. I think Vic kicks arse. Your argument [whatever it may be] is invalid.)

Saturday, December 01, 2012

Boring Geek Stuff

So, our warehouse server is sick. VERY complicated story short…the warehouse database got pooched. Like, went red and was inaccessible for TWO WEEKS pooched.

Hilarity ensues.

That was over a month ago. And we’re still not back. We’re limping along on partial processors, blah blah blah. Everything is taking, like, four-five times longer to run than it used to…which when you’re talking about things that “normally” take anywhere from five to fifteen hours to run…is a big deal.

WHICH LEADS ME TO MY ACTUAL STORY. (Which is rather boring, actually, if you’re not…um…me…)

I’m doing some load jobs this weekend, getting some of the stuff that has been ‘on hold’ since this all erupted into a fiery ball of death last month finally moving again.

One of those things is an allocation process I wrote that takes a certain dollar figure that in all reality has no direct relationship to sales, and “allocates” those dollars out to appropriate customer sales according to the weight of said sales – in other words, if Record 1 has $90 and Record 2 has $10, and the amount is $200, Record 1 gets 90% of the $200 or $180, and Record 2 gets the remaining $20.

Only, it’s picking apart over 1.7 billion sales records, couple hundred thousand customers, thousands of suppliers, etc. etc. etc.

It took a lot of fine-tuning to get it working fast enough to be actually usable. And I was rather pleased with it, really, because yeah, I’m THAT level of bad-ass, thank you for noticing.

And then, the box broke. “Tables” became “unioned views across multiple tables on different boxes(!!!),” the bandwidth has the server equivalent of strep-frickin-throat, we have a fraction of the tempdb space, blah blah blah a bunch of stuff that only fellow developers/DBAs are going, “Ohmygah, you poor THINGS!” over right now.

I was sitting there last night glumly watching records that used to process in, eh, six to twelve seconds max…now taking…wow, really, 380 seconds…? And I’ve got 11,000 of these things to go?

…that’s 48 days before this will be done…and that’s tooooooo loooooong…

So I did one of those “stare at the ceiling thinking” things for a while. Debating with myself about pros and cons. Risks and rewards.

Then I changed the part that grabs the sales data so that the destination table is uncompressed before loading, then recompressed to page level afterward. Data and indexes both. And then the allocation process runs against it.

I wasn’t sure it would help, but, I thought it just might. And it did. I’m clicking at 4-10 seconds per item again. Whew.

The reason I wasn’t sure it would work is because this is actually a trade-off proposition. (And this is where it gets really boring and confusing, so, feel free to drop off…but I just hafta share for the, like, two people in the whole world who might find it interesting.) (Plus, I’m just jazzed. Because. IT WORKED. Woot!!!)

So, keeping it way simplistic and not at all tech-textbook (read: for more technically-accurate and complete information on This Kind Of Stuff, I’d recommend hitting up the MSDN books online) …the way a database stores things is kind of like this: Imagine the biggest, ugliest textbook you ever had to haul around with you in school. The words are like the fields in your table. The sentences are the rows in the database. The pages are, well, the pages. The chapters are ‘extents’ – a collection of pages.

Now. Each page can only hold so many words. And in the database world, each chapter also has a limit – at some point, things will spill over into new chapters for lack of room. And there’s only so many chapters that can fit in an extent.

Whenever you’re running a query, the server will find the information you want by drilling through all this information. It will look at what you’re asking for, look at the server-equivalent of the table of contents for the extent and the back-of-book index for the page, and then it will begin to scan through the page looking for the specific information you’re after. (Table-level indexes would therefore be…um…hmm…like the bold words on the page? I guess?)

Just like a textbook, if you’ve got good indexes that pinpoint information as precisely as possible, you can find things faster

So. When you compress a table or partition to page level, you’re actually doing two things: First, the rows get compressed (more words per page).

Then, the page gets compressed (more pages per extent).

NOW. Here’s where the tradeoff is: When you run a query against a compressed table, you will frequently find that it burns more CPU and/or has more input-output (I/O) hit. The data has to be uncompressed to be displayed, and that takes a bit of server-effort.

HOWEVER. The finding of the data itself requires less effort and happens faster. Instead of having to scan thirty pages to get everything it needs to return, maybe it only has to scan five.

This time, it looks like the tradeoff is in my favor.

I think this kind of thing is what makes me love what I do so much; what makes me sometimes sit back and chuckle about being paid to romp around figuring out how to shave a few seconds here or there off a process, or get data that is stubbornly refusing to budge to zip across to its new home.

There’s always more to learn.

There’s always more that I don’t know yet.

There’s always a better, faster, more efficient, less painful way to do whatever-it-is.

There’s science. There’s art. It’s frustrating, infuriating, confusing, complex, simple. Things that take only five minutes to fix take five days to find.

The answer to the question “will this help this process go faster” is just about always “it depends…hmmmm…probably…let’s try it and see!

And for me, all the frustration, irritation, and hours-spent-scouring-through-white-papers-trying-to-connect-the-dots is well worth it for the moment when I can sit back, smirk smugly to myself and mutter, “That’s right, baby. Whose kung fu is best? Mine is.

Keeps me coming back for more, even when everything else in the average working day is enough to make me scream…