The Artistic Way of Programming

12 years back, when I started my formal classes in computer science, the first thing I learnt was “data” means “information”. A few days after that, we started conventional programming, where code and data were treated separately. For example, only data can be passed as the functional arguments. It was difficult for me to digest that “code, which is also information, is not treated as data”. I strongly felt that this will increase complexity of softwares in the long run.

A system does three things – read, transform (processing data), write. In other words – the mathematics (the transform part), and the effect of that in real life (the read/write part). The data transformation is indeed a mathematical concept, and with the help of read and write we make the mathematics (the transform part) useful to the real world. Bringing the “transform” part fully inside mathematical domain has its own benefit of using mathematics without fear (possible errors) for the analysis of the system, making the system more tractable mathematically. The catch is to treat both the elements of transformations, data and functions, equally.

Initially, code used to be bigger than the data, so sending data over the wire was feasible. But with time, data becoming huge, sending code to systems over the wire becomes the need, resting the data on the systems intact. With big data, the need of the hour is to treat the code as data, so that the code can be taken as argument to another meta function on a system having huge data which expects an algorithm for transformations.

Roughly speaking, codes are algorithms, algorithms are mathematical functions, functions are in turn actually look-up tables, i.e. data. Hence with this principle, all codes or functions are data.This is exactly the cornerstone of the functional paradigm. The functional programming is programming with functions, they treat functions and data likewise. Another principle I love, to control complexity, rules should not be complex itself.

Thumb rules rewritten for the functional paradigm:

Read-write and transformations(algorithms) should be separate.
Use immutable variables. Discourage use of reassignment statements.
Discourage side-effects (input/output or changing any variable in-place), every function should ONLY return its expected result.
Use referentially transparent functions (sometimes it is called pure functions) with no side effects, i.e. if x = y, f(x) and f(y) should be same forever.
Unit testing is a must for each function.
One of the main design patterns should be followed is to use expressions instead of instructions, i.e. it should be declarative in nature. Discourage use of loops like for/while – use recursive statements as shown above to calculate sum. Tell computers what needs to be done, not how to do it – it reduces error, especially edge cases.
With the need to control the complexity of the system and the advance design, the design pattern for the functional composition can be made to follow some basic algebraic structures, which in turn becomes more robust.

Posted in Uncategorized | Comments Off on The Artistic Way of Programming

How to Get What You Want in 2017

It is almost 2017 and time to start thinking about those New Year’s resolutions but the problem with New Year’s resolutions is that so few people actually achieve them. Why is this and what can you do to make sure you actually get what you want in 2017?

1. Write Down Your New Year’s Resolutions and Set SMART goals

The first step towards achieving what you want is to actually write it down and turn resolutions into goals. An unwritten resolution is quickly forgotten and unless you have some written, specific goals chances are you are just going to be wandering. SMART goals are specific, measurable, attainable, realistic and time-bound. In other words, say exactly what you want to achieve, by when and have ways of measuring how you are getting along. 2. Develop Habits and Consistency

Another problem that often occurs with New Year’s resolutions is that people do not form habits and develop consistency in those actions that are going to get them there. For instance, if you want to lose weight, it needs to become a habit to exercise and eat healthy foods. They say it takes 21 days to develop a habit but it is actually better to consistently stick to it for 63 days to ensure that the habit is well entrenched into your lifestyle before taking any breaks. Not all habits need to be done every day but you do need to be consistent in doing those things that will get you towards your goal.

3. Track and Measure

Set smaller goals and ways of measuring how you are making progress towards your major goal and then track these. Start by tracking those habits that it will take to get you there – how many times have you exercised this week for example. As you are tracking you will see how even the small steps count and will be more motivated to keep moving towards your major goal.

4. Stay Positive

Your mindset has a huge role to play in whether you are going to achieve your goals or not. Always try to remain positive and think positively. Focus on what it is you want but don’t beat yourself up over setbacks or slip ups, you will get times where things don’t go perfectly or you may have a setback but just keep going and you will get there.

Instead of just setting some New Year’s Resolutions for this next year why not turn them into actionable goals, develop habits that will help you achieve them and track these consistently. Keep positive and all the best for achieving whatever it is you want to achieve in 2017.

Posted in Uncategorized | Comments Off on How to Get What You Want in 2017

Unlike Last Season, Early Schedule Will Challenge Cubs In 2017

The celebration has ended, the 108 year drought is over, and baseball on Chicago’s North Side should return to normal. In other words, fans of the Cubs can go back to worrying.

Several big concerns face them as they look toward the 2017 season, in addition to the nearly impossible task of topping the World Series Championship they earned in October. No team has won the Fall Classic back to back in this century, although a much shorter span than the Cubs endured between titles.

