Sunday, December 12, 2010

You know there's been too much screen-time when...

...the most excited thing Caleb, our middle child, can say about the snow is that the rear wiper on the van looks like it's the slingshot from Angry Birds; catapulting wet snow globs toward far distant green piggies.

Monday, November 29, 2010

The True Star Wars Empire

RIP Irvin Kershner.  Lucas may have made Star Wars what it was, but you showed us what it could have been.  Thank you.

Tuesday, November 2, 2010

Not so minty fresh

I just discovered Linux Mint tonight.  It's a neat little Ubuntu based distro that adds all the goodies like, oh say, real wireless drivers and media codecs.  Booted from a live CD, played around, and am blogging from it now.  Snappy and polished.  Then I discovered this.  Oh well... easy come, easy go.

Thursday, October 28, 2010

Crystal balls, tea leaves, astrology, and personality profiles

There is no end to the resources out there designed to condense the complexities of human motivations and  interactions into a few simple personality buckets, and then shoe horn people into those arbitrary categories.  I've been through Myers-Briggs, The Spirit Controlled Temperament, and now most recently the Predictive Index.  I may even have been exposed to the test for the Five Factor Model at a past job, but since I wasn't told what the test was for or my results I can't be sure.  But all these different bucketing mechanisms are cut from the same cloth - a fun little party game taken way too far to the point where management gets all giddy about it and hiring decisions are made off of it and there's a multi-million dollar a year consulting industry built up around pigeon holing people into these buckets and pretending like this one simple test with 86 subjective questions is real science.  And people buy it in droves.

I don't doubt the rationality of some aspects of these categorizations.  Certainly it's obvious that there are some people who like organization, and others chaos.  Some people get energized by being around people, and some by being alone.  Some people like to be the boss of everything, and others would prefer to make things work behind the scenes.  Everyone is different in their motivations and expectations, and those things have an effect on people's interactions with each other.  But that information is only so useful, and not everything is so black-and-white.  Humans are complicated, and these "tests" over-simplify who we really are by elevating the results to be predictors of what makes us us - what we'll enjoy, what will make us happy, how we'll perform a particular job.  It limits people's potential for change and growth, instills a monoculture of personality in workgroups, and frankly makes some people become really neurotic.

In a noble attempt to better understand each other, what these tests actually wind up doing instead is lumping people into categories that may or may not be accurate in any or all circumstances.  In trying to help us understand each other, I think it actually makes us understand each other less.  You start seeing people as High A, or Low B, or middle C, or High D.  Blue, Red, Green, or Yellow.  ISFP or ENTJ.  Left-brained or right-brained.  It limits our ability to see who others really are, and their potential to change and grow beyond our limited view of which bucket they fit into today.

Sometimes this sort of stereotyping has value, but often it's taken too far.  Some people like to label themselves.  Most people like to label others.  Marketers and pollsters love to convince you that people are merely categories and are totally predictable.  Sometimes true.  But not always.  These tests are merely a weak attempt to bring pseudo-science into the high-art of human relationships.  Oh, and to line the pockets of many a consultant.

Monday, October 25, 2010

12 years...

Twelve years ago today, I kissed my future wife for the first time and we confessed our love for one another.  Two years later we were married.  Two years after that, we held our first baby in our arms.  Happy "dating anniversary" love of my life.  Never has another man been more blessed than I.

A wife of noble character who can find?  She is worth far more than rubies.
Her husband has full confidence in her and lacks nothing of value.
...
"Many women do noble things, but you surpass them all."


Proverbs 31:10-11,29

Friday, October 22, 2010

Youth and Invincibility

I'm writing this a few months before it'll be posted on the blog, but as I was driving home tonight from a late evening grocery run, I thought of a guy I kinda sort-of knew in high school. I say "sort-of" because I don't really remember if he knew my name or if we ever said more than a few phrases to each other. But regardless, even if I don't think of him often, I won't ever forget him.

He was a year behind me in school. On the school newspaper with me. And one October weekend on the way to our school paper's pre-publishing marathon, Justin died in a fatal car crash. That was now 15 years ago.

Youth is so often forgiving of mistakes. But not always. The trouble is, as a teenager I remember believing that those sorts of things happened to other people, but not to me. Only now do I fully realize the precipices that I was so close to - blind to their depth and treachery. Only by the grace of God did I make it though to this amazing future I couldn't hardly have pictured at the time. When you're finally reading this post in the fall, I will be 32 years old with 3 beautiful children and the most wonderful amazing and beautiful wife on the planet. And Justin - he would have just turned 31 had he not lost his life at barely 16.

I pray daily that my kids' choices will lead them on solid paths, and that their inevitable mistakes will merely be minor setbacks with only temporary consequences. And I thank God for each new day I get to walk in His creation. Rest in peace Justin.

Wednesday, October 13, 2010

Evidence Based IT

Evidence-based medicine is likely a term you've heard of.  It's a method doctors have developed to help properly diagnose and treat patients, as well as study the relative effectiveness of drugs and treatments with double-blind placebo controlled trials.  The advantage, of course, is that it's a method that is supposed to remove personal bias and drive decisions based on facts alone.  This sounds like a good scientific approach to lots of fields, not just medicine.  Including troubleshooting problems in IT.  Unfortunately, my experience has shown that that's a rarity in my field.

Instead, I've often found that people in my field prefer to come up with a conclusion first and then seek out the facts to support it.  Here's a typical example:
Manager: "There's a slowdown on the website, and the database is the most likely cause."
DBA: "I'll look, but what makes you think it's the database?"
Manager: "Past experience.  The database is always the cause."
DBA: "Everything seems fast.  No blocking, no errors logged, memory and processor looks good, and I/O is fine.  Who reported it and what were they doing?"
Manager: "Susie was browsing and she said things seemed slow. Something's up.  Keep an eye on it today."

...sometime later...

User: "There's a problem with my report"
Manager: "That's probably related to the database issues we've been having today"

Or, perhaps you're more familiar with this common phrase - "have you tried rebooting?"

Now, don't get me wrong.  There's no reason not to draw upon past experience for a hypothesis.  The trouble comes when we come up with firm conclusions based on little or no actual tests or evidence.  We do this because it's quicker and easier, or because we want to snow some ignorant user, or perhaps because we can't see past our view of the world.  Some people can get away with this if their intuition is really good, but I prefer to see the proof.

Tuesday, October 12, 2010

The USS Cole

10 years ago today, during president Clinton's last few months in office, the USS Cole was attacked by Al-Qaeda suicide bombers in a port in Yemen.  17 sailors were killed and 39 injured.  It's hard not to look back and wonder "what if?".  What if our response had been bigger then?  What if government agencies had communicated better?  What if the events of the following year could have been prevented?  Today we honor the memory of those who bravely put their lives on the line to defend liberty.  And we regret that we didn't take seriously the threat until too late.

Sunday, October 10, 2010

Tuesday, October 5, 2010

Blogging from my phone

Unfortunately, I've not found an iPhone app that I like for blogging from my phone, but blogger.com has a feature where I can e-mail a post which is what I'm doing now. I guess this works in a pinch, and I can always use Safari if I need to get fancy.
Not a bad way to go for now at least.

Update - and look, here's the post with the picture attachment - it showed up instantly.  Neat.  But I've gotta remember to come back and fix formatting and add tags and such.

Monday, October 4, 2010

Site redesign, part 3

