Mentors

December 22, 2007

This will be a different type of post for me, but necessary as you’ll see.

Background – Context

In September of 2006 I was diagnosed with Stage IV b-cell lymphoma cancer. When discovered, it had spread to my lungs, liver, spleen, hip and upper legs. On top of that doctors found I had come down with tuberculosis. This cancer came on the tail of a very difficult year for me personally. Things were not looking to good.

After six months (ending April 2007) of endless prayers from friends & family, chemotherapy and TB treatment, my doctors declared me in remission and TB free. It is only by the grace of God, I’m I still alive today and doing so well.

During the chemo, I only missed 30 days of work. I figured, I can be miserable here at home or I can go to work and do my best. My company emGovPower was very supportive of me during this time.

In April of 2007 my WPF days began. I was a late Avalon / WPF bloomer. Still foggy from the chemo, I quit sleeping; purchased all the WPF books I could find and started writing WPF applications.

During my courtship with WPF, I read WPF articles on Code Projectand used Google searches to help me learn it. Along the way, I kept running into the name, Josh Smith. I don’t remember how or why I first contacted Josh, but I remember he was kind enough to reply and provide guidance to me.

In May of 2007, my friend and colleague Bill Apodaca suggested I start to blog. At the time, I didn’t really understand blogs and had only visited a few of them.

June 6, 2007 – D-Day for my blog. (D-Day refers to the Allied invasion of Normandy during WWII, June 6, 1944)

After a month of thinking about blogging, I took the plunge and created this blog. I was more than a little apprehensive. I’m thinking to myself, who will ever look at my blog? Is this a waste of time? How will they find it? What could I write about that has not already been written? Will they think negative things about the content?

Within a few hours after my first blog post, the following comment was logged, “Nice work, Karl! That’s a great first WPF blog post. Keep it up!” This was written by Josh Smith.

At the time, Josh didn’t know me and we had not spoken on the phone yet.  Josh is a very important and highly respected developer in the WPF community, yet he took the time to encourage this WPF grasshopper.

Grasshopper is from Kung Fu TV Series.

The impact of Josh’s kind and encouraging words is immeasurable.  After the chemo, the struggles, the side effects, I started to believe again.  These words helped me to regain confidence and hope of programming well again after the chemo side effects.

Said All That – To Say This

Your words can make a difference in someone’s life as well as their work.

If you have not seen the movie, Pay It Forward, go and rent this movie tonight, then go out and Pay It Forward, like Josh did.

You just have to use Mole once, to understand and feel the aftershock of Josh’s encouragement. This program is now being used by developers all over the world and has been the topic of many blogs worldwide. Just Google, “mole wpf” and see for yourself.  Josh Smith, Andrew Smith and I wrote Mole. You can visit the Mole Project here.

Josh’s words and guidance also were major factors in me receiving the Microsoft MVP and Code Project MVP awards in 2008.

My Mentors

These gentlemen have made a huge impact on my life and work.

Josh Smith– Mr. WPF and great friend. It is only because of Josh’s personal mentoring that I have been made a Microsoft MVP and Code Project MVP for 2008. He is an MPV’s MVP. His goal last year when we met, was to mentor me and in the process get me to a place where I could be considered for these programs. Not that you and I should be looking for recognition, but rather serving, doing our best while presenting quality material in our blogs, articles, forums and presentations that benefits the developer community. Thank you Josh for taking the time to mentor me, you have made a big impact on me and the WPF community.

Ernie Ashermann – Owner of our company, super brilliant, knows more about city government and water authority software than anyone I’ve ever met, maybe planet Earth.

Bill Jones – President Charlotte Enterprise Developers Guild. Bill encouraged me to start doing presentations and get involved with the developer community. He drove me to Raleigh, NC and Columbia, SC for presentations I gave, because I was still having side effects from the chemo and couldn’t drive long distances.  Bill is well known in the VB community at large and in the Charlotte area. He is like a Dad to many developers here.

