Is Your Business Making These 6 Customer Loyalty Program Mistakes?

copy trade binary options

By Adela Belin

Today, every brand has its own customer loyalty program. Whether you are a retailer or restaurateur, it has become imperative to have a loyalty program to reward and retain customers.

However, having a loyalty program should be more than a tick-box exercise. Your loyal customers need to derive value from it and truly feel special. After all, customers love to be rewarded, and it costs anywhere from five to 25 times as much to attract a new customer than to retain an existing one, so you make sure you do it right.

The question is no longer whether you have a loyalty program—it’s whether you are maximizing its potential to meet your business goals.

So, if you have a loyalty program and are wondering why you are not reaping the benefits you expected to, it might be time to reevaluate. Here are six common loyalty program mistakes you should avoid to stay ahead of the game:

1. No differentiating factor

Ask yourself, what is different in your loyalty program? Why should customers sign up for it? What are you doing differently for your loyal customers?

The “differentiating factor” occurs at two levels: one is differentiating your loyalty program from your competitors’ and second is differentiating your loyal customer base from the rest and making them feel valued.

The most common mistake businesses make is rolling out a “run-of-the mill” loyalty program. Your customers are likely to engage with your competitors, too, hence, you need to offer them something unique enough that keeps them coming back for more.

As per the 80/20 marketing rule, approximately 80% of profits are earned from the top 20% of your customer base. This shows you need to design meaningful, personalized offers that set your loyal customers apart from the rest. Best Buy does a good job when it comes to differentiating high spenders from the rest. It has created membership levels (My Best Buy, Elite, and Elite Plus), each of which have different benefits to offer.

It is also important to not get complacent and be left with a stagnant program. Constantly innovate and come up with interesting new offers to keep up with your customers’ buying behaviors and to better their experience.

2. Too complicated

From the onboarding process to redemption, the key is to keep it simple. The simpler your loyalty program is, the more effective it will be.

Starting with the registration form, don’t make customers fill lengthy forms and ask for a heap of information. The best way is to allow users to login through their social media accounts. This easily gives you access to their information without them having to fill it out.

The whole point of a loyalty program is to reward your customers, so make sure you genuinely reward them—whether it’s via cashbacks, exclusive discounts, special previews, or free gifts. Did you know that the number one reason behind people abandoning loyalty programs is because it takes too long to earn rewards? Look at Banana Republic, for instance. Customers can earn up to 5 reward points for every $1 spent, and for every 500 points earned, they get rewarded $5 and a host of other benefits. How simple is that?

The key is to be transparent in your communication, avoid having too many layers, and keep it simple, such that your customers easily understand how they will benefit.

3. Not measuring results

Every marketing activity needs to end with measuring results and effectiveness. How else does one learn from their mistakes and grow?

In the case of loyalty programs, you also must invest time in tracking the impact of your program. To begin with, it is crucial to understand how many new members you have acquired, what is the revenue your business attains from your loyal customers, and how many of your members are actively engaging with your brand.

4. Spamming customers

Did you know that 69% of U.S. email users unsubscribe from a business email because the organization sends too many emails? So, do not be that brand that spams its customers with innumerable messages and emails.

Instead, you should focus on sending relevant and meaningful communication to your customers. Communicate about important things, such as new offers, changes in your loyalty program, or keeping them updated on their reward status.

With the rise of personalization, brands need to take the effort to analyze customers’ buying behaviors and send them personalized offers, instead of doing a mass blanket communication. An example of a brand that’s acing personalization is Sephora’s loyalty program, which gets customers to fill out beauty profiles so that they can receive tailor-made promotional e-mails.

Other Articles From AllBusiness.com:

  • The Complete 35-Step Guide for Entrepreneurs Starting a Business
  • 25 Frequently Asked Questions on Starting a Business
  • 50 Questions Angel Investors Will Ask Entrepreneurs
  • 17 Key Lessons for Entrepreneurs Starting a Business

5. Not going digital

Gone are the days when loyalty programs required customers to carry membership cards around. In today’s digital era, every business should embrace technology and incorporate it into their loyalty programs.

From going cardless to having a dedicated app for your loyalty program, digitalizing not only makes it more convenient for customers, but also lets you collect and analyze data to build relations with your customers and improve their overall experience.

One brand doing an excellent job with this is Starbucks. Its Starbucks Rewards is considered to be one of the most successful loyalty programs because of the digital experience it offers to engage and reward customers.

6. Not using data

Customer data is everything and loyalty programs are the biggest data mine there is. First, are you collecting data correctly, and second, are you making that data work for you?

Data helps you analyze buying behaviors and gives you key customer insights that can help you give customers what they want. Every customer is different and it is in your interest to offer them valuable, tailor-made solutions in order to set yourself apart from your competitors.

RELATED: 10 Ways to Keep Clients Happy and Reduce Churn

About the Author

Post by: Adela Belin

Adela Belin is head of digital marketing at Writers Per Hour. She creates content surrounding marketing with a focus on social media and digital marketing. Feel free to contact Adela on LinkedIn.

Company: Writers Per Hour
Website: www.writersperhour.com
Connect with me on Facebook, Twitter, LinkedIn, and Google+.

The post Is Your Business Making These 6 Customer Loyalty Program Mistakes? appeared first on AllBusiness.com

The post Is Your Business Making These 6 Customer Loyalty Program Mistakes? appeared first on AllBusiness.com. Click for more information about Guest Post.

binary option trade

Targeting Phishing Attacks: Security Best Practices to Protect Your Business

copy trade binary options

By Mike Petsalis

Email gets a bad rap. It’s treated as a cumbersome messaging system that was invented to work on the system that came before the internet, and has been rumored to be “dead” or dying for years now. Yet, it is still used extensively wherever communication is necessary for normal business operations. Its openness is what makes it useful, but also insecure.

Fortunately, email security and the measures organizations can take to stop email threats have advanced sufficiently to still make email indispensable in its openness. However, one method of attack still makes some emails frightening to entrepreneurs, managers, and employees everywhere: targeted phishing. Targeted attacks are driven by manipulation and deception, leading to compromised accounts and the theft of money and data.

Phishing has rapidly become a lucrative business for fraudsters, and has made the need for awareness and protection more important than ever.

Targeted phishing: today’s top email threat

Targeted phishing is not just about password reset messages and fake support emails. It often involves complex social engineering ploys to get information or money out of someone. It’s a modern con that knows no borders, has a low barrier to entry, and offers an open door to millions of potential marks populating the ranks of businesses worldwide.

In 2017, according to the FBI’s Internet Crime Report, business email compromise (BEC), a form of targeted phishing intended to defraud business, cost the average target over $43,000. In May of 2018, the FBI updated its numbers, stating that reports indicated the threat had cost businesses more than $12 billion over the last five years. What’s more, because these frauds are so embarrassing when they do occur, and because there is very little recourse made available by law enforcement, these figures are most likely underreporting the issue, making the threat even more concerning.

As Equifax and other headline-dominating large scale breaches loom, individuals and businesses should also be concerned that more targets are created every time a major data breach occurs. Beyond the clear risks posed by compromised Social Security and credit card numbers, the data could be used to glean even more information and generate easy access to potential targets with seeming social proof. These knock-on effects of data breaches make rapid response and staff awareness even more important.

Direct impact of targeted phishing

Beside the risks to businesses and consumers alike, there are two primary means by which targeted phishing causes the most damage: the installation of malware onto a victim’s computer and the social engineering of a fraud.

On the malware front, ransomware makes a lot of headlines, but it’s direct expenses often pale in comparison to its secondary consequences; the average complaint to the FBI was for $600. Though when the National Health Service (NHS) in England was hit with the WannaCry ransomware, the overall cost in productivity and efficiency it created far outweighed the direct cost of ransoms paid.

The FBI recommends NOT paying ransoms when ransomware does strike, as there is really no guarantee your content hasn’t been deleted or that it would be unlocked upon payment. Other malware includes exploits, such as keyloggers, which run without a user’s knowledge, and steal passwords and account information in the background. Trojans can also steal and download data for years while remaining invisible, as was the case in the notorious U.S. Office of Personnel Management data breach.

Socially engineered targeted phishing is frightening because of the very high cost to victims. BEC attacks have fleeced the likes of Google and Facebook for millions, and have also worked on people buying real estate, small record label owners, and many more.

How a successful targeted phishing attack works

Though the mantra goes “The best defense is a good offense,” understanding what your attackers are trying to do is the best way to protect yourself from targeted phishing. Here are the basic components that make up a successful phishing attack and how people are phished:

Email—91% of targeted attacks start with a phishing email, primarily because of its openness and how easily it can be used to mislead users. Phishing email attacks can vary in techniques, including fake password reset instructions, a hidden URL, a spoofed domain in the header of the email, social engineering text, and more.