Finally, I've gotten back around to the next iteration of my blogger site redesign I started in January.  I like it quite a bit.  It continues with my ice theme, and is distinctively mine.  It looks good in Firefox and Chrome as well as the iPhone.  It is tolerable in IE after rendering finishes, and resizes well.  I also had a little help from some Googling.  It took me way too long to get around to it, and then it took me the past couple of days of tweaking to get it where I want.  Hopefully at this point I can go back to using the blog instead of tweaking it - this is after all supposed to be about the content.

Saturday, October 2, 2010

Planning and Todo

Prepare... this post may make not make sense to everyone.

Every October I get ready to buy my planner pages.  I went from the full boar page-a-day Franklin planner, to 2-day-per-page, to 2-page-per-week.  I think I've settled on the two page per week, but I don't like the way FP does it.  I'd really like to have one page with my calendar, and the other page to be todo/notes only.  I'm mostly organized that way and prefer a weekly view of my tasks.  But I've noticed I'm not doing well at getting things done and making incremental progress on long-term goals.  Distinguishing day-to-day tasks, long term tasks, un-actionable stuff, things I'm waiting on others for, and everything in between is hard.  Covey's system of FTF (first-things-first) and 4 quadrants is great for weekly task management and long term goals, but not so hot at managing all the in-betweens.  I really subscribe to Covey's method of examining goals and personal mission, but I've not had much success using his method for everything.

The problem I'm having is with tracking things that aren't of immediate concern and things that aren't well-defined. Like Christmas lists in October and future home improvement projects. If it isn't part of my daily concern or is a big nebulous project instead of a list of action items, I don't want to lose track of those but I can't do anything with them at the moment. So those things stay a jumbled mess in my brain instead of making it to a common place.  That's where David Allen's GTD (getting-things-done) comes in.  I'm going to give his method a shot with a little help from ToodleDo.com and its iPhone equivalent.  Anyone had any experience with this?


The weekly pages I settled for

My preferred weekly view

ToodleDo at the center of GTD

Update: I settled on using ToodleDo.com and syncing with Appigo's Todo app for the iPhone so that I can do subtasks.  I've been using this system this week and so far so good!

Sunday, September 26, 2010

My iPhone 3G jailbreaking experience Part 2

It's been a few weeks since my previous post about jailbreaking the iPhone.  Since then, a few things have happened.
  1. The Samsung Facinate came out for Verizon to mixed reviews.
  2. I learned that some of the slowdowns I experienced with the iPhone may have been due to iOS 4 on the 3G.  Apparently this is a known problem that was addressed with the iOS 4.1 update.  Unfortunately, jailbreakers cannot yet update to 4.1.  Even with a jailbreak, a working carrier unlock is still key for me.
  3. Rock Your Phone was bought by Cydia, giving the slow crufty Cydia a lock on jailbroken app stores.  Blech.
  4. Verizon still can't seem to get its act together and appears to be no closer to getting the iPhone when Apple's exclusivity contract with AT&T ends.
  5. I discovered a really inexpensive cell plan that is perfect for my needs.  I have no need for a data plan as I have wifi at home and work.  And at $0.20 a text message, I save money if I keep the text messages under 50 per month - an easy feat for me.  And, it's month-to-month, so I can go until February when my Verizon contract expires and then re-evaluate.
In order to deal with this transition time where my cell number is still owned by Verizon, I've done a few things.  First, I've forwarded my old cell number to my Google Voice number.  Then, I went to m.google.com/voice and added a shortcut to it on the iPhone as an alternative, since Apple rejected the Google's Voice app.  This lets me make calls as if it's from my Google Voice number (whenever I've got wifi of course since I didn't buy a data plan), which means that I don't have to expose my T-Mobile number to the world.  That's nice since that number is temporary until I can move my primary cell number from Verizon.

Also, I've discovered the world of free and low cost apps in the App Store.  My top picks?
I still have not found a calendar app I like.  I don't want to give out my Google Calendar login to some random app.  I'd much rather see a calendar app use the built-in calendar to feed its data and just display it better.  Calvetica seems nice, but again lacks a Week View which is essential.  But the app that I can't seem to find a free version of, but can't do without is CarbonFin Outliner.  It's just about exactly what you'd want in a list app - quick entry, nested checklists - it has everything but masterlists.  But, there's a pseudo-way around that until the developer gets around to it.  I've seen the SpeedList app too which may be better, but unless it's free I'm not sure I'm willing to try another one.

When deciding what I was going to do with all this, my friend who went through this whole process with the original 1st gen iPhone on T-Mobile gave me some good advice - there's some neat stuff on Android, but I wouldn't be unhappy if I went with the iPhone.  And the guy who sold me his old 3G reminded me that all other phones on the market that I might evaluate would be compared to the iPhone.  It is "the bar" by which all alternatives are measured.  I have to admit, they both were right.

Interesting instances of programming logic

Everything these days has a computer in it, and my new electric scale is no exception. Most of the time for small devices like this you don't even notice. Which is why it is really interesting when a mundane device does something that exposes itself as having a real codebase and thus, a brain. My new scale just did that to me.

No one steps on a scale just once. For whatever reason, we just don't ever trust the accuracy of that first reading. The makers of my scale must've known this, which is why they decided to put some logic into their product to ensure that you see the exact same weight to the tenth of a decimal when you step on that scale a second time. If the scale decided your reading was 87.2 lbs, by golly you'll not see any variation during that second weighing. Presumably, this was done to ensure a sense of accuracy from their product, but actually I think it accomplished the opposite. "You may pretend to measure to the 1/10 of a pound Mr. Scale, but I picked up a box of q-tips between weighings and you didn't even notice."

Saturday, September 11, 2010

Remembering

the view heaven...

...and the one from hell

Friday, September 3, 2010

My iPhone 3G jailbreaking experience

A friend of mine upgraded to an iPhone 4, and so his old 3G (not the 3GS, so this is an iPhone 2nd gen) was just gathering dust.  He graciously let me borrow it to experiment with.

A little background - I'm cheap when it comes to my phones.  I want a lot of functionality at very little price.  I have an old Windows Mobile brick of a phone, and no data plan.  I paid $50.00 for it 2 years ago when it was discontinued and it had been around for 2 years before that.  I pay $15.00 a month for it as an additional line to my wife's cell plan with Verizon.  But, it has wi-fi which I can use at home and at work and often at lunch depending on the restaurant, so I'm mostly connected when I need to be.  Having had a bad experience with Cingular, we switched to Verizon, and I've been really happy except that Verizon has never had good phones.  Great network - I never lose coverage or a call.  But their phones are notoriously backwater unless you like Black Berries.  But all that's changing with the Motoroloa Droid line, the HTC Incredible, and now the upcoming Samsung Facinate.

So, I've finally come around to the point where I think I should look into modernizing my phone.  The trouble is, my current phone is dying and Verizon is no help getting me a replacement prior to my contract ending.  So, I decided to have a look at the iPhone.  Because I'm not going back to AT&T, I first need to jailbreak this puppy and see if I can get on T-Mobile.


Prep:
The iPhone took some initial prep work as it wouldn't let me in without activating.  I plugged into iTunes, restored the phone to the iOS 4.0.2 image, and was in.  Albeit, with no cellular plan.