Tips for Mentors

  (mĕn’tôr’, -tər)
        1. (n.) A wise and trusted counselor or teacher.

  • Your words can have a profound effect on another’s life. Pay It Forward.
  • There are a lot of struggling grasshoppers out there. Sometimes we write, say or ask uninformed, misleading and redundant questions. Go easy on us, we are just grasshoppers.
  • Give it to us straight, so we can learn and improve, just don’t leave us bleeding or set us on fire in the process. Taking the time to correct and guide demonstrates you care.

Tip for Mentorees

  (mĕn’tôr-ē)
        1. (n.) One having a mentor; the beneficiary of a mentorship.

  • Do your own homework. Before posting questions or emailing, please use the free resources available like Google, Yahoo, Code Project, etc. Secret; those mentors hide information in books too. This will help our mentors keep their sanity.  Think, RTFM (Read The Free Manual) and you’ll do fine.
  • Start your own blog. This will help you a lot. Writing a blog post or an article forces you to study and carefully review your topic. You also become part of the solution by sharing with others.
  • Join a local developers group and attend their functions.
  • Attend Code Camps. They are free and just as professional and informative as any conference or seminar you would pay for.

Don’t Have a Mentor?

Get a mentor today.

Just a grain of sand on the worlds beaches.


Mole Has A URL!

December 21, 2007

Mole

Mole is fast…  crunching through the managed heap, drilling into your application before you can blink your eye.

Mole is fun and happy, just check out his photo.

Mole has a URL!  http://www.moleproject.com

Mole has email! moleproject@yahoo.com and molefeedback@yahoo.com

Mole has a Home Page!  Visit Mole’s Home Page

Mole has many articles on Code Project at : Mole For Visual Studio Article

From Team Mole, have a wonderful day and enjoy Mole!

Just a grain of sand on the worlds beaches.


Does 0=0 In VB.NET

December 21, 2007

Recently Andrew “Sniper” Smith posted this entry, 0 == 0 … well, usually it does on his blog.  Very good post on the subject as are all his deep blog entries.

After reading it, I got real interested and wrote the below VB.NET console application to learn what I could about this “0 = 0″ and ”0 = -0″ business. 

All results are what you would expect, except for the last group of tests.  These caught me by surprise.  I have named these test results the cockroaches.  Please look for the roach icon below and compare the code with the output.

Cockroach defined: A cockroach is not a bug in the code, it’s a little surprise or gotcha.  Like real cockroaches sometimes very difficult to find, correct and/or remove.

All the tests above the cockroaches return expected results, the values are equal.

You can download the Console Application using the below link. After downloading, you MUST change the file extension from .zip.DOC to .zip and then extract the .zip file. This is a requirment of WordPress.com.
Download Source Code

Module Module1

Sub Main()
  Debug.WriteLine(“”)
  Debug.WriteLine(“——————————-”)
  Debug.WriteLine(“”)
‘Good results, all equal 
‘integer
  Dim intZ As Integer = 0
  Dim intNZ As Integer = -0
  Dim intZ2 As Integer = 0
  Debug.WriteLineIf(intZ <> intNZ, _
  “intZ <> intNZ”)
  Debug.WriteLineIf(intZ * 1.12 <> intNZ * _
  1.12, “intZ * 1.12 <> intNZ * 1.12″)
  Debug.WriteLineIf(Not Integer.Equals(intZ, _
  intNZ), “Not Integer.Equals(intZ, intNZ)”)
  Debug.WriteLineIf(Not intZ.Equals(intNZ), _
  “Not intZ.Equals(intNZ)”)
  Debug.WriteLineIf(Not Integer.Equals(intZ, _
  intZ2), “Not Integer.Equals(intZ, intZ2)”)
  Debug.WriteLineIf(Not intZ.Equals(intZ2), _
  “Not intZ.Equals(intZ2)”)
  Debug.WriteLineIf(Not Integer.Equals(0, -0), _
  “Integer.Equals(0,-0)”)
  Debug.WriteLineIf(Not intNZ.Equals(0), _
  Not intNZ.Equals(0)”)
