Password Validation Class Using RegEx in C-Sharp

I have a client that recently asked me to add password validation on a web application.  Their existing application had no password validation and users could enter any password into the system with no regards to how secure it was.  I was asked to implement the following password constraints:

  1. Passwords must be at least 8 characters in length
  2. Passwords must not have the login username in the password
  3. Passwords cannot have 3 or more consecutive incremental characters, such as “abc” or “123.”
  4. Passwords must pass at least 3 of the following 4 tests:
    1. Password must have at least 1 lowercase character
    2. Password must have at least 1 uppercase character
    3. Password must have at least 1 numeric character
    4. Password must have at least 1 special character

All of this has been done a million times, and if you Google it, there are tons of examples, but no single solution encompassed every requirement.  So I threw together a quick class to solve the problem.  What I am about to share is not the final class I developed – it does not have all the configuration options I added to it later, but it is the first fully functional class that addressed the need.

Most of the tests are easily performed using simple regular expressions, with the exception of numebr 3, “Passwords cannot have 3 or more consecutive characters, such as “abc” or “123.””  For that one, I wrote a method that converted the string into an integer array of ASCII values for each digit and then I looped through the array looking for consecutive numeric ASCII values.  This class should work for anyone – and you can extend this basic class and make it more dynamic like I did for my client easily.  Have fun and good luck!

PasswordOps.cs

//-----------------------------------------------------------------------
// Class Name:  PasswordOps.cs
// Author:  Ron Sparks - The Binary Biker
//
// This class is designed to check passwords for <company> standards
//
// <copyright file="PasswordOps.cs" company="BinaryBiker.com">
//      Copyright Ron Sparks.  All rights reserved.
// </copyright>
//-----------------------------------------------------------------------

using System;
using System.Text;
using System.Text.RegularExpressions;

namespace PasswordRemediation
{
    /// <summary>
    /// Class designed to ensure that passwords meet ~client~ standards
    /// </summary>
    class PasswordOps
    {
        #region Constants

        // RegEx pattern that checks a string for lower case characters
        private const string LowerCasePattern = "^.*(?=.*[a-z]).*$";

        // RegEx pattern that checks a string for upper case characters
        private const string UpperCasePattern = "^.*(?=.*[A-Z]).*$";

        // RegEx pattern that checks a string for a numeric digit
        private const string NumericPattern = "^.*(?=.*[\\d]).*$";

        // RegEx pattern that checks a string for special characters
        private const string SpecialCharacterPattern = "^.*(?=.*[\\W]).*$";

        // RegEx Pattern that checks a string for minimum length of 8 charcters
        private const string MinimumLengthPattern = "^.*(?=.{8,}).*$";

        // The number of RegEx tests that must pass for validation to succeed
        private const int NumberOfTestsReqiredToPass = 3;

        #endregion

        #region Properties

        /// <summary>
        /// Gets or set the error message after the call to ValidatPassword
        /// </summary>
        public string ErrorMessage { get; set; }

        #endregion

        #region Public Methods