In the past, poor grammar and design would act as a red flag, but now that frauds have become so lucrative, a poorly laid out email cannot be relied upon as a good indicator of risk. By scraping readily available public records and already-compromised information about you (thanks, Equifax, Yahoo!, Home Depot, Target, etc.), attackers can include rich information, pretending to be someone you know, make comments about a recent experience, and copy formatting or presentation styles that are already familiar to you (like an actual password reset email).

It may seem laborious, but by targeting you or the business you work for, they stand to make a lot of money.

Attachments—Malicious attachments are increasingly becoming tools attackers are using to install macros, execute invoice fraud, and worse. Attackers also use .zip, .rar, or .exe to achieve their criminal ends.

Clicks or URLs—If you proceed with a click, the attacker has sold you or gotten you curious. You will likely end up on a malicious website, whether to install an exploit, ransomware, or to give away your credentials.

Downloads—If the attacker can get the user to download anything, whether an attachment through a clicked link or via an external website, it is likely too late, and you need to hope there are system backups.

Other Articles From AllBusiness.com:

  • The Complete 35-Step Guide for Entrepreneurs Starting a Business
  • 25 Frequently Asked Questions on Starting a Business
  • 50 Questions Angel Investors Will Ask Entrepreneurs
  • 17 Key Lessons for Entrepreneurs Starting a Business

The downstream impact of phishing

The $40,000 loss in a BEC attack is a fraction of the real costs of a breach. The downstream impact of a phishing attack is much more than any ransom, fake invoice, or single transaction. There are indirect yet tangible costs, such as falling stock prices, penalties, paying for legal expertise, hiring IT consultants, losses due to downtime, and more.

There are also intangibles, like the costs of firing your CIO, the loss of brand equity and consumer confidence, bad press, and of course loss of sleep. You might even find yourself the victim of state-sponsored attacks.

This threat isn’t going anywhere

Socially engineered email threats present a threat to businesses beyond anything we’ve seen yet—and these aren’t $300 ransomware attacks or viruses. These are sophisticated attacks, and criminal organizations are running them with professional designers, advanced analytics skills, and the ability to do things like follow up an imposter email with a phone call, completely hacking an individual’s inclination to double-check by phone about whether a major transfer of dollars or information should be authorized. These are happening every day without companies knowing, and are affecting everything from elections to quarterly earnings.

Advanced threat protection solutions for email exist to put an end to these risks for your organization, as well as security awareness and training tools that send your users fake phishing messages and evaluate their responses. However, basic education can help your organization become even safer. If you encounter a suspicious email, consider the following tips:

  • Is the email you’re receiving suspiciously hurried, or lacking in context? If your CEO or CFO is supposedly emailing you from the tarmac of an airport, asking you to urgently transfer $10,000 to a party outside of the organization without a second thought, yes, that’s probably a targeted attack.
  • Do you recognize the “from” name, but not the domain? This is a common tactic because it’s easy enough to put a false name in an email header. You should recognize both someone’s email name and the email address before you respond to a major, budget-changing request.
  • Are you being asked to reset a password, but all the logos look fuzzy and confusing? Often, password resets will be targeted to individual or high-value users and pretend to be from services like Office 365. These will encompass all of the normal logos and phrases that are included in auto-generated support emails, but usually they will not be as sleek as the real thing, while the email address itself will also seem odd or phony (e.g., help@office365support.com).
  • Were you having a normal email conversation, and then all of a sudden, the topic gets switched to a major fund transfer? This is a sign that the person you’re talking to may have an email account that’s been compromised, and their attacker is attempting to convince you to send money or something else on the basis of trust in an existing conversation.

Given the rate of targeted attacks and the impact they can have on businesses and employees, it’s time for a change in how we talk about cybersecurity. For a modern business with a forward-thinking IT department and concerned management, a plan that doesn’t highlight the need for a cyber and email security aware workforce is not a secure plan. Today’s and tomorrow’s attacks are counting on uninformed users—don’t let those uninformed users be the ones on your team.

RELATED: Are You at Risk From a Cyber Attack? Here’s Why Your Business Needs a Cybersecurity Plan

About the Author

Post by: Mike Petsalis

Mike Petsalis is the CEO of Vircom. With a background in speech recognition and machine learning, he has extensive experience in both operations and product development within the cybersecurity industry.

Company: Vircom
Website: www.vircom.com
Connect with me on Facebook, Twitter, LinkedIn, and Google+.

The post Targeting Phishing Attacks: Security Best Practices to Protect Your Business appeared first on AllBusiness.com

The post Targeting Phishing Attacks: Security Best Practices to Protect Your Business appeared first on AllBusiness.com. Click for more information about Guest Post.

binary option trade

Does Your Startup Culture Encourage Business Growth?

copy trade binary options

By Vartika Kashyap

Founding a startup and creating a successful company are two different things. Anyone can have a startup idea, but not everyone can turn an idea into a sustainable business.

According to the Small Business Administration, about half of all new businesses survive five years or longer, and the percentage drops down to one-third after 10 years. So while it may be easy to say you’ve come up with a great startup idea, to actually succeed and stay in business is not as easy as it may seem.

One area that plays an important role in a startup’s growth—and is often overlooked—is culture. To create a startup culture that will have a positive impact on your company’s growth, consider the following tips.

Encourage innovative thinking

One of the biggest bottlenecks to startup growth is having a fixed mindset. Always going by the book and saying, “This is how things have always been done,” can cripple the creativity of the people who work with you, and should not be part of your startup culture.

Always encourage your staff to come up with new ideas, no matter how unrealistic they may seem. Companies like Tesla and Snapchat were able to become what they are today because they were never shy to experiment. They don’t adhere to a “this is how things have been done in the past” mentality.

A work culture that encourages innovative thinking also allows you to have an ongoing flow of ideas, from marketing to product development, and every other aspect of your business. And these ideas are what can eventually become your startup’s success story.

Keep everyone in the loop

One of the things I like about a startup culture is how there are often no barriers between people with different titles. I see managers working side-by-side with interns, and CEOs who embrace an open work environment and don’t have separate offices.

Embracing an open culture ensures two things: It makes employees feel valued, and at the same time keeps everyone in the loop in regard to what’s going on. Nothing happens behind closed doors that could make a team member feel like they’re not a part of the team.

This can turn out to be the best way to win the trust of your employees. Don’t forget, your employees can be your biggest assets for developing your startup’s success story. When your employees trust you, they will not be reluctant to go out of their way to do things for the better of your company.

Walk the talk

You can hire the best people, but if they don’t have a strong leader to guide them, they will be of no use to the company. In order for your company to reach the levels of success you’ve dreamed of, as the business owner, you need to be the one taking the responsibility of getting things done.

After all, the company is your vision. You cannot assume your employees are seeing things the same way that you do. But you can share your vision with people, and inspire your staff by being present during every step and every stage of building the business.

Other Articles From AllBusiness.com:

  • The Complete 35-Step Guide for Entrepreneurs Starting a Business
  • 25 Frequently Asked Questions on Starting a Business
  • 50 Questions Angel Investors Will Ask Entrepreneurs
  • 17 Key Lessons for Entrepreneurs Starting a Business

Identify the purpose

Ask yourself: What’s the purpose of your startup? Now, ask the people who work for you the same question. I’m sure you will not get the answer you’re looking for. This is where many entrepreneurs go wrong. When you’re not able to communicate what you are trying to achieve with your startup, it becomes one of the biggest challenges that will hinder the company’s growth.

Yes, the startup is your dream, but you cannot do everything on your own. This is why you hire a team, and it becomes your responsibility to ensure that everyone on the team knows what the dream is. In other words, they must understand the purpose of your startup.

Once everyone knows what the purpose is, it will become easier for them to align their efforts in one direction to achieve the same target goal. When they know where they’re going, they can develop their own road maps to successfully reach that goal.

RELATED: What’s a Strengths-Based Culture? A Look at Today’s Hot Management Trend

About the Author

Post by: Vartika Kashyap

Vartika Kashyap was named one of LinkedIn Top Voices in 2016 and 2017. She is also a contributor to Business.com, The Next Web, YourStory, and HuffPost, among others. Her articles mainly revolve around productivity, leadership, and common workplace events. She also loves to read and travel to new places.

Company: ProofHub
Website: www.proofhub.com
Connect with me on Twitter and LinkedIn.

The post Does Your Startup Culture Encourage Business Growth? appeared first on AllBusiness.com

The post Does Your Startup Culture Encourage Business Growth? appeared first on AllBusiness.com. Click for more information about Guest Post.

binary option trade

National Press Club Enterprising Women: Recap, Part 2

copy trade binary options

This is the second part of a two-part series. Read part one.

On November 28 I was invited to be a guest of the NBN on the Enterprising Women panel, hosted by the National Press Club of Australia. Alongside my fellow panellists Olivia Ruello (CEO, Business Chicks) and Mikaela Jade (Founder, Indigital) we discussed the topic of women in business and leadership, specifically female entrepreneurship in rural and regional areas. 