Jailbreaking:
Jailbreaking an iPhone is the process of opening a hole in the walled garden Apple jails you in.  This lets you unlock features of the iPhone and run apps that aren't officially sanctioned by Apple.  For example, Apple won't let through an app to use your phone as a full brightness flashlight.  They also don't let you make your own ringtones - you have to buy them.  And you can't hide the default apps, even though you're bound not to like them compared to others you might find in the App store.  If you're really concerned about your warranty, or you aren't confident that you can do the jailbreak without messing up your phone, or feel you need to have the latest and greatest iOS upgrades the minute they come out, then jailbreaking isn't for you.  Otherwise, it's worth it in my estimation.

There are too many websites to count with jailbreaking instructions.  Many of them want you to pay.  Don't do it.  Jailbreaking is free.  It's really confusing and difficult to navigate, but I found instructions that worked.  Basically, you download a program called RedSn0w 0.9.5b5-5 as well as an IPSW file for iOS4.  Run RedSn0w and follow the onscreen instructions.  In RedSn0w, you should choose to install Cydia, which is the App Store for jail breakers.  You should NOT enable multi-taking on the 3G unless you're really, really sure.  I saw huge slowdowns when I enabled multi-tasking.  The 3G just wasn't up to the task.  If you want to try it, go ahead - you can always restore and repeat the jailbreaking process again later.

Unlocking:
Unlocking is the process of allowing your phone to be used on another carrier other than AT&T.  You have to jailbreak your phone in order to unlock it.  To unlock the 3G, all I had to do was install a program called UltraSn0w via the Cydia app store.

Using T-Mobile:
In order to use T-Mobile, jailbreak, unlock, and then just pop in an already activated (preferably borrowed just to test) T-Mobile sim card.  You don't get visual voice mail, and you don't get to use the 3G data network - you have to settle for the EDGE network for your data which is pretty slow.  Other than that, everything works great.  No problems what-so-ever.

Impressions:
As far as the iPhone goes, I like it as a phone.  It feels great in your hand and is really stable.  Safari is fast and really well done.  It renders pages perfectly.  The touch screen is mostly good, though not intuitive at times and not always responsive.  You wonder if you touched it correctly and the phone is just 'thinking' about responding.  The screen often rotates when you don't mean for it to.  The iBooks app is nice, and displays PDFs really well.

Some of the default apps aren't so good, and you can't get rid them either unless you jailbreak.  So if you're like me and don't need to stock market app, think that Evernote is better than Notes, and the The Weather Channel app is better than Weather, you can add your favorites and hide the default apps.

The mail application is okay, but not great.  I'd like to see an "unread" folder that puts all your unread messages in one place.  If you have your Exchange e-mail set up to organize your messages into folders, you will miss messages when trying to read on the iPhone.  The contacts syncing with GMail is sad - it doesn't get company names right because it tries to split them into first/last names, and it doesn't pull birthdays or anniversaries which is just terrible because there's a place for them.  The Calendar app lacks a "this week" view, which is how I see my scheduling world and it's frustrating not to have that.

Cydia, the jailbreakers app store, is so slow it's barely usable.  You should use Cydia to install Rock, and forget Cydia from then on.  Many of the free apps in the regular App Store have ads built in, so it's hard to find things there that are both free and good.  However, "TowerMadness" is so good it almost makes up for the fact that there's not much else.

Battery life is okay, but not spectacular.  With light usage, you could possibly make it through 2 days without charging, but mostly you should expect to charge it every day.  I don't think that's unusual for smartphones, but still disappointing.

Finally - let's talk about the iPod functionality.  I have a 5th gen Nano, and take it to work with me daily.  I love it.  The device is just perfect with the click wheel and the OS and the whole package.  The iPhone's iPod software is okay, but it's hard to manage some things.  For example, when listening to a podcast, you typically need to skip forward past intros and commercials.  The nano makes this easy, but with the iPhone you have to make an awkward L shape on the screen, pulling down to adjust your fine tuning and to the right to skip forward.  Not bad, but just not as nice and intuitive as what I'm used to.  I also notice that the iPod features drain the battery really fast.  And the single biggest frustration - the headphone jack is at the top of the phone which is really awkward for all usage unless you're putting your phone in your pocket.

All in all, this isn't a bad phone.  T-Mobile lets you do a month-to-month plan with no contract, so with everyone abandoning their old iPhones for the new 4.0, you could get a really cheap iPhone.  While I think I'd be happy with it, I'm also tempted by the Samsung Galaxy, and think I'll wait for Verizon's version of it called the "Facinate" to come out later this month before I make my final decision.

Tuesday, August 31, 2010

CSS page margins

I'm not sure how this practice ever became en vogue, but I'm here to lay down the gauntlet - if you have a webpage that has text, and that text goes to the far left, and you decide to style your body tag with "margin: 0", your web development license should be revoked.  The usability of your website just went through the floor without any real stylistic purpose.  This particular styling option should be reserved only for pages that need to snug up images or other non-text elements on the left, with the text firmly readable in the center.  When asked whether programming is an art or a science, this is why I answer "both".  There's a whole lot of logic and methodology to it, but some aspects really are just artistic.

Tuesday, August 17, 2010

Bumblebee Waltz

As sung to Ian, Caleb, and now Alison... since I can't seem to find the lyrics anywhere else...

Bumblebee, bumblebee waltz
Bumblebee, bumblebee dance
Blossoms and bumblebees shy romance
Come and take a chance

Apple blossoms swaying in the breeze
They bob and nod and tease the bees
Dance with me please

Tuesday, August 10, 2010

Sandcastle development

Today, while on the beach at Cape Hatteras, we built a sandcastle.  And not just any sandcastle, a drip castle.  The tide had reached its lowest and was coming in.  We had a trench dug from the sea all the way up to our castle.  Then a moat from the trench encircled the castle, and finally a mound in the middle housed our drip spires.  It was quite the undertaking.  It began without a complete plan, it suffered some setbacks, multiple people contributed and the contributions were often mis-matched, and a certain someone destroyed as much as he contributed.  It was never really finished, but it was beautiful when we finally stopped working on it.  And it was all built with the knowledge that it was in the path of high tide.  And it struck me - this is like nearly every  software project out there.  I have a friend who's been in consulting for a long time and worked on many different projects and he often laments that none of them are around anymore... they've all been re-worked to newer tech or the company has gone out of business or the project is otherwise dead.  Decades of work, but no tangible product to show for it remains.

So, here are some thoughts on software and sandcastles...

Even when you have a plan, you won't really be able to follow it
It's hard to predict every bump in the road or turn of events.  The users of the software won't really know what they want until they actually use it, even when they think they do know.  The management will want results quickly, and won't see maintainability and good design as being more important than the project schedule, though they'll never admit that.  They want it all - good, fast and cheap; none of this picking two business.  Also, process is everything!  Users will often jump to UI opinions or lists of what they want to track, but they will often avoid telling you what their business process is because they frankly don't know.  Often, they're looking for software to drive the process - EEP!  Process should drive the software.  Building software is like building a sandcastle - even with a 'plan', it evolves as it gets built.

Not all developers are created equal
Some developers will break everything they touch.  Because accuracy and attention to detail isn't important to them, they'll often be faster to market because they can cut out the hard stuff.  They'll write twice as much code and produce an order of magnitude more bugs.  They'll shy away from newer techniques because the old ways work for them and are comfortable.  Building software is like building a sandcastle - not everyone who touches it makes it better.

It's okay not to be finished
Software that isn't finished is software that's being used.  That's a good thing.  Building software is like building a sandcastle - if it's good, there's no such thing as 'done'.