        /// <summary>
        /// Checks a password for required pattern parameters
        /// </summary>
        /// <param name="username">username of the login user</param>
        /// <param name="password">password supplied</param>
        /// <returns>Boolean success flag</returns>
        public bool ValidatePassword(string username, string password)
        {
            var numTestsPassed = 0;

            // password cannot conatin username
            if (password.ToLower().IndexOf(username.ToLower()) > -1)
            {
                ErrorMessage = "Passwords cannot contain usernames.";
                return false;
            }

            // password cannot contain more than 2 consecutive characters
            if (HasConsecutiveCharacters(password, 2))
            {
                ErrorMessage = "Password cannot have 3 or more consequtive characters in it ('abc', '123')";
                return false;
            }

            // password must be at least 8 characters long
            if (Regex.IsMatch(password, MinimumLengthPattern, RegexOptions.IgnoreCase))
            {
                // see if password has a lowercase character
                var isMatch = Regex.IsMatch(password, LowerCasePattern);
                var messageBuilder = ErrorMessage;
                ErrorMessage = isMatch ? messageBuilder  + string.Empty : messageBuilder  + "Passwords must have at least one lowercase character." +  Environment.NewLine;
                numTestsPassed  = isMatch ? 1 : 0;

                // see if password has an uppercase character
                isMatch = Regex.IsMatch(password, UpperCasePattern);
                messageBuilder = ErrorMessage;
                ErrorMessage = isMatch ? messageBuilder +  string.Empty : messageBuilder +  "Passwords must have at least one uppercase character."  + Environment.NewLine;
                numTestsPassed  = isMatch ? 1 : 0;

                // see if password has a numeric character
                isMatch = Regex.IsMatch(password, NumericPattern);
                messageBuilder = ErrorMessage;
                ErrorMessage = isMatch ? messageBuilder +  string.Empty : messageBuilder  + "Passwords must have at least one numeric character."  + Environment.NewLine;
                numTestsPassed  = isMatch ? 1 : 0;

                // see if password has any special characters
                isMatch = Regex.IsMatch(password, SpecialCharacterPattern);
                messageBuilder = ErrorMessage;
                ErrorMessage = isMatch ? messageBuilder +  string.Empty : messageBuilder  + "Passwords must have at least one special character."  + Environment.NewLine;
                numTestsPassed  = isMatch ? 1 : 0;

                messageBuilder = ErrorMessage;
                ErrorMessage = numTestsPassed < 3
                                   ? "Password must meet 3 of the following 4 criteria: 1 uppercase character, 1 lowercase character, 1 numeric digit, 1 special character.  Your password has the following potential errors: " + 
                                     Environment.NewLine +   messageBuilder
                                   : string.Empty;

                // If enough tests have passed, the validation is a success.
                return numTestsPassed > NumberOfTestsReqiredToPass - 1 ? true : false;

            }

            ErrorMessage = "Passwords must be at least 8 characters long";
            return false;
        }
        #endregion

        #region Private Static Methods

        /// <summary>
        /// Checks a string for consecutive ascii characters
        /// </summary>
        /// <param name="input">the string to check</param>
        /// <param name="maxChars">the threshold of consecutive characters to check for</param>
        /// <returns>Boolean.  True if threshold hit, false otherwise</returns>
        private static bool HasConsecutiveCharacters(string input, int maxChars)
        {
            var inputAscArray = new int[input.Length];
            var numConsecutiveCharacters = 1;
            var lastAscValue = 0;
            var ascii = Encoding.ASCII;

            for (var x = 0; x < input.Length; x++  )
            {
                var encodedBytes = ascii.GetBytes(input.Substring(x, 1));
                inputAscArray[x] = encodedBytes[0];
            }

            for (var x = 0; x < input.Length; x++ )
            {
                if (inputAscArray[x] == lastAscValue   1)
                {
                    numConsecutiveCharacters ++ ;
                    if (numConsecutiveCharacters > maxChars)
                    { break;}
                }
                else
                {
                    numConsecutiveCharacters = 1;
                }

                lastAscValue = inputAscArray[x];
            }

            return numConsecutiveCharacters > maxChars;

        }

        #endregion
    }
}

Fox News: Fair and Balanced? Hardly.

Today is a bad day for stocks in the wake of the S&P credit downgrade of the U.S.A..  As you can imagine, it’s the highlight of every online news organization in the country.  I decided to take a look at the major news outlets to see how they were reporting the news.  Unsurprisingly, nearly all of them were reporting mostly the facts with a little political leaning as possible, with the exception of Fox News and Huffington Post.  Here; take a look for yourself.  Click on an image below to see the front page headline for each organization.

Fox News is definitely not fair and balanced, but we already knew that.  The hyper-partisan political climate we find ourselves in is not the fault of any one party or organization; they all came to the party and played in the sandbox.  Still, it drives me crazy to distraction  that Fox News so blatantly practices revisionist history, disguises opinion as objective news, and deliberately misleads millions of Americans, playing on their fears and insecurities.