A recent study by the NBN found the number of women starting up their own businesses in areas that are connected to the NBN has gone through the roof. Now a 2.3% lift doesn’t sound like much, but that’s actually twenty times the pace of growth that’s happening in areas that are not as well connected. Technology is empowering women to be more financially and professionally independent, and to strike out on their own. Here I reflect on the day’s events and share some of my key thoughts and take-outs from the day.

 

The importance of having strong female role models

I had strong role models from very early on. My mother worked for the Monash University Maths Department on one of the early computers in Australia. And every day she’d go off to work in her suit and work on this computer. And then she went to work with one of Australia’s great entrepreneurs, Lyndsey Cattermole. And so, I used to go as a young girl to these work events and for me, it was my normal. I just didn’t know there was anything different to that reality. So it was always expected that I would go to university; that I would have a career. When it came time to doing something different, my father had been a small business owner and I thought, ‘right, I can do that too’. And I knew I could do it because I had seen it.

Persistence in the face of resistance

I find that some people just don’t take me seriously, and that really bothers me. And I prove them wrong most days.I am often misunderstood, or underestimated. . We serve a customer every minute at the Big Red Group. We turn over more than $100 million a year. And we have a strong growth trajectory.How about our contribution to our community and commerce and tax and the thousands of small businesses we support?

But I have a role, and my role is to sit forward, ‘lean in’ as they say. My role is to respond, and I have a request of every woman – that, if asked to stand up, speak, or comment to the press that you take that as an opportunity and do so. Perhaps even offer your ideas, thoughts and opinions outside of your immediate circle – to add to the broader conversation – and everytime this demonstrates leadership. .

I have heard women say “I don’t want to ‘big note’ myself”. It’s not for you, it’s for your audience – your insights are a gift to others. If given the opportunity and then we don’t take it, then we will never get to where we need or want to be – balanced voice in every realm..

Making that first sale

It was two months and four days before I made the first sale on RedBalloon. I launched the RedBalloon business in 2001 in the first week of October, which was three weeks after September 11. And I’d given $25,000 of the family savings – all the family savings – to an outsourced web developer and he came back with a website that was, quite frankly, terrible. But I thought it was fabulous. I used to ask people the question, ‘did anybody see our first website?’ One day I got the response that yes, they’d seen it  while studying multimedia at UTS – their lecturer had shown it to the class as an example of the worst website he’d ever seen.

So I turned the website on, and nothing happened. And every day, my then husband would go to work and come home and ask, “How is the project going, sweetheart?” I’d say, “no customers today but maybe tomorrow”. This went on and on. I got so desperate I would tie red balloons around my briefcase and walk through Martin Place hoping someone would see the URL and find the website. But hope isn’t a strategy. Finally, I got my first customer – it was actually order number 14 because I had done 13 before to check that the website worked and there was nothing wrong with it. I this first customer, Damian Chown, and I said, “Hi, I’m Naomi Simson. I’m the chief experience officer for RedBalloon. I like to call all of my customers to find out how you experienced the website.” And he said, “Oh, it was crap.”

 

I invited that very first customer, Damian, to the launch of the Big Red Group in July 2017 (left). You never forget your first customer and how important it is that you deliver on your word. And so, when I’m even talking to my team now of 120, I say – “Never, ever take the customer for granted. They are here, but in this moment, they might go somewhere else

 

If I knew what I know now

I write for LinkedIn and they asked me to write 600 words on advice I would give to my younger self. So I started writing and when I got to 10,000 words I started to think I had a problem. Then I got to 25,000 words, and I took it to a publisher and they said, “There’s a book in that”. And that was my first book Live What You Love. So my advice to my younger self would be to give up the fear of following you dream. Live with passion and live with purpose. Know that purpose is about contributing to others and that true happiness comes from what you give, not from what you get.

binary option trade

National Press Club Enterprising Women: Recap, Part 2

copy trade binary options

This is the second part of a two-part series. Read part one.

On November 28 I was invited to be a guest of the NBN on the Enterprising Women panel, hosted by the National Press Club of Australia. Alongside my fellow panellists Olivia Ruello (CEO, Business Chicks) and Mikaela Jade (Founder, Indigital) we discussed the topic of women in business and leadership, specifically female entrepreneurship in rural and regional areas. 

A recent study by the NBN found the number of women starting up their own businesses in areas that are connected to the NBN has gone through the roof. Now a 2.3% lift doesn’t sound like much, but that’s actually twenty times the pace of growth that’s happening in areas that are not as well connected. Technology is empowering women to be more financially and professionally independent, and to strike out on their own. Here I reflect on the day’s events and share some of my key thoughts and take-outs from the day.

 

The importance of having strong female role models

I had strong role models from very early on. My mother worked for the Monash University Maths Department on one of the early computers in Australia. And every day she’d go off to work in her suit and work on this computer. And then she went to work with one of Australia’s great entrepreneurs, Lyndsey Cattermole. And so, I used to go as a young girl to these work events and for me, it was my normal. I just didn’t know there was anything different to that reality. So it was always expected that I would go to university; that I would have a career. When it came time to doing something different, my father had been a small business owner and I thought, ‘right, I can do that too’. And I knew I could do it because I had seen it.

Persistence in the face of resistance

I find that some people just don’t take me seriously, and that really bothers me. And I prove them wrong most days.I am often misunderstood, or underestimated. . We serve a customer every minute at the Big Red Group. We turn over more than $100 million a year. And we have a strong growth trajectory.How about our contribution to our community and commerce and tax and the thousands of small businesses we support?

But I have a role, and my role is to sit forward, ‘lean in’ as they say. My role is to respond, and I have a request of every woman – that, if asked to stand up, speak, or comment to the press that you take that as an opportunity and do so. Perhaps even offer your ideas, thoughts and opinions outside of your immediate circle – to add to the broader conversation – and everytime this demonstrates leadership. .

I have heard women say “I don’t want to ‘big note’ myself”. It’s not for you, it’s for your audience – your insights are a gift to others. If given the opportunity and then we don’t take it, then we will never get to where we need or want to be – balanced voice in every realm..

Making that first sale

It was two months and four days before I made the first sale on RedBalloon. I launched the RedBalloon business in 2001 in the first week of October, which was three weeks after September 11. And I’d given $25,000 of the family savings – all the family savings – to an outsourced web developer and he came back with a website that was, quite frankly, terrible. But I thought it was fabulous. I used to ask people the question, ‘did anybody see our first website?’ One day I got the response that yes, they’d seen it  while studying multimedia at UTS – their lecturer had shown it to the class as an example of the worst website he’d ever seen.

So I turned the website on, and nothing happened. And every day, my then husband would go to work and come home and ask, “How is the project going, sweetheart?” I’d say, “no customers today but maybe tomorrow”. This went on and on. I got so desperate I would tie red balloons around my briefcase and walk through Martin Place hoping someone would see the URL and find the website. But hope isn’t a strategy. Finally, I got my first customer – it was actually order number 14 because I had done 13 before to check that the website worked and there was nothing wrong with it. I this first customer, Damian Chown, and I said, “Hi, I’m Naomi Simson. I’m the chief experience officer for RedBalloon. I like to call all of my customers to find out how you experienced the website.” And he said, “Oh, it was crap.”

 

I invited that very first customer, Damian, to the launch of the Big Red Group in July 2017 (left). You never forget your first customer and how important it is that you deliver on your word. And so, when I’m even talking to my team now of 120, I say – “Never, ever take the customer for granted. They are here, but in this moment, they might go somewhere else

 

If I knew what I know now

I write for LinkedIn and they asked me to write 600 words on advice I would give to my younger self. So I started writing and when I got to 10,000 words I started to think I had a problem. Then I got to 25,000 words, and I took it to a publisher and they said, “There’s a book in that”. And that was my first book Live What You Love. So my advice to my younger self would be to give up the fear of following you dream. Live with passion and live with purpose. Know that purpose is about contributing to others and that true happiness comes from what you give, not from what you get.

binary option trade

Got an idea? Translate it into a viable business

Forex stock trading

Introducing my ultimate product development check-list which helped me and my business partners in creating a state of the art products and services.

I love talking about ideas with my friends and business partners. A good idea is the seed of every great start. But not every idea turns into a viable product or business. That partly happens due to bad assumptions and hypothesis. A bad business plan can also drive the idea to an undesired outcome.

This article is my ultimate product development check-list. It contains a list of actionable items which increase the likelihood of success in creating a great product or service. I’ve shared this list with many of my friends who are business owners as well as business partners I’ve worked with. They are all doing well today, partly because this list helped them in the process.

1. Start big

