Fork GitHub repository to your blog. The workaround story.

NuPIC_IsraelUpdate: the wiki was updated. So Houston we have no problem.

Thanks to David and Matt.

NuPIC, we’ve had a problem!

‘To whom it may concern’ phrase is appropriate to start this post. But actually I know whom it may concern.

David, Pascal and Matt etc. and all other hackers who are eager to play with NuPIC Open Source project.

Those of you who want to fork numenta/htm.java repository in GitHub and then configure working Java project in Eclipse may stumble upon the problem of out-of-date Wiki. Particularly, I mean Eclipse Setup Tips.

Missing ‘Edit’ button

So far, I have no permission to edit the Eclipse Setup Tips page, so as a workaround I`ll provide the updated version of it in this blog post with updated content in green.

Updated version of the Wiki page

Eclipse Development Environment Setup

Below you’ll find a step by step procedure for setting up your development environment in Eclipse (recommended). The reason this is recommended is because it is known by this author that by using the PyDev

(Python Plugin: in Eclipse click “help > Eclipse Marketplace” in the search field type PyDev or Python)

plugin, you can run both the Python version of NuPIC and the Java version side by side!(This text was written during the “porting phase” of htm.java which is occurring rapidly and may not apply by the time you read this.)

If you have Eclipse already setup, you can skip step 1 and 2.

1.) Download Eclipse – link can be found here

2.) Setup your workspace – Eclipse’s concept for a container directory that contains project information relevant to the work you’re doing. Give your workspace a name.

3.) Install Gradle – Nothing to do with Eclipse (yet). This is a system install and you will end up installing both Gradle as a separate tool and the Gradle plugin, information can be found here .Confirm that Gradle is installed correctly by going to your “terminal” or command line and typing “gradle check” from just inside the htm.java directory. You should see the the project build and tests run and finish with a “success” message.

If instead, you get something like this

no_gradle_path

C:\Users\XYZ\Documents\GitHub\htm.java>gradle check
‘gradle’ is not recognized as an internal or external command,
operable program or batch file.

Then it means that PATH environment variable is not set. An immediate workaround is to set it with this command

C:\Users\XYZ\Documents\GitHub\htm.java>set PATH=C:\Program Files\gradle-2.4\bin;%PATH%

If while trying to ‘gradle check’ once again you`ll get following error 

gradle_jvm_version_mismatch

C:\Users\XYZ\Documents\GitHub\htm.java>gradle check
:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ‘:compileJava’.
> invalid source release: 1.8

* Try:
Run with –stacktrace option to get the stack trace. Run with –info or –debug option to get more log output.

BUILD FAILED

Total time: 53.05 secs

It means that the PATH to JVM picked by gradle is not the one used by Eclipse project.

To fix this immediately set the path to the folder where appropriate JDK version resides. In this case to jdk/jre 1.8

C:\Users\XYZ\Documents\GitHub\htm.java>set JAVA_HOME=C:\Program Files\Java\jre1.8.0_25

C:\Users\XYZ\Documents\GitHub\htm.java>gradle check
:compileJavaNote: C:\Users\XYZ\Documents\GitHub\htm.java\src\main\java\org\numenta\nupic

\util\SparseObjectMatrix.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

:processResources UP-TO-DATE
:classes
:compileTestJava
:processTestResources
:testClasses
:test
:checkwarning: Supported source version ‘RELEASE_6’ from annotation processor ‘org.openjdk.jmh.generators.BenchmarkProcessor’ less than -source ‘1.8’
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 warning
No matching benchmarks. Miss-spelled regexp?
Use EXTRA verbose mode to debug the pattern matching.

BUILD SUCCESSFUL

4.) Open Eclipse in your newly created workspace, and install the Gradle plugin. Click on the top menu bar “Help > Eclipse Marketplace”. In the search field type Gradle, and hit. Follow the directions (install everything). install this plugin, that worked well lately,  Gradle Integration for Eclipse (4.4) 3.6.4.RELEASE

gralde_plugin

5.) Import your project as a Git Project. From the top menu in Eclipse, choose “File > Import…”, then choose “Git > Projects from Git” … hit next.

Import Git

…then choose “Existing local repository”

… it should look like the following (after clicking “Add” and locating your htm.java clone directory)

… Import existing projects should already be selected. If not, select it and click “Finish”

6.) Now setup your build path. Right-click on your project root in the “Package Explorer” tab and choose “Properties” at the bottom of the menu. On the next dialog, click “Java Build Path” and then add two source directories (from the “Source” tab) to your path by clicking “Add Folder…” twice and selecting