I suppose I shouldn’t let it get to me, but the fact of the matter is that, deep down, I do blame Fox News for many of the problems in this nation today.  Anyone who endorses hatred, spews lies, and intentionally misleads people is suspect in my book.  The reach and power of Fox news to spread its disinformation and hatred is staggering and they use, in my opinion, very little judgement and take no culpability for the climate of hatred and distrust in which we live.

Animal Crossing, City Folk

How a Video Game – Wii’s “Animal Crossing” – Helped me Cope with Cancer

I was home alone every day with a deadly disease ravaging my body and trying to take my life from me.  My children were in school, my disabled parents were unable to visit me, my wife was at work – providing me the insurance that was saving my life, my brother was working every day, and my sister was living in Europe.

Every day I would wake up, drive myself to my radiation treatments, then come home to an empty house.  Every day I would sit and look at myself in the mirror as my disease slowly took its toll on my body.  Every day, the hearts of my wife and children broke as they had to leave me, but there was no other option.

I could have sank into a deep depression.  I could have looked around the empty house and decided to give up.  But I did not.  In fact, looking back, I can’t even say I was depressed.  Worried, certainly, but not depressed.

My wife, a month before I was diagnosed with my cancer, had purchased the game “Animal Crossing – City Folk” for the Wii.  It’s a silly game, with no levels, no competition, no goals other than what you set for yourself.   Your avatar lives in a virtual world shaking trees or hitting rocks for money, fishing, hunting bugs, collecting furniture, and interacting with other NPCs in the game.

A friend of mine once called it the Seinfeld of video games; it’s a game about NOTHING.  I found that humorously appropriate.

The thing is, it’s seriously addicting.  It’s a happy game.  Everything about the game is happy – from the virtual world colors, the characters, the interactions, and the music.  You can spend, literally, hours at a time exploring your town, building your house, and visiting the city.

In my lonely hours every day, I immersed myself in my Animal Crossing avatar – his name is Dude.  He lives in a town called Sparksty.  I would sit in my easy chair, connected to the machine that fed my feeding tube, and played Animal Crossing as the soft whirring of the machine pumped food directly into my belly.  And I was happy, because the game was so innocent and happy.  It quite literally helped me achieve a better state of mind, helped me fend off depression, and gave me a sense of well-being and accomplishment – exactly what I needed as I sat alone with my disease every day.

I would build snowmen while wearing funny costumes:

Building a snowman in Sparksty

Building a snowman in Sparksty

I would cover my head for warmth and fish in the ocean:

Fishing in the ocean

Fishing in the ocean

I would get wisdom from decidedly odd characters:

Getting a life lesson from an otter

Getting a life lesson from an otter

I would take the time to rid my house of pests:

Gotta make sure there are no bugs in my house!

Gotta make sure there are no bugs in my house!

The options are limitless.  As you can see, the colors are happy, the characters are cute, and everything about the game is designed to be a happy venture into a world that you control as much or as little as you like.

You’ve probably read before about video games and virtual worlds helping the sick and the elderly.  It’s absolutely true and, in my opinion, getting patients involved in games like Animal Crossing does no harm and can yield enormous benefits.

In my case, it certainly helped me.  It helped fill my empty days, it helped ward off depression, and helped me beat my cancer.  Of this I have no doubt.  To this day, I still play Animal Crossing, City Folk.  It makes me happy.

The powers of Animal Crossing are pretty significant.  Take a look at this cartoon, not made by me, about someone else’s experience with Animal Crossing:

Video – see the cartoon as a video

Don’t underestimate the healing power of a good video game.  I really, really hope Nintendo makes another version of Animal Crossing – I really think this game helped save my life.

Someone else's experience with Animal Crossing

Someone else's experience with Animal Crossing

Downgrade

Don’t Blame Obama for the Credit Rating Drop

S&P dropped the U.S. credit rating today from AAA to AA+.  This is a huge blow not only to US interest but to the global economy as a whole.  The ramifications of this downgrade will be felt all around the world.  According to S&P, the US medium-term debt reduction strategy isn’t enough and is a reason why they downgraded the US.