Every start needs a little push. You have a great idea for your pet project, side business or a physical product you want to sell, but you don’t have a clue where to start from? Well, the good news is that every beginning looks like that. Nobody woke up with a complete master plan in their head. In order to beat procrastination, I suggest starting with a big picture. Give yourself a little bit of context to get into the appropriate state of mind. Imagine how your product looks like and how your buyers fell awesome by using it. The power of imagination is often underestimated. Imagination or auto-suggestion is a principle where affirmation or repeated instruction induced into the subconscious mind turns desire into a physical or monetary equivalent. The same applies to ones that don’t believe in their goals. Their negative belief is turned into a phenomenon called “misfortune”. So dare to believe. Give yourself a permission to enjoy the riches that such mindset brings.

Why, How, What

The purpose of creating a business plan is to remove uncertainties related to your product or service:

  1. The purpose uncertainty — “Why?” ,
  2. The means uncertainty — “How?” and
  3. The end uncertainty — “What”.

In my opinion, first and foremost is the purpose uncertainty (“Why?”). Why would you ever want to create what you’re about to create? As Simon Sinek says — always start with why. Ask yourself why do you want to build that feature. What is the core value that comes with it? What’s in it for you? Only a small percentage of business owners get to answer the “Why?” question. Because it is hard. Because it requires reasoning from the first principles of your business and not reasoning by analogy. Your “Why?” should represent the things you believe in. For example, if you own a learning platform, you believe that everyone is able to learn a new skill. Also, you believe that everyone with a skill can transfer the knowledge to someone else. This kind of attitude will most definitely attract students and teachers who also believe that they can learn or teach. This makes the three of you a part of a group with similar beliefs. Being a part of the same group or tribe helps in building trust. Having trust affects the decisions that your customers make. Those decisions will be in your favor since now you belong to the same tribe.

Share your belief -> Attract those with the same belief -> Same belief builds a tribe -> Tribe builds the trust -> Trust drives decisions -> Decision controls the behaviour

Always be in a pursuit for the cause and the things you believe in. This approach will provide you with results such as fame or money or sometimes both. Again, by doing so and promoting your beliefs, you will attract those who believe what you believe. As a result, your product will prove what you and your customers believe in. This is a great pre-condition for a successful business so definitely spend some time figuring out your “Why?”.

People don’t buy what you do, they buy why you do it.

Removing the means uncertainty (“How?”) will reveal the tools and skills required for building the product you want to build. Having a glimpse of your end product is one thing. Knowing the tools for building it is a completely different aspect. Ideas are fine, ideas are the fuel, but when it comes to building the things you visualized in your head or your gut feeling tells you so, that tends to be really challenging. The answer to the “How?” question will indicate if you have enough resources to build the product. If you don’t, you will know who to hire or what tools and skills to acquire. For example, if you’re building a tech product, you have to be the architect of your product or to know who to hire for the task. Lay out the architecture, and determine the technology you find most suitable for the task. On the other hand, if it is a physical product, investigate what kind of machinery do you need, who can be your supplier or is there a manufacturing company which you can contact or hire.

The end uncertainty (“What?”) represents the lack of confidence about the end product. Having a strong vision and a strong belief will help you remove the end uncertainty. Start at the end and try visualizing the end product and how the users will benefit from it. This will give you a goal, and if you define it in enough detail and approach it with passion, this will be your driver when entropy kicks in and starts messing with your initial plans. Again, the product that you are building proves what you believe in. Keep that in mind and design it with a purpose to help others who believe in what you believe. After you’ve removed the purpose and the means uncertainty, defining what you want to build is so much easier. The answer to the “What?” question should be the tool which helps your customers in achieving the “Why?”.

2. Use your time-machine

Part of the business plan is envisioning your goal. In order to do so, you have to imagine how your business looks three, five or ten years from now.

Fast forward

Having just a glimpse of your business, product or service is not enough. You should envision all the details. And I mean all of them. The product, the package, the feel of the fabric or the layout of your digital product, the faces of your happy customers, their success stories where your product helped them and your face after you reach that goal.

As you probably know, it is much easier to solve problems which we’ve already faced in the past. Experience makes us more confident because we know that we have the skills to overcome the obstacles in front of us. But what happens when we have no experience in what lays ahead of us? How to start a business when we’ve never started one before? The closest thing you can get to experience of running a business is to imagine that it already happened. As I said before, the power of imagination and auto-suggestion is often underestimated. But based on my experience, auto-suggestion really works. If you envision your success with so many details, and if you repeat the whole scenario in your head for so many times, you will persuade your brain that it already happened. And when that happens, you’ve got yourself a great experience of what is about to be achieved.

Finishing a product is not the end of the road. Rather than that, the party has just begun. You will have to persuade the user that your product is just what they need. So you better be ready for that, because it is one of the most important stages in the process of product adoption.

What’s on the Box

We all use a lot of tools and products during the day. Even when we don’t use them, we can imagine how they look and how they work. However, we probably can’t remember how the package of the product looked like when we bought it. That’s because now, we are focused on the benefits we enjoy by using it and the package doesn’t matter anymore. But the package was extremely important when we were buying it. The package stated what benefits we were going to get from using it. The package made us choose it among all other similar products. The package made us interested in this product. Of course, it doesn’t necessarily have to be the box. In case of digital products, it might be a landing page of your website.

Don’t get me wrong, the “What’s on the box” exercise is not about the package visual design. It’s about asking yourself how will you describe your product to the users and how will you make sure that they understand how awesome they will become with the content of the package. Since you are selling your product, it is good to have in mind “the shoppers perspective”. This describes the behavior of the prospective customer and their flow of thoughts and dilemmas. When the customer stumbles upon your product, he/she does the following:

  1. Notices the package
  2. Asks “what is it?”
  3. Wonders “Why should I care?”
  4. Wants to be persuaded
  5. Needs proof [*]

Answer those questions correctly and your product will end up in their shopping cart.

Awesomeness

People don’t buy your product or service because it’s awesome, they buy because they want to become a better person, because of the value they want to have in their life, to become a better version of themselves. The focus is on them and their awesomeness. So be sure to envision how your product or service will make somebody awesome. This is the key for every successful product, service or business. If you have the power of making someone’s life easier, that value will transform into a monetary equivalent. Value equals money, and if you provide good value, prospective customers will pay your bills in return for that value. Make sure that the value of the product is clearly stated. If the benefits are not clearly stated, they will most likely stick with what they already have.

Dependency

Among all other things, you should consider what could possibly hold you back. There can be a lot of dependencies related to your business. In case of digital products, you could develop a dependency towards your service provider (i.e. AWS) or framework used in your software (i.e. Vue.js). On the other hand, physical products might depend on your raw material supplier (i.e. textile manufacturer). Either way, you should build your business around something reliable and well established. You wouldn’t want to experience any downtime of your application in any stage of your business. Also, a shortage of materials could hold our production back and cause unwanted delivery delays. In any case, you should choose your providers wisely. Also, you should have a contingency plan or plan B in case when things go south.

Detect the obstacles

Similar to Fast Forward section, you should try to figure out what are the potential obstacles which you could face in future. But not in a pessimistic tone. Think of this exercise as a preventive maintenance of your business. Predict your potential failures in order to be one step ahead of it, and be ready to act before it may happen. Most of the time, we tend to take a happy path, a “blue sky day” approach. But have in mind that the storm happens every once in a while, and by identifying the obstacles upfront – you will be ready for it

3. Steal responsibly

To be honest, most of the products are putting old tools to novel use. There’s a handful of truly innovative products. Their brilliance alone is sufficient to put them in front of the competition.

Either way, if you’re looking for a disruptive solution or an incremental improvement, you should follow these steps:

Remix & Improve

When you start designing your product or service, think about existing solutions to a similar problem. Someone already spent a lot of time and money into solving a problem. Regardless of the time and effort invested, that solution might not be perfect. Every solution has its good parts and its bad parts. Identify the good ones and integrate them into your product. Identify the bad ones and avoid having them around. Of course, I’m not talking you into becoming a copycat. You should use the idea of a good solution and improve it. Remixing different solutions will spark your imagination and will enable you to detect disruption points of existing solutions. These incremental improvements will put you ahead of your competition. You will have feature parity as well as a competitive advantage because you made it significantly better.

I’m not a fan of reasoning by analogy, but unless your trying to innovate radically, this is usually the shortcut to the best solution.

Sketch

By now, you fell in love with the problem you are trying to solve. Also, the silhouette of a potential solution starts to emerge. Now is a good time to dive into details. We all have some sort of vision in our heads, and the vision seems complete. It seems complete until you try to explain all the details to somebody else, or even to explain it to yourself out loud.

By sketching out your solution, you will be forced to breathe life to your idea, even if you think it is not yet ready (but actually it is). By putting it on paper it comes to life because it is no longer just part of your imagination, it becomes real. In order to complete the whole drawing, you have to figure out every detail, even if you haven’t thought about them until now. This way, you will face obstacles before you even start building it, before you’ve spent a penny on the production. You have to agree that this is an extremely cheap prototype with an extremely high return on investment. Again, you’re living it out before it even happened, gaining experience in what is about to become reality.