’string
  Dim strZ As String = “0″
  Dim strNZ As String = “-0″
  Debug.WriteLineIf(CType(strZ, Integer) <> _
  CType(strNZ, Integer), _
  “CType(strZ, Integer) <> CType(strNZ, Integer)”)
  Debug.WriteLineIf(CInt(strZ) <> CInt(strNZ), _
  “CInt(strZ) <> CInt(strNZ)”)
  Debug.WriteLineIf(Integer.Parse(strZ) <> _
  Integer.Parse(strNZ), _
  “Integer.Parse(strZ) <> Integer.Parse(strNZ)”)
’single
  Dim sngZ As Single = 0.0
  Dim sngNZ As Single = -0.0
  Debug.WriteLineIf(sngZ <> sngNZ, _
  “sngZ <> sngNZ”)
  Debug.WriteLineIf(sngZ * 1.13 <> sngNZ * _
  1.12, “sngZ * 1.13 <> sngNZ * 1.12″)
  Debug.WriteLineIf(Not Single.Equals(sngZ, _
  sngNZ), “Not Single.Equals(sngZ, sngNZ)”)

‘double
  Dim dblZ As Double = 0.0
  Dim dblNZ As Double = -0D
  Debug.WriteLineIf(dblZ <> dblNZ, _
  “dblZ <> dblNZ”)
  Debug.WriteLineIf(dblZ * 2.56 <> dblNZ * _
  2.57, “dblZ * 2.56 <> dblNZ * 2.57″)
  Debug.WriteLineIf(Not Double.Equals(dblZ, _
  dblNZ), “Not Double.Equals(dblZ, dblNZ)”)
  Debug.WriteLineIf(Not dblZ.Equals(dblNZ), _
  “Not dblZ.Equals(dblNZ)”)

‘decimal
  Dim decZ As Decimal = 0
  Dim decNZ As Decimal = -0
  Debug.WriteLineIf(decZ <> decNZ, _
  “decZ <> decNZ”)
  Debug.WriteLineIf(decZ * 0.003 <> decNZ * _
  0.008, “decZ * 0.003 <> decNZ * 0.008″)
  Debug.WriteLineIf(Decimal.Compare(decZ, _
  decNZ) <> 0, _
  “Decimal.Compare(decZ, decNZ) <> 0″)
  Debug.WriteLineIf(Not decZ.Equals(decNZ), _
  “Not decZ.Equals(decNZ)”)
  Debug.WriteLineIf(Decimal.Parse(“0.00″) <> _
  decNZ, “Decimal.Parse(‘0.00′) <> decNZ”)
  Debug.WriteLineIf(Decimal.Parse(“0.00″) <> _
  Decimal.Parse(“-0″), _
  “Decimal.Parse(‘0.00′) <> Decimal.Parse(‘-0′)”)

‘==============================================================
  ‘these do not fail

  Debug.WriteLineIf(Not Integer.Equals(“0″, _
  “0″), “Not Integer.Equals(‘0′, ‘0′)”)
  Debug.WriteLineIf(Not Single.Equals(“0″, _
  “0″), “Not Single.Equals(‘0′, ‘0′)”)
  Debug.WriteLineIf(Not Double.Equals(“0″, _
  “0″), “Not Double.Equals(‘0′, ‘0′)”)
  Debug.WriteLineIf(Not Decimal.Equals(“0″, _
  “0″), “Not Decimal.Equals(‘0′, ‘0′)”)

‘here are the cockroaches, they all return not equal

(clickable, roach not included, sold separately)

roach - click me
  Debug.WriteLine(“Below are the cockroaches ———-”)
  Debug.WriteLineIf(Not Integer.Equals(“0″, _
  “-0″), “Not Integer.Equals(‘0′, ‘-0′)”)
  Debug.WriteLineIf(Not Single.Equals(“0″, _
  “-0″), “Not Single.Equals(‘0′, ‘-0′)”)
  Debug.WriteLineIf(Not Double.Equals(“0″, _
  “-0″), “Not Double.Equals(‘0′, ‘-0′)”)
  Debug.WriteLineIf(Not Decimal.Equals(“0″, _
  “-0″), “Not Decimal.Equals(‘0′, ‘-0′)”)
  Debug.WriteLineIf(Not Integer.Equals(strZ, _
  strNZ), “Not Integer.Equals(strZ, strNZ)”)
  Debug.WriteLineIf(Not Single.Equals(strZ, _
  strNZ), “Not Single.Equals(strZ, strNZ)”)
  Debug.WriteLineIf(Not Double.Equals(strZ, _
  strNZ), “Not Double.Equals(strZ, strNZ)”)
  Debug.WriteLineIf(Not Decimal.Equals(strZ, _
  strNZ), “Not Decimal.Equals(strZ, strNZ)”)
  Debug.WriteLine(“——————————-”)
