My Legacy

[Sigh], It's been an interesting weekend; wrought with introspection and reunions. As I sat, listening to my first ever, live, eulogy (which was lovely, very personal and relevant); not surprisingly, I began to ponder life's meaning. What makes someone's [mortal] life important and worthwhile with the fewest regrets. I suppose that all depends on the individual - success in life likely means something different to different people. But I'm guessing the vast majority of individuals consider it making a positive, lasting impact, of some sort, on the world and/or the people in it; a legacy if you will. Some people rank their life's value in the number of people who will mourn their departure from this world, but as I sat with the tears welling up in my eyes; I thought to myself, "What would this person, if they were observing their own memorial service, want me and everyone else here to feel right now? And how do I want my loved ones to react to my death?"

Suffice it to say, after attending my first funeral, I don't believe funerals are the way in which the dead wish to be honored. I've never considered death to be the end and even if this life is our only one; I'm perfectly content to live the rest of my days in my current naive and ignorant state. I also believe our next residence is far more euphoric then this life and those who reach it are quite happy to arrive. That said, I believe the dead would prefer a celebration of their life - not a mourning of their death. The death of a loved one is certainly not an easy event to endure, but the severity of its effect is aggravated by the lengths to which our society will go to avoid the topic and even the thought of death. I, too, subscribe to this lack of acknowledgment towards our own mortality; submerging myself so deeply in my daily events, that there are absolutely no neurons left to commit towards the topic.

Why? Because I'm petrified, not so much of dying, but of unexpectedly loosing someone close to me and not having the strength to recover; of curling up in a perpetual fetal position of grief and sorrow. Or of unexpectedly dying such that those who love me are not able to recover. The irony is that this self-preservative mechanism of pretending death doesn't exist out of fear only serves as a catalyst to the fear itself. Everyone I love and hold near and dear is going to die, at some point: my [potential] husband, my parents, even my [potential] children. And so am I.

I now realize it's important for me to remember that, everyday. Not because I'm a cynical goth-child consumed with the darker side of existence, but because I don't want fear to be a part of my equation. I don't ever want to stifle my life or anyone else's because of my trepidation. I want to love deeply, endlessly, and spontaneously without ever worrying about the consequences of loss. And since the only effective way to conquer fear is by facing it; I will remember each day that I could loose all that I love at any moment, all the while knowing that no amount of pain, anguish, or suffering will ever subdue me. I will grieve, I will suffer, I will recover, and I will continue on with my life.

That's what I wish for those who attend my funeral. Death is a part of life; shed the tears you must and then celebrate my life by continuing my legacy; convey and impart all those pleasant characteristics within me most loved and missed. And that's just what I'm going to do.

Posted on 2/23/2008 8:53:00 AM by sterlingt

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories: MISC

Tags:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Starbucks Who?!

I have a new love...and his name is Peet's. Peet is bold and savory with none of the bitter aftertaste I've encountered so often before. Everything has paled in comparison since tasting Peet's and, when forced to consume other substances out of necessity, all I can do is count the minutes until I'll be able to enjoy Peet's smooth, splendid product once again. If, like myself, you fancy yourself a bit of a 'Caffeine Connoisseur'; I strongly urge you to sample some Peet's. You'll find their cafes located primarily within grocery stores such as Albertsons, VONS, and Ralphs and you can also pick up a bag at any of the aforementioned markets.

Posted on 2/21/2008 9:20:00 AM by Admin

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories: MISC

Tags:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Permanent Resident