Sketching out your solution is the cheapest prototype you can get.

Communicating your vision can take a while. You’ve spent a lot of time thinking about your product or service, and during that time you’ve built your story one chapter at a time, completing the whole puzzle bit by bit in a random order. But when you’re required to share your thoughts with somebody else, you have to use a lot of words. We as humans have very limited input-output verbal communication stream. We can only pronounce a limited set of information in a minute, and also, can hear that many sentences at a reasonable talking pace. And that kind of information sharing is sequential and therefore limited. However, our eyes can receive so much more information than our ears. This is why I like to sketch the vision of a product or service. A sketch on a paper can carry a ton of information. Our eyes can instantly feed the brain with so much information about the purpose, texture, size, practicality, usability, etc. And the information stream runs in parallel, so much faster than our ears.

Storyboard

Previously, you’ve created several sketches for your solution. Now is a good time to think about the steps which user has to take to discover your solution. Start at the very beginning — user opens the browser, or opens your app. What are the steps, clicks or taps which needs to be performed in order to get to the desired outcome? How many steps are there to be taken? The idea is to sketch out an entire journey through your product or service with enough detail so that everybody is aligned on what goes into the whole product.

Storyboard will help you create the whole product — a generic product augmented by everything that is needed for the customer to have a compelling reason to buy.

The storyboard is like a comic book —a set of scenes where the user interacts with your product. The storyboard will help you get the picture of how complicated is for the user to get where you want them to be. This way, you will identify missing steps or the one that is obsolete.

For example, you’ve developed a new TV with cutting-edge technology, fascinating pixel density, with picture indistinguishable from the reality. Then, you start building the storyboard, where the opening act is when the user walks into the store. The customer buys the TV and takes it home. But the problem is, the box can’t fit the door opening. It can’t fit the trunk either. You were so focused on building the best product, but you haven’t thought about transportation. Furthermore, screws for the wall mount are not included in the package and the user has to go back to the store. Even though the TV is fantastic, the overall experience would be bad if you haven’t had an awareness about all the things accompanying the product delivery. However, these situations would be avoided by sketching the complete storyboard.

Test

Before you launch it to the public, a good idea is to share the complete experience with a small group of people, in order to get an early feedback. This group of people could be your friends, your subscribers or existing customers. During the whole process of product development, we tend to get emotionally involved, and therefore biased. This can cause that we are aware that we have a flaw in the product, but we decide to look to the other side. Testing the whole product with a small group of people you trust will help you in getting valuable, unbiased feedback. Of course, don’t get upset when people start pointing out some flaws or suggestions, they just want to help. Take note of the feedback and reiterate through the sketching and storyboarding process again and again.

4. Launch status check

You’ve done most of the hard work. Now, you can focus on those tiny details, to make sure everything is on point.

20:80 rule

We all know about the Pareto principle, or 20:80 rule. For many events, roughly 80% of the effects come from 20% of the causes. In this case, you should ask yourself if you could build less and still retain the functionality and the quality of your product. We all want to build the perfect product or service. And all those details can inflate the final cost. But sometimes you should restrain yourself from overspending because the price will also be too high. Ideally, you should strike a balance between the cost and the number of details which will delight your customers. You don’t want to go too high with the cost, but also, you want to have that WOW effect.

Milestone

Every launch has to have a planned date and time. Launching a rocket at a specific time and date is important because of the relative position of the planets, to hit the shortest path. Similarly, launching your product should hit the alignment of the market. Do the research about when is the highest demand for your product, when will the competitors do the launch, etc. Timing is very important, so keep that in mind.

Also, it’s a good thing that you have the milestone for your launch because it will help you beat the procrastination. When the deadline creeps in, you will have to work hard to hit the “T-Minus” moment. Otherwise, the launch could be delayed indefinitely. So, do the research, open up your calendar and pick a date.

Arm yourself with knowledge

This article only scratches the surface of business development. There is a ton of other aspects about running a business, but this is a good starting point. For further read, I suggest reading about How to get good ideas, How to validate your idea, How to build a strong brand, How to write advertisements, How to build a roadmap and How to set the price for your product.

The important thing here is to know that you CAN succeed in building your dream business. The only thing holding you back is you. I believe that you can make your dreams come true, so why wouldn’t you believe in yourself? Wheter you believe that you can or can’t, you are absolutely right.

Finally, here’s a summary of this article, a cheat-sheet to kickstart you entrepreneurial aspirations:

  1. Why do you want to build this product? What do you believe in?
  2. How do you intend to build it?
  3. What exactly is your product?
  4. Can you imagine your success? How does it look like?
  5. What is on the box of your product? How will you attract your customers?
  6. How do you intend to make your users awesome?
  7. How can you fail? What kind of obstacles can you predict?
  8. Is there a similar product which you love? Can you make it better?
  9. Can you sketch your product with all the details?
  10. How does the customer experience look like? Is it a whole product?
  11. Can you cut the cost by reducing the scope of your product?
  12. When will you launch it?

You can do it. Good luck!


Got an idea? Translate it into a viable business was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.

Read about withdrawable no deposit bonus and make profit trading now

Learn each step of the solutions for Math problems for free using Symbolab

Forex stock trading

If you are trying to solve math problems and they seem easy, maybe you are doing something wrong. At least, that may be the first impression that you have, as they have been vastly proclaimed to challenge you and make you feel stressed and even a lot of times, forcing you to give up and just go back to see the solution. The reason for these can be that you may not know all the steps that are necessary to do be followed if you want to reach the desired result. Fortunately, solving math problems can be simplified using a really cool web application that shows you the step to reach the solution.

A friend of mine recently told me about SymboLab that helps you solve math problems and does not just give you the final result, but it also shows you the steps how to get there. You are even not asked to pay anything and you can use it for free.

By using this tool, you can actually learn new ways of solving problems and even debug your solution and see where did you make a mistake that was responsible for getting the wrong result.

There may be times when you want to just see the solution and compare it with yours, or learn how to solve a particular problem that you may have not learned about before.

Besides the step-by-step calculator, it also has additional features like graphing, cheat-sheets that you can quickly refer to refresh up the things you learned in high-school, sections to test yourself and more.

If this sounds appealing to you, I suggest you give it a try.

Happy learning!


Learn each step of the solutions for Math problems for free using Symbolab was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.

Read about withdrawable no deposit bonus and make profit trading now

The Tech Industry Is Broken and It’s Our Fault.

Forex stock trading

I was walking to Chipotle with my girlfriend yesterday when she mentioned that one of the questions on her final exam wanted her to model a map in a video game. As I’ve been playing Red Dead Redemption 2 for the last month this didn’t sound like a difficult question to grasp, however as a non-gamer Jessica said it took her more time trying to understand the concept than actually answering the question. The professor used Risk and Settlers Of Catan as examples, both of which are games she has never played. Ultimately Jessica answered the question using Sims as an example since you are able to move around the neighborhoods in a way similar to a map.

Ever since Jessica declared her major in Computer Science I’ve been more focused on the different privileges that currently exist in the software industry. While some companies are able to attract a very diverse engineering staff, there just aren’t enough candidates graduating with engineering degrees to afford all companies that same privilege. I’d like to take a look at seemingly harmless things in today’s world which could be partly to blame.

Silicon Valley — The Show

Jessica and I love watching this show together. We are eagerly awaiting for the sixth season to see how the series comes to an end. One issue with this show comes in the form of the cast which accurately depicts the norm in the software industry and continues to perpetuate that norm. The main software engineers are all males, two are white while one is Pakistani. The majority of the main cast are males with the exception of Monica Hall and Laurie Bream with the former being the only female to appear in every episode. If you are a white male then this show is great, there are plenty of people in the show that look like you. If you aren’t then it likely makes you feel that the startup world isn’t for you, even though they never explicitly say that and I doubt that was even the intent.

I’d like to quote the Houston Chronicle’s article, Why ‘Black Panther’ means so much to the black community where they talk about the important of racial and ethnic socialization (RES).

Many have wondered why “Black Panther” means so much to the black community and why schools, churches and organizations have come to the theaters with so much excitement. The answer is that the movie brings a moment of positivity to a group of people often not the centerpiece of Hollywood movies. Plus, what we know from the research on RES is that it helps to strengthen identity and helps reduce the likelihood on internalizing negative stereotypes about one’s ethnic group.

Silicon Valley doesn’t have a single black character in a major role. They don’t have a female engineer in a main role. If you are a kid or even adult watching this show which is credited to being like the real thing, chances are it probably doesn’t make you excited to get into the tech industry.