End Sub

End Module

Debug.WriteLineIf Output From Code

Below are the cockroaches ————

(clickable roach not included, sold separately)

roach - click me
Not Integer.Equals(‘0′, ‘-0′)
Not Single.Equals(‘0′, ‘-0′)
Not Double.Equals(‘0′, ‘-0′)
Not Decimal.Equals(‘0′, ‘-0′)
Not Integer.Equals(strZ, strNZ)
Not Single.Equals(strZ, strNZ)
Not Double.Equals(strZ, strNZ)
Not Decimal.Equals(strZ, strNZ)
———————————————-

All of the above Type’s .Equals methods take a parameter of Type Object. If you pass in a string, this method returns not equal. If you pass a parameter of the same Type as the Type, then .Equals returns equal, providing the other value it’s comparing is actually equal. 

The object browser for Int32fine print states that the method returns true if the object is an instance of System.Int32.  This is why the tests fail.  I’m passing in a System.String object.  However, other places in the .NET framework that call for an object, we can get away with passing System.String and get the expected results, not here.

Public Overrides Function Equals(ByVal obj As Object) As BooleanMember of System.Int32
SummaryReturns a value indicating whether this instance is equal to a specified object.
Parametersobj: An object to compare with this instance.
Return Valuestrue if obj is an instance of System.Int32 and equals the value of this instance; otherwise, false.

Moral of the story is, if you need to compare strings that are numbers, cast them first before comparing them, and not rely on the .Equals method to do this for you because it won’t.  As you can see, this applies to Integer, Single, Double & Decimal types too.

This is another case for Type Safe Code!

These lines are equal

Debug.WriteLineIf(Not Integer.Equals(0, -0),_
“integer not equal”)
Debug.WriteLineIf(Not Integer.Equals(CInt(“0″),_
CInt(“-0″)), “cint string not equal”)

These lines fail and are NOT equal

Debug.WriteLineIf(Not Integer.Equals(“0″, “-0″),_
“string not equal”)
Debug.WriteLineIf(Not 0.Equals(“0″),_
“string not equal”)

Just a grain of sand on the worlds beaches.


Reasons For Choosing WPF Over ASP.NET For Our Very Large Project

December 20, 2007

Updated On 12/21/2007

Preface

These are the thoughts of a very small company architect & developer trying to stay afloat in the ocean of changing and evolving technologies.

Anytime you write an article that defends a position or decision you make, you run the risk of coming off negative or one-sided. Sometimes a negative that one solution has can be taken as bashing of the solution just by bringing it up. Anyone who knows me, knows that is not my intention or the way I operate, not at all. I may step up on my soapbox once or twice, but have tried to limit this so the reader won’t get mad at me and the miss the underlying point of the article.

I love ASP.NET, WPF, WCF, Visual Studio and the other super technologies and products that Microsoft delivers and supports, period.  I respect the fantastic and super bright folks at Microsoft.

So put down the spears, guns, atomic warheads, C# & VB.NET hatchets and walk a mile with me I my shoes. Try to understand the issues facing this front line architect and .NET developer.

Come and visit my world…

Background

I’ve been developing commercial e-commerce web sites since the days of NT4 and ASP 3.0. Some of these sites are still in production today. I worked in New York City for an ISP and really enjoyed the work.

My current company, emGovPower has a full featured Citizen Web product that our customers use to expose a lot of their backend data to their citizens. The product allows their citizens to view detailed information about their utility billing, permits and property tax accounts and pay bills online.

We have one customer, Havelock, NC that has many Marines living there. So for them to pay their bills online is a great feature that borders on a necessity. I was stationed at Cherry Point MCAS for 6 of my 12 years in the Marine Corps. Love Havelock, NC and have great friends who live there.