You have stumbled upon the new, permanent home of MY BLOG. Unfortunately recent events prompted a series of frequent, erratic blog-relocations (and by recent events I mean my company's Nazi-like, corporate-monster restrictions of any and all blog access). But I am happy to report that I have easily squelched "The Man's" futile attempt to inhibit my literary liberation.

Furthermore, I'd like to extend an invitation to all my fellow bloggers who are suffering at the hands of these corporate blog-speech-censors. I will host your blog, free-of-charge, on my personal URL account so your blog will be accessible to you anytime, anywhere. Why, you ask? Because I loathe electronic babysitters. Employers: If you're too giant to adequately screen and supervise your own employees then you're just that: too giant. Sad is the world in which one cannot even trust their own employees nor remain certain that the ones they hired are nothing more than expensive furniture.

Sometimes I blog while at work, sometimes I find blog postings while at work that solve software engineering conundrums I've encountered at work, and sometimes I work a 16 hour day, or a weekend because duty calls (not to be confused with - dootie). My point is this; if hiring managers, supervisors, and co-workers are doing their job, it will be painfully and immediately obvious if someone is not pulling their metaphorical work-weight. Creating an atmosphere in which employees feel like they're an accountable and indispensable member of the corporate team is essential for career fulfillment and happiness, NOT making them feel like irresponsible, under-disciplined children who require constant monitoring just to ensure they're not taking advantage of their employer.

Checkmate.

Posted on 2/20/2008 2:17:00 PM by sterlingt

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories: Rant

Tags:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Nesting with GridViews

Creating a single Excel-like, user-editable, interface to represent a multi-table data relationship can be achieved by nesting GridViews within one another (or within DetailViews). It's certainly not an endeavor for the faint of heart, but with a few tricks of the trade up your sleeve, you'll be able to execute it (mostly) pain free.

First, place a non-editable version of the child GridView within the parent's applicable ItemTemplate and an editable version of the child GridView within the parent's applicable EditItemTemplate; each bound to their respective Datasources also contained within their respective ItemTemplate or EditItemTemplate. Next, selecting the data for the nested GridViews is fairly straight-forward; simply convert the identity ID column of your parent GridView to a template and then reference it's Label control's name as the select control parameter of your child GridView's DataSource. Or if you're nesting the GridView within a DetailsView parent, use the DetailView's supplying GridView.SelectedValue as the Datasource's select control parameter value.

From there, you can use the GridView's built-in Edit, Delete, and Update capabilities to perform the corresponding functions on your editable child GridView. Make sure you've defined stored procedures or queries within the editable version of your DataSource for any of the functions you require (delete, insert, and update). Then, make sure you've got controls within the EditItemTemplate(s) of your editable child GridView bound to all the necessary parameter values of your update and delete stored procedures (or queries).

Now last, but not least; how to handle your child GridView insertions since such functionality is NOT baked into the GridView (really confused as to why Microsoft made this decision, but whatever - it just gives me more potential blogging material).

Here is an example of an editable child GridView and its corresponding OnRowCommand event handler. Notice I have an Insert button within my EmptyDataTemplate AND within my FooterTemplate so that users will be able to enter records with or without the presence of prior records. Also, notice the 2 CommandName's for these buttons, 'Insert1' and 'Insert2'. By setting the editable child GridView's OnRowCommand event to your method name, and catching the appropriate CommandName's (like my Insert1 and Insert2); you can programmatically access any controls within the GridView's EmptyDateTemplate or FooterRow as necessary to set your DataSource's insert parameter(s) values for insertion. You will find this a mandated task since any attempt to declaratively reference the GridView's controls within DataSource itself will fail due to the lack of built-in binding between a GridView and its corresponding DataSource's insertion parameters (unlike the other update/delete parameters).

In addition, any special code-behind functionality that needs to occur as a result of activity within the editable child GridView can be executed via the plethora of built-in events contained within the GridView (OnRowCommand, OnRowCreated, OnRowDataBound, OnRowDeleting, OnRowDeleted, etc) or even the GridView's corresponding datasource itself (OnInserting, OnInserted, OnDeleting, OnDeleted, etc); all with handles to the relevant modified data.

Aaaand Happy Nesting!!

Posted on 2/20/2008 1:31:00 PM by sterlingt

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories: asp.NET 2.0

Tags:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Cartoon Geniuses


I think you can learn a lot about a person by their favorite cartoon characters.
Mine are (in order of preference):
  • Calvin and Hobbes
  • Garfield
  • Mother Goose and Grimm
But seriously, if you have a taste for sharp, witty, genuine humor; do yourself a favor and go out and buy a Calvin and Hobbes book. Sure, it's a little archaic when one can easily download hundreds of strips, but they're the BEST bathroom reading and I find that I can re-read the same comic book about every 6 months or so.

Posted on 2/20/2008 1:16:00 PM by sterlingt

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories: asp.NET 2.0 | MISC

Tags:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Blogger-iffic!!


Well, since our database server has taken its bi-weekly (sometimes tri-weekly) , anti-climatic crash and burn, now seems a good time for a blog posting. In this posting, I’d like to address my fellow bloggers out there - especially those who are new to the art of blogging.

Dare I say, one must embark on one’s own blog-journey with realistic expectations. First, there are a TON of bloggers out there blogging about a broad range of topics. A couple blogs have made it big, but statistically speaking; the chances of your blog becoming the ‘next big blog’ are slight at best. That said, my advice to you is not aspire to be the ‘next big blog’. Doing so will only cause you to over-analyze your post topics, syntax, punctuation, and grammar to such a severe extent that you will disappear from your message.

Instead, approach your blog as your own personal broadcast station; where it’s all you, all the time. Your blog should be your own little venting portal to the world; a digital diary of sorts. Whether your blog is destined to have 5 readers or 5000, its destiny will only be achieved if your unique flavor and view of the world shines through your posts. Give your blog readers a view of the world through your eyes so they’ll have a different perspective than their own and everyone else’s.

Gotta go…database server is back up; just remember to blog for no one, but yourself.

Aaaaaand...happy blogging!! ^_^

Posted on 2/20/2008 12:44:00 PM by sterlingt

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories:

Tags:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

AJAX…not just for toilet cleaning anymore.


Or is it?? Of course not!! Buuut, while the out-of-the-box functionality of most of the current Ajax Toolkit components do some nifty things and prove useful for fundamental, non-volume or performance intensive tasks, they also leave a lot to be desired if you’re looking for more enterprise-level applicability and functionality. As a result, I have adapted 2 of the current toolkit components for my own web application purposes when I found them lacking: the ListSearch(Extender) control and the CascadingDropDown control.

The ListSearch(Extender) is a control that incorporates a behavior already found by default in the Mozilla’s browser (but not in IE 6) whereby a user can select a DropDown (or ListBox) into focus and then type characters to auto-navigate themselves to the first corresponding record within the control. IE 6’s current behavior will only ‘remember’ a single character so when the user enters ‘TRA’ to navigate themselves to the record labeled ‘Tracy’, IE will first take them to the first record beginning with ‘T’, then the first record beginning with ‘R’, and finally the first record beginning with ‘A’; NOT the desired behavior.

Enter: The ListSearch(Extender) control which alleviates this annoying behavior within IE 6 and replaces it with the expected and desired multi-character, auto-navigate behavior. Upon discovering this splendid fact, I wasted no time in implementing the control within our company websites where corporate mandates our users browse with IE 6. Unfortunately, my excitement soon faded when I realized that a number of records within my DropDown or Listbox control exceeding ~5000, the performance of the auto-navigation became increasingly slower and was virtually un-usable when all of our required ~50,000 records were included :-(.

[Sigh]…my seemingly heroic AJAX control, it would seem, is too slow to serve its purpose; what’s a girl to do? Google it!! And discover this guy’s brilliant solution and implement it - like I did (or better yet…just download the 10920 version of the Toolkit where the Mr.Brilliant has now pre-included his fix ^_^). Oh, hhhappy days are heeere agaaaaain…

Now then AJAX control #2, the handy-dandy CascadingDropDown. This control’s preliminary description lent itself to be highly useful for our gee-gan-tay search pages where our users select a bunch of different filter criteria from a bunch of different Dropdown/Listbox controls, then ‘Submit’ to obtain their associated results, only to learn that they’ve selected a combination of criteria that doesn’t exist and they’ll now have to ‘guess’ which selection item(s) need to be altered.

Anyone who’s tried to alleviate this problem by dynamically auto-populating the controls with a number of records based upon the user’s selections server-side has quickly figured out the ree-dic-u-luss postback times associated with the necessary page re-rendering.

Enter: The CascadingDropDown control which dynamically populates the Dropdown contents via JavaScript and Web Method (yippee, no more postback delay!!). But, before one begins a premature celebration, the controls’ associated DropDown can only have a single other DropDown control’s contents influencing its own contents (read: One parent). OH…the humanity of it all!! And what do we do when the standard AJAX control fails us? Google it!!

This time, however, Google did not reveal any Mr. (or Ms.) Brilliant’s to me which left me no alternative but to modify the control code myself to accommodate multiple influential parent controls. Here is the JavaScript source file which should be the only file you need to change within the control and some examples of the new control’s use.

In a nutshell, the control behaves the same as its predecessor (so I recommend successfully implementing it before attempting this one since that will throw enough of a learning curve at you initially), with the exception of the ability to enter a comma delimited (space free!!) list of parent ID’s within the CascadingDropDown’s ParentControlID attribute rather than just a single ID value. With that, the indicated control’s associated web method will be called every-time any of those parent controls’ selected-values is changed by the user.

Due to the fact that the order in which the web methods are called must remain arbitrary, there are a few caveats to remember:
  • You must always have a non-filtering, generic option appearing as the FIRST value in the dropdown that represents a ‘return all selections’ selection (All).
  • In addition, this item’s Value Field must not match any of the other item’s values and it must not equal -1 (you’ll notice I used -5 in my webservice example)
  • You must indicate this item as all related CascadingDropDown’s SelectedValue attribute. (see example .aspx).
  • NO SPACES between the parent id’s: o Good: ParentControlID=”ddlModel,ddlColor” o Bad: ParentControlID=”ddlModel, ddlColor”
Otherwise, everything else works pretty much the same; you’ll still receive a semi-colon delimited list of all parent Categories and their current selected values in the knownCategoryValues parameter of the web method with which you can dynamically determine the DropDown’s contents.

As a note, testing has indicated that the Dropdown’s each seem to be good for a maximum of ~800 records before they die. I’m not sure why, but that certainly limits the usefulness of this tool.

I personally could really use an AJAX tool similar to this one without the ‘cascading’ quality. I’d like it to simply populate a single DropDownList via a Web Method (alleviating the postback), but able to handle upwards of 50,000 records without a problem. Any takers?? ^_^

Feel free to report suggestions, criticisms, observations, or questions and…happy cleaning!!

http://www.signaturesterling.com/MultiParentCascadingDropDownExtender.zip

P.S. Just a little hint if this is the first time you’ve modified an ajax control: if you just open the entire AjaxControlToolkit solution file when you edit a control, re-building the solution will take a little while (about 15-30 seconds) regardless of the fact that Visual Studio displays ‘Ready’ in the lower-left corner. Wait until it says ‘Build Succeeded’ in the lower-left corner and the little bucket icon with the 2 moving green arrows in the bottom-middle of the screen has disappeared.

Posted on 2/20/2008 12:39:00 PM by sterlingt

Permalink | Comments (2) | Post RSSRSS comment feed |

Categories:

Tags:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

I Smell Ice Cream

It seems that virtually every week I discover a new, ecclectic, character-filled, cheap, yummy place to eat in this culinary mecca of a city. I’ve been a resident now for a little over a year and here are my personal picks in order of preference for cheapest, yummiest, funnest places to grab a bite;

  1. Sushi Deli II [Downtown] - This place has, by far, the best and most inexpensive sushi rolls I’ve ever tasted. And their atmosphere filled with loud 80’s pop music and $5.50 large Sapporo/Sake special makes for a good time had by all.
  2. The Turf Club [Golden Hill] - This cook-your-own steak dive bar comes complete with $6 sirloins and $6 16oz (potent) drinks.
  3. Cass Street Bar and Grill [Pacific Beach] - Who knew a bar could have such delicious, fresh food (even their breakfasts!) and the informality of it all means more than reasonable prices.
  4. Hash House a-go-go [Hillcrest] - Every inch of the walls in this place are covered with awards and notariety for their food and presentation, and they’ve earned every bit of it.
  5. Luigi’s Pizza [Golden Hill] - Amaaaaazing Chicago-style pizza and an impressive selection of bottled beers. (Though I suggest purchasing a pie at a time @ a reasonable $20.00 each rather than by-the-slice since their individual slices are occasionally fly-friendly.)
  6. Ichiban Sushi [Pacific Beach] - Sushi Deli II’s rolls are far superior, but for reasonable, yummy, sashimi, I head here. It’s a tiny place, but well worth the wait.
  7. Hodad’s Burgers [Ocean Beach] - A health nut’s nemesis; GIANT burgers, HUGE fry wedges, and lots of beer.
  8. Rusty’s [Crown Point] - A close second behind Hodad’s; good burgers, good beer, good times.
  9. Filippi’s Pizza Grotto [Pacific Beach] - Deep dish, cheap, yumminess.
  10. Café Zucchero [Little Italy] - Amazing, authentic Italian food.
  11. Celadon [Hillcrest] - Not the cheapest place, but if you’re into Thai food; it’s the best I’ve had in the city and the atmosphere is quite pleasant.
  12. Extraordinary Desserts - One word: wow.
What did I miss?

Posted on 2/20/2008 12:22:00 PM by sterlingt

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories: MISC

Tags:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

WANTED: Career Mentor; Apply Within.

I’ve never had a mentor, well, I guess that’s not entirely true. I’ve never had a software developer career mentor. When I made the decision to be a veterinary scientist (maaaany years ago), it was ‘cuz I was the girl who rushed the dove with the broken back who had flown into a nearby window, or the baby quail who was the runt of the flock and had been left behind wandering back and forth along a tall city curb, to the nearest wildlife facility.

I had always felt a strong sense of empathy and a deep connection with animals (well, mammels and birds at least), so a life of healing and helping animals just seemed a natural course. But as you likely know, life often has other plans in store for us.

Two months into my college career (and a case of mono later), I was no longer a college student and spent the next 3 years of my life as a full-time retail associate and manager. That brief exposure was plenty to make me realize a college education was well worth my time, money, and effort for the monetary and occupational rewards. Once again, lacking direction from a career mentor I developed a simple formula for determining which bachelor’s degree to pursue upon my return to college:

< Industry Demand + < Monetary Potential + > Education Time = Computer Science

Note the lack of:

< Career Enjoyment/Fulfillment OR > Education Difficulty

within my formula. I’m grateful for my lack of consideration regarding the latter since I’ve realized that in spite of being a prisoner of the computer lab for nearly 4 years of my life, it’s a worthwhile pursuit for obtaining a strong foothold within such a lucrative industry.

With regard to the first missing formula component, I often wonder if my anti high-school career counselor approach to vocational searching will eventually and ultimately lead to my burnout, but again, without a mentor to weigh my decisions against, I went the “I’ll enjoy anything that challenges me” route rather than the, “I must pursue a career I’m already naturally interested and gifted in” route.

So here I sit; at another junction in my career where I could really use a little influence from someone who’s had to make a similar decision, has pursued a similar career path, and has been exposed to the industry long enough to have insights and premonitions that I cannot.

No, wait…scratch that; I think I just found the perfect mentor: Google.

Posted on 2/20/2008 12:11:00 PM by sterlingt

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories:

Tags:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

B-E-A-utiful!!

It’s days like today that remind why I pay exorbitant (make that ‘hideously inflated’) rent to live here. I recently acquired the task of performing audits on a handful of secret systems we have located on the Campus I work at; what relevance does this fact have to today’s blog? None, except that this task requires me to travel from my building to another building located about a couple hundred yards away. Just the simple act of walking outside is enough to put one in a good mood. The weather’s a perfect 78 degrees right now with a gentle breeze, there are vibrant colored flourishing plants everywhere you look, and the sky is a brilliant blue without a single trace cloud as far as the eye can see.

Living here makes me want to be a construction worker just so I can linger outdoors as often and as long as possible. If I could get a LAN connection from outside my building, you’d probably find me camped out on a patch of lush grass in the sunshine coding away. It’s not too painful walking back into the confines of my ultraviolet illuminated, windowless office; knowing that today is Friday which means tomorrow I’ll spend a good part of the day drinking, socializing and sunning myself on the beautiful sands of Pacific Beach followed on Sunday by a nice walk with my dog down to the local Starbucks where I’ll sit outside; my top half in the shade, and bottom half in the sunshine, sip my ice-coffee, read, study, and watch the foot traffic go by.

God, I love this place.

Posted on 2/20/2008 11:35:00 AM by sterlingt

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories: MISC

Tags:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5