Mr. Robot, while not perfect seems to be heading in the right direction through giving major roles to females and males. Ignoring Rami Malek who plays Elliot Alderson, the series main character, you have Darlene. Darlene works closely with Elliot throughout the series to help him see his plans through. There is also Angela Moss who starts out as a fairly weak character but seems to gain more and more strength as the series goes on (I’m only half way through season 2 so I may be completely wrong too). Again though, this series fails to cast a black actor for any of the major roles, on IMDB’s main page for the series it’s split between mostly white males and white females. Hollywood still has a long way to go.

Major Technologists Are Misogynists

I guess it worked out that those words rhymed, but it’s also fairly disgusting as well. It’s especially troubling because this misogyny usually isn’t apparent unless you are looking for it as I hope to highlight in some of my examples. I’ll start with an example that brought me the most pain when I realized it. Uncle Bob, the guy that championed clean architecture is a fairly tone deaf individual. In his article there are ladies present, where he thought he was writing to help women in technology he wrote this lovely paragraph.

What if the roles were reversed? What if women had dominated the software industry for years, and we men were the ones who were struggling to break into the industry? Men, can you imagine how hard it would be if all the women were constantly, and openly, talking about tampons, cramps, yeast infections, cheating, being cheated on, Trichomoniasis, faking-it, etc? I don’t know about you, but It would make me feel out of place. And there’d be no place to escape it, because the women would be everywhere. I’d want them to save that kind of talk for the ladies room. I’d want them to remember that men were present.

I wish I could say that he has come around since 2013 but in a tweet from December 9th of this year he tried to completely downplay the word privilege.

This man holds a lot of authority today in the software industry. In my attempt to mentor engineers I often point them to clean code and clean architecture as good starting points. While I don’t like the idea of withholding information from those I’m mentoring, I also hate that this is the de-facto software design person. I am encouraged that vocal programmers like Sandi Metz exist though, and I’ve been enjoying watching the talks she has given.

It’s not just the software industry though. When I was growing up I idolized Leo Laporte, he seemed like such a cool guy that knew so much about technology. He now runs a podcasting network which I would regularly watch from 2014 through 2016. After a while though I was starting to pick-up on some subtleties that he wasn’t the kind of person I wanted to support. It started off with some mild sexist comments, and has continued to devolve overtime. TotalDrama which is a website that covers his slip-ups (though their posts are fairly tasteless at times) caught him making a comment about how there was a white person side and a black person side of his flagship show, This Week in Tech. The disgusting thing is that this guy is still supported by fairly normal people, that just help to perpetuate this.

It unfortunately doesn’t stop at the older generation though. There is Linus Tech Tips that I think is fairly passable most days all the way to Bitwit which I actively avoid now because of his childish jokes which usually belittle women. Why does this industry seemingly perpetuate this kind of thinking?

The People That Made It Are Still Making It

I believe part of the problem is that the people that made this industry are still making it. Interview processes are inherently flawed to cater towards the biases of the person creating that process. It has been called out at the company I work for that having a female engineer interview with all males is probably intimidating. The same is true if you place an engineer of color with the same group of interviewers.

This problem isn’t an easy one to solve. We are trying to take a non-diverse workforce and expect to fix it overnight. I don’t think that’s the right approach, nor do I think it’s even realistic. Part of the solution comes from realizing and accepting the issues that currently exist today. It means being aware that not everyone in the room feels comfortable to speak up without being prompted. Some of your co-workers may not get the references you are making about that video game or TV show. You need to reflect on your own actions and answer is this beneficial or detrimental to bringing diversity into this industry. It’s fine if the answer is no, while I’m enthused every-time I answer yes, it’s just as important to answer no and try to avoid making that mistake in the future.

The Path Forward

The path forward is not an easy one, however I do think it’s an achievable one. It starts out by accepting that there is a problem and holding yourself accountable for your actions. There are some other steps we can all take as well.

Be aware of the actions of others, especially influencers you give a lot of power to. I stopped consuming anything from Leo Laporte’s podcasts. I’ve unsubscribed from YouTuber’s that seemingly abuse their power through snide underhand remarks. I look for alternatives to the teachings of Uncle Bob whenever I get the chance, I even hope to rewrite some of his teachings using my own voice so I can stop building him up to others.

Understand the biases in your own processes and find a way around them. My girlfriend was able to bypass many coding interviews because of her GPA. This also prevented stressful and ineffective interviews while hopefully helping those companies bring it more diverse talent. The downside is Jessica seemed to struggle with imposter syndrome during this time because she didn’t feel like she was doing as much as others. This is to the contrary though as the companies just realized they had a flaw in their process and came up with a solution around it. She still has to maintain a competitive GPA for the offer to stand.

If you are coming from a place of privilege then help lift others up that aren’t. While I’ve worked hard to get to where I am, I also have to accept that coming from the majority made that easier. I try to go out of my way these days to support others that aren’t as privileged, whether that means showing up for talks or offering my time to help out with writing or speaking. This week I am also kickstarting an event called Quick Take Tuesdays which lowers the barrier to public speaking by allowing employees from across the company to speak about a topic for 1–10 minutes over lunch. While this is currently open to just engineers and product I hope to open it up to the entire company should it become successful. I also hope this will help boost the confidence of my peers and encourage them to do more long-form presentations in the future.

I’m sure I’m missing a lot of other valid ideas or my examples above are incomplete. If you have anything you’d like to add onto this please leave a comment below, I’d love to hear what others think. If you enjoyed this article, please click on the clap icon a few times or share it on social media (or both). Lastly, I’m starting up a mailing list that is powered by ActiveCampaign, if you want to get weekly newsletters then please use the sign-up form below.


The Tech Industry Is Broken and It’s Our Fault. was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.

Read about withdrawable no deposit bonus and make profit trading now

Can Code be Self Aware? Musings on Studying Computer Science at MIT (Part I)?

Forex stock trading

I remember first thinking about self-awareness, like many things, from watching too much science fiction. Was Data, the android in Star Trek: The Next Generation, a conscious being, or just a “machine”?

Was Data Self-Aware? Picard Argued Yes.

OK robots are one thing — they have a physical presence and whether or not they are conscious most machines will have some basic self-diagnostic capabilities and be aware of the state of their “physical body”. Even a car is now “aware” if its door is open or not or if the seat belt is on.

There are examples of robots passing the Mirror Test (read about it here), which was created by Gallop in 1970 to see if an animal (or a species of animals) could recognize themselves. According to Gallop, most infants didn’t pass this test until they were at least 18 months old — which is the point at which some level of “self-awareness” exists (at least as measured by this test).

What about Code?

But the question here is not so much can a robot be aware of itself, but can a computer program be aware of itself? In ST:TNG was the “computer” on the Enterprise, which was just software, self-aware? That’s another question altogether.

It wasn’t until I was studying computer science and learning all about programming and recursion at MIT that I really began to think about the question of what it means for code to be aware of itself.

As usual, it was science fiction that gave me a kick in the pants to think about this question.

In 1991, nearing the end of my time studying computer science at MIT, the movie Terminator 2 came out, and it had a line that just wouldn’t leave me.

Skynet becoming self-aware wasn’t a good thing … but what does it mean?

The Terminator in this incarnation (played by Arnold Schwarzenegger), was a friendly one (having been reprogrammed by John Conner in the future). Sarah Conner (Linda Hamilton) was interrogating him about the development of Skynet (the AI which tries to wipe out humans in the future):

Terminator: The Skynet Funding Bill is passed. The system goes on-line August 4th, 1997. Human decisions are removed from strategic defense. Skynet begins to learn at a geometric rate.

Anyone who has watched these movies knows what happens next, as Arnold explains in the now famous line:

Terminator: It becomes self-aware at 2:14 a.m. Eastern time, August 29th.

And of course, the inevitable response that Elon Musk and others, ranging from Oxford philosopher Nick Bostrom, MIT physicist Max Tegmark, to Stephen Hawking, are warning us could happen in our future.

Terminator: In a panic, they try to pull the plug.

Sarah Conner figures out what happens next all on her own:

Sarah Conner: Skynet fights back …

Doomsday scenario aside, I remember wondering what it would mean for Skynet, which was an AI (and as far as I could tell, a collection of code), to be self-aware?

Was it even possible for code to be “aware” of itself?

Self Awareness and Killer Programs … Maybe?

Earlier that year (or maybe it was the year before, I can’t remember), I stumbled rather unexpectedly into a similar question during one of our computer engineering classes, 6.004 (Computation Structure), which is the course in the EECS department where we learned to build a computer from the ground up, called a Maybe machine.

We carried a little brown suitcase around campus that housed a collection of wires and digital circuitry, which were basically linked almost one for one with the assembly code we were learning (I had done a little assembly level programming with Apple II computer back home but had no idea the little instructions I was coding gave direct instructions to the processor to do X or Y in the physical registers!).

