Archives / 2004 / June
  • When I catch the person who wrote the virus my PC got....

    My workstation at work apprarently has some new weird virus on it that causes instances of Notepad to prematurely and irreparably close on its own.  Any good programmer, regardless of their IDE preference, will have Notepad open at all times, so this is a major pain in the butt.  :(


  • My site just published its news 10,000th article

    I've real psyched about the fact that the site that I built for my company just published our news 10,000th news article in a little more than four years:

    It's a milestone I always to be around here for (I enjoyed the allure of the 5-digit thing), and it feel nice that we've got that much content on the web.  It's truly a credit to the team of as many as 6 reporters we've had at a time working on stories.  Whoo-hoo!


  • ASP.NET Web Matrix ate my code

    Now, this isn't so much a rip on Microsoft ASP.NET Web Matrix as it is on my own company's negligence into proper infrastructure and IT planning.  Short story ==> power outage, data corrupted, work re-hashed. 

    Exhaustive story ==> earlier today, I was working on a code module for an upcoming project and was making a minor tweak to a page displaying customized data through cookies and database calls.  We had a semi-large power spike, which, of course, due to the skimpy fact that no one around here runs any UPS or battery back-up systems of any variety - thanks so much - my workstation was kicked totally offline, while the file in question was open in Web Matrix.  Upon rebooting, the file I was working on was blank when opened, despite being 6K in size.  After messing with it some more, I figured it got corrupted and gave up...I re-wrote the thing from scratch, trying to painstakingly re-create the logic, in about 45 minutes.  Thank goodness it's still a test module I've been working with for the last 2 months.  I can't imagine how I'd get around working with corrupted production code that I hadn't seen/touched in months.

    At any rate, I'm not sure if this is something common to Web Matrix, as this has never happened in any other program in similar situations.  I've read stories in the past about cannibalistic IDEs, but I wasn't able to correlate power outages and data corruption. 

    Anyone have a clue?


  • SQL2K bug: fields default to NVARCHAR if SqlDbType enum not explicitly set (aka, "install a HotFix to fix one problem, cause two more...")

    I think I may have figured out the solution to my recent conundrum with SQL Server 2000 that had me stressed and depressed over the last couple of days.  In a nutshell, after a HotFix was installed on a SQL2K database server I have space on, I was unable to perform INSERT or UPDATE queries on database table of type TEXT, when trying to either create or modify records with more than 4,000 characters of data.  While it was frustrating as heck, it seemed too rigid to be random, so I did some snooping.


    The HotFix was intended to solve a known problem of not being able to run UPDATEs against TEXT fields, but in so doing, caused another headache entirely:


    Apparently this is a semi-known problem, in that a certain HotFix forces SQL Server 2000 to be a lot more stringent in requiring explicit declaration of data types and data lengths for parameters in stored procedure.  In my client code, I was initially using the overloaded constructor of the SqlParameter object that took as arguments only the parameter name and a value, without specifying a value from the SQLDBType enumeration or length of the parameter (which in my case, needs to be TEXT and 16 (or 2147483647), respectively):


    System.Data.SqlDataAdapter.InsertCommand.Parameters.Add(new SqlParameter("@parameterName",parameterValue);


    It appears that after the HotFix is installed, if the client doesn’t syntactically set the type and length of data for a parameter, SQL Server and/or .NET will default to a type of NVARCHAR, which has the 4,000-character limit.  This all makes sense.  I’m going to now need to modify the code to straight out declare what’s going in the SPROC: 


    System.Data.SqlDataAdapter.InsertCommand.Parameters.Add(new SqlParameter("@parameterName",SqlDbType.Text);

    System.Data.SqlDataAdapter.InsertCommand.Parameters["@parameterName"].Value = parameterValue;


    It’s a minor change, and it sucks that I have to make it after the code had worked flawlessly over several thousands executions over several months, but c’est la vie!  Better thay than have to rebuild my DB from scratch or switch to a new server.  Changing the client code evidently is the only known fix at this time: 


    At any rate, I’m hoping this will hold – it’ll be all back to business as usual if it’s stable.


  • MS HotFixes/patches possibly stunting DB activity for certain amounts of data

    I’m wondering if anyone can shed light on a problem I’ve noticed that's really made for a major thorn in my side.  I recently had a Microsoft patch installed on my server, and now for some reason, trying to run INSERT or UPDATE queries against the SQL 2000 database are severely limited.  I constantly get the error:


    “Error: A severe error occurred on the current command. The results, if any, should be discarded.”


    I think I’ve isolated the problem to be that I can’t add new or modify existing records that try using a field which is of type TEXT, but now can’t be longer than 4,000 characters, else the error fires.  This is really weird, as I’ve used the same ASP.NET script to call a stored procedure to INSERT/UPDATE records thousands of times before with 100% success.  


    I have a feeling this might have something to do with the patch, but has anyone come across this problem specifically, or know for sure which patch(es) cause it?  Why all of a sudden would a TEXT field be so limited in capacity?


  • VH1's "I Love the 90's" is going to rule

    I nearly fell off my bed when I saw the teaser ad for the latest installment of VH1's best series ever, “I Love the 90's“.  It's basically a spoof on the seminal “Beverly Hills 90210“, with the series' mainstays, Michael Ian Black, Hal Sparks and the oh-so-babealicious Rachael Harris lampooning the show that everyone watched.  (Oddly, Mo Rocca wasn't in the spot). 

    The best thing about these shows is that despite their phenomenal success (reportedly, the format for the series was developed on a concept originally used by the BBC), they've not strayed too far from the basic model that makes them so much fun to watch.   VH1's meteoric success is largely attributed to MTV Entertainment's Brian Graden, the former producer who made South Park a notorious household name.  I'm hoping Rich Eisen, the former ESPN anchor and now NFL Network lead man and ESPN's Stuart Scott are in there, too.  (What can I say?  I love TV.)

    With me now having turned a spry 30 years of age, the network's pretty much covered my entire lifespan with the “I Love the...“ series.  I swear, I've seen each episode at least 50 times, and I'll come in late to work if it's showing as I'm heading out the door.  And I'll still buy them when VH1 finally releases them on DVD.

    And while VH1's at it...gimme a shot at being a panelist!  I've got the chops, memory and wit to kick ass on that series!  Not ever having done drugs of any sort, my at-the-moment-still functional brain is chock full of useless trivia from the 90's!


  • Customers bitching? Bitch back! - delivering premium service by way of reverse psychology

    Many people don't realize my background is in retail, and it's upon this foundation of managing the customer relationship that I often draw when thinking about how to serve our audiences better.  I was brought up to have the state of mind that when a customer complains, you cower and belittle yourself to their satisfaction, now matter how ridiculous or outlandish their request, lest they solicit a rival firm.  They are the customer - therefore they have achieved deity-like status for no other reason than having walked in the store. 


    Complete and utter excrement.


    It's a very interesting change now that I'm in the broadcast media business...the rule of "the customer is always right" doesn't necessarily apply.  A theory I developed years ago was that people often exhibit honest cries for help beneath the guise of a formalized complaint, be it verbal, written, etc.  Further, I've taken note of the fact from a customer service standpoint, most people, contrary to popular belief or much TQM teaching, don't want to be pitied, told "yes, sir, you're absolutely right", get free stuff out of it, receive a discount or otherwise have their asses kissed.  They want to know you care - about them and about the integrity of your operation, as well as providing them with premium service.


    We're not in the business of appeasing each and every need and desire a "customer" - a viewer, listener, online user - may's impossible.  I learned very early on into my television career that it's perfectly acceptable to tell someone to take a long walk off of a short pier if they don't like what you're doing.  This is rooted in the Lincoln-esque fact that it's impossible to keep absolutely everyone happy all the time.  And broadcast media, by its nature being the most public of forums, is subject to harsh criticism in tsunami-like swells. 


    Aggressive complaints warrant aggressive responses, if the intent is the retention of business.  I've noticed that people more than often than not appreciate a hard-and-fast rejoinder rather than pity, sympathy, or total naive agreement.  You voice a concern about a perceived quality level of our services (or lack thereof), to which I offer a structured rebuttal: explaining our stance, conceding some of your points and accepting your suggestions, but also blatantly stating where you're wrong and are making woefully inept and admittedly ignorant assumptions about how things work internally in my organization.   I also let you in on a few justifying industry secrets so you're in the know.  I lastly bring harsh reality crashing down on you, putting you in your place and reminding you that in the grand scheme of things, your business is valuable, but in the end, if we're to lose it, it's of little consequence. 


    But this isn't a make-you-feel-bad-fest just for the sake of hurting someone's feelings.   This is quality customer service, albeit unorthodox.  At the end of the counterargument, I sum everything up and let you know how your business is valued and how we'd like to retain your patronage as a customer.  I also make myself available for further comment and/or explanation of the issue.


    I've noticed this approach works very well with people.  Many viewers I've had such discussions with have, as a result of such debates, become loyal customers of ours, because we took such a forthright stance at defending our position and showing concern for them.  It shows our passion for what we do - and that's something no storefront can accurately display. 


    My role in the media now mandates that I have to reply to this type of criticism on an almost daily basis about people challenging everything in our business from our use of graphics, to our style of journalism and editorial work, to our strategic business decisions.  So, I've gotten a lot of practice at doing this sort of thing.


    And granted this type of tactic isn't for everyone, and only those that really know how to prefect the craft of customer service can pull it off without being outright rude.  For those people, the gambit pays off, and nicely so.  You develop a deeper relationship with your clientele.  You also have to be ready to bite the bullet and be willing to lose the argument at times.  And this certainly can't apply in each and every industry out there, but it does work well in several situations.


    So if you ever call, write or fax and get such treatment from me, it's not personal...just business.


  • The bane of my existence

    I wish I could be more positive now...I really do.  I've been in better spirits in my days, and at the moment I'm stressed and depressed over my company's coverage of this year's elections, for which I'm doing a multitude of multi-platform subsystems.  I've wrote about this ad nauseum, profiling the fact that as a media outlet, I'm writing apps to do (a) marketing and promotions for the candidates and (b) election night results tabulators.  At any rate, it's got me pulling 20-hour days again, and what little time I'm left with is largely spent thinking of what to work on next.  And being a one-man production shop, plus having the responsibilities of anchoring news and sports every night, I'm far past the point of this beginning to wear on my psyche.

    I'm faced with the challenge of building something really cool, due largely to the fact that as a TV station, a goal of ours is always to outshine our previous production.  And by far, our coverage of the local elections in 2002 was the most outstanding thing we've ever done, integrating TV, radio and the Web.  At the time, ASP.NET was just past RTM, so I admittedly used a combination of ASP 3.0 for the presentation tier, and ASP.NET and XMLHTTP for the BLL.  For those of you that logged onto our site in 2002 and enjoyed it, thanks.

    In fact, one of the reasons I think I pulled off writing my company's internal site search engine in a day was that I've been so focused on doing everything and anything election-related, that it was a nice break to do something different and have a fresh problem set in mind.  Now, it's back to the grind of doing candidate profiles and whatnot.  It's actually great fun, and working with the combination of vast amounts of article-style data and numerical voting, all wrapped under the business logic of election rules and regulations is really fun.

    This project also marks my first foray into the framework development arena, wherein everything I'm building can be packaged to a certain degree and shipped somewhere else to be used in a different environment.  I'm a zillion times more paranoid that I was in 2002 about security, performance, reusability and other programmatic matters, so the insane time and production schedule I'm putting into this is of my own doing - I'm shooting for perfection.

    I'm damn sure glad that this stuff only happens every other year.  But time marches on, dragging me along reluctantly behind.  Fortunately, we're on schedule and we'll hit our release date with time to spare.  And hey - I've had only to sacrifice my sanity and social life in the process.  :(


  • Zach replaces Stat Boy on "Around the Horn"?

    A few days ago I blogged about the knockout hilarity that was the cameo of Zachariah Selwyn on ESPN's equally knockout hit "Pardon the Interruption".  Zach is, of course, the fan favorite for ESPN's first foray into reality television, "ESPN Dream Job". 


    Well, because of the time difference between Guam and the U.S. East Coast (I'm 14 hours ahead of NYC), I woke up a tad late and didn't see the start on today's "Around the Horn", but I was really happy to see Zach hosting the show, which has, to date, been staffed single-handedly by Stat Boy (aka, Tony Reali) after the unceremonious departure of two of the show's founding mainstays, Max Kellerman and The Disembodied Voice.


    Zach, proving again that he is the man, held his ground and kicked major ass.  His hosting was accommodating and timely and he dropped some gems of sarcastic quips that had me rolling (i.e., "Larry Bird isn't white, he's clear...and is that an adjective or a noun?")


    Having neither the ability to see into the future or within the minds of the show's producers, I'm obviously not privy to plans on whether Zach is replacing Stat Boy full-time, who admittedly was doing a lot of work doing both ATH and PTI.  I loves me some Stat Boy, as Tony's a veritable cornucopia of sports knowledge, but give Zach the nod.


    So once again, Zach rules triumphantly, proving the one thing I predicted ever since he debuted on Dream Job - that regardless of his success/failure as a prospective anchor for ESPN's flagship show SportsCenter, he'd win in the end, and that network would have to be seriously stupid and/or high not to stick him stick him somewhere.


  • Problems getting indexed by Google News service

    Is anyone else out there having trouble getting the at-the-moment beta Google News product to index their site?  The funny thing is that it worked for my site just fine, getting my company’s stories online within 15 minutes of us publishing them, but then one day it just stopped, and they haven’t been able to get them back.


    I wrote to their engineers about 6 weeks ago who said this is a known problem and that they’re working on it.  But nada as of yet. 




  • Dave Wanta does it again...aspNetMX rules!

    Dave Wanta from was nice enough to help me out and point me to his aspNetMX component, which validates e-mail address records.  I was working on a project wherein I was doing some after-the-fact Spring cleaning, ridding my membership database tables of bad e-mail addresses.

    I got a copy of Dave's component (I already own, use, love and swear by his aspNetEmail component for sending out mass e-mails) and I was totally blown away with how easy it was to use and how much functionality was built-in.  I actually felt guilty at how little work I needed to do to make a clean sweep of my DB. 

    It's a great console tool for making sure you deal with bad addresses properly.  Get your hands on this won't be disappointed.  :)


  • One step closer to Googledom...

    A few days ago I mentioned the fact that I rewrote my company's internal search tool, which returns results for a listing of over news 10,000 articles.  Well, like most things, I admired my own work, got a good night's sleep, took a second look at it, made note of a few nuances and minor bugs, and made some major changes achitecturally.  I'm a lot happier with this iteration.

    I revamped our indexing strategy, having it be built off of a Full-Text Search indexed catalog to return faster results more often, and changed the scheduling upon which we re-index new or added/changed data.  End users can't tell the difference, but performance-wise it's like night and day:

    And of course, not resting, we're already planning some of the features for future versions.  Upcoming releases will also tie-in our personalization framework and multilingual data filters (incoming requests and outgoing resultsets), and we're just about finished with the front-end version for mobile devices.  It's pretty cool and a very fun project to be working on...a nice break from the monotony of what I normally do.

    You can read more about this latter point:


  • Programming folk are the chosen few


    Don't you love the sick irony you feel when you spend long hours hammering out some complex problem all day, and then retire to the back of the office, where admin and marketing staff are feeling as stressed as you about something completely trivial and less intellectually challenging?

    I swear, there's nothing more redeeming about why I love my job than me being stressed out over the indexing of my database server, the integrity of my code security, my its-gotta-be-done-yesterday deadlines, and my pathetic payscale than hearing editorial staffers quarrel internally and publicly about the merits and political correctness of ending a sentence with a preposition.

    Such reminds me exactly of how my fellow business school types in college would scoff at the “stress” levels of education majors during exam week, trying to compare business calculus to setting up an elementary school lesson plan.  Ha!


  • "I love the smell of CAT-5 in the morning..."

    There's nothing more calming than walking into work in the morning and finding your network people hurriedly rushing through the office, pulling network cable with NICs in tow, trying to get some new telecomm node installed or make a quick fix to a server or to machines.

    Others see it as messy chaos, I find it to be cathartic.  On that note, I also can't sleep normally these days unless my home server is running...something about the way the fan lulls me to sleep.  :)


  • Slipknot rules on The Tonight Show

    OK, this actually happened a couple weeks back, but we get our TV programming tape delayed out here in Technical Purgatory (Guam), so my station showed an episode of The Tonight Show with Slipknot as musical guest.


    The Des Moines 9 totally ripped it up, launching into "Duality" from their new album.


    Jay Leno had a shocked look on his face as he closed the show.  Classic.


  • My favorite movie scenes of all time

    People often ask me as a connoisseur of all things media-related what my favorite movies are, and further, what my favorite scenes are.  I also had a delightful discussion about a week ago with a new friend who's an astute lover of film in the truest sense, and he opened my eyes to some things.  Borrowing a catch phrase from an old sketch on the BBC's Benny Hill Show, I'll concede the following:


    I've seen an awful lot of movies, and a lot of awful movies. 


    I've found gems in films that otherwise tanked, and I've sat through movies that were perfect overall but contained little real substance in individual shot scenes.  So that being said, here are what I feel are the best scenes for my generation (keep in mind that I was born in 1974).


    q       The suicide in "Dead Poet's Society" – equal parts chilling and dramatic, the intensity, soundtrack and abstract shooting make this really good…and really hard to watch over again, after you learn what happens to Neil's character.

    q       The cocaine deal in "Boogie Nights" – it's so weird and there's so much going on that it’s brilliant.  The mounting tension, Night Ranger playing in the background and those damn exploding firecrackers make this a winner.

    q       After-the-crash in "Cool Runnings" – many may argue why this is on the list, but hey man, there's nothing like national pride and overcoming insurmountable odds and doubters.  Shock the world!  And island boys taking on the world?  Shit, that's the story of my life.

    q       Hugh Jackman's programming triumph in "Swordfish" – I'm unsure if the Aussie Jackman really is into computers and/or software development, but he pretty much captured the essence of what it feels like to really jam on a project, alcohol in tow, and crank something really cool out.  The mood swings he goes through, the triumph, and inebriation are something with which we can all empathize.

    q       Bruce Lee vs. Kareem Abdul-Jabbar in "Game of Death" – classic Lee – they just don't make films like this anymore.  Unlike his many successors, Bruce didn't use the model of having long, drawn-out fights where he hit a guy 90 times before knocking him out – one kick and its lights out, baby.  Many people surprisingly don't realize that the final fights in this movie were the impetus for the plot for the original 16-bit Nintendo game title "Kung Fu".

    q       The trial in "A Few Good Men" – written originally for the stage, it's brilliant.  I shit you not, I can recite the entire scene verbatim at a moment's notice.  Call me up and ask me to.

    q       The dinner scene in "The Birdcage" – I'm assuming there were at least a thousand takes done to get this scene right, because I don't know how Robin Williams, Gene Hackman, Nathan Lane and Calista Flockhart pulled off all their hilarious lines with straight faces (pun most assuredly intended).

    q       The stockholder's meeting in "Wall Street" – "Greed is Good" - need I say more?  I saw this in '87 when it came out and at that moment knew my calling…I knew I'd be going to business school.  Michael Douglas' finest hour, and some of the best dialogue ever.  I constantly referenced "I am not a destroyer of companies – I am a liberator of them!" in graduate school papers.

    q       Neo meets The Architect in "The Matrix – Revolutions" – I'm not sure who the actor that played the seminal role of the Architect is, but the dude deserves an Oscar nod just for being able to remember the very complex, convoluted lines.  The Web is chock-full of people psychoanalyzing exactly what was meant, but it was a classic scene.  I tried for months trying to find a graphic of the Architect to use as my PC's wallpaper, but no dice.


    For more on what I think of the best computer-oriented movies of all time are, check out an article I did for work on the topic a couple of years ago:


  • I just turned 30…in more ways than one

    Yeah, I turned the big 3-0 about a month ago, and oddly, something else semi-related to that fact happened recently, too.  Last week, I turned down my 30th job offer in the last 5 years since I started at KUAM in late 1999.  I'm not bragging, I'm very flattered at the attention and prospect that people out there want me to do something for them, and I will admit that the media exposure's been good for my career…I get all sorts of inquiries, for being a government PIO, to sales jobs, to software developers, to executive roles, to stuff for which I'm nowhere near qualified (like health/safety inspector).


    I'm admittedly holding out, and if it's ultimately to my detriment, then so be it.  It's no big secret that I've wanted in at either of the two big fish that for so many years have evaded me – Microsoft and ESPN.  I've grown weary of toiling in small businesses with limited scope and effective reach, and with my 20's now firmly behind me, I'm constantly haunted by the specter of still being in my formative years and not really having "made it" yet.


    But life goes on.  I'll be here, if Microsoft Recruiting can get their heads out of their collective ass as far as assessing talent and relevancy of skills, and if ESPN's HR Department ever quite literally sobers up to what makes a good developer.


    Ho hum…


  • Ousted "Dream Jobber" Zach Selwyn makes triumphant cameo on PTI

    Being a freak for both TV and sports, I watch EPSN's "Pardon the Interruption" nearly religiously.  That having been said, shame on you for those who missed today's episode, which, by the way, aired on ESPN2, because apparently the stupid "World Series of Poker" took higher precedence on that network's flasgship channel.


    Anyhoo, for those of you who missed it, you'll be kicking yourselves for the rest of the day.  During the popular "Mail Time" segment, Tony Kornheiser, co-host introduced a special guest reader of the viewer e-mail, as co-host Mike Wilbon was doing the videoconferencing thing live from L.A. on assignment covering the NBA Finals.


    TK segued by saying, "alright now, to read today's mail is some out-of-work, unemployed guy I found on the street", and lo and behold, the camera slowly pulled back to reveal, sitting by his side, Zachariah Selwyn, the guy everyone thought was going to win ESPN's reality show "Dream Job" a few months back, competing to become the next SportsCenter anchor.  He's also the guy for whom Tony's received an infinite amount of hate mail for having voted off the show.


    I swear, I fell off my couch I was laughing so hard.  And the only other time that happens these days is when I'm watching "Chappelle's Show".


    Because of the switcharoo with the channels, I'm not sure when today's episode will be rebroadcast, but catch it if you can.  It's hilarious.


  • Well, it's not Google, but it works...

    I've been struggling with an architecture problem since a friend made a suggestion that led to my diving into amping up my site's internal search capabilities.  The server that my site is on doesn't have SQL Server 2000 Full-Text Indexing installed, so I'd either have to (a) migrate to a new database server, or (b) build something from scratch.

    I opted with the latter, choosing to make all 10,000+ of my company's news articles searchable.  This is something that's actually been bugging me for a long time, and let me tell you...for large sites, there's no harder thing to do than create great search capability.  I essentially wrapped a WebForm around a T-SQL LIKE statement (I'd much rather have used the FTI-dependent FREETEXTTABLE function, had I been privvy to it), and returned results.

    It's not as slow as I was thinking, and while it does take about 4-5 seconds at most for large recordsets to come down the wire and the results aren't quite as accurate as I would hope with the aforementioned FREETEXTTABLE, it performs quite nicely.  I tried the same thing a couple of years ago with Access, which nearly crashed my entire server.  :(

    A couple of points on why it runs smoothly for you architecture-heads out there on what I'm using to make it do what it does:

    • uses a stored procedure for speed & security as opposed to straight T-SQL
    • uses a SqlDataAdapter binding to a single DataTable
    • stores the derived recordset as a Session variable prior to databinding, reducing the need for recurring database roundtrips
    • pages the resultset in a Repeater control rather than the normative DataGrid by specifying a PagedDataSource object as the Repeater's DataSource property