Remember it's made of sand...
Yes, you may have the most beautiful design in the world, but it's written in COBOL.  No really... it's all COBOL given enough time.  Your medium is sand.  Java is 15 years old.  C# is only 10.  ASP.NET MVC, only 1.  And within these technologies, there is constant rehashing.  Take the classic example of Microsoft's data access strategies.  ODBC, DAO, RDO, ADO, ADO.NET, Linq-to-SQL, and now Entity Framework.  And that's just within Microsoft tech.  Building software is like building a sandcastle - as beautiful as your creation is, it's still made of sand and the next tide is coming.

The right way is to do it for love...
We know it's not going to last like a beautiful building.  And it's probably not going to be used by millions of people like a particular model of car.  And it's not going to be touched only by the most skilled craftsmen like some kind of wood furniture.  But building software is still beautiful and complicated and fun, even if it's just made from sand.

Wednesday, June 23, 2010

Dad to the third power

Welcome to the world Miss Alison. We couldn't possibly love you more.
You are an answer to our deepest prayers, and a blessing to our family.
We cannot wait to bring you home.

Love, Dad3

Alison Rose, 6/22/10. 7lbs, 11oz. All girl!
Posted by Picasa

Monday, June 21, 2010

Friday, June 18, 2010

SQL Server Job performance

I've been fighting a mis-perception at work that ETL (data transformation and loads) is one of our company's threats to database scalability.  It certainly was when I started here a few years ago, but I've worked hard to change all that.  At the risk of sounding like I'm tooting my own horn, my ETL processes are really well optimized.  I'm cranking through 50+ different large file loads a night in well under an hour.  As far as I'm concerned, I've got each individual ETL process smokin' fast, while occasionally making conscious trade-offs between performance and maintainability.

But the perception is still there in part because I've not made my SQL job stats transparent enough.  Stuff just works, and so outdated opinions never got challenged.  The reality today is that the jobs that are causing us the most trouble aren't the ones where we're loading external vendor files, but the ones where some developer is doing internal data processing and they're doing it BADLY.  It's the linked servers and the cursors and the UDFs and the over-architected single-object-inflate-then-commit patterns that threaten our scalability as our business grows.  So I set out to prove it.

Job reports are available for everyone to see in SSMS, but you have to consciously go after it and interpret the results.  That wasn't working for me, because as the DBA I'm the only one who was doing that regularly.  It's only in my face, and my jobs run fine.  So I developed the "SQL Server Job Report", which is a daily e-mail report to my whole dev team highlighting the following info:
  • Job name
  • Number of job runs in the past month
  • Average duration during past month
  • Success rate during past month
  • Most recent run date
  • Most recent run duration
  • Most recent run status
While everyone has been concerned with what happened during last night's runs, I wanted to put the spotlight on two other key metrics:
  1. What's the average job duration?  Is a job taking over an hour consistently?  That's a threat when it fails and we have to re-run it during business hours.
  2. What's the success rate for a job?  Jobs that aren't robust or well tested sap developer time.  Do we have jobs that fail more than 25% of the time?  Why?
This did the trick!  I got the responses I needed which were, "I didn't know that job was failing that often!" and the "I didn't know that job always took that long!".  Progress...


Using this as empirical evidence, I was able to devote some time today to the job that was biggest offender.  It happened to be a series of stored procs with linked servers, UDFs, and cursors that went against our largest tables and consistently took 3+ hours a night.  With less than 1/2 a day's work, I was able to help the developer get the job down to 20 minutes!  That's pretty satisfying.  We'll see how much traction I can maintain on the other problem children...

Friday, June 11, 2010

Goodbye Gallbladder, Hello Home

Goodbye gallbladder,
goodbye pain
and those midnight wake-ups
that made me insane
A sneak attack
no time to react
and now staples from my toes to my brain

Hello home
hello future
with my two little boys
and a new baby girl to nurture
least not my wife
faithful through the strife
and my constant comfort through all the torture

By His grace
alone
I've gone from gallbladder
to home

Thursday, May 20, 2010

Funny pic

With our 3rd little one on the way, I couldn't resist sharing this great pic.

UN-recommended

Back in January, I recommended the Hurt Locker as a good movie to see (if you like war flicks).  The big news recently is that the director believes that people "stole" from him by downloading the movie, and plans to actually sue these people for their illicit downloads.

I'm no fan of piracy.  My personal philosophy is that I pay for something, or I find legitimately free alternatives (like OpenOffice or Google Docs).  Especially as a software developer, I believe that you should not get something for nothing.  But I'm also not likely to pay for the same thing twice - why should I have to re-buy the DVD when I have the VHS?  Why re-buy the e-book when I have the hardcover?  Big Content has this view that we should have to pay over and over for the same stuff due to their planned obsolescence.  You are not 'entitled' to get money for your product, just like we aren't 'entitled' to get your product for free.

But I digress.  Back on topic - I can't see how this action will help Voltage Pictures in the long run.  Suing their customer base - people we can reasonably assume are interested in their product - can only hurt them.  There's no guarentee that the people who watched this online would have been paying customers.  There's no guarantee that the people they're suing are the ones that actually downloaded the movie.

Now, the Hurt Locker is only a single-viewing flick for sure.  Once you've watched it once, you probably won't care to see it in a theater or buy the DVD even though it's a really good flick.  So I do have to concede the point that they probably lost some money from piracy.  However, go after the sites and products that allow piracy to happen, not after your own customers.  It's just bad business.

I've not downloaded the movie, nor do I intend to - in fact, I watched the Hurt Locker for the full price of umpteen-bazillian-dollars at a local theater on an evening out with a buddy.  The problem for Voltage Pictures is that this lawsuit alienates their customer base - even the ones who did nothing wrong.  I'm much less likely to watch another of their flicks now when I know that they're employing these tactics against regular folks.

The way to stop piracy is at the source, not by extorting people.  The irony of the situation is that the producers of the movie are being sued themselves for having 'stole' the story from the life of a soldier.

Tuesday, May 18, 2010

Just one more reason...

I don't know why these drive me so crazy, but they do! One lousy moment in your cup, followed by thousands of years in a landfill. It completely ruins my morning when I can't tell them to skip it in time.  I cringe when I think of the thousands of customers who get these useless things stuck in their cups daily.  I literally drive 10 feet from the pickup window and chuck the blasted thing out my window towards the trash.  Bah*.



The infamous Starbucks Swizzle Stick 

*My wife has warned me about my blog posts that end in "Bah".  It's a definite symptom of blog snarkiness.

Wednesday, May 5, 2010

Rube Goldberg meets Google

Wow! Kudos to Google.


Spiderman!

The other night I had the bright idea to talk to Caleb about what super-powers he really has (meaning none-at-all).  I was hoping we could have a conversation slightly grounded in the real world.  In other words - I wanted to make it clear that little boys do not really posses any of the following:
  • elite Jedi skills
  • the ability to fly
  • the speed to run faster than bullets
  • the ability to stop bad guys
  • stealth like a ninja
But Caleb would have none of it.  He insists that he can do all this and more.  And, having realized the error of my ways, I had to relent and hug and kiss my little super hero goodnight.  Now in the news today, a real life Spiderman foils a crime and I am left with the distinct feeling of having become Peter Banning from the movie Hook - as if I have somehow forgotten Neverland in my quest to help Caleb get about the business of growing up.  Youth and its innocence may well be the greatest superpower of all.

Tuesday, May 4, 2010

40 years ago today