Of course, I knew the right, the tea partyers, the abysmally ignorant, and the blind followers would immediately lay the blame for this on Obama’s feet.  I logged into Facebook and went to the Fox News page to see what the ignorant masses were saying.  Here, take a look for yourself.

What people are saying on Fox News' Facebook page

What people are saying on the Fox News Facebook page

 This is not doctored.  This is the view of those who follow Fox News.  They blame this on Obama, but it’s just not true.   Obama has affected the US deficit to the tune of 1.4 trillion dollars, most of it in temporary spending (the stimulus).  Previous President George Bush, on the other hand, impacted the US deficit a with over a whopping five trillion dollar debt.   You can read about it here and view the eye-opening graph that goes along with it.

The long and short of it is that Obama is not responsible for this mess – he inherited it and, frankly, is doing a good job managing it as best as he can in this hyper-partisan political environment we find ourselves in now – in my opinion.

Of course, a visit to the Fox News page wouldn’t be complete without a racial reference about the President:

I don’t think Obama is perfect but he’s done a great job. I am frankly, sick and tired of the veiled racism of the right and partisan politics that both parties are playing at.  Obama is one of the most articulate and intelligent Presidents we have ever had and I am confident history will judge him well.   Regardless, though, this downgrade of the US credit rating is not his fault, but the political spin machine is in full swing in Washington and the next few weeks will be particularly ugly I think.

Why StumbleUpon Paid Discovery Sucks

I love using StumbleUpon.  You’ve seen the cartoons on the Internet where StumbleUpon kills productivity and is the anathema of sleep.  I agree with it 100% – it’s addicting.  You select your interests, press Stumble, and viola!  A page relevant to you pops up.

I wanted to drive Stumblers to this blog, so I tried an experiment.  I paid Stumble $50.00 to promote my blog in certain categories for stumblers.  Seems simple, right?

Wrong.

When I created my campaign for my cancer blog, I used the following keywords:  Health, Cancer, Diabetes, Doctors/Surgeons, Family, Medical Science, Writing, Weight Loss, Nursing.

Every single one of those keywords are relevant to my cancer blog.  Every.  Single.  One.

And yet the campaign was rejected.  I got this nice form letter from StumbleUpon saying:

The ad was declined for the following reason(s):
One or more of the selected topics were incorrect for this content. We recommend you resubmit using the Auto-Target option.

I did not WANT to use the auto-target option.  I wanted very SPECIFIC keywords to lead to my blog.  I don’t know what their “auto-target” picks up on, and if I agree with it.

So I complained.

To their credit, I got a response within 15 minutes.  Kudos to StumbleUpon for that.  Still, all the agent did was tell me to resubmit with auto-target on.

This went on through 3 different attempts at submissions and finally I threw up my hands and let the auto-target do it’s job – and my campaign was approved.

I am disappointed and will not use StumbleUpon for advertising my blog again.  This experiment failed.  The Stumble robot has pigeonholed my blog with a series of topics that I may or may not approve of and I cannot change it.  When I asked an agent to actually LOOK at my blog, they said my topics were too broad.

I know what kinds of people I want to drive to my site. I know what keywords are appropriate.  If Stumble had taken 2 minutes to LOOK at my blog they would have seen my suggestions were the correct ones.  Instead, they relied on an algorithmic robot and did not let me, the expert, set the rules of his own campaign.

I’m getting traffic sent to my blog – but is is the right KIND of traffic?  I just don’t know.

My New tattoo - the Phoenix

Binary’s New Tattoo

I am a cancer survivor.  In August 2008 I was diagnosed with Head and Neck cancer, and an incredible and grueling journey began.  A journey that included surgery, radiation, chemotherapy, depression, fatigue, hopelessness, anger, despair, and a forced view of my mortality.

It was also a journey of hope, love, compassion, understanding, and renewed vigor for life.  When death comes knocking at your door you learn how precious life is.  Each and every day becomes so much more than you expect.  You see love in the eyes of those who care for you in a way you never noticed before.  Strangers, for no reason other than you need help, reach out and touch your life.  Life becomes sweeter, and the hope for tomorrow becomes stronger than ever.

