Category: Uncategorized

Last thanks giving, while I was on my vacation, I heard the shocking news of my colleague and a good friend (about 10 years older than me) suffer a heart attack which resulted in a bypass surgery. This was an eye opener for me and I knew I had to start making some lifestyle changes right away in order to live a healthier and happier life in the future. After all HEALTH IS WEALTH!

On Dec 3rd, 2015, I made the decision to shed 10 pounds in 3 months. This morning, when I stepped on the weighing scale I was thrilled to see that I am 11 pounds lighter and that feels great both physically and mentally. Obviously, this is just the beginning. My goal is to shed 10 more pounds in the next 3 months and then maintain that weight moving forward.

I believe that the greatest gift you can give your family and the world is a healthy you. – Joyce Meyer

For the past few years, I have been reading a lot about success principles and I have come to the conclusion that success principles remain the same to accomplish any significant goal in life – be it loosing weight, being successful in your job/business or even as simple as being a better human being.

I hope this blog post helps you accomplish your goals.

1. WWW (WHY, WHAT and WHEN)

In my opinion, knowing why, what and when you want to accomplish a goal takes you at least 50% closer to it. With that said, this should be your personal deep desire because external motivation can only help you go so far.

The starting point of all achievement is desire – Napoleon Hill

2. HOW?

How do you plan to accomplish what you want ?
My plan was to use two new techniques they recently developed – DIET AND EXERCISE 🙂
My plan was to workout 3 days a week for at least half an hour, walk a minimum of 20 mins a day, eat as healthy as I can & drink at least 8 glasses of water a day.SMART (specific, measurable, assignable, realistic, time bound) goals always yield SMART results. Set up your plan that is easy to follow and doesn’t imbalance other areas of your life. For example, I cannot have a goal of working out 3 hours a day, 5 days a week with my family, job and other commitments.

If you fail to plan, you are planning to fail
– Benjamin Franklin

3.SUCCESS BREADS SUCCESS

In my opinion, there is no such thing as overnight success but every night success. With that said, it always helps if you get initial success to boost your confidence and to motivate you to do a little more everyday. If I hadn’t lost any weight the first couple of weeks, my mind would have probably given up like it has in my past few attempts to loose weight. This means the first couple weeks are most important (and most challenging) till you train your brain to stay on the success habits to attract more success.

4. DO IT WHEN YOU DON’T WANT TO!

Doing the right thing, when you don’t feel like it makes all the difference. I think, this is where the rubber meets the road. Going to the gym on a cold winter night is certainly not the easiest thing to do but do it anyway. Eating healthy though you don’t feel like it, is not very exciting but do it anyway. Initially, your mind will find creative ways to avoid you from doing the right thing, do it anyway!!!

5. AVOID DISTRACTIONS

All of us have the tendency to give in to distractions (especially when things don’t go our way) because they are so easy and make you feel so good (temporarily). I have had days where it was so easy to just eat a couple of slices of delicious pizza or cheesecake instead of a boring salad (it’s just grass for raising humans). In my opinion, the easiest way to avoid distraction is to know them and stay miles away from it. For example, if your plan is to stop eating sugary foods and drinks then those items probably shouldn’t be on your grocery shopping list :).

Once you decide to do right, life is easy, there are no distractions.― William Stafford

6. REWARD YOURSELF

Though external motivation may take you only so far, small rewards along the way will take you a long way. I plan to reward myself with a nice massage now that I am half way towards my goal. Rewards are extremely important to train your mind to believe that doing the right thing will pay off with an attractive incentive. If you are working a job you already know that rewards and incentives brings out the best in each one of us.

7. DON’T BE YOUR OWN ENEMY

I feel a lot of times, we are our own worst enemy. I don’t remember a lot many people who told me that I can’t accomplish a certain goal. But I have probably told myself a hundred times over and over why it’s hard to accomplish a goal and why it wouldn’t work for me. Don’t doubt yourself and get out of your own way. This is probably easier said than done, but the way I imagine it is driving a car and checking the tires, brakes and engine every couple of miles to make sure everything is fine. We don’t do it in real life but do it so often with our goals, our thoughts and our actions.

8. MONITOR YOUR ACTIVITY DAILY