a.) src/main/java,  b.) src/test/java, c.)  src/jmh/java as shown below:

(update screenshot with additional folder)

eclipse-5

… Add the libs/jars to the path. Right click on your project root and at the bottom of the menu click “Properties” again. From the “Libraries” tab, click on “Add JARs” – navigate to “libs” and select all the jars (hold down the key and select each and every jar). as seen below:

(update screenshot with additional dependencies)

eclipse-6

This will allow you to build the project! 🙂

To get the tests to run, from the top menu bar, click on the tiny black down-arrow to the right of the round green button with the right-facing white arrow. This is your “Run” button used to launch any Java executables. You can set up run configurations from here, but usually if you have a test class or any Java file with a “public static void main(String[] args) method in it, you can just right-click anywhere in the file or right-click the file in the “Package Explorer” and click “Run As” > “Application” or “JUnit test”.

As always, your mileage may vary depending on exact setups, but this should help 90% of developer environments to get configured correctly!

Happy Hacking! 🙂

Help needed

That’s it more or less. I think Pascal and David may help me to solve the ‘Edit’ button mystery once and for all.
Java Code Geeks

How to getExperience() ? boolean hasExperience = experience.isEmpty();

 myExperience  = null;

It seems to me almost everyone who`ll read this post faced at least once in a lifetime the problem of having no experience. And by experience I mean particularly programming experience. The enigma of no experience is an interesting phenomenon in itself, but this post is all about practical suggestions from leading developers on how to get one. Since I have no 1 – 5 years of expected experience in software development myself it is hard for me to give you an advise on such a serious topic. That is why I choose to look from the outside and incorporate in this post advices of others.

‘Open Source is the answer’ – Alex Allain, developer, author of Jumping into C++ 

Alex

Here comes my adaptation of Alex`s advice that he once gave me. In short, the question was about software automation versus development position dilemma.

Hi Andrei, if you work through all of Jumping into C++ and complete the exercises , you will know C++ well. What you won’t really have, that can be valuable for software development jobs:

1) practice working with and modifying an existing large code base (at least 10,000+ lines of code, ideally 100,000+ lines of code to really get a feel for working on a big system) – part of this will be about learning design patterns and part of it is about learning to navigate a big code base

2) knowledge of Java/ C++ libraries/etc. and how to work with them

3) experience estimating projects

4) writing specs or design documents for really large features

5) experience working on code with other people–going through code reviews, debating design points, convincing other people that your approach is correct, learning how to document your code so that other people can understand it

6) experience working with the ‘nuts and bolts’ of a software project–setting up a particular project’s build environment, understanding how to work with and debug problems with many unfamiliar tools

7) experience using source control systems like git, mercurial, SVN, CVS, etc

8) experience dealing with problems ‘at scale’ with lots of data or in the real world – needing sophisticated algorithms, debugging memory exhaustion or performance slowdowns, dealing with end user computers, etc.

Most of these other things can be developed through working on a project – either QA automation or working on open source software. To be honest, I think that working on an open source project is likely to be a better learning experience and career builder than doing QA automation:

1) QA automation is unlikely to be as rigorous as a good open source project

2) QA automation probably won’t use Java/C++ (this is OK, but if you want to use your existing skills best, it may not be a good fit)

3) QA automation won’t allow you to show people your github commits that show exactly what you are capable of

That said, QA automation won’t prevent you from also working on a separate project, so if you have a chance to do that, I wouldn’t turn it down. It should only add to your resume.

So from Alex`s advice it is clear that contribution to Open Source Community, such as NuPIC may be a good option for some of you and me, actually. It will not only help you get missing experience it`ll also help you find new friends and meet new people. Those new connections may be very beneficial to your career in the future.

‘Speaking words of wisdom, let it be.’ – John Sonmez, developer, author of Soft Skills: The software developer’s life manual

John