I realized this when I was battling my cancer.  I told myself that when I emerged from my cancer I would be reborn as a new man.  Like the mythological phoenix, I would arise from the diseased ashes of my former life a new and vibrant human being; a man ready to tackle life, with a new appreciation of my life an everything in it.

For those of you who don’t know what the phoenix is, here is the definition from Dictionary.com:

phoe·nix

noun /ˈfēniks/
phoenixes, plural

  • (in classical mythology) A unique bird that lived for five or six centuries in the Arabian desert, after this time burning itself on a funeral pyre and rising from the ashes with renewed youth to live through another cycle
  • A person or thing regarded as uniquely remarkable in some respect

I blogged in March of 2009 that I wanted to get a tattoo to commemorate my survivorship. I wanted to get a phoenix.  But it never happened.  I was always nervous that my 6-month scans would show more cancer.  And so I waited.

Until the beginning of July, 2011.  Almost three years since diagnoses – I finally admitted to myself that I was well into my survivorship and it was OK to celebrate it.  Most cancer survivors know what I mean when I say I was afraid to celebrate my survivorship lest I find out I was still riddled with cancer.

Last month, I went to Cast Iron Tattoos and got my new tattoo.  My phoenix, on my left shoulder, staring at the scar on my neck, my always-visible reminder of my cancer and survivorship.  I agonized for months of the exact design I wanted and I ended up with this:

My New tattoo - the Phoenix

My New tattoo - the Phoenix (click for larger view)

I had to be careful.  A number of the phoenix tattoos I found looked suspiciously like the Nazi eagle.  Others looked too effeminate.  And some were overly tribal.  Anyway, Vinnie at Cast Iron Tattoos took great care of me and my new tattoo came out great.

I HAVE emerged from the ashes reborn.  I am a cancer survivor and I am proud of it.  I celebrate being cancer-free and my tattoo is a part of that celebration.  Maybe one day I’ll battle cancer again and, if I do, I will emerge again, and earn a new phoenix as a result.

The Scariest Words Revisited

When I first learned I had cancer, I started this blog.  It has garnered enormous interest, tens of thousands of views, and many cancer fighters have expressed interest and gratitude for it.

I was re-reading my blog today and realized that there are a lot of blanks in the diary – I left out things that I didn’t understand, or were afraid to discuss.,  So I will go, post-by-post, and give you a “revisited” entry with greater detail.  Read the original post first, and then come back and read this expanded version.

ORIGINAL POST:  08/27/08 The Scariest Words

There are a lot of blanks in this blog post.  If you look at the index of entries on the blog, you will see that there is nearly two weeks between the two posts.  I suspect I have cancer in this post, and then I jump right into the fact that I have cancer in the next post.  A two-week gap is a long time when you have cancer.  There’s a reason why I didn’t blog for two weeks, though.

What happened in between?  A lot.  Let me fill in the blanks for you.

In this two-week span, I was officially diagnosed with cancer, had my entire world turned upside down, and was forced to deal with my mortality, the knowledge that I was fighting a deadly disease, and trying to figure out what this meant to me and how to deal with my new world.

My son and me 3-weeks before the "lump" was found.

My son and me 3-weeks before the "lump" was found.

Let’s talk about the sudden lump in my neck.  The lump came on suddenly.  I had long hair at the time that, for the most part, covered the lump, but I did brush it every day.  I washed it daily.  I would have noticed if the lump had been there for a while.  I have even reviewed picture of myself three weeks before the lump was discovered and have determined that there was no lump on my next in those pictures.  On August 2, 2008, Carey and I took my son Matthew to a Valient Thorr concert at the Back Booth in downtown Orlando.  I had a picture taken with Matthew and you can clearly see that there is no lump on the left side of my neck.  Somewhere between August 2, 2008 and August 23rd 2008 that lump appeared.