You cannot change/fix what you can’t measure. Imagine your GPS only knows the end destination but cannot figure out your current location. It wouldn’t take you too far, would it? The GPS needs to constantly monitor your activity in order to guide you to your destination. Similarly, we need to monitor the activity for our goal daily in order to stay on track. We do that all the time in a professional environment at our jobs but rarely in our personal lives. I currently have an app on my phone which monitors the calories consumed, daily nutrition information, steps I walked everyday and a graph of my weight every week. This helps me stay on track daily and be more accountable to my goal.

9. KNOWLEDGE IS POWER

Gaining more knowledge is the best way to get more passionate about your goal. The more I read about healthy eating habits, right way to exercise and simple weight loss tips, the more passionate I got about my goal. There is a wealth of knowledge on the internet which we can all use to our advantage.

The only true wisdom is in knowing you know nothing ― Socrates

FINALLY:We all have the same struggles and the same solutions to these struggles to reach our goals. Hope this post resonates with some of you who are trying to accomplish a goal and losing the focus, the will or the determination to keep going till the end.

If you have more tips or success stories you would like to share please comment on the post. If this post helps you in some way do share it with your family and friends.

SOLID OBJECT ORIENTED DESIGN PRINCIPLES

Today I did a presentation to explain the SOLID Design Principles for software development. SOLID principles have been around for a couple of decades but more than often they are not applied in our daily development either because of a rush to get things done without using best practices, lack of knowledge, not understanding the importance of it or all of the above.

“It is not the beauty of a building you should look at; its the construction of the foundation that will stand the test of time.”
– David Allan Coe

My goal of this presentation was to keep it simple so even a junior level developer understands the concepts and importance of building applications using SOLID principles. You don’t need to be a software architect to understand and apply these principle in your coding life. There are a lot of articles on the internet which explain SOLID principles (or at least attempt to) along with sample code but a lot of them only make it that much more confusing.

I hope these notes & sample code will help you understand these principles without investing hours of your time trying to grasp these simple but extremely powerful concepts in software development.

Let’s begin with the end in mind. To build any stable, extensible and maintainable software application our main goal is to have low coupling (degree of interdependence between software modules) and high cohesion (degree to which the elements of a module belong together). Let’s see if SOLID can come to the rescue.

Advantages of SOLID principles:

Principled way of managing dependencies especially in a large application

Loose coupling (degree of interdependence between software modules)

More cohesion (degree to which the elements of a module belong together)

Code is more reusable, robust, flexible, testable and maintainable

Let’s get into each principle one by one.

Single-responsibility principle (SRP)

Formal Definition: A class should have one and only one reason to change (single responsibility).

Simple Definition: Do not burden one class with too many responsibilities.

Advantages: Increase cohesion, low coupling, reduced complexity

Open-closed principle (OCP)

Formal Definition: Entities (classes, functions etc.) should be open for extension but closed for modifications

Simple Definition: You should be able to extend a class’s behavior, without modifying it.

Liskov substitution principle (LSP)

Formal Definition: Objects in a program should be replaceable with instances of their sub-types without altering the correctness of that program.

Simple Definition: Objects of the derived class must behave in a manner consistent with the promises made in the base class’ contract.

My definition: All derived classes should be exact sub-types of the base classNOT kind of sub-types.

Advantages: Code re-usability, reduced coupling and less chance of introducing bugs in the existing application.

Interface segregation principle (ISP)

Formal Definition: Many client-specific interfaces are better than one general purpose interface.

Simple Definition: Clients should not be forced to implement interfaces they do not use.

My definition: Break down a large class into smaller manageable interfaces

Advantages: Increased cohesion, more extensible and robust.

Dependency Inversion Principle (DIP)

Formal Definition: Entities must depend on abstractions not on concretions.”

Simple Definition: High level module must not depend on the low level module, but they should depend on abstractions.

My definition: Anytime I new up a class it’s time to look at DIP

Advantages: Loose coupling.

Bottom Line:

SOLID principles are not rules but just guidelines. These guidelines will help us build more robust, extensible, testable and maintainable applications. If you understand the concepts you will also find out it takes care of:

Though SOLID can help you solve most of the code smells and issues we face in any large applications it should be used with common sense and individual client’s needs in mind. Just because you can doesn’t mean you should 🙂