Following are John`s parting words to a group of Java Enterprise Edition course graduates.

Andrei tells me that all of you are nearing the “finish line” of your Java EE course.

I congratulate you on this accomplishment.

I’m sure, for most of you, this has not been an easy task.

Any time in life that we choose to better ourselves, we can be sure that we will face resistance.

By reaching the end of this course, you have proven your ability to overcome it, but the real challenge still awaits.

It is one thing to acquire knowledge.

Knowledge can be gained in a relatively short period of time, with sustained effort.

It is another thing to acquire wisdom.

Wisdom is much more elusive. It is not guaranteed.

I know many experienced software developers who have plenty of knowledge of their craft, but lack the wisdom to apply it appropriately.

Wisdom is only achieved through careful devotion and perseverance.

Wisdom is gained through the application and understanding of principles—in life, and in software development.

Seek to not only knowledge, but understanding.

It is one thing to know how to write good code. It is another thing to understand what makes it good.

It is one thing to know the answers to the questions you will be asked in your interviews. It is another thing to understand not only why the answers are correct, but why the questions themselves are relevant.

As you are out in the real world, interviewing for jobs, don’t be so concerned with landing this job or that job—many opportunities will come and go.

Instead, be concerned with learning from each experience; using each experience to increase your understanding; to grow in wisdom.

Have confidence that it is impossible to not reach your destination if you continue on the right roads. Do not be in a hurry to arrive, in due time you will reach your destination.

Do not worry what you know now.

Do not worry about passing this interview or that one.

Do not even worry about the questions you are asked when you are in an interview.

Instead, focus, concentrate on learning, on observing.

Watch yourself as you answer the questions.

If an interview went good, ask yourself why.

If it went bad, also find out why.

Consider each interview, each question a step that moves you forward.

Do not worry about the outcome, instead worry about improving each time.

If you improve each time you interview, the eventual outcome is inevitable, so what does it matter how many tries it takes to get there.

And when you do get that first programming job, you are far from done. It is only another step.

Still seek to improve, each day, each job, every time you sit down to write some code.

I wish you all the best in your journey.

Sincerely,

John Sonmez

http://simpleprogrammer.com

return hasExperience = true;

Let`s recap and summarize the advices given.

  1. Open Source contribution is the way to go at least for someone of you.
  2. Curiosity and desire to deeply understand the subject of yours with feedback from practice.
  3. Communication with other people is the key (Dale Carnegie).
  4. May the Force be with you to keep going.

N.B.

Hire yourself for your own start-up company. It`s simple as let.

Java Code Geeks

Machine Intelligence at Numenta. Contribute and have fun.

Numenta

The Dawn

For centuries people were fascinated with the brain and tried to understand how it might work. Real scientific research has started about 100 years ago. With the emergence of Artificial Intelligence movement in the mid 50th of the previous century there was a hope that the answer to the question of how to build intelligent machines was just round the corner. Today in 2015 the hopes of forerunners of AI community still remain the same as in the beginning.

New insights and the theory

Things started to change back in 2005 when ‘On Intelligence‘ the book written by Jeff Hawkins and Sandra Blakeslee provided an outline of the theory that for the first time explained the inner workings of the neocortex with a small number of biologically inspired assumptions. In the years to come predictions that followed from Jeff`s theory of the possible neocortex algorithm proved to be sound and fruitful and reinforced the theory.

Numenta

The year the ‘On Intelligence’ was published another significant event took place and that was the founding of Numenta company. The main goal of the company was and still is to implement the proposed algorithm of neocortex inner workings in practical applications.

Numenta Platform for Intelligent Computing

Very soon Numenta has decided to open source their research implementations of the neocortex algorithm which is known as Hierarchical Temporal Memory (HTM) and Numenta Platform for Intelligent Computing (NuPIC) was born. Today, hundreds of NuPIC Open Source Community members along with Numenta development team are engaged in implementation and refinement of Cortical Learning Algorithm (CLA) that is a subset of HTM.

How to contribute

There is a number of ways in which it is possible to contribute.

  1. Get involved in NuPIC Open Sources Community and help to develop next step in biologically inspired Machine Intelligence. Maybe you`ll be the one who propose groundbreaking application of this technology in new surprising fields.
  2. Play with already existing applications, such as Grok which is used by Amazon.
  3. Have fun.

Java Code Geeks

To take a programming course or not? Maybe not to.

Have you ever thought of taking programming course to study certain subject?

I had and took one. But now I have to confess it was not a perfect move.

My experience shows that programming courses do not teach you anything you cannot learn from Internet alone with forums, manuals and free courses out there.

Having completed recently a year long course on programming only amplifies my conjecture – there is no need to take such courses except of particular courses such as Pluralsight that charge only $29 a month.

The problem with programming courses that they tend to be very expensive and do not teach real programming experience instead they haphazardly covering hundreds of various topics never diving deep inside to understand them fully.

This is not the way. The best way is to start developing any application and learn the material as you need it.

As John Sonmez suggests in his blog the most easiest and affordable way to do this these days is to build mobile application.

So do not waste your time and money, and invest them somewhere else.

Take care.

Java Code Geeks

GetCalendar: Part 1.

Hi,

Even though I am facing the coding versus blogging about it dilemma. I`ll give blogging a try to inform you about the progress of the app.