I also wrote a full blown Tax Assessor application for Williamsburg, VA using ASP.NET and they rave about it.

I could go on, but at this point, you must be thinking, with a track record of successful ASP.NET applications and web sites, why the change and start a new project with WPF?

This is a good question. Be sure, I had to fully explain this request to the owners of my company and the final decision to customers who were expecting an ASP.NET Ajax product.

Maintainability Over Time – #1 Reason

The browser and all the baggage associated with it is the #1 reason I pushed for and we chose WPF over ASP.NET. ASP.NET was not the issue, the browser is.

The unbridled browser that for whatever reason, no vendor can seem to support the established WC3 standards. I have trouble with vendors not supporting WC3 standards. Worse, vendors change the browser rendering behavior between their own releases, causing no shortage of headaches for web developers.

Two years from now, no telling how the browser will be rendering content. Even for the demo ASP.NET AJAX application I did, I had to code for IE6, IE7 and had to provide special setup directions for IE7 on Vista so they could print reports. Remember the “peek-a-boo” bug? Better not go there.

What happens after we deploy an application with 500 forms? We will always have the ongoing headache of customers reporting that, “I just installed (new O/S, new browser, service pack, etc.) and the page does not render as before.” Can you imagine having to touch 500 forms or even 200, just so we can support 2-5 versions of IE?

WPF solutions, like WinForms are not affected by the hosting system. So two, three or four years from now, our WPF application will run just like it did the day the customer received it.

I want to spend our precious resources on application features and functionality, rather than another workaround for the new browser version compatibility issue.

The above section is about the browser, not ASP.NET.

Visual Studio

The changes to Visual Studio from just 2003 to 2005 in the ASP.NET area, were DRAMATIC. New controls that had less functionality than the previous version. Example; Drop a Dataset on an ASP.NET page. Now try to set the Data Binding on a Textbox using the property grid in Visual Studio 2005. Can’t do this in VS2005. This was standard practice in VS2003. Have not checked VS2008 yet. Still can’t understand this.

I love AJAX, but it’s an emerging technology. The advances in the last two years are just plain awesome. For web sites that are 20 to 30 or less pages, who cares if the API changes every 6 months. Just fix it and move on, next. But changing 200 – 500 forms and sub forms is just too high a price to pay so the web page can post back without refreshing. Again, not bashing, just listing things that I face.

If we start down this path now, what about the development environment in two – four years?  When I install VS how will that impact the maintaining of our application?  I’m very concerned about this.

Currently, I have two machines. A VS2003 and VS2005-2008. I have to maintain a separate system for VS2003 due to the glitches and the environments (VS2003 & VS2005 & IIS) not playing well together. This way our developers don’t have to employ workarounds to get their work done.

A modern Microsoft developer simply does not have the time to be fooling around with tools that are not 100% rock solid, period. There are so many technologies today, compared to 5 – 10 years ago. Staying current is a full time job, not be mention actually delivering a product.

Developers and architects don’t have time for workarounds to get our work done.

I feel that WPF will not be subject to the emerging technology issues above. WinForms has not been affected by new releases of Visual Studio the way ASP.NET has. This was another factor in my decision.

Please keep in mind, my product is huge. For small projects none of this matters since you can simply revisit the UI and make required adjustments or take advantage of new platform enhancements. For large projects, this could be a major investment of time, better to spend the time on functionality and features, or heaven forbid, documentation.

Outside Influences

WPF code is not affected by the WC3 or Microsoft’s implementation of a CSS standard.  I’m not Microsoft bashing, just stating the reality we must deal with.

Developers of large scale applications need a stable platform and development toolset.

For many years before moving into the Microsoft world, I was a VAX-VMS, Alpha-VMS and SCO UNIX developer. Nothing is more stable or changes less than a VAX. Reboots measured in years. I really miss my VAX. All my VAX applications are still in production today and being used by a 7 billion dollar a year U.S. corporation.

Time To Market