40 years ago today, Allison Krause, Jeffrey Miller, Sandra Scheuer and William Schroeder lost their lives at Kent State.  9 others were wounded.  There's a really informative podcast on the shooting here.  Only 2 of the 4 victims were protesters - the other two were just bystanders walking to class.  The closest victim to the shooters (Miller) was 265 feet away, which if you think of a football field, that's just over 88 yards.  None were armed.  The day before the massacre Governor Rhodes proclaimed that the protesters were "the worst type of people that we harbor in America". He now has a building named after him in downtown Columbus.  I'm not often ashamed to be from the Buckeye state, but today is one day when I really and truly am.  God rest their souls.

Friday, April 23, 2010

Lifehacker and truncated RSS feeds in Google Reader

If you use Google Reader extensively, you've probably noticed a feed or two that won't display the full contents of the articles.  Instead, some sites give you just enough of the text of an article to try to hook you and lure you to their site.  Presumably for the purpose of driving up the hit count and generating ad revenue.  Not necessarily a bad cause - sites you frequent deserve your support.  But it is really disruptive to the Google Reader experience to hop out to other sites in the middle of reading your feeds.  It's awkward and inefficient, and frankly I think it generates some ill will towards those feeds.

Interestingly, LifeHacker.com is one of those sites that has that problem, but in an interesting twist, today a post from LifeHacker shows some ways to fix it.  I picked the "Google Reader Full Feed Changer" option, which involved the following steps:
  1. Install the Grease Monkey Firefox plug-in
  2. Install the Grease Monkey script for the Reader hack
  3. Click "Manage User Scripts..." in Grease Monkey and edit the .JS script
  4. This step is different depending on which sites you're going to fix.  You need to know XPath and how to 'view source' on the desired sites, but it's not too tough.  I fixed LifeHacker.com and ArsTechnica.com with the following edit to the script:
var SITE_INFO = [
  {
    url:    'http://arstechnica.com',
    xpath:  '//div[@class="body"]'
  },
  {
    url:    'http://lifehacker.com',
    xpath:  '//div[@id="wrapper"]'
  }
  // etc, etc...

Once you hop back into Google Reader, the whole article will appear.  Very handy.

Thanks to Grease Monkey, the orange button can be replaced with the full article itself...

Monday, April 19, 2010

Unconstitutional

This would be really funny, if it weren't so true.

Saturday, April 17, 2010

Skip, skip, skip to my Lou

One of my least favorite things to do is to put on a DVD for the kids.  We don't typically let the kids watch very much TV as it is, but sometimes in a pinch the TV makes a nice babysitter.  Unfortunately, putting on a DVD for the kids is a major time waster as you have to skip, and wait, and fast forward, and wait, and skip, and wait some more... Until finally you lose your mind and punch every blasted button on the remote to just get to the point when the movie will actually play.  Bah!  BoingBoing had a nice little graphic a couple of months ago highlighting this, and Life Hacker posted some tricks to help bypass the headache recently.  Maybe it's worth it to rip all our movies to my DVR's harddrive just to avoid the hassle.

Friday, April 16, 2010

Bye, bye underscores!

Though I code in VB.NET everyday, and have even named this blog after some VB-ish syntax, I code in C# for my personal projects and I maintain a mental "Top 10 things I hate about VB" list.  Near the top of that list is that VB code cannot span multiple lines unless you use an underscore as a line-continuation character.  It's syntax dating back to the earliest days of VB, and it's evil.  It makes the programmer jump through hoops to tell the compiler something that it should be smart enough to figure out anyway.  It was mostly annoying when using class/property <attribute> syntax, but with the addition of Linq syntax in .NET 3.5, the problem grew out of control.

Well, no more!  Today my company has upgraded to Visual Studio 2010, which is somewhat amazing since it was only just released this week.  And one of the great new features is the removal of the need for the underscore in many cases.  The compiler will now do what it should have done all along.

One of the first things I did today after completing the upgrade was to run a find and replace in my project, and I removed 918 underscores from the attributes decorators on classes, most of them for Linq-to-SQL markup.  Here's the regex find-and-replace dialog so that you can do the same!



Just one more goodie in the long awaited VS 2010!  I love being a .NET developer.

Tobasco

Is it wrong that I prefer Frank's RedHot to my own namesake sauce when it comes to tobasco?

Thursday, April 15, 2010

Tweets are for the birds

I'm not on Twitter. It appears I may be the only one - especially in the tech world. It is really very freeing to type more than 140 charact ...

Wednesday, April 14, 2010

Tax Day

I do my own taxes, and I do not cheat.  I do everything I can to be sure that my filing is as accurate as possible, including reporting the $3.80 in interest made off my savings account last year.  It's really difficult though with our overly complicated tax system.

When I finished our taxes this year, I was shocked.  We, as a family, paid more in mortgage interest last year than we did in federal taxes.  Now, I'm not complaining - given sales tax plus property tax plus federal/state/local income tax, we still pay more in total taxes than any other expense as a family.  I had to go back and double and triple check the numbers, but our software was accurate.  As I watch our national debt spiral out of control and the creation of more and more entitlement programs and the unemployment rate sticking steadily at more than 10%, I can't help but wonder how the federal government can really pay for all this.

If I'm honest with myself, I think we paid less than was fair.  Or rather more accurately, I think that other families in our income bracket and life situation paid less federal tax than was fair, and by extension so did we.  Our country's economic policies are unsustainable, and I cannot see how nearly half of all households benefit from government programs with zero tax liability.  But what do I know?  I'm only in the 1% demographic of this opinion poll.  But apparently I have some unlikely allies who share my belief.

Then again, it's not like receiving more in tax revenue would actually cause the government to pay down its debt - it seems creating more entitlement programs and bigger government is the name of the game.  With more money, they'd increase spending - there's no doubt in my mind.  The news just came out yesterday that our deficit spending was only $1.3 trillion instead of the expected $1.6 trillion, and we're supposed to celebrate this like the Titanic is taking on slightly less water than expected.  If I ran my household like this, we'd be living on the streets for sure.  Or perhaps, off the backs of some other taxpayers somewhere who simply must be footing the bill.

Tuesday, April 13, 2010

When money trumps safety

It looks like there's a good possibility that if you get a ticket from a red light camera, it may be because the timing of the yellow light has been shortened.  The goal of this of course is to increase ticket revenue at the expense of public safety.  I know I've been in a situation where I've been doing the speed limit, but that light turns yellow at just the wrong moment and you have a split second to decide whether it's safer to hit the breaks hard, or go on through when the light is, what I like to affectionately refer to as, "rorange".  With all the factors that our imperfect mental math needs to consider - the car we're in, the speed we're going, the distance to the safe stopping point (not the light itself), the weather, our tire traction, how close someone behind us is following - it's pretty despicable that the light could be set up to increase the probability of an accident for the purpose of increasing ticket revenue.  Aren't traffic laws supposed to promote safety?

Monday, April 12, 2010

Random thought of the day

Why is it that my keys are always in the wrong pocket?  It always seems that whenever I'm carrying something to the car in one arm, my keys are in the unreachable pocket.  Or perhaps they're in the pocket with my phone or iPod threatening to scratch the screen.  I've had this problem enough that you'd think I'd have solved it by now.

Thursday, April 1, 2010

It's RSS feed reader bankruptcy day...

I read someone's blog recently where they called marking-everything-as-read in your RSS feeder "declaring feed bankruptcy".  The concept is that if you haven't looked at your feed reader in awhile, there's just too much there so you need to nuke the whole thing and go back to zero.  Today, April 1, is my annual "mark everything as read" day.  Not because there's too much to read, but because everything on the internet today is a ridiculous waste of time.  From the spaghetti tree to OMG! Ponies, join me in marking everything posted on the net as read, and then read a real book.

Tuesday, March 30, 2010

100th post...

It's my 100th post.  So, here's some good news from the techie world to share!

Monday, March 29, 2010

Bingle Tiger

When I need to find something on the web, I now do a Bingle search.  First Bing, then (if I need to) Google - in that order.  It used to be the other way around - Goobing.  Not that I'm representative of the general internet user population mind you.  But this is a trend that does seem to be gaining some momentum.  Of course, there are conflicting reports.  But I think Bingle may be catching on...

Sunday, March 28, 2010

Dates and Dragons

Ah, date night.  My beautiful wife and I got to get out of the house for a few hours while a friend put the kids to bed and house-sat.  So very wonderful.  With the new baby growing a lot lately, Beth didn't feel like doing anything that involved much walking, so we wound up seeing Dreamwork's new pic, How to Train Your Dragon in 3D.  Wow.  No really - WOW!  Great and mostly original plot.  Visually stunning.  Fast-paced, and action packed.  And the 3D enhanced the story rather than distracted from it.  A little light on the humor, and female characters are noticeably under-represented, but it's by far the best non-Pixar movie we've seen in the theater in a long time.  Actually come to think of it, Pixar's last one Up was mostly meh.  And with their next one being a tired old sequel from last decade, Pixar may be past their prime. Anyway, what are you waiting for!?  Go see this one!  (Not suitable for kids under 10, despite the marketing).

There's no place like home

The Columbus Dispatch posted an article and a map of how home values have been affected in Columbus from 2005-2009. Very interesting...

Friday, March 26, 2010

The crazy part lost its grip momentarily, and the light shone true and bright... then 'twas quelled forevermore

His conscience managed to squeak a word out before the crazy part of his brain knew what was happening.  That part was promptly shouted back down, and it shrank back to the dark recesses of his rotted soul, and The Crazy reigned supreme once more.

Thursday, March 25, 2010

You think it's easy being the Tooth Fairy?

I had one of those - "I'm the worst parent in the world" moments this morning.  Ian lost his fourth tooth yesterday after days of working on it.  He bravely let me pop it out with some floss.  He was so excited.  He phoned everyone.  Then, I let him download one mp3 (he chose the Spiderman theme song) as a reward for his bravery.  After all the hoopla and celebrating, he went to bed with a ziplock bag under his pillow.  And he woke up this morning... with a ziplock bag under his pillow.  Oh God help me!  I raced into his room hoping he was still asleep, but alas... with quivering chin he surmised that the tooth fairy had forgotten him.  I showed him a $1 bill, and told him that I actually found it under my pillow.  "You see Ian, the tooth fairy thought that I had loaned you the money to buy your mp3 yesterday, so she gave me the dollar thinking you were going to pay me back.  She's so silly - she didn't know that the mp3 was a gift."  He smiled, and then we both laughed.  Laughed at the worst... tooth fairy... ever....

Interesting eBay dynamics

I recently made a little purchase from eBay.

Before I did it, I watched some of these sell on eBay.  It's interesting... these things retail for $259 from Amazon today.  The shipping is free too.  But they used to be $359, then they were $299.  Some people obviously bought theirs at the previous prices, because they're listing them on eBay for way more than $259.  Why anyone would pay MORE to get a product from eBay than they would to get the new one from Amazon is beyond me.

Then, as I watched a couple of auctions for the reasonably priced ones, I noticed that the auctions that closed earlier in the evening would have a lot of competitive bidding at the end that drove the price up by sometimes more than $15.00 in the last 5 minutes of the auction.  The ones that closed later (Pacific time) had fewer late bids so the final prices were lower.

I also noticed that some people charged shipping, while others didn't.  But, the final bids seemed not to account for shipping at all.  People would bid up to $240ish, which might have been an okay deal if the shipping was free.  But with shipping at $13, it's no deal at all.  For a few more dollars, they could have gotten a new one from Amazon.  Either people can't do math, or they get caught up in the emotion of trying to beat everyone else and lose all sense of reason.

Granted I picked one product and only watched it sell for only a few days.  My research is nowhere near conclusive.  But it seems like if you're going to sell something on eBay your best strategy would be to:
  1. Be aware of what time your auction will end.  Specifically, you probably want folks in the Eastern time zone to be at home and still awake when it ends in order to maximize your bidders nationwide.
  2. Separate your shipping fee.  Don't offer free shipping.  People apparently can't do math - they just bid on the product and think of shipping costs as an afterthought.
  3. Include a real blurb about the specific item the buyer will receive.  So many people just use stock photos and copy-and-paste product descriptions.  People know they're buying used, so they want to know about the minor scuff mark on the back, or that the product comes in the original packaging.  The stuff that seemed like it was being sold by a real person received the most bids.  30-50 in some cases.  The auctions that were not unique with rubber stamp photos and descriptions would get 9-15 bids.
 Once my Kindle 2 arrives, I'll have to post a review.  It was a tight race between it and the smaller, sleeker, but less featureful Sony PRS-300.

How do we go about getting copyrights on our DNA?

In Ohio this week, Governor Strickland was just sent a bill that would allow for the collection of a suspect's DNA if they are arrested in connection with a felony crime.  Not convicted mind you... just anyone who is picked up off the street will now be compelled to give up their DNA.  And, of course, it's not just for a one-time use to exonerate someone - once you give up your DNA it's in a government database forever.  And once it's gone, you don't get to control how it's used.  Think about that...  when you're proven innocent, you don't get to force them to delete your DNA data from their databases.  Or restrict who it's shared with.  And even though it's only for felonies now, this seems to be a slippery slope.  It doesn't seem so far fetched anymore to wonder if a routine traffic stop will someday result in a swabbing.  Or, maybe we should get all Minority Report and swab all newborns.  Pre-crime is the future!

Of course, the sound byte on this is that this will help law enforcement identify criminals and get them off the street.  You aren't soft on crime, are you!?  You're a law abiding citizen, so you have nothing to worry about.  This will make you safer.  That's always the tradeoff, isn't it?  Liberty, or security.  Security or liberty.

Wednesday, March 24, 2010

iRobot wasn't just a good movie...

...they also make really neat toys...


How on earth does W00t! wind up getting these prices on new condition items?  These things sell for around $400 here.  Granted, what W00t! gets must be previous generation overstock Roombas, but I for one can't see paying full price when these regularly show up on W00t! for less than 1/2 MSRP.

Now, if only I could get a Kindle or a Nook in the sub $200 range...  eBay perhaps.  Ah, the internet... where the free market thrives and where the real price point of a product for each demographic can be found.  If only you didn't get gouged on shipping.

Tuesday, March 23, 2010

Pop quiz, hotshot! - 3.23.10 edition answer

The question was: What are Ceres and Eris?
And the answer is...

...Ceres and Eris, (along with Pluto, Haumea and Makemake), make up the five dwarf planets within our solar system.  Why is that significant?  Well, Ceres is actually the smallest known dwarf planet, and it resides in the asteroid belt between  Mars and Jupiter.  Eris is the largest known dwarf planet in our solar system, and has an orbit more distant than Pluto's.  There's a great image of the three of them here.

I have a poster from National Geographic in my cube at work that has some facts and relative size depictions of the 8 planets in our solar system along with 3 of the 5 dwarf planets - Ceres, Pluto, and Eris.  This poster was put out shortly after the IAU decision in 2006 to define what is and isn't a planet.  That was nice of them since every other space poster since the 70's depicting 9 planets just became outdated.

That decision wound up with Pluto being demoted, and caused some public outcry.  People, it seemed, were very attached to Pluto as a 9th planet.  Well, that's really an understatement.  Some people (including astronomers) were actually outraged at the reclassification.  There's even a petition website.  In Illinois last year the state senate voted that Pluto was to be a planet again for a day.  Pluto is the underdog, and people like to root for an underdog.  Pluto has 3 moons for goodness sakes!  It's not a planet?  Who says?

Well, actually some really smart and very well reasoned people said, "look, we weren't right originally".  We need to alter our thinking to go further.  We need to shift our paradigm a bit.  There are other bodies in orbit around the sun - some larger, and some smaller than Pluto.  It makes more sense to group Pluto into this other classification with these four other celestial bodies.

I like having that poster in my cube because it is a daily reminder that often people get caught up in their way of thinking and can't break free.  And then one little piece of extra information can alter their view of a topic, or push someone to a different way of looking at the world.  Those are the kinds of stories that energize me.  Being open to learning something new or different.  Being willing to admit a mistake.  Knowing when to hold on and when to let go.  We didn't lose a planet with Pluto - we gained Ceres and Eris and a bit more understanding.

Pop quiz, hotshot! - 3.23.10 edition

What are Ceres and Eris?  No internet searches allowed.

Friday, March 19, 2010

Snapple does math

I gave up pop for lent.  Since  February 17th, I've not had a single carbonated beverage.  My work has fridges stocked to the brim with free pop, so this has been quite a challenge for me these past 30 days.  16 days to go.  Not that I'm complaining... I went from 3-4 cans of pop a day (plus who knows how much from the fountain at Chipotle) to nothing.  A co-worker today told me he's taken on the same endeavor.

I had dinner with my family last night since my sister is in town.  My mom knew immediately - she's probably never in the past 26 years seen me at a restaurant where I didn't order a pop.  Since age 5, I've been hooked.  Five was when I tasted a can of Tab for the first time.  The crack-fizz of a can opening is perhaps the most effective advertising in the known universe.

One of the strange side effects has been that I started drinking tea.  I've never liked iced tea. When I've given up pop in the past, it's been replaced by mass quantities of lemonade.  Really, I know it's H2O that I should be drinking - and I have been - but surprisingly tea has been my #1 choice this go-around.  I attribute it to the fact that I switched to diet pop a couple of years ago, and my sweet tooth has diminished because of it.  Tea has gone from tolerable, to somewhat enjoyable to me now.

Anyway, my work offers free Snapple too, and on the inside of one of the Snapple caps today was this:
111,111,111 * 111,111,111 = 12345678987654321.  I thought that was pretty spiffy.  I haven't decided if I'm going back to drinking pop after Easter.  I might miss out on some useless trivia on the inside of those caps.  Ahhh... Addiction.  Habits.  Routine.  Even when I break free of one, I succumb to another.

There's a scene from The Devil Wears Prada.  Yes, I'm admitting to having seen it - shut up.  The protagonist, Andy, has no interest at all in fashion or the fashion world.  But, through a series of only-in-a-movie circumstances, she has somehow landed in the middle of the fashion universe with a dream (well, nightmare actually) job.  She has the following interaction with her boss, Miranda, who is the 'Devil' from the title:
[Miranda and some assistants are deciding between two similar belts for an outfit. Andy sniggers because she thinks they look exactly the same]

Miranda Priestly: Something funny?

Andy Sachs: No, no, nothing. Y'know, it's just that both those belts look exactly the same to me. Y'know, I'm still learning about all this stuff.

Miranda Priestly: This... 'stuff'? Oh... ok. I see, you think this has nothing to do with you. You go to your closet and you select out, oh I don't know, that lumpy blue sweater, for instance, because you're trying to tell the world that you take yourself too seriously to care about what you put on your back. But what you don't know is that that sweater is not just blue, it's not turquoise, it's not lapis, it's actually cerulean. You're also blithely unaware of the fact that in 2002, Oscar De La Renta did a collection of cerulean gowns. And then I think it was Yves St Laurent, wasn't it, who showed cerulean military jackets? I think we need a jacket here. And then cerulean quickly showed up in the collections of 8 different designers. Then it filtered down through the department stores and then trickled on down into some tragic casual corner where you, no doubt, fished it out of some clearance bin. However, that blue represents millions of dollars and countless jobs and so it's sort of comical how you think that you've made a choice that exempts you from the fashion industry when, in fact, you're wearing the sweater that was selected for you by the people in this room. From a pile of stuff.

I try to be really conscious of consumerism.  When the kids see an ad on TV, they are transfixed, and Beth and I try to pry them back to reality by asking, "What are they trying to get you to buy?" or "What are they trying to get you to do?" or my favorite - "What are they trying to make you believe?".  Their answers aren't very sophisticated yet, but my own answers are when I ask myself these questions.  I sound so immune from consumerism in the conversations in my own head.  But there's this other part of me that wonders about that jingle I keep humming, or the way that the crack-fizz makes me salivate like a Pavlovian K-9, or the way I ritually turn over my Snapple caps.  Am I really free?  The math just doesn't quite add up...


Tuesday, March 16, 2010

Ruminations on the now infamous Health Care Bill of 2010

I keep hearing variations of these phrases over and over in the discussion on health care:
  • "We cannot do nothing"
  • "Doing nothing is not an option"
  • "Even if this bill isn't really what we wanted, it's still better than doing nothing"
There's been a lot of articles about the cost of doing nothing.  And I mostly agree - things can't go on in the direction they're going.  We probably shouldn't do nothing as far as health care goes.  Of course, it seems odd that the number one priority of the American voter is the economy, and doing nothing is the very strategy being implemented to address those problems... but I digress.

As I was saying, I don't have any trouble with the statement that we cannot just do nothing - the problem I have is with the continuation of that statement - that what is being proposed now is somehow better than doing nothing.  I don't believe that's true.  Not for a second.  I believe that with our country facing record deficits, two wars, a disappearing job market, an out-of-control housing market, an insufficiently-regulated and poorly understood banking system, baby-boomers about to retire, and Iran making nuclear threats that are eventually going to force us to act - we are in for a world of hurt if we do the wrong thing here.  Doing nothing is actually a better option than doing the wrong thing.  And that's what I think this bill is in it's current state - the wrong thing.

Now, should we do something - yes.  There's no dispute.  Should it be the most pressing thing congress is doing now? Should Obama be the proverbial emperor Nero? Fiddling-with-Health-Care-as-Home-Burns? Well, lets forget all that. Lets just pretend for a minute that our country isn't in the greatest economic crisis since the Great Depression and that unemployment isn't in double-digits; lets pretend we live in some alternate era where most rational people could agree with Health Care as the #1 priority on the docket.  Lets look at just a few of the problems with our Health Care system in this country in no particular order in a list that is far from exhaustive:


Some problems I see with our current health care system:

  • Health care costs are increasing at a rate vastly greater than inflation.  The rate is not sustainable.

  • The young and healthy are less likely to contribute to the system since they don't need to utilize the system.  And they have no way to invest in it in any reasonable way for the future when they will inevitably need more health care - you pay your premiums for a year and that's all there is to it.  No future thinking - this isn't a 401k.

  • Health care is often tied to your employment and subsidized as a benefit.  This means:

    1. Free-market principles don't work - consumers cannot shop around for comparable insurance - they either take what their employer subsidizes, or pay extravagant premiums for their own, or they go without and pay out-of-pocket.
    2. If you leave your job, you're all of a sudden without insurance.  You can do COBRA, but without the subsidy from your employer it's not worth the cost.  The only reason to do COBRA is if you have major medical expenses, or have a pre-existing condition where you fear having a gap in coverage.

  • Free-market principles don't work in the doctors office - the consumer is not knowledgeable about the cost of tests, labs, and procedures - nor do they know about their necessity, effectiveness, or alternatives.  Often, there's just a race to meet the deductible, and then all the real costs of health care get buried in insurance EOBs.
     
  • The quality of care and the knowledge of your doctors varies.  One doctor may order a bunch of unnecessary tests (hey, insurance pays, right!?) or recommend costly surgeries.  Another doc may treat with medications or non-surgical options.  Practicing medicine is sometimes an art, not just a science.  Some people are better at it than others.  Some are good docs, but are out of date.  Some run up a tab like it's an episode of House.

  • Big Pharma spends big dollars educating docs on the newest meds they sell - less costly generics may be just as good, but the docs don't always hear about those alternatives.

  • People don't understand their health care - it's often very confusing.  The Dr. is in a hurry, or the patient doesn't know what questions to ask.  This leads to misuse or non-use of medication, re-admission to the hospital, and all sorts of other costly health care incidents.

  • People self-refer to specialists (often the wrong one, so big $$$ wasted), or they use the ER or Urgent Care as their primary Dr. office.

  • Americans are (statistically speaking) fat and lazy which contributes to all sorts of health problems and costs.

  • Doctors don't (and often can't) easily share information.  Is that procedure duplicative?  Did that patient just have an MRI that is usable from last month?  ERMs (electronic medical records) are not ubiquitous by any stretch, and are still too costly for many small practices.

  • Many, many people are uninsured, or unisurable.  They're often poor, or very sick, or both.  The number being bandied about is 30 million.