Prerequisites

1. First of all I used to work on Windows and particularly I have 7. As a consequence I have IDE that works under Windows. But modern IDEs can work across various platforms. So choose what you want most. In addition, it is possible to use virtual machine to combine a few OSs on one PC.

2. There is a need to install and set Maven in order to manage project dependencies in a simple and efficient way.

3. GetCalendar prototype is built with IntelliJ IDE. To get free Community Edition go here. This decision was made on the basis of familiarity and speed of development with IDE.

4. The project  make use of Spring framework. That is why there is a need to create new Spring project using Template in IntelliJ. Spring is a modern and lightweight framework for backend development with Java.

5. This prototype will be implemented as web-service based on REST API architectural style.

6. Since this is a prototype the main goal is speed of development, that is why it is useful to have a simulation of client application that will make requests to server side. For this purpose DHC (Dev HTTP Client ) application by Filip Kolarik will be used.

The goal so far

All this is fine and great but the preliminary goal is to make the simplest working web-application that will be able to get request for current week in Google Calendar and will display it in your favorite web browser.

OK. Until next time…

Java Code Geeks

Back up and restore. Azure hidden corners.

Hello everybody, If you wanted to back up your database in Azure and then restore it you`ll like this post. It seems all the tutorials there somehow do not cover this simple way of backing databases. Microsoft Azure is one of the places to create your website and simple enough platform to manage it. But backing up and restoring database there is not so easy and intuitive. There are a number of ways to handle database (DB) in Azure. It can be done programmatically, it can be done with the help of Azure feature of backing and restoring or it can be done manually. Today`s post is all about backing up and restoring databases in Microsoft Azure cloud platform manually. Before we can proceed there is a number of prerequisites to be fulfilled. Pay attention that below software is free except of paying for database in Azure. More details about pricing here.

  1. You`ll have to create Azure account to be able to create there web site. One detail that be aware of when creating an account you`ll need to provide credit card details even when you open free preview account.
  2. Some version of Visual Studio say VS Express 2013 for Web to code your website using your technology of choice say ASP.NET MVC 5.
  3. Than create there your website and then attach to it SQL database.
  4. Next you`ll need to install MS SQL Server 2012 Management Studio Express(SSMS) or later version to manage databases.
  5. One last thing is to Link SSMS to SQL Azure to be able to import/export SQL DB manually from and to Azure.

OK. That`s say you`ve created a website in Azure. In addition you created a website in Visual Studio targeting SQL database in Azure. To deploy your database there is a need to update connection string in Web.config file in your solution.

 

Where Source=ServerName; Initial Catalog=TargetDatabaseAtAzure. Detailed explanation on how to configure this string here. In general connection string is taken from Azure.

Working with multiple migrations in ASP.NET MVC 5. Based on Pluralsight course by Scott Allen

1.  Add migration to relevant folder

Add-Migration -ConfigurationTypeNameBooks.Web.DataContexts.IdentityMigrations.Configuration “UpdateX”

2. Update development/production database (change connection string)

update-database -ConfigurationTypeNameBooks.Web.DataContexts.IdentityMigrations.Configuration -verbose

Backup and restore Azure SQL database with MS SQL Server 2012 Management Studio Express.

Backup

1. Open SSMS.

2. Connect to local server.

3. Right click on Databases folder->Import Data-tier Application

3.1 SSMS have to be configured for connection to Azure SQL

(get connection string to Azure DB from Azure)

4. Next-> Import form Windows Azure. Etc.

To restore DB from SSMS to Azure.

1. Open SSMS.

2. Connect to Local server.

3. Right click on the DB to be imported ->Tasks-> Deploy database to SQL Azure

4. Connect to Azure server.

5. Deploy SQL database.

It is good to know that today`s Azure has a new feature of DB backup and restore built-in.

Java Code Geeks

Second Language Fast – Part 1

Hello, everybody

Abstract

This post is about thoughts on topic of Second Language Acquisition. Current status of research and future developments. It is written in a popular science manner and has my conjectures that may or may not be backed by research in the field.

Not a programming language

Second language Acquisition in this post relates to natural human languages as opposed to programming computer languages.

Imagine