That trip to the World Series was made easier by the early schedule, an arrangement the Cubs will not enjoy next April. Chicago did not play a winning team until April 18 against the Cardinals, which was their fifth series of the season. The Cubs did not play another winning team until May 2, when they played the Pirates. Spending the first month against the likes of Cincinnati, Arizona, Atlanta, and Milwaukee would provide nearly any team with the confidence needed to carry them through the most important stretch of the season. To emphasize just how important a hot start is, examine the National League from last season.

All four of the teams who reached the Division Series posted winning percentages over.700 during the first week of 2016, led by the Cubs and Nationals winning eight of their first nine games. The Giants were victorious in six of their first eight, and the Dodgers won seven of their first ten.

The advantage of opening against non-contenders will not be available to the Cubs in 2017, when the early part of their schedule features matchups against the only two teams that had winning records against Chicago last year. They open in St. Louis on April 2nd, a Sunday night game between the two rivals that will be broadcast on national television.

What could make that initial series even more troubling for the Cubs is the strong possibility that one of their most exciting players from last year will be playing for the opposing team. Center fielder Dexter Fowler, Chicago’s spark plug at the top of the batting order, is a free agent. Many baseball writers have projected St. Louis as the most likely team to sign Fowler. After the series in St. Louis, the Cubs must play the team that nearly eliminated them in the NLCS. The Dodgers, who won both of their regular season series against the Cubs in 2016, have the opportunity to avenge their playoff loss on the opening weekend in April.

The hot start Chicago used to build momentum for their World Series run last year is far less likely to befall them in 2017, simply because of the competition. Instead of opening against last place clubs like San Diego and Cincinnati, the Cubs will be tested right out of the chute by teams expecting to be contenders.

Posted in Uncategorized | Comments Off on Unlike Last Season, Early Schedule Will Challenge Cubs In 2017

Are You at Risk of Being “Uberized”?

If you’re like many Business Owners and Leaders you probably feel pretty good about the position you hold in your market… so did the taxi cab companies and drivers before Uber became a reality. Now they are scrambling and trying to find a way to survive… even to the point of trying to get political help in different cities to stay afloat.

Disruption and Commoditization have impacted virtually every industry today. There probably isn’t a single industry that hasn’t been impacted by a disruptive organization entering their market and stealing some of their market share. Uber is an excellent example but there are many others that have been equally disruptive. Companies such as LegalZoom have taken billions of dollars away from attorneys over the past several years. They captured and disrupted a document and transaction-based business and turned it into a commodity by substantially lowering the pricing of document preparation… impacting attorneys all over the country.

Amazon was an early disruptor to the entire book business… taking significant market share away from Barnes and Noble and Borders who were recognized giants in the book industry. And we certainly can’t forget about Blockbuster’s demise when Netflix entered the market. They were the unquestioned dominant leader in video rental and were virtually replaced overnight by an unknown company with a new disruptive business model that matched the needs of customers at substantial savings.

Even though these examples are in completely different industries there is one common thread that runs through all of them… they didn’t believe anyone could disrupt their dominance in their market. While it’s awesome to believe in your product or service, it’s dangerous to think there isn’t someone waiting in the wings to take away your position. Unlike any other time in history, we are now seeing new companies coming into traditional industries from many unrelated areas and establishing a disruptive model and capturing significant market share. This trend is only going to continue now that it has shown massive success over the past few years. So what can you do, as the leader of your business, to either avoid or minimize the impact of this potential disruption?

While commoditization is difficult to combat with products and services over a long period of time, there is at least one alternative that appears to withstand the test of time and delivers differentiation in the market… your CUSTOMER EXPERIENCE.

It is difficult to continually come up with new products and services to satisfy the ravenous appetite customers have today. Just when you think you have the best and leading edge product or newest service, someone comes in and “one-ups” you and takes away the leading spot. While you might remain there for some period of time, it is difficult to remain at the top for extended periods of time. Apple is one of the few that has been successful at this… but it took them many years of living in the shadow of Microsoft and others before they became the dominant leader. Today, Microsoft is in this unenviable position and trying to fight their way back to the top… especially in the race for the Cloud.

But these are behemoth companies… not the SMB market. They can throw billions of dollars at innovation and products and hope they find a winner. The small and mid-sized business (SMB) can’t be this frivolous with their cash and making too many product/service mistakes can wipe out a business before anything comes to fruition. The proven alternative to this madness is to focus on the ONE THING that is completely in their control to design and deliver… their CUSTOMER EXPERIENCE.

Customer Experience has both short and long term advantages. It is something that can be created and implemented within the year but last for many decades to come when implemented properly. And by properly I’m not talking about telling all your employees they need to be nicer to the customer… that never works for the long term… every company can be nice to their customers if they try. This isn’t the answer… this isn’t the differentiator… but it’s on the right track.

Creating a customized CUSTOMER JOURNEY that is built upon a very well defined Customer Experience Process (something we call Customer Experience Mapping) is what allows companies to reap these rewards for many years into the future. Think Disney… they created “the happiest place on earth” and continue to deliver this experience year after year after year. This didn’t happen by holding a meeting and telling all their employees and characters to be nicer to their guests… it happened because they have a very well defined Customer Journey that is built on a foundation of a well-designed and executed Customer Experience.