We are a very small company and currently I’m the only one with skills outside of Access/SQL Server.  I’ve been mentoring and teaching .NET, ASP.NET, VB.NET, HTML, AJAX & CSS so others can work on our Citizen Web product.  Additionally, I’ve been working with a co-worker on WPF and Blend.  These technologies are not learned over night.  The transition from an Access VBA developer to an O/O .NET developer is a steep learning curve and will take a lot of hard work. 

I have a program I wrote for ASP.NET to generate the web pages and data layer.  We have done the same for WPF including the business entities and data layers.  I’ve also introduced, “Declarative Programming” into the architecture of our business entities.  The new code generator supports this cool feature.  WPF, WinForms and ASP.NET user interfaces can take full advantage of the, “Declarative Programming” in the BLL.

With WPF, we only have one technology to work with, as opposed to HTML, ASP.NET, AJAX, CSS, which are also evolving. When I say WPF, I mean WPF from a business forms perspective. Clean, fast, user friendly, bullet proof UI is what our customers are looking for.

Without any doubt, WPF gives our company the ability to focus more on business functionality than coding technologies. This is very important to our small company with limited resources developing a feature rich application.

User Experience

Do I need to say anything here? Rich interactivity, resolution independence, super fast UI.

WPF takes full advantage of the user’s hardware, especially the monitor. Didn’t think I would list the monitor first, eh? Think user!

With a web application, you really need to “target” a screen resolution. Most of our pages are business forms that users interact with. If we target 1024 x 768 and Mr. Smith gets a new computer with a 22″ wide screen monitor (less than $300 today), his web application will be displayed in the upper left of his screen. Bummer.

With WPF just ViewBox it and boom, the same information displayed utilizing his full screen and he can see the form much better AND without any hacks, or lots of code to make this happen. This is a major selling point for us, considering our target market.

WPF takes full advantage of the users CPU/GPU for processing. Today all our customers can afford an Intel 2 Core Duo system. As all readers of this know, these babies are super fast.

Browser vs. Windows – New Section

This is an area that one of my responses to a comment brought out and I should have included this in the original posting.

My customers are small city & county governments and water authorities around the country. Their average PC has a 17″ or 19″ monitor with resolution set at either 800×600 or 1024×768. If we delivered a browser application we would have to deal with the fact that the browser itself takes up a good bit of vertical screen space. Then add that, users customizing their browser with special toolbars, search gadgets, etc. and more vertical screen space is lost.

Trust me, I did a lot of research on this. Went and looked a customer desktop setup. Looked at the way other people I know have their browser configured. Many variations. Well, from a business forms perspective, I didn’t want any of my forms to scroll except for data grids or reports. So, with all the possible variations of browser configurations out there, now what is my target vertical measurement, 500, 575? Again, a mess. Running IE full screen gets rid of this problem, but also causes issues for the user.  Then what is most users like full screen and others didn’t?  I did look into creating browser applications so that the normal IE toolbar and menu bar is hidden. But there were other issues so we didn’t do this either.

With WPF or WinForm, you give up almost no vertical space, just the little title bar. I can live with that.

Web User Experience Side Note

For all you bloggers and web site developers out there, WHY, WHY do you still insist on using fixed fonts on your web sites? Users should be able to use the browser Text Size feature on all web pages. It should be illegal to have fixed fonts on web sites, period! Can’t tell you how many times I’ve had to copy your sites into Microsoft Word just so I could read them. Please stop doing this. OK, I’m off my high horse and/or soap box.

Less Technical Resources Required At Our Customer’s Site

With ASP.NET, our customers have to maintain an Intranet site.

With WPF this requirement is removed from the equation.

A good number of our customers use Small Business Server. That server is already handling SQL Server databases, Reporting Services, Exchange Server, Domain Controller functions and probably file and print services as well.

With a WPF product the workstation CPU’s offload some processing burdens from the SBS Server.

SliverLight 2.0 – New Section

The feedback I received from the initial posting was remarkable.  Wow, never knew there was this much interest.  On question I received over and over again, referred to SilverLight 2.0.

Our decision was make in June of 2007.  At that point SilverLight (WPF/E) was still a very new and evolving product.  As we know, large scale line of business applications typically stay with current and proven technologies so that they won’t have bleeding edge blues.  This was the reason I didn’t mention SL 2.0.