It was a big lump.  When found, it was clearly visible.  Pulling my hair away from my neck showed an obvious and acute swelling on the left side of my neck.  It was warm to the touch, slightly warmer than the surrounding skin.  It didn’t give when pressed; it was hard like a massive pimple waiting to be popped.  It was so obviously a serious issue that there was no doubt that I needed to see a doctor.

Dinner that night was a distracted and confused affair for me.  I have vague memories of talking to our friends, making polite conversation, and trying to interact with everyone.  I wouldn’t be surprised if they remember me as aloof and distant.  My mind kept going to the lump and twice during dinner I excused myself to go to the bathroom and examine it in the mirror.

I have, over time, realized that everything bad happens on a Friday night or on a Saturday.  It seems that there is a universal law that states that events occur at the least convenient time.  We found the lump on a Saturday, meaning that I couldn’t get in to see my doctor until Monday.  I didn’t consider a non-painful lump in my neck to be emergency room material, so I had to sit and worry and fret all day on Sunday.  I had to go to sleep Saturday and Sunday with the vague worry and uncertainty, fearing that something was wrong, and having very poor sleep as a result.  I was forced to wait until 8:00AM on Monday morning before I could call my doctor.

Let me describe the whirlwind tour of doctors I had those first few days.  I went first to my primary care physician, Dr. J.  Dr. J was, literally, the family doctor.  When I was 16-years-old he was the doctor who diagnosed and treated me through mononucleosis.  He is the PCP for my father, my mother, my brother, my grandmother, and my grandfather.

I didn’t actually get to see Dr. J, though.  I saw his PA, Dorie.  When I was ushered into the exam room, she moved my long hair out of the way and immediately expressed surprise by the lump in my neck.

“That’s not normal,” she said immediately.  I quipped that I wouldn’t have come if this was a normal condition for my neck.  Dorie didn’t respond to my joking, though, and proceeded to feel the lump and noted that it was hard and solid to the touch.

She immediately left and pulled in another PA to examine me as well.  It was at this point that I started to think to myself that this was serious.  Carey was with me, though, and we both shrugged it off, foolishly optimistic, and kept assuming it was an infection.

I brought up the infection theory to Dorie.  She reluctantly agreed that it might be an infection, but she was worried that it was “something worse.”  I suspected that cancer was on her mind, but I didn’t want her to say it, so I kept insisting that it was probably an infection.   Cancer was just not an option for me.  I couldn’t imagine it.  I couldn’t conceive of it.

After Dorie confessed that she didn’t know what my lump was but suspected that it was something that needed immediate attention, she set me up with a CT scan at one of the local hospitals, about three miles from the office.  I describe the CT scan process in greater detail later in this book.  I had a number of scans and they were prime subjects for my blogs.

What I will say about this first CT scan, though, is that it was a terrifying experience.  Not because it was painful; it was not.  Not because it CT scans are radiation; I’ve had plenty of X-rays in my life and don’t fear them.

It was terrifying because for those few minutes when the scan is occurring I was utterly alone, lying on a table in the middle of a massive machine.  All I could see was the machine surrounding me.  All I could hear was the hum of the equipment.  All I could do was lie there and ponder the predicament I had suddenly found myself in.

It’s those times when you are alone that you really have to face your fears.  Without the constant stimulation of driving a car, talking to other people, reading a book, or doing busy work your mind if forced to consider the things you would rather not think about.

I found myself thinking, for the first time, that something was very wrong with me.  And that thought terrified me.

Do not suffer a witch to live...

Suffer not a witch…

I grew up in a staunchly religious family; a Southern Baptist family to be exact.  When I was about ten-years-old I was told that Satan was working through rock and roll bands and that rock and roll was filled with subliminal messaging.   Subliminal messaging would turn our nation’s youth into devil-worshiping hooligans and imperil the very souls of those who listened to it.

Among the worst offenders was the band Queen and their song “Another One Bites The Dust.”  Play the song backwards and it repeats, over and over again, “It’s fun to smoke marijuana.”  I loved Queen, even back then, but I was a dutiful son.  My father told me to destroy my 8-track (yes, I said 8-track) of Queen and so I did.  I placed it on top of a whole ream of firecrackers and blew it to Hell, where it belonged.