In the class we had setup a primitive operating system and we were learning about multiple processes running, when the instructors decided to hold a competition. The competition was between two programs would be running as separate processes on the same system — a battle of the programs if you will. The goal was for our computer program to battle, or disable, the other computer program.

The basic design of most computers today gets its history from Von Neumann, who envisioned memory and storage as key parts of the computer. A program that was running would have its instructions stored in memory, along with the data that the program was processing. In a system that was running more than one program (think multiple windows on your macbook), the system would swap out one program for the other. This basic structure — of code and data being stored in the same way — had interesting consequences, as we’ll see later in this article.

One very cold, snowy night that year I chugged my maybe machine/suitcase from the lab across campus, accompanied by my classmate Ranjan, who was singing, as he did pretty much the whole semester when we carried the maybes around campus (“come on bay-beee … don’t say maybeeee”).

I said good night to Ranjan and went back to my dorm room to formulate a plan of how I could write a program that would compete. As I recall, the competition was an optional assignment, but I thought since I was doing pretty well in the class, I would give it a shot.

It was obvious that for one program to kill the other, it would need to be aware of the other program and where it was running in memory. I wrote a little program that figured out which program was running, it would then find the location of the “other” program in memory, and then simply write over it.

This little program started to raise at first, practical questions, and that led to some philosophical questions in my mind. It didn’t modify the “other” program on disk (actually we didn’t have disks but some kind of EPROMs, as I recall — this was 25 years ago though) but modified it in memory. But how could I be sure that the opposing program would stop running?

My first solution was to write a random number over the next instruction that was supposed to be executed. Then I realized that a random number didn’t guarantee that the program would stop running, it would simply make the program do something random (let’s not get started about the fact that “random” isn’t really “random” in computers).

Instead, I made it simply write a “zero” as the next instruction that the “other” program should executive, which was a signal to “stop” running the program.

Carrying around Maybe Machines in the Snow at MIT

At about 3 am, as it often did in those days, philosophy started to creep in, and I started to wonder if the code I was writing was “aware” of itself? In a sense it had to be, and this awareness was coded into the program itself…otherwise it couldn’t judge which program it was overwriting! It might overwrite itself!

At about 4 am, I realized that it was possible for my program code to rewrite itself! Normally a program written in a language like C or BASIC or Java won’t modify itself. It hadn’t even occurred to my young programming mind that this could be done, but with assembly code it was just like changing any other value in memory.

I would later realize it’s a fairly well studied area of computer science called self-editing programs. The only reason it’s possible, I realized was that at some level, the Von Neumann architecture of both data and code (which are represented as numbers/codes in memory) are stored in the same way in memory.

I quickly re-coded my program so that it would simply write a zero as the next instruction for both programs — editing my own program and the opposing program. Since my program had to be in memory while it ran, it would be swapped out of memory when the other program ran. And if I had overwritten the next instruction for the opposing program, the only thing that program would do is “end”.

Can a program overwrite itself? It turns out it’s not that hard!

Contrary to my original worry, my program wouldn’t kill itself — I was overwriting the PC (or the program counter), or rather the location the PC pointed to in memory. The next time my program run, the PC would increment and the next instruction would just start running. The other program, which had to not be running while my program was running, would of necessity pick up at the location the PC pointed to for itself.

By doing this, in two simple instructions, my program was about as efficient as it could be, and the rest was gravy — I could make the next instruction add something like “rizkill wins”.

In fact, the little program (yes I called it “rizkill”) won the programming competition, killing all of my classmates poor programs who all took way more than 2 assembly code instructions to achieve anything.

Then on a lark, the TA’s decided to run rizkill against the graduate student TA’s programs, and though it handily defeated most of the TA’s programs, there was one clever TA who had used the same trick, so it was a tossup which one of our program would win any given session (astute observers will note that it simply depended on which process was running first).

I was declared the winner from the undergrads and won a signed copy of Hackers, by Stephen Levy, as my prize (unfortunately it was signed by our professor, Stephen Ward, a well-known computer science guy, though I would’ve preferred to have it signed by the author, Stephen Levy, but that’s another issue altogether!).

Self and Copies of Self

You could argue that neither version of my program was really “self-aware”, even though I would argue that it was definitely “self-referencing” which is not quite the same thing. But it certainly got me thinking about other software programs that were “self-referencing” and whether this was a precursor to a kind of “self-awareness”?

You could program a piece of software to do a virtual version of Gallup’s Mirror test — to see if the code would recognize some mark placed on itself. How? In fact, since I had written a self-modifying program, I could’ve used various techniques for the program to “check itself” to see if it had been modified, using a virtual “mirror” of sorts.

Most likely, a checksum or some type would do the trick, or it could have a copy of its own code somewhere to compare itself to.

There is a whole class of programs in computer science that “reference” their own code — quines are self-replicating programs which spit out a version of its source code as its only output. Douglas Hofstadter, who we will talk more about later, defined the term “quine” in his classic work, Gödel Escher Bach (or GEB for short), although the ubiquitous von Neumann was among the first to talk about these types of programs.

Can a program output a copy of its self?

Programmers will recognize that a “quine” would be a program which has its source code in a string that can be printed out.

