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.

Distilled Self-Help or Who is helped actually?

Hello everyone,

Today I want to write about interesting and hot topic these days as Self-help movement. And the main goal of this post is to try to figure out the useful parts of it.

The traces of the self-help moment are dated back to 19th century when the book of Samuel Smiles ‘Self-Help’ was published in 1859. Actually traces are even older if we consider works of ancient philosophers.

What really matters though is not the origins but the evolution of self-help movement and how it came to be as it is today when there are legions of self proclaimed self-helpers helping in most part enrich themselves.

But there are a number of real pearls, for my opinion, even in this sea of self-help chaos.

I think that any approach be it self-help or any other kind must have a scientific basis and must not be taking seriously without testing it first.

So according to this guideline I want to describe a number of self-help authors and their books that may be of use to you.

It is possible to split self-help movement into a number of intersecting fields. For example field that has its roots in popular psychology, pseudo-science, coaching, general literature. I`ll describe them in more details below.

I want to start from coaching field as it is called today. One of the prominent figures in this filed was Dale Carnegie who started his course on public speaking back in 1912. Dale Carnegie was a teacher and a salesman by education and used his skills to promote public speaking and sales courses becoming in effect the first coach of modern kind.

His most famous book ‘How to Win Friends and Influence People‘ from 1936 is still readable and useful. Though this book hardly may be called scientifically based it still has useful advise that may help you in everyday communication with people. Dale Carnegie leave a heritage of Dale Carnegie Training that flourish to this day.

Next one worth mentioning who was a contemporary of Dale Carnegie was Napoleon Hill. He started as a journalist that happened to meet with one of the richest persons of his time Andrew Carnegie (not related to Dale Carnegie). Mr. Carnegie  challenged  Napoleon Hill to interview prominent people of his time and figure out what made them successful in life. As a result of this challenge came a number of books by Napoleon Hill and most famous one was ‘Think and Grow Rich‘ from 1937. This book is a collection of story based advises and wisdom. So it has no science based roots still there is a zest to it that may be useful.

Another person that also comes from sales background was W. Clement Stone. He collaborated with Napoleon Hill on one of Stone`s books ‘Success Through a Positive Mental Attitude‘. Main point to be taken from the book is this quote ‘Every great man, every successful man, no matter what the field of endeavor, has known the magic that lies in these words: every adversity has the seed of an equivalent or greater benefit.

It seems that real burst of self-help movement was ignited by Earl Nightingale that had a radio program on self-help topics and appeared on TV. His well known master piece is the ‘The Strangest Secret‘ that was no more than motivational pep talk to salespersons at the company Mr. Nightingale worked at the time. The main point to be taken form his talk is this ‘Success is the progressive realization of a worthy goal or ideal.’

Next person who happened to start his career as salesperson at Nightingale-Conant Publishing was Brian Tracy. Mr. Tracy has produced wealth of content throughout his coaching career and the most remarkable for my opinion is ‘Maximum Achievement‘ book from 1993. If you`ll ignore pseudo-science subconscious mind stuff the book still has some insights and quotes from W. Clement Stone etc.

[Attention here comes opinionated view]

As you may have noticed there is a strong relationship between self-help courses and sales. I mean those who teach how to succeed are trying to sale there courses, books whatever in the first place. The content though sometimes important is on the second place.

There are many more self-help authors these days but those above stood out.

A few words on pseudo-science filed. I tend to put there Neuro-Linguistic Programming (NLP) though it has interesting basic assumptions, The Secret movement and the like.

And last but not least is the field of general literature, I`ll mention Richard Bach`s ‘Illusions‘  and Paulo Coelho`s ‘The Alchemist‘ as worth glancing.

OK.

Thanks for investing your time in reading this.

I hope it was worth it.

Till next time.

Choose your track to SW development

Hi everyone!

Have you ever thought of what are various resources for learning programming?

If your answer is yes than this post may help you find resources that most fit you. They may help you get an experience for career or hobby in programming.

As a person who is in the middle of getting programming experience I looked for and found a number of most useful resources for my opinion.

It is possible to differentiate those resources according to price, depth of material and its level etc.

At first I want to describe them in a general way and then I`ll provide a table that will summarize those descriptions.

One of the important criteria that is taken into consideration is certainly a price of learning. There are a number of possibilities to learn courses on programming for free.

1. Udacity is one the interesting sources for learning programming. All of the courses there are for free. All of them are taught by people form academia. Courses rated according to learner previous experience such as beginner, intermediate and advance. Most of them use a web enabled Python language as a basic mean of implementing programming exercises.

One of the key features of Udacity courses is that they are highly interactive with lots of quizzes and every course has a number of programming assignments for each lesson.

In addition to free courses Udacity now provides an opportunity to learn a number of them for a fee with dedicated coach that may help to achieve better results and this path has formal certificate that is given after successful project completion.

Brief summary for Udacity:

  • free and not so,
  • certification courses for a fee,
  • detailed academic level courses,
  • highly interactive,
  • transcription for various languages,

2. Next one is Khan Academy. This resource has courses both on computer programming and computer sciences for free. Those courses consists of video material with no assignments or quizzes but with interactive web enabled Python programs for hands on experience. It is unknown to me if they are taught by people with academic background.

Brief summary for Khan Academy:

  • free video materials,
  • no assignments,
  • interactive web enabled Python working programs,
  • transcription for various languages

3. Coursera  is in some way as Udacity but different. Most of the courses there are free but there is a possibility to get a certificate of completion for fee. It has for my opinion the highest academic level out of resources described earlier. It have learning tracks with built-in courses according to syllabus. It has quizzes and assignments. But less interactive than Udacity courses are. Courses are taught in various languages.

Brief summary for Coursera:

  • free courses and not so,
  • certification courses for a fee,
  • highest academic level courses,
  • courses are taught in various languages

4. Udemy also has free courses and ones for a fee. Some of them taught by academics and some not. Courses for a fee consist of video material for a lifetime usage. It also has a certification track for a fee.

Brief summary for Coursera:

  • free courses and not so,
  • certification courses for a fee,
  • lifetime usage of material for a fee course

5. Pluralsight is not free at all but has a wealth of programming courses that taught by developers. It has monthly or annual subscription. There are two types of fees. “Basic” and “advanced” one. For the basic you`ll get video materials for the period of subscription and for the advanced one you`ll be able to get code snippets, presentation and certificate. It is possible to view videos also on mobile. There are no assignments or quizzes whatsoever.

Brief summary for Pluralsight:

  • courses for a fee taught by developers,
  • monthly or annual subscription,
  • certification for “advanced” fee,
  • no assignments or quizzes

So for the summary of this all here comes a table

Resource Basic content for free (Yes/ No) Advanced content for a fee (Yes/ No) Taught by (academia/ developers/ other Interactive(Yes/ No) Localization(Transcription/ Language support)
  1. Udacity
Yes Yes, coach, certification Academia Yes, highly English, Transcription for a number of languages
  1. Khan Academy
Yes No Other Partially Transcription for various languages
  1. Coursera
Yes Yes, certification Academia Partially Taught in various languages
  1. Udemy
Yes Yes, certification Other No English
  1. Pluralsight
No Yes, certification Developers No English

That`s it for today.

See you.

Java Code Geeks