When I was thirteen years old, I was told by my church that my favorite game, Dungeons and Dragons, was responsible for destroying the youth of America, that fantasy role-playing was brainwashing teens, and that it was filled with pagan and sacrilegious references that put my soul in jeopardy.  Indeed, if I wasn’t careful, I could actually summon a demon and be possessed!  I was older, more skeptical, and I resisted.  I knew, in my heart, that D&D was no more dangerous than reading J.R.R. Tolkien’s Lord of the Rings trilogy.  I had just been betrayed by my church and I was heartbroken, disappointed, and definitely skeptical of pseudo-scientific jargon by church leaders by that time.

Most people don’t spend as much time as I do honing their critical thinking skills.  Most people aren’t as skeptical about EVERYTHING the way I am.  Most Christians don’t share my skepticism and they have taken Exodus 22:18 to heart; “Thou shalt not suffer a witch to live.”

Admittedly, we don’t have Christians walking the streets with shotguns  looking for Wiccans to blow away.  That’s not civilized, is against the very tenants of this nation of ours, and would lead to swift incarceration.  Christians don’t kill witches nowadays, but they do boycott anything that has the trappings of witchcraft or sorcery in it.  Or do they?

The impetus for this blog post is Harry Potter.  A discussion of the merits of Harry Potter led one of my wife’s friends to comment that she avoids the series because it has sorcery in it and her personal beliefs don’t allow her to read it, watch it, or approve of it.  When she said that, it took me right back to my days a child, where my church dictated the books I could read, the TV I could watch, and the movies I could see.    Back then, I was comforted by that protection.  I look back now and I, personally, feel ashamed that I allowed it, listened to it, and followed it.

That’s not to say I don’t respect her beliefs.  I do.  It’s not easy to stand apart, and less so to admit it.  I do respect her belief and her right to raise her family as she sees fit.  But it did get me to thinking about what fundamental Christians see as a threat and ban-worthy and what is not.

Harry Potter and the Deathly Hallows

Harry Potter

Harry Potter is off-limits because it has witchcraft, sorcery, and magic in it.  Never mind the message, which I think any Christian would approve of.  Good triumphs over evil.  Evil is self-destructive and cannot prevail over Good.  Magic is no match for the power of love, loyalty, courage, faith, and friendship.  No – this message is lost, because there is sorcery in the book.

The Narnia Series by C.S. Lewis

The Narnia Series by C.S. Lewis

But what about C.S. Lewis’ Narnia series?  It is, after all, a Christian analogy.  Aslan is Jesus.  But what about the magic, sorcery, witchcraft (by both Evil and Good) in the books?  There is a mixing of Christianity and Greek/Roman mythology in this book (some would argue that much or Christianity is nothing more than Greek/Roman mythology with different trappings).  There are magical artifacts, animals, spells, wizards (good and bad) and more.  Should this, then, be boycotted as well?  And if not, please tell me why because I can’t see the distinction between Narnia and Harry Potter in this regards.

Disney's The Little Mermaid

Disney's The Little Mermaid

The Little Mermaid should be off-limits as well, right?  After all, there is witchcraft, wizardry, sorcery, and fantastic animals in it.  Both evil Ursula and good King Triton use magic and sorcery in the movie.  If I stop to think about it, most kids see this film when they are about 7 or 8-years-old, a much more malleable and impressionable age than when they see Harry Potter.  So why, then, is this movie not banned?  Or is it and I didn’t get the memo?

Beauty And The Beast

Beauty And The Beast

Similarly, Disney’s Beauty and the Beast should be banned.  It has magic, sorcery, spells, and so on.  Why is it not banned?  Why it is not a threat when Harry Potter is?

Cinderella

Cinderella

Let’s think about Cinderella.  It has magic, witchcraft, animal transformations, fairy godmothers, and more.  Why is it on the allowed list when Harry Potter is not?  Holy cow, it seems to me that Disney as a whole should be boycotted because nearly EVERY movie by them is centered around magic or sorcery.