Have you ever tried to learn a second language and found it frustrating because of investment of lots of time, effort and even money? We all know that learning second language while being an adult takes time and effort. But despite of all investment it seems we`ll never be able to achieve the fluency and intuition of native speakers. The big question is ‘why is that?

Wouldn`t it be nice to acquire second language effortlessly and gain a native speakers` level of language control.

But this dream cannot be achieved in the near future due to biological constraints that we have in our brains and it has nothing to do with the amount of time invested in the second language learning.

Some linguistic background

We know from research that children that grow in a multilingual environment can acquire a number of languages in a level of native speakers effortlessly until certain age. After this threshold age acquisition turns from effortless to conscious practice and requires lots of time and effort. The question you may ask is what happens at this threshold age?

The answer is complicated. So far there is no clear answer. However it is known form Noam Chomsky`s research from past century that there must be some biological constraint in the human brains that is underlying this transition form unconscious language learning to a conscious one. And it has to do with brain plasticity and other unknown factors.

What other researches found

There is an interesting hypotheses by linguist Stephen Krashen known as Input hypotheses that conjectures that only written and spoken inputs are sufficient for effective second language learning in adulthood.

To be continued…on demand

Goals like a laser

 

Hello there,

It is not a coincidence that the title of this post is Goals like a laser.

Clear, detailed, focused goals may pave the way to you success like a tiny beam of laser that penetrates massive obstacles.

My thoughts on the subject are influenced by a number of authors such as Brian Tracy, Napoleon Hill, Earl Nightingale and certainly others. In addition I`ll compare some points to other areas such as Theory of Inventive Problems Solving (TRIZ).

Define a result

One of the key components in Genrikh Altshuller theory is an Ideal Final Result. And it may be seen as a goal setting. It means when you set a goal you want to achieve there is no need to constrain yourself by your current means or situation. That yourself imagine Ideal Result as though you already has your goal achieved. When you`ve defined the result what you`ve done is actually set to yourself a destination but what remains is a way of arriving there.

Write it to your heart

Here comes the advice of Brian Tracy to write this goal down. And it seems there is a wisdom to this advice since psychological studies points out goals written down is more likely to be achieved. It has to do with the mentioned in previous post Robert Cialdini`s principle of Commitment and Consistency.

Put a time constraint

Next comes a definite time you`ll set for achieving your goal or a deadline as they call it. This thing will put you in a kind of pressure you`ll need to mobilize your resources and focus your energies on your goals. There is a Parkinson`s law that says the work that needs to be done will take all the time provided. This means without a time limit it may take centuries that we do not possess.

What are the obstacles?

In TRIZ it would be figuring out what is a contradiction that prevents you from achieving the Ideal Final Result or goal that you`ll set for yourself. Well achieving a goal not always has to have a contradiction but knowing about contradictions may help you invent.

Get knowledge and find resources

Think of information, experiences, knowledge or simply put resources that you`ll need in order to achieve you goal. Consult with other people if you know that there is something you do not know.

Make a plan

Breakdown you goal into smaller goals and then compose plan with prioritized activities that you think may lead you to your goal.

Constantly Proceed

Make a habit of working on your goal on a daily basis. Review your progress and compare it to you plan. Adjust the plan accordingly.

Start now

Without any excuses get to work now because tomorrow`s activities stay permanently in the future. And it takes now to make all the difference.

That`s it for tonight,

Stay tuned.

 

Creativity explained

Hello everybody,

In summary this post is about creativity and whether or not it can be developed. That`s define ‘creativity’ as an ability to propose novel ideas, ways of doing things, new approaches to tackling everyday issues.

It is natural to ask whether creativity can be developed or is it an inborn gift that is present or not. To spare debates let’s assume that creativity though inborn to some extent can be developed by exercise and practice. This is a topic for research on its own but everyday experiences corroborate our assumption.

Here comes the question:

Have it happened to you to feel the feeling of being not the silliest person in the world but at times when there was a need to create some novel idea, image it was pretty hard to do it? Good example of this is drawing exercise when there is a need to draw on free topic. It may be somewhat painful experience since good ideas do not seem to come out.

I felt this too until in about 2005 I came across very interesting article on hard science-fiction and how it is written by Pavel Amnuel a science-fiction writer and physicist. His approach to science-fiction was unconventional. He wrote about scientific ideas as a core for any serious Sci-Fi writing. The article talked about levels in Sci-Fi ideas and methods of developing creative thinking by reading Sci-Fi and analyzing underlying ideas and trying to develop them if possible. Amnuel also mentioned well known Soviet Sci-Fi writer Genrikh Altov who had influenced him a lot and was his friend and teacher. It is thanks to Altov influences that Amnuel started to work on a Manual for developing creative imagination.