Once SilverLight 2.0 ships sometime in Q1 2008, I will be building business forms ( so will many others ) with it and will post an in-depth review here and/or on Code Project.  Even if it takes until SilverLight 3.0 for this to be mainstream, that will be OK.  This will provide another delivery platform for our products.  Looking forward to it.

Deployment

With ClickOnce we have many options available for deployment.  This can overcome some objections that a browser application is easier to deploy.  We will be looking closer at this as time goes by.

Conclusion

My company thought long and hard about this decision. The future of our company depends on this product being successful.

Many of our competitors have gone the way of the web based application.  Sometimes I think they are following that trend.  I have been doing this a long time and like so many things in life, everything comes full circle.

Our product will be delivered using WPF and WCF. Our product will have a web front end for citizens of our customers to interact with their city or county government or their water authority.

So based on your company’s long term resources, your customers needs, your applications scope, choose the technology and platform that is a best fit and enjoy the process as you deliver your next awesome application!

Just a grain of sand on the worlds beaches.


Secret Handshake Bug Revealed

December 19, 2007

Secret Handshake

Best start off by defining, secret handshake

We have all seen the movies like, “Meet The Parents” where the daughter comes home and her and Dad go through a secret routine of hand slapping, hip tapping and phrase reciting before the welcome home hug.  Like TV shows where a couple of guys go through their routines and special handshakes.  When I was in the Marines, we called this checking in.  When out on the town, you could spend 20% of your night, just checking in!  (Explained:  Group of 5, meets up with a group of 7, then a group of 10 come around the corner, you do the math.  The group 7 leaves, more math.).

So a secret handshake is a series of gestures, words, looks, touches, feels, pokes, hugs, etc, that when performed in the correct order with another who knows them, makes you look cool and that you’re one of the crowd.

Yesterday I received an email about Mole stating,  if I open Mole, click on the third item in the TreeView, answer the phone, click on an item to drill, complete my phone call, click on the Options tab, reach down to pick up my pencil I just dropped, then go back and start drilling all over again, click my mouse, I get an exception.  

That is an example of the Secret Handshake Bug.  A list of user inputs, mixed in with real life events when thrown into the blender can produce unexpected results.

Since Mole does not have his own phone yet, he and the testing hamster were unable to catch this during testing and somehow it got out the door.

We are considering implementing testing that requires Mole to break-dance on his keyboard to rule out any possible phantom keyboard, Secret Handshake Bugs.

Mole’s Home Page:
http://karlshifflett.wordpress.com/mole-for-visual-studio/

Code Project Article:
http://www.codeproject.com/KB/macros/MoleForVisualStudio.aspx

Enjoy Mole!

Just a grain of sand on the worlds beaches.


New Mole Package Released 3.0.0.4 – Bug Fix

December 19, 2007

Josh Smith was pounding on Mole with a 50lbs hammers and found a bug.  Josh was able to get Mole to throw an exception after going back and forth in the UI.

Team Mole suggests that you update your Mole install to verson 3.0.0.4.

We are working long hours to bring new features and hope to deliver the next major release after Christmas.

Mole’s Home Page:
http://karlshifflett.wordpress.com/mole-for-visual-studio/

Code Project Article:
http://www.codeproject.com/KB/macros/MoleForVisualStudio.aspx

Enjoy Mole!

Just a grain of sand on the worlds beaches.


New Mole Package Released 3.0.0.3 – Very Minor Correction

December 18, 2007

Mole

A new version of Mole has been released. At your option, you can download this version from either Mole’s Home Page or on Code Project.

A very minor one line of code change that corrected the buttons being disabled if one one object was in the TreeView control, but that object had children. The idea was to disabled the buttons below the TreeView if the TreeView only had one object without child objects.

Mole’s Home Page:
http://karlshifflett.wordpress.com/mole-for-visual-studio/

Code Project Article:
http://www.codeproject.com/KB/macros/MoleForVisualStudio.aspx

Enjoy Mole!

Just a grain of sand on the worlds beaches.