J.R.R. Tolkien's Lord of the Rings

Lord of the Rings

What about J.R.R. Tolkien’s Lord if the Rings trilogy?  Like Harry Potter, a primary message in this epic literature is one of Good over Evil, of the insidious and tempting nature of Evil, of the power of love and friendship.  It is also filled with a lot of other messages and symbolism, not least among them a fear and concern of industrialization, but the point remains – is this book banned because of the sorcery in it?  It is, after all, probably the primary driving influence behind Dungeons and Dragons, not to mention many rock and roll songs (think Led Zeppelin).

Aesop's Fables

Aesop's Fables

What about Aesop’s Fables?  Holy cow, these things are chock full of witches, magic, supernatural creatures, mythical animals, and more.  These are classic literature, though, taught to every child in and out of school.  Indeed, it even has a “scripture reference” learning guide for it.  But it’s filled with magic!!  Why is this not boycotted?

I could take this list on and on and on.  We have Percy Jackson, Greek and Roman mythology, Freaky Friday, Escape to Witch Mountain, and so many more.  Each of these focuses on magic and sorcery of some kind and the magic is central to the stories, myths, and lessons therein.  Why are these not boycotted as well?

Like I said, I completely respect my friend’s beliefs and her right to raise her family as she sees fit.  She is consistent in her beliefs and behaviors, which is not something many people can claim to be.  But I don’t understand, don’t see the harm, and fail to comprehend the fickle nature of what is protested and why.  It seems to me that Harry Potter is a convenient and visible target – and that in itself leads me to suspect the church leaders who call for its boycott and their reasons for doing so.

Like PETA says, there is no such thing as bad publicity.  By calling for the boycott of  Harry Potter and not all the other works or art, film, or literature mentioned above, it leads me to believe that it is not for religious reasons, but for political and secular reasons that the church calls the boycott.

You can’t suffer SOME witches to live and not others.

Windows 7 “Command Prompt Here”

Before Windows 7, I had to muck with the registry to get right-click context in Windows Explorer to open a DOS prompt in the folder I was viewing.  Windows 7 does it for free.

Simple hold SHIFT and RIGHT CLICK within Windows Explorer to view the option to open a command prompt in that folder.

Command Prompt Here (click for larger view)

Command Prompt Here (click for larger view)

Very Rare STS-134 and STS-135 Space Shuttle Memorabilia

I’m extremely fortunate to be friends with a NASA engineer who works on the Shuttle engines.  My buddy Eric is more of a NASA nut than I am.  Eric understood the historic and significant nature of the last two space shuttle launches, and he was in a position to create very rare and very impressive memorabilia for me and my kids.

Eric wrote a letter.  He hand-wrote to me and all three of my kids a letter on the day of the last two launches.  The envelope he used for each was the NASA-printed envelope with the mission symbol on it.   Inside each envelope is a mission sticker and maybe something else; I haven’t opened the envelopes yet.  Here’s the kicker – each letter is stamped by the Kennedy Space Center US Post Office on the DAY THAT SHUTTLE LAUNCHED.

Yes – you read that correctly.  How awesome is to have an envelope for each of the last two space shuttle missions, with the mission symbol on it, stamped by the KSC post office the day of the launch?  How cool is it to have mail stamped by the KSC post office on the day of the last shuttle launch ever?  Pretty freaking awesome, I’m telling you.

I can’ explain how psyched I am by this, and how touched I am that Eric thought of me and my family and did this for us.  So I’m going to gently steam open each envelope, remove the contents, and create a display frame for myself and each of the kids with the envelope and contents preserved behind glass.  They have a piece of history they can always hang onto and have on their walls – thanks to Eric.

Eric – thank you so very much – this means so much to me and the kids.

Check out the envelopes for yourself – be sure and click for a larger image.  Note the post office they were sent from and the date they were sent.  .

STS-134 Memorabilia

STS-134 Memorabilia

STS-135 Memorabilia

STS-135 Memorabilia