The Butterfly Effect in Software Development: How Small Things Add Up

Imagine you’re reading a suspenseful novel, and suddenly, a semicolon is misplaced. The sentence loses its meaning, and the suspense is broken. This is much like software development. A misplaced semicolon in code can cause an entire application to break, disrupting the user experience. This is the butterfly effect in action, where a small change can lead to significant results.

The Domino Effect of Small Issues

In software development, small issues are like misplaced semicolons. A minor performance issue might seem insignificant at first, but as these issues accumulate, they can lead to a sluggish application. It’s like a snowball rolling down a hill, gathering more snow and momentum as it goes.

Continue reading The Butterfly Effect in Software Development: How Small Things Add Up

Evaluating SaaS Products: A Comprehensive Guide for Leadership

As businesses increasingly turn to SaaS solutions for their operational needs, it’s crucial to understand how to evaluate these products effectively. This blog post will guide you through the process.

Software as a Service (SaaS) is a cloud-based software distribution model where applications are hosted by a service provider and made available to users over the Internet. This eliminates the need for users to install and maintain software on their infrastructure, resulting in reduced costs and increased scalability.

Understanding SaaS Architecture

When architecting a SaaS product, several considerations must be made. These include choosing a technology stack guided by your product’s current and future requirements. It’s about finding the right balance between leading-edge technologies and proven frameworks. Aspects like scalability, maintenance, and community support should influence your decision.

Continue reading Evaluating SaaS Products: A Comprehensive Guide for Leadership

More Than Meets The Eye

There is more than meets the eye with me. On my resume it is majority Microsoft skills. Microsoft is used more than open source because that is what my work and customers demand from me.  Can I do more? Yes! I have experience in a lot of open technologies such as PHP, MySQL, Python and more. I do use these technologies, but not often Continue reading More Than Meets The Eye

New Year – Fresh Start

2012 is a new year and for many, a fresh start.   I see 2012 as an opportunity to do something new, start fresh on other items and a chance to turn a new leaf.  Often, your colleagues, bosses and friends whom known you for a long time and will not allow you to turn a new leaf; Do it anyways!   Push forward in making yourself a better person this year.  Do not let others hold you back.  This is your chance to rid yourself of bad habits, learn something new, implement new ideas and grow as a person. Continue reading New Year – Fresh Start

Be Kind to Those You Meet

You never know when you meet someone what they will be to you in your life. You may meet them in a service club, be a customer of yours, be a friend or an in-law. You just never know when that argument with the sales associate be something that bites you down the road. Continue reading Be Kind to Those You Meet

Building a C-Sharp Class

I have created this example of a C# class to demonstrate one way of creating a basic class cbject representing one employee.  This class could be used as a starting point for just about any object.

Take note that there are no business rules in this example.  It is of my opinion that you create a basic object first and create a business class second which extends the basic object.  In the business class you may put an EmployeeNumber generator, MaxLength controls on the fields, Phone number validation and other rules that may apply based on your business practices.  A business class will be demonstrated in a later blog.

You may also want to create a collection class.  A collection class or a manager class would manage a collection of objects with Add, Remove, Select, Sort type functions.  This too will be demonstrated in a later blog.

    /// <summary>
    /// Class Object Representing Employee
    /// </summary>
    public class Employee : Dictionary<String, Object>, IEmployee
    {
        // ***********************| Properties |***********************
        /// <summary>
        /// Employee Number
        /// </summary>
        public String EmployeeNumber
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's First Name
        /// </summary>
        public String FirstName
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's Last Name
        /// </summary>
        public String LastName
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }
        /// <summary>
        /// Employee's Address Line 1
        /// </summary>
        public String Address1
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's Address Line 2
        /// </summary>
        public String Address2
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's City
        /// </summary>
        public String City
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's Province / State
        /// </summary>
        public String Province
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's Country
        /// </summary>
        public String Country
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's ZIP / Postal Code
        /// </summary>
        public String ZipPostal
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's Home Phone Number
        /// </summary>
        public String HomePhoneNumber
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's Cell Phone Number
        /// </summary>
        public String CellPhoneNumber
        {
            get { return (String)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's Full Name ( ReadOnly )
        /// </summary>
        public String FullName
        {
            get { return String.Format("{0}, {1}", FirstName, LastName); }
        }

        /// <summary>
        /// Employee's Start Date
        /// </summary>
        public DateTime StartDate
        {
            get { return (DateTime)this[GetName()]; }
            set { this[GetName()] = value; }
        }

        /// <summary>
        /// Employee's TerminationDate ( Nullable )
        /// </summary>
        public DateTime? TerminationDate
        {
            get { return (DateTime?)this[GetName()]; }
            set { this[GetName()] = value; }
        }
        // ***********************| Constructor(s) |***********************
        /// <summary>
        /// Constructor
        /// </summary>
        public Employee()
        {
            Initialize();
        }

        /// <summary>
        /// Employee
        /// </summary>
        /// <param name="employeeNumber">Initial Employee Number</param>
        public Employee(String employeeNumber)
        {
            Initialize();
            EmployeeNumber = employeeNumber;
        }
        // ***********************| Methods |***********************

        /// <summary>
        /// Initialize the Class
        /// </summary>
        private void Initialize()
        {
            EmployeeNumber = "";
            FirstName = "";
            LastName = "";
            Address1 = "";
            Address2 = "";
            City = "";
            Province = "";
            Country = "";
            ZipPostal = "";
            HomePhoneNumber = "";
            CellPhoneNumber = "";
        }

        /// <summary>
        /// Get Method Name
        /// </summary>
        /// <returns>First and Last Name</returns>
        public String GetName()
        {
            StackTrace stackTrace = new StackTrace();
            StackFrame stackFrame = stackTrace.GetFrame(1);
            MethodBase methodBase = stackFrame.GetMethod();
            return methodBase.Name.Replace("set_", "").Replace("get_", "");
        }

        /// <summary>
        /// Re-initializes the Class
        /// </summary>
        public void Reset()
        {
            this.Clear();
            Initialize();
        }
    }

Are You Everything That You Can Be

Upon personal reflection, I realized that I could be more.  I have been putting my time and energy into the wrong things.  Watching TV, internet surfing and generally mucking around.  This weekend I spent hanging out with my one year old son, watching the Jack Layton state funeral and reading a library book: Made in Canada Leadership.   I suddenly feel inspired to do something different.

Are you everything that you can be?  Not yet, but I am going to work on it.   Will not happen over night, but I will certainly aim for it.  I decided the first step is to understand what is happening in London by setting my PVR for the council meetings.  A little education will help.

Now ask yourself the same thing:  Are you everything that you can be?  You cannot be everything overnight, but you can strive for it as a personal goal.