There are many examples of quines on Wikipedia and elsewhere. A simple one, written in python is: (for more, see https://en.wikipedia.org/wiki/Quine_(computing) )

s = ‘s = %rnprint(s%%s)’

print(s%s)

Of course there are many variations on the simple quine– most computer programs that replicate themselves would replicate their object code which doesn’t require having the source code available in a string (as shown above) or de-compiling the code. This is called metamorphic code, which puts out some “version” of itself, usually an object code version.

We all know of self-replicating programs, which are commonly called “viruses” because of their behavior of copying themselves onto your machine (and on to other machines) without your knowledge.

The Mirror Test for a Computer Program

Would it be possible to write a program that could pass a “virtual version” of the Mirror test? I.e. if you placed a mark on the program (altering it in some way), could you have a program that would be aware of it?

It would be like writing a program that basically does this in every statement- it would be much harder to do this in a multi-program environment like we were running, but let’s ignore that for now.

A robot looking in the mirror

Some simple pseudocode:

//at beginning of the program

Checksum=X ;(this would probably need to be stored on disk somewhere, let’s ignore how the program would calculate its own checksum)

//later on, perhaps every so often:

Y = getCurrentChecksum()

If (X != Y)

Print (“I have been modified …. My pretty!”)

Else

… // go on with whatever the program is meant to do

Checksums are used mostly for error detection, particularly when downloading large amounts of data or code. In fact, if you download Microsoft office let’s say, you might be downloading over 1 Gig of data — it’s frequently broken down into smaller chunks, each chunk with a checksum.

OK so theoretically you could write a program that was aware of its “past state” and whether it has been modified, but this really doesn’t seem to rise to the level of “self-awareness” the way we think about It in Artificial Intelligence.

Recursion, Self-Referencing, and Context

Let’s return to the question at hand: Are any of these programs “aware” of themselves at some level? Or are they just “self-referencing”?

Getting back to my computer science education at MIT, I realized that we started learning self-referencing programs pretty early on.

It turns out that our introductory software class at MIT, 6.001 (“Structure and Interpretation of Computer Programs”), unlike at many other universities, used the language of Scheme (a version of LISP), which had almost no syntax/structure or pre-defined commands at all compared to most programming languages.

Unlike freshmen who were learning to program in practical languages like C (at the time, and java in the future) at other universities, we were writing heavily recursive programs right off the bat in a language that almost no one used (and that I haven’t needed again in my 25 years of programming!).

Still, this lack of structure made it essential to understand recursion very early on.

Recursion is when a program calls itself to complete a smaller version of the problem and is a pretty standard technique used in computer programs. Let’s say you want to raise 3 the 4thpower. You express this as 3 * 3 * 3 * 3, but you can also express it as 3 * ( 3 raised to the 3rdpower). In the parenthesis is a smaller version of the exact same problem. And that smaller problem could be expressed as 3 * (smaller version of the problem, or 3 raised to the 2ndpower).

In pseudocode, you might use the following code snippet for a simple recursive approach to calculating powers or exponents of some base value:

Function recursiveExponent ( int base, int exponent) returns int

{ If (exponent == 0)

Return 1;

Else

Return (recurviseExponent( base, exponent-1);

}

Is the program aware of itself? It is clearly calling itself, but does it know it is calling itself? Or is it just calling another program?

Recursion works in a loop and descends until it reaches a base level that returns a concrete value. In this case, any number to the 0thpower is 1, so that’s the “base” of the recursion.

If we took out the base line of code, we’d just have a function calling itself:

Function recursiveExponent (int base, int exponent) returns int

Return (recursiveExponent( base, exponent-1);

You would have an infinite loop — the exponent would keep descending becoming a negative integer. Leaving aside the mathematical interpretation, on most computers this wouldn’t go forever, depending on the operating system you were running it on, it might reach the limits of how much memory was allocated for the program. It would get the dreaded stack “overflow” error — this is an artifact of how programs are run today that allows for recursion, a logical “stack” (which is a first in-last out type of data structure). Each time a new function is called (whether recursive or not) a new “object” is created on the stack which becomes the “context” for this particular running of the function.

If the recursive program goes on forever, it would eventually use up all the memory required for the stack.

These are specific to recursive programs because an iterative version of the same program, written with a loop wouldn’t keep creating memory on the stack — it would just keep running.

An iterative version of the same program might run forever (or at least up to the exponent), but doesn’t have any self referencing going on:

Function iterativeExponent(base, exponent)

{int result = 1;

While (i=0; I <=exponent; i++)

Result =result * base;

}

This might eventually cause problems if “exponent” is unusually large, as the value of “result” grows with each iteration and in reality, variables have size limits.

But I digress. Back to the recursive program.

However, suppose we changed the program to call a different function (that maybe had a similar code base):

Function recursiveExponent ( int base, int exponent) returns int

{If (exponent == 0)

Return 1;

Else

Return (recurviseExponent2( base, exponent-1);

}

Now the program isn’t calling itself but is calling another function.

Does the program know the difference?

Now you could say it is neither self-aware nor self-referencing. Still, the second program might call the first and then you have a (slightly) more complex recursive system which is still self-referencing, so the problem remains — is the system that is self-referencing, at some level, aware of itself?

A Diversion: Recursive Chess and how I (finally) solved the 8 Queen Problem

Recursion is a pretty powerful technique, though it’s more resource intensive than an iterative approach, and it turns out most problems can be solved by either approach when you really think about it.

The real power of recursion is that it teaches the idea of “abstraction” or “black box” of a smaller problem — rather than figuring out the whole problem you let “someone else” figure out a part of the problem and then simply “add your part of the solution” on top of it with a simple calculation.

What makes it recursive, rather than just calling someone else to solve the smaller problem, is that in recursion that “someone else” is really just yourself. It would be like cloning yourself and asking this “smaller version” of yourself to solve the smaller problem and hand you the solution.

When I was in high school learning programming, I didn’t really understand recursion or use it much. This was primarily because I was using Applesoft BASIC, and while loops are easy and were taught in those days early on, recursion is not so easy in a procedural language rather than an object based language.

My friend Gus (who was on the computer programming team at the science Olympics with me), and I had stumbled onto a book of mathematical problems that could be solved by computer programs (this was pre-internet, and we had to actually go buy the book, or get it from the library!). One of their exercises was the following problem, known as the 8 queens problem: which had stumped our rapidly growing but still immature computer programming skills:

A chessboard has 8 rows and 8 columns (64 squares) — it’s possible to arrange 8 queens on this chessboard such that no queen is able to kill any other queen. Write a program to find one configuration. Extra Credit: Write a program to find every configuration.

Today you can do a quick search on the internet for various solutions, with a whole wikipedia page dedicated to the 8 queen problem: “this is a a good example of what’s called a simple but non-trivial problem”. The brute force method shows there are 4,426,165,368 (i.e., 64 C 8)possible blind placements of eight queens. There are exactly 92 solutions to this problem, and it’s possible to simplify by ruling out configurations which have queens on the same row or column, so theoretically you should be able to get there without having to go through very single possible placement.

A solution for the 8 queens problem

But in those days, we couldn’t look it up on wikipedia, and had to dive right in. It doesn’t seem like a particularly complicated problem at first — you just write a loop within a loop to figure it out. Or so we thought. When Gus and I tried to solve it using simple iteration it got hairy real fast, or became so computationally intensive that the solution would take forever using Applesoft BASIC. We didn’t know about stacks and frames of context that are an essential part of recursion.

When I went to MIT that fall, and took the first programming class, 6.001, (and were doing recursion up the yin-yang), I realized that the 8 queen problem could be solved by a smaller version of the same problem: a 8×8 chess board can be arranged such that 7 queens can be put on the chess board such that none can attack each other. If you could solve that problem, then you could just put the 8thqueen in the empty column/row. The 7 queen problem of course could be solved the same way by solving the 6 queen problem, and so on.

My memory is a little fuzzy on the complications that arise when you do this, but I do remember going home that summer and showing Gus my solution (which only solved the problem of finding one configuration, rather than all), we were both convinced that recursion was the most powerful way to solve any problem in computer science! (NOTE: Gus’s name changed to protect the innocent).

Next Part, Part 2: Self Aware Code vs. Data and Strange Loops and AI (coming soon!)

If you liked what you read, please clap 20x and give me a follow on Medium.


Can Code be Self Aware? Musings on Studying Computer Science at MIT (Part I)? was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.

Read about withdrawable no deposit bonus and make profit trading now

Babel: Your first code transformations

Forex stock trading

In this tutorial, we will do some basic transforms to some source code, using Babel. Many people find the idea of transforming code scary, and unapproachable, but utilising the power of AST’s (abstract syntax trees), and a set of tools provided to us by Babel, most of the heavy lifting is done for us.

Note: The examples in the article will include code specific to react, redux, and react-redux, but familiarity with these libraries is not necessary for this tutorial.

AST Explorer

There is a website called AST explorer, that we can paste our code into and get an AST representation in many formats. This website will be useful for quickly viewing code in AST format, and will be useful when ascertaining which nodes we need to target.

Basic insertion

Below, we have a file reducers.js with a couple of imports, and a default export.

For our first transformation, lets add a new import and export to reducers.js. We’ll add mice. To do this we need to:

  1. Parse the code to AST format.
  2. Traverse the AST and find nodes adjacent to the nodes we want to add.
  3. Insert the new nodes.
  4. Generate the new code from our AST.

Here’s how we achieve this:

Let’s break this down. First of all, we call the parser on our code which transforms it from a string to an AST.

const ast = parser(file, {sourceType: 'module'});

Note, since we are using ES6 modules, we need to let the parser know with {sourceType: ‘module’}.

Next, we use traverse to find our relevant nodes. How did we know we needed ExportDefaultDeclaration and ObjectExpression? This is where AST explorer comes in handy. Below we’ve pasted our code in on the left panel, and on the right we can view the AST representation of our code.

We have 2 ImportDeclaration’s, so traverse will help us iterate over them and save the last one into a variable called lastImport. We then use insertAfter to insert the new import after the last import.

// this file is made up of snippets from transform.js
let lastImport;
traverse(ast, {
ImportDeclaration(path) {
lastImport = path;
}
const importCode = `import ${reducerName} from './${reducerName}'`;
lastImport.insertAfter(parser(importCode, {sourceType: 'module'}));

To add a property to the default exported object, we will use traverse to iterate over ObjectExpression‘s. We only expect there to be one, so we will save its properties using properties = path.parent.declaration.properties. We can then push our new mice identifier into the properties array.

// this file is made up of snippets from transform.js
traverse(ast, {
ObjectExpression(path) {
properties = path.parent.declaration.properties
}
})
const id = t.identifier(REDUCER_NAME)
properties.push(t.objectProperty(id, id, false, true))

You might be wondering what t.objectProperty(id, id, false, true) is? Good question. Since the mice alone does not have enough context, we cannot just call parser on a string of code like in the last example. Babel would parse it as an Identifier instead of a Property, leading to issues when re-generating the code. To solve this, we use the @babel/types package to help the parser understand what we have added to the AST.

Now that we have updated our AST, we can call generate on it. This will transform the code from an AST back into code in string format. We run prettier on the string, and we end up with code like below:

Wrapping a variable in a function

Next up, we will learn how to use replaceWith to wrap an identifier in a high order component.

Essentially, we want to go from:

export default Sports;

to:

const mapStateToProps = ({ volleyball, soccer }) => ({
volleyball,
soccer
});
export default connect(mapStateToProps)(Sports);

This consists of two steps.

  1. Get the name of the default export (identifier).
  2. Replace it with a wrapped version of itself, and the mapStateToProps function.

Here’s the file we will operate on:

And this is the code to transform it:

First thing to note, since we are parsing JSX this time, we need to let the parser know:

const ast = parser(file, {sourceType: 'module', plugins: ['jsx']});

This time we use traverse to iterate over the AST and find the ExportDefaultDeclaration. Once we’ve found it, we store the name of the variable being exported.

const declarationName = exportDefaultPath.node.declaration.name;

Since we know the name of the exported variable, we can now replace the entire default export with new code:

exportDefaultPath.replaceWith(
// new code...
)

Having transformed the AST, we can run generate and prettier on it, and write the file to disk. We end up with:

Summing up

Learning how to manipulate AST’s will open up many new possibilities to you. With AST’s you could write:

  • Linting plugins
  • Babel plugins
  • Codemods

I hope this tutorial will set you on your way to exploring the world of AST’s!


Babel: Your first code transformations was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.

Read about withdrawable no deposit bonus and make profit trading now