Well. What hard science-fiction has to do with creativity you may ask? And the answer is that there is a direct link between them. As you may testify yourself Sci-Fi has an ability to expand and develop our imagination by letting us imagine worlds that are non-existent. But to gain the most of it this process may be guided instead of been spontaneous during reading.

There are a number of well known methods or approaches to developing creativity if you will. Certainly you’ve already heard about brainstorming the method that facilitates generation of ideas by group of people. This method was popularized by Alex Faickney Osborn in the 1963 book Applied Imagination. About the same time period Synectics came to scene. Its three assumptions according to its inventor  William J.J. Gordon are

  • The creative process can be described and taught;
  • Invention processes in arts and sciences are analogous and are driven by the same “psychic” processes;
  • Individual and group creativity are analogous. (taken from Wikipedia)

Edvard De Bono‘s method of hats that described in his book Six Thinking Hats  is worth mentioning too. It is about thinking of problems while wearing different hats that symbolize different mindsets.

But let’s return to the beginning of the post and mentioned earlier creativity development by elaborating on science fiction ideas. I personally find this approach most interesting and engaging.

OK. What literature we may find on the subject. It happened that Genrikh Altshuller (pen-name Altov) in addition to being a Sci-Fi writer was also an inventor of a methodology or Theory of inventive problems solving (TRIZ) or ТРИЗ in Russian. This methodology description deserves post on its own but for now it is sufficient to know that Development of creative imagination is an integral part of it.

If this information is of interest to you, you may find additional information in following books. Some of them in Russian, English and Hebrew.

This one is for free and is a bit of self-promotion

And following are books that you may find as a very good reading at least

 

Java Code Geeks

Attention! Manipulation ahead

manipulation_aheadHello everyone,

  • Have you ever felt that somehow you made that decision of buying this or that faster than you wanted?
  • Have you ever wondered why you’ve seen that recent best-seller just to find out it was not so best?
  • Have you wondered why every ad looks the same and uses same language tricks?

Since there are infinite number of posts these days and we as finite creatures have finite amount of time I’ll try to be as much helpful and concise as possible in my post.

Today’s post I wanted to write quite for a long time. Its topic is manipulation, kinds of manipulation and what is the difference between influence and manipulation.

At first that’s define for the sake of this post a number of terms. That’s define an influence as an evident way of affecting a person’s behavior, thinking etc. Since this act is evident to the person that’s assume that he or she can deduce if this influence is positive or negative.

And then that’s define manipulation as a hidden way of affecting a person which is unaware of this process. This definition does not state that manipulation is negative or positive. It depends on the one who is manipulating. Though according to Wikipedia it is obvious that it is negative.

Now I want to share with you templates that are used almost at any online site that tries to sell, promote any kind of product or service. What will help us to tell that there is a manipulation ahead is an interesting and educational book by Robert CialdiniInfluence: The Psychology of Persuasion‘ first edition dating back in 1984.

In his book Mr. Cialdini describes in concise and useful way with real examples a number of types of manipulations. Or as Cialdini puts it there are 6 principles of influence that seem quite reasonable.

  1. Reciprocity – People tend to return a favor, thus the pervasiveness of free samples in marketing. For example, have you ever felt to give back when got a gift from someone meaningful to you?
  2. Commitment and Consistency – If people commit, orally or in writing, to an idea or goal, they are more likely to honor that commitment because of establishing that idea or goal as being congruent with their self-image. For example, try once to write your current tasks or goals in a notepad and later check how many of them came true.
  3. Social Proof – People will do things that they see other people are doing. For example, have you ever heard that millions of people already using this wonderful product?
  4. Authority – People will tend to obey authority figures, even if they are asked to perform objectionable acts. For example, titles have a magic force to them such as PhD in any kind of X-phaty etc.
  5. Liking – People are easily persuaded by other people that they like. For example, have you ever recruited one who you liked during the interview though he or she was not a perfect fit but you’ve got the intuition?
  6. Scarcity – Perceived scarcity will generate demand. For example, have you heard that the selling will only last for a few days (actually lasting a century)?

OK. Now that we know how to tell a manipulation that’s practice it on a real example.

1-Reciprocity

2-Commitment

3-Social_Proof

4-Authority

5-Liking

6-Scarcity

 Main point is to tell manipulation from influence and be aware that manipulation is ahead! That’s it for today.

Thanks for your time.