Nordstrom did the same thing many decades ago. They started selling shoes… then clothing… all at high prices. But they started with a very distinct process inside the organization for delivering an incredible customer experience day in and day out. Zappos followed this same model… sold shoes… one of the ultimate commodities in the clothing industry… and they dominate today. They don’t give discounts and silly things like “one day only” sales (every day)… they simply deliver a remarkable Customer Experience to every customer every day… and their customers love to buy from Zappos. And it has worked out pretty well when you consider they went from zero to over $1 Billion in revenues in less than 10 years and were sold to Amazon for more than a billion dollars. Not a bad model if you ask me.

One way to avoid being COMMODITIZED and losing customers is to design something even new entrants can’t copy… the experience you offer. If your Customer Experience is so incredibly amazing and remarkable… WOW… every single day with every interaction, this creates immediate differentiation and a long tail of success. It is the ultimate weapon against commoditization or even new entrants into a market. For a new disruptive entrant to take away market share they would need to be so much better and cheaper than anything you offered… which is difficult to do today. And for those of you that are saying to yourself right now, “Yea but we’re different, we do a good quality job and treat our customers well so we aren’t at risk,” I would offer you some instant advice… take the blinders off and get real with looking at your business. This is living in a fantasy world… this isn’t looking at your company from the eyes of your customer… they are seeing something very different. And if someone came into your market today and offered a completely different (and awesome) experience to your customers at or below your price they would be gone in a heartbeat.

Achieving long-term dominance doesn’t happen by “being nicer to your customers” and thinking you have created differentiation… you haven’t. Being CUSTOMER OBSESSED and creating a process based CUSTOMER JOURNEY that has a well laid out and documented CUSTOMER EXPERIENCE PROCESS at the heart of it is what will help you avoid being “Uberized.” This strategy gives you differentiation, uniqueness, and a special place in your customers heart and mind… it gives you the “long tail” of success.

I would strongly and passionately encourage you to learn more about why and how this is completely different than what you are probably doing today. If there was ONE THING TO FOCUS ON IN 2017 it would be to create a strategy based around a well-planned Customer Journey which incorporated an incredibly awesome Customer Experience by Mapping out all the experiences your customer will receive when they interact with your business (there are usually over 20 for most companies in the SMB market). If this is of interest and you want to learn more, let’s grab coffee and I can share how some of the best companies in the world have followed this path… for decades… and still dominate in their industries. I think you will find it a fascinating discussion…

Posted in Uncategorized | Comments Off on Are You at Risk of Being “Uberized”?

Sailboat And Yacht Detailers Companies Need To Think About Sail Cleaning Services

Sailing is the fun part, cleaning, well not so much. Still, if you don’t take care of your equipment, Murphy will take care of you. Luckily, for those of us in the sailboat and yacht cleaning business we can make money taking care of the challenges that go along with boat maintenance and keep repairs to a minimum by helping owners keep their vessels in ship-shape. I’d like to explain one aspect of boat cleaning that many boat detailers fail to take advantage of, and that is sail cleaning.

Why clean sails? Well, of course you want them to look good when you hoist them up, free from black mold and ugly salt marks. But that’s not the only reason, healthy sails will not chafe as easily, nor will their stitches come apart as much. Doubt what I am saying? Well, then let me recommend some required reading. In the January 2017 Issue of Sail Magazine there was a relevant article titled; “Sail Care – Look After Your Sails And They Will Look After You,” by Peter Nielsen. The article talked about the fact that if you don’t clean the dirt or salt off the sails, then you will have abrasions from the dirt and rats will smell the salt and be attracted to it, then make their nests there and eat away at the sail. Cleaning the sails is not hard to do, but many sailors and yacht owners do not have the time or are too tired after a day of sailing to clean them properly.

The article and most professional boat cleaners recommend soaking the sails in warm water and detergent, something mild and approved by the manufacturer – always remember that sails have different amounts of material and stitches in them and the manufacturer knows what’s best to use to prevent deterioration. After soaking the sails you want to thoroughly rinse them, I recommend soft or RO water. The article stated to rinse until you could no longer smell any detergent and I’d suggest you don’t smell any salt either and if you’ve rinsed them properly you won’t. It might take a couple of rinses to be sure. Charging $100 per sail is not unreasonable, but be careful if they haven’t been clean in a while, you’ll need to charge more for neglected sails or sails that are dirty or starting to come apart as you have to use a little elbow grease (lightly) and it will take you a lot longer to clean. However, if you regularly clean the sailboat for your customer, $80 to $100 for average sized sails turns out to be a nice add-on to your boat cleaning services, larger sails go up in price try $150 to $300. Think on this.

Posted in Uncategorized | Comments Off on Sailboat And Yacht Detailers Companies Need To Think About Sail Cleaning Services