...and I'm sure that you can think of 100 other problems with our health care system off the top of your head.


How many of these problems is the president even talking about, and how many of these will have solutions in this bill?  The one and only one appeal I've heard lately from the president is the last bullet point I mentioned above - we keep receiving the emotional appeal about the 30 million uninsured.  They're hell-bent on fixing that one, at a cost of who knows how much.

I'll be the first to admit that it's easier to be a critic than it is to create something of real value.  I don't envy those we've sent to Washington.  They're tackling an issue that, quite frankly, career politicians probably aren't qualified to understand.  The trouble is, they're unwilling to admit that they don't really understand the implications of what they're doing.  They keep saying "trust us", while we keep begging them to "please just listen to us".  Doing the wrong thing here will have more severe consequences than doing nothing.  At least with doing nothing, you're not under the delusion that you've made progress.  Of course, I'd much prefer that they do the right thing than nothing, but it's doubtful anyone can agree on what that even is.

Friday, March 12, 2010

.NET DST Calculator

I have a common .NET library written in C# that I use everywhere.  I call it mattmc3.Util, and it contains helper methods (static classes or extension methods) that correspond to Microsoft's BCL.  So, for example, I have a DateTimeHelper with static methods that corresponds to the System.DateTime class.  The DateTime class is one of the most anemic in the .NET library, mainly because MS has to deal with international customers, so methods like DateTime GetMemorialDay(int year) are too regional and clutter the BCL, but are essential in the American business world.

In honor of Daylight Savings Time beginning this weekend, I decided to post some code from my DateTimeHelper class.

First off, a little bit of helper code.
public enum Month {
   January = 1,
   February = 2,
   March = 3,
   April = 4,
   May = 5,
   June = 6,
   July = 7,
   August = 8,
   September = 9,
   October = 10,
   November = 11,
   December = 12
}

public enum WeekPlacement {
   First = 1,
   Second = 2,
   Third = 3,
   Fourth = 4,
   Last = 5
}

public static DateTime GetLastDayOfMonth(DateTime theDate) {
   int daysInMonth = DateTime.DaysInMonth(theDate.Year, theDate.Month);
   return new DateTime(theDate.Year, theDate.Month, daysInMonth);
}

Then, the workhorse method that does the calculations.
/// <summary>
/// This method calculates a date for you.  For example, Thanksgiving falls on the 4th Thursday
/// of November, so you would call GetCalculatedDate(WeekPlacement.Fourth, DayOfWeek.Thursday, Month.November, DateTime.Now.Year)
/// </summary>
public static DateTime GetCalculatedDate(WeekPlacement weekPlacement, DayOfWeek dayOfWeek, Month month, int year) {
   var result = DateTime.MinValue;
   var intMonth = (int)month;

   if (weekPlacement == WeekPlacement.Last) {
      result = GetLastDayOfMonth(new DateTime(year, intMonth, 1));
      while (result.DayOfWeek != dayOfWeek) {
         result = result.AddDays(-1);
      }
   }
   else {
      result = new DateTime(year, intMonth, 1);
      while (result.DayOfWeek != dayOfWeek) {
         result = result.AddDays(1);
      }

      var weeksToAdd = (int)weekPlacement - 1;
      result = result.AddDays(7 * weeksToAdd);
   }

   // Post condition
   if (result.DayOfWeek != dayOfWeek || result.Month != intMonth || result.Year != year) {
      result = DateTime.MinValue;
   }

   return result;
}

And finally, some of the methods that allow me to calculate holidays and other calendar events that are important for our business applications.
public static DateTime GetNewYearsDay(int year) {
   return new DateTime(year, 1, 1);
}

public static DateTime GetMemorialDay(int year) {
   return GetCalculatedDate(WeekPlacement.Last, DayOfWeek.Monday, Month.May, year);
}

public static DateTime GetIndependanceDay(int year) {
   return new DateTime(year, 7, 4);
}

public static DateTime GetLaborDay(int year) {
   return GetCalculatedDate(WeekPlacement.First, DayOfWeek.Monday, Month.September, year);
}

public static DateTime GetThanksgivingDay(int year) {
   return GetCalculatedDate(WeekPlacement.Fourth, DayOfWeek.Thursday, Month.November, year);
}

public static DateTime GetChristmasDay(int year) {
   return new DateTime(year, 12, 25);
}

public static DateTime GetDaylightSavingsTimeStart(int year) {
   if (year >= 2007) {
      // Second Sunday in March
      return GetCalculatedDate(WeekPlacement.Second, DayOfWeek.Sunday, Month.March, year);
   }
   else if (year >= 1987) {
      // First Sunday in April
      return GetCalculatedDate(WeekPlacement.First, DayOfWeek.Sunday, Month.April, year);
   }
   else {
      return DateTime.MinValue;
   }
}

public static DateTime GetDaylightSavingsTimeEnd(int year) {
   if (year >= 2007) {
      // First Sunday in November
      return GetCalculatedDate(WeekPlacement.First, DayOfWeek.Sunday, Month.November, year);
   }
   else if (year >= 1987) {
      // Last Sunday in October
      return GetCalculatedDate(WeekPlacement.Last, DayOfWeek.Sunday, Month.October, year);
   }
   else {
      return DateTime.MinValue;
   }
}

Enjoy! Spring is nearly here!