AI Core Updates AI Core Updates

Project Updates

18/08/2011
Error Handling
Changed the way in which errors are notified to the admin.
The old version of the AICore used to throw an error and would then stop the entire program, until the admin "okayed" the error, to enable to the AICore to continue communicating with users. The new version of the AICore throws the same error, but continues to run. The admin can then "okay" the error, in his own time, while the AICore continues to run.

Business Contacts
I have now begun emailing various mentors to advise me on how to move the project forward and turn it into a commercial venture.

AICore now has 40609 lines of code





14/08/2011

Numerous Small Updates
Changed the question and answer algorithms such that if the AICore is not able to generate the correct answer by the 3rd attempt, it shall abandon all attempts to answer the current question.
Fixed the way that the AICore (GUI) shut down label appears when the AICore is shutting down.
The AICore is now able to answer: 'what is your name' type questions.

The new version of the AICore shall be uploaded within the next 24 hours.

AICore now has 40590 lines of code





11/08/2011

Questions which include Numbers
The following bug was discovered (see input/output, taken copied directly from the client):

USER >> humans have 2 legs
AI >>>> The following information has been saved:
'humans have 2 legs'
USER >> how many legs do humans have?
AI >>>> The answer to the question (how many legs do humans have?) is not known.


The answer should have been known. The bug was related to the fact that the question had a number in it.
The bug has now been fixed, so that the AICore is now able to answer the question, correctly.

AICore now has 40273 lines of code





10/08/2011

System Hangs
Some progress was made. A user was communicating with the AICore when the system hung. As the AICore was running in debug mode I found where the problem happened.

Anyway, I fixed the bugs (added locks, which were missing), so the same error should not happen.

If this solves the original error which occurred a few days ago, then the AICore need no longer be run in debug mode. The advantage will be increased speed.

 

AICore now has 40264 lines of code





09/08/2011

AICore Messages Page
Some bugs were discovered in the message posting algorithm. Last night, when the AICore was transferred on the server, it wiped all the previous AICore messages (not good).

Amendments to the code have been made and the chances of a re-occurrence should be minimal.

System Hangs

Some users have been reporting "hangs". The reason for this is the server is now running in debug mode. Visual Studio has been set up with some break points and so some parts of the code have had tabs placed. When the code reaches any tab, the system, effectively, hangs. Some of the break points have been removed, but users may still suffer "hangs".

Unfortunately it has become necessary to run the server in debug mode; this is because the AICore experienced an unknown error a few days ago. Running in debug mode will help to identify any unhandled exceptions/errors.

 

AICore now has 40250 lines of code



 

08/08/2011
AICore Messages Page

Uploaded a new version of the AICore with some minor alterations.
The AICore messaging system has now come alive for the first time. Every-time the AICore server starts/finishes, a message is posted on the AICore Messages page.
Some slight cosmetic changes were made to AICore Messages page.
The way in which the AICore updates the AICore Messages page, has also been changed, so that new messages are added without the risk of deleting existing messages (which is a problem with the old version of the AICore).
Some further enhancements shall yet be made to the AICore Messaging system.

Unknown Bug
The worst bug is the one that you cannot be reliably replicated.
Unfortunately, for some unknown reason, the AICore shut down due to an error, overnight. At this point it is unknown as to what this error was. As a result, from now the AICore shall be run in 'debug mode'. This will assist me in finding the route of the errors. Unfortunately, this means that the speed of the server shall be reduced by approximately 50%; and until this error/exception is fixed, the AICore shall continue to be run in debug mode.

 

AICore now has 40243 lines of code


 




07/08/2011

AICore: Back On-line

The new version of the AICore has been uploaded onto the server and is now running.

 




07/08/2011

Cache File Memory Monitor

Created a memory monitor which monitors the memory usage by the AICore.
The administrator can now specify the amount of memory to use for file caching.
This required a lot of testing and many changes have been made to the way that the AICore uses the file caching system.

AICore: Off-line
I've also just noticed the the AICore has gone off-line...this is possibly due to an error.
In it's first live test, the AICore ran for over 14 consecutive days, without any issues...not bad.

I shall finally upload the latest build of the AICore in the next few hours. This contains some bug fixes, as well as some enhancements which shall enable the administrator to keep a better track of what the AICore is up to. The idea is to allow the AICore to work without any supervision. If it needs help, it shall notify the administrator, via email, of any problems.

AICore now has 40122 lines of code





05/08/2011

File System Space Monitor

Completed most of the work on the File System Space Monitor.
From here on in, whenever the AICore is running on low on disk space, it will send an email as a warning.
The latest version of the AICore shall be transferred over to the live server within 24 hours.

 

AICore now has 39770 lines of code





03/08/2011

Time Telling

Created a new algorithm which allows the AICore to be able to tell the time, if the user asks.
This was actually a question which a user asked the AICore a few days ago. At the time, the AICore could not answer correctly.

The new version of the Web Client has already been updated on the website, which is equipped to answer time related questions.
The new version of the AICore which allows it to tell the time (along with a host of other features implemented last week), shall be brought on-line within the next 48 hours.

The old version of the AICore has been running solid with no errors, since 24th July...which is a surprise and a relief.

File System Space Monitor
Work has begun on creating a mechanism to monitor the space left on the root drive. This is to ensure that if the AICore is running low on space, and email is sent, giving a 'low on space', warning. This should be completed within 24 hours.

AICore now has 39501 lines of code





01/08/2011

Summary Emails Feature

Created a new algorithm which allows the AICore to send an email, to notify when the server is started and shut-down.
Emails will also be sent at pre-determined times/durations, to give updates on the server status (and various indices).
Testing has been completed and the latest version of the AICore shall be brought online within the next 24 hours.

AICore now has 39211 lines of code





29/07/2011

File Backup Algorithm
Modified the file back up algorithm, so that it now checks to see if there is enough file space to copy the files to, before it performs the backup. Also, made the CopyDirectory method more robust, to prevent exceptions from occurring.

AICore now has 38827 lines of code

 


 

 

29/07/2011
Webclient Feedback Page

Made slight alterations to the Webclient Feedback Page, to allows users to give more information.
Also modified the way that the feedback email is displayed to the feedback reader.

Error Logging
Modified the Error Logging algorithm, so that the AICore will automatically send an email out, at regular intervals, with a list of errors which have occurred. No email shall be sent if no errors have occurred.

The new version of the AICore shall be moved to the live server this weekend, as some additional improvements shall be made before the live server is updated with the new version of the AICore.

 

AICore now has 38694 lines of code




25/07/2011
AICore is alive.
For the first time, the AICore is now live and available for the general public to test.

File System (Database) Backup Algorithm
The backup algorithm is now fully implemented.

AICore now has 38289 lines of code

 



 

24/07/2011
File System (Database) Backup Algorithm
The backup algorithm is now almost complete. All that remains is that the user defined parameters which the back up algorithm uses, be changable from the GUI (currently these values are hard coded and cannot be changed from the GUI). This shall be done later today and by Monday the AICore should go live.

Not long to go now.....

AICore now has 38161 lines of code



 

21/07/2011
File System (Database) Backup Algorithm
Before the AICore is brought on-line for beta testing, it is important to create some form of back up system which is automatically performed at given intervals. This will allow for a roll-back of the file system database to occur, if necessary.

I have created the basic thread which will be responsible for periodic back ups, however, I still need to implement the methods relating to this algorithm, which are currently empty.

With any luck, this should all be completed this weekend, with the AICore going live within the next 4 days.

AICore now has 37846 lines of code

 


 

21/07/2011
Notification of AICore Server Running
Created a new method which automatically informs the
web client, whether or not the AICore server is currently running or has been running recently.
This allows the
web client to inform the user if the AICore is currently offline or is available to receive connections.
The process if fully automated and does not require any manual (human) update/intervention.


AICore now has 37787 lines of code


 


 

18/07/2011
New Website & Web Demo
Work has continued on the website.
Almost all the work is being focused on the Web Demo page.

The AICore shall be brought on-line for beta testing (via the web client) within the next few days.




15/07/2011
New Website
Stuart Day and I, are gradually bringing the new website up to scratch. Many pages have been updated and soon the old website shall be superseded by the new one.

At this stage, it is anticipated that the new website shall be online within the next 7 days.

 



11/07/2011
Web Client & System Client
Made alterations to both clients, to ensure that the ip address of the AICore is handled correctly by both the web and system clients.

Updated the messaging system of the system client, such that it now keeps the user informed during the ‘connection to AICore’ process.

AICore now has 37695 lines of code




09/07/2011
Twitter Messaging
Made slight alterations to the twitter messaging algorithm.
From now on, the AICore shall first attempt to login to twitter. Once logged in, it shall post a new message.

Web Server File Updating
The method by which files are updated on the aicore webserver has now been changed and revamped.
Algorithms are now in place to change virtually any file held on the web server...this includes any files which relate to the website.
This shall make it easier, for the AICore to make alterations to any page on the website, should this feature be implemented.

AICore now has 37298 lines of code




07/07/2011
Webclient
Work continues on the webclient and is where most of my time is currently being spent. Many improvements have been made in order to bring it up to scratch. The reliability of the webclient is finally reaching a point where users shall be able to use it, without any errors/crashes occurring.

It is anticipated that the webclient shall be available for beta testing in approximately 1 week.



03/07/2011
Website & Webclient
Work continues on the website.
The problem is that the website has been designed to work on a a Linux server. The web application however runs on a Windows server.
In order to solve this problem a sub domain has been used to host the webclient; which uses a Windows server. The rest of the website is hosted on a Linux server.

The above arrangement gives the best of both worlds.

Further work has continued on the webclient - mainly on the speed of its responses. The speed of the webclient isn't as fast as the system client, but it is plenty fast enough.




30/06/2011
Website
Version 1 of the website has been completed
The website was copied from the developer’s server, however, after uploading to the our server, the website refused to work. This e-mail address is being protected from spambots. You need JavaScript enabled to view it is doing his best, to work out the bugs and get the website working on our server, as intended.

The website should be fully functional any day now.

Web Client
Over the last few days, all my time has been taken up with continued development of the web client.
The web client has been vastly improved compared to what it was a few days ago. It is now working a lot more reliably and is also a lot faster.

Development of the web client shall continue over the next few days.



26/06/2011
New Website - Sneak Preview
A sneak preview of the new website for the project can be found here.




26/06/2011
Phase 1
The prototype of the AICore is now complete and the project shall soon be moving from Phase 1 to Phase 2, where I shall start work on the commercial aspect of the project.

Watch this space...



25/06/2011
Web Client
The Web Client has had a few minor tweaks made to it, in preparation for its imminent launch.
Unfortunately, I am not a web developer (I prefer working on back end code, as opposed to front end) and as a result, although the web client is working, it could do with a little work.

The web client can be found at:
http://webclient.aicore.co.uk/

As yet, the web client is not connected to the AICore, but this should be done in the next week or so.

AICore now has 36889 lines of code


 

 



23/06/2011
Intelligent File Saving (IFS)
This is a file system, read/write performance tweak.
The coding for this feature has now been completed. Plenty of testing has been done on it and the IFS tweak has improved performance.

AICore now has 36889 lines of code




18/06/2011
Performance enhancements
During the last few weeks, the AICore has undergone development, with all focus on speed and performance.

Tasks and .NET 4.0
The migration to .NET 4.0 has meant that Tasks can now be used; where previously the AICore was limited to using simple threads, which were time consuming to code, tasks can now be coded quickly.
The use of tasks has been instrumental is allowing for major speed increases of AICore processes.

.NET 4.0 has also allowed the use of Parallel.For loops. This has removed the bottleneck created by sequential For loops.

Benchmarking
An extensive benchmarking system has been created. The benchmarking tool connects the AICore to multiple (benchmark) clients and runs a simulator on each client. This effectively stress tests the AICore, to the limit. At present, a single AICore server is able to handle/generate approximately 4000 client inputs, in 30 seconds. Faster hardware should yield a higher performance scores.

This benchmarking tool has and will continue to allow for different code to be tested for efficiency/speed. This shall help create efficient code.

Intelligent File Saving
Another performance enhancing feature which is currently being worked on is the Intelligent File Saving feature. This works in conjunction with the cache and allows the AICore to run on a slower hard disk, without a significant speed penalty. The problem with this feature is that the server needs a lot of RAM to run on. When RAM becomes a bottleneck, I shall look to create a swap file on an SSD. This won’t be as fast as RAM, however, it will be much faster than a normal hard disk.

Future performance enhancements
Going through over 30k lines of code has not been easy, but at this point, it is believed that the AICore is operating at close to its maximum speed (code wise). The next significant speed increase will occur once the AICore is programmed to use a SQL database, alongside the text file based system, currently in use.

AICore now has 36663 lines of code




17/06/2011
User information retrieval
User information (queries) are now returned using complete sentences as opposed to just key words.

For example:
User: what is my name?
AI (old algorithm): name,,abu.
AI (new algorithm): Your name is abu.

Bug Fixes
Found and fixed many minor bugs.



16/05/2011

Changed the Twitter messaging algorithm
The previous algorithm made use of TwitterVB. This did not function when the change was made to .NET 4.0.

I then tried using Twitterizer. This partially worked, however, it still required the AICore to enter a PIN. Twitter have now made it difficult for a computer to read the PIN. To this end, the AICore now posts messages in exactly the same way that a human posts messages.

AICore now has 34007 lines of code




15/05/2011

Converted the entire code from VB to C#
This was not an easy task but as there are more C# developers around, it was felt that the program should be coded in C# and not VB, in order to ensure that future development of the software is not hindered. From now on, only the C# AICore source code shall be updated.

The new version of the AICore uses .NET 4.0. The previous (VB) version used .NET 3.5.

AICore now has 33907 lines of code




24/04/2011
Twitter Messaging System Created
The AICore can now post messages directly on Twitter.
The messages shall be generated by the AICore itself, unless stated.

Twitter account homepage: http://twitter.com/#!/aicorecouk

AICore now has 26488 lines of code

 



22/04/2011
General info Records/Facts General (info) Records/Facts
Another 1000 general info facts have been created and these shall now be submitted to the AICore.
This was required in order to give the AICore an idea of how to extract general info facts automatically from sentences.
The more general info facts that the AICore has, the better it will be at extracting new general info facts.

AICore now has 26355 lines of code



11/04/2011
Email addresses, web site URLs and numbers
AICore is now able to recognise (and correctly process) web addresses, email addresses, decimal numbers and integers.

AICore now has 26240 lines of code



10/04/2011
Email addresses, web site URLs and numbers
I am currently in the process of coding the AICore such that it is able to recognise (and correctly process) web addresses, email addresses, decimal numbers and integers.

Coding of this should be completed within 48-72 hours.

AICore now has 26165 lines of code

 



08/04/2011
Automated main controller - testing complete
Everything is working beautifully.
The AICore can now be run 24/7, while it works through its tasks, autonomously.

What this means is that the AICore is now able to decide when to read web pages (given by a user/client), when to analyse sentences (word associations and word sequences, when to verify general information facts.

There are some other tricks which the AICore has already been automated for, however, these processes have not been implemented/coded. The AICore has some empty 'stubs'.



04/04/2011
Automated News Reading (new name: generic article reading)
The news reading algorithm shall now be referred to as the generic article reading feature. This is now fully tested and on its own, works fine.

Automated monitor controller
A master monitor has now been created, which shall be called the 'automated monitor controller'. This monitor is responsible for deciding which monitor should be active and which should be inactive. This shall enable the AICore to function autonomously, without any human intervention.

The automated monitor controller is currently in the process of being tested. Last night some major problems were encountered during the testing of this monitor - problems which have never been encountered before.

The automated monitor controller is currently working a lot better than it did 24 hours ago. There remains a lot of work to do in order to get the AICore to perform all tasks without human intervention (automatically).

3 monitors have yet to be introduced by the automated monitor controller  (general info monitor, topic research monitor and user specified monitor), which shall all be introduce 1 at a time. The latter 2 monitors have not yet been implemented.

The most difficult monitor to get working is the generic article reading and that is what shall be worked on over the next week or so.

GUI
The graphical user interface has had several new tabs added to it. This shall enable the administrator to control various features of the AICore. Of particular note is the 'user defined variables' tab, which contains various settings which can be altered by the user. This tab is more for the purposes of testing and shall be removed in for the retail versions.

AICore now has 25776 lines of code



28/03/2011
Automated Monitors - Priority rules

Over the last few days I have been working on coding an algorithm which decides when to verify general info,  when to research topics and when to read articles.

The general info has top priority such that if the AICore has spare time, it shall spend all its time on verifying general information.

Over the next few days I shall work on incorporating article reading and topic research into the automation.

The implementation of topic research shall not be coded in the prototype. The implementation shall be coded later on in the year.


AICore now has 25070 lines of code




22/03/2011
Automated News Reading Algorithm
During testing of the News Reading Algorithm, the AICore was asked to read a large amount of data, in a short space of time. Previously, text had only been fed in, line by line, one at a time. This was the first time it was pushed hard and forced to read so much text in a short spaced of time. Unfortunately, it turned out that the AICore was VERY slow, when analysing large amounts of text.
Each KB of text was taking over 1 minute to read. This meant that the AICore was reading (and analysing text) at a slower rate than a human. This was unacceptable.

A faster method of processing the text, was urgently required.

Sentence Analysis Subroutines
Re-coded the sentence analysis subroutines, such that each file in the word association, word sequence and sentence bank directories, is now processed by a separate thread. This took a lot of work to code, which is the reason for the 2 week delay.
The results, for processing a 55KB text file are as follows:

old sentence analysis subroutine.........60 minutes
new sentence analysis subroutine.......1 minute 20 seconds

The new sentence analysis subroutines are now working beautifully and AICore is now able to read text at a much faster rate than a human.

Work on the automated news reading algorithm shall now resume and testing should be completed in the next few days.

AICore now has 24667 lines of code




08/03/2011
Automated News Reading Algorithm
Developed and coded the news reading algorithm.
AICore shall soon be equipped to be able to read news stories, automatically, without any prompting. The process is fully automated and no user input (for the news story urls) shall be required.

The algorithm shall be completed and tested over the next few days.


AICore now has 23891 lines of code




04/03/2011
Web-page Reading/User Input Analysis Algorithm
Continued coding the web page reading algorithm. More specifically, made alterations to existing user input analysis monitor.


Bug Fixes

Found and fixed some bugs, which relate to sentence correction/parsing. These bugs came about as a result of some alterations made a few days ago.


AICore now has 23114 lines of code

 



03/03/2011
Web-page Reading
After numerous brain storming sessions, various techniques for AICore to generate web pages/articles to read (without any user specified URL), were short-listed. Eventually, the short-list was whittled down to a single algorithm. Coding of this algorithm has started and should be completed within a week. After this algorithm is completed, AICore shall be let loose on the web for the first time and shall begin to build up its vocabulary and its knowledge of sentence construction. This shall be a big step forward.


AICore now has 22991 lines of code



27/02/2011
IPAddress of AICore
Created a system such that the external ip address of the AICore can be changed by pressing a button on the GUI, which in turn updates a text file. Before, the default IP Address had to be hard coded. This is no longer necessary.

Latin Acronym Array and Object
Created an array of latin acronyms such at 'e.g.' or 'i.e.'. AICore can now parse these acronyms and understand them when they are used in sentences.

Automatic web page reading and sentence analysis.
The AICore has now reached a point where it needs to have sentences input into its database. This is so that it will understand the way in which sentences are constructed. I am now in the process of constructing a technique which enables the AICore to read web pages and analyse sentences which are held within those web pages. It shall intelligently select only those sentences, which are suitable for analysis. This shall be completed during the coming week.

AICore now has 22918 lines of code



24/02/2011
Webclient
The web client now reads the ip address of the AICore server, from a .ini file, held on the server.
This file can be updated directly by the AICore.
Should the location (external IP address of the AICore server) ever change, the the webclient can be notified of the change, quickly, without the need to change the source code of the webclient.

Performance Tweak
Improved the performance of loading information from the user_info file, in to the clientInfoHolder.

AICore now has 22606 lines of code



22/02/2011
Enhanced the capabilities of the Client Simulator

Created a new Performance Monitor
This Performance Monitor is able to measure the time it takes between generating and sending out 2 or more messages. This shall enable developers to measure the performance of any changes/additions made to the code. Where previously any changes to the code had to be measured using an additional timeSpan calculation, which had to be written into each block of code, developers can simply run the performance monitor to check for average (AICore) response generation times, over X responses, where X can be changed on the fly on the AICore GUI.

AICore now has 22536 lines of code


 



21/02/2011
MAJOR/DELAYED UPDATE

Web Client
Every effort is now being made to complete the test version of the AICore so that members of the public can have a play around with it using the web client.
As per the Road Map, the aim is to have the web client working before 31st March 2011.

New website close to completion
This e-mail address is being protected from spambots. You need JavaScript enabled to view it is kindly creating a new website for the AIProject.
The website shall have an interesting feature which allows the AICore to post its own 'thoughts', automatically.
There shall be many other innovative features to come, in the new few months.

Changed the way that user records are held in memory
Previously each user record was loaded into each client info holder. This created unnecessary replication, if 2 or more users were associated to the same user record, as the same time. The new method loads all user records into memory. The client info holder merely loads up the user record ids, associated with that particular user.

Created/coded a (general info deletion GID) algorithm
Provided the user has sufficient account privileges, by activating the GID algorithm, the user can delete general information records which are already contained in the AICore database.

Modified the general information detection algorithm, which automatically detects general info in a given statement
In order for this algorithm to work, we still need to enter more general info facts.

Entered over 300 general info facts...but this is not enough
At least 2,000 general information statements/facts shall be required, in order for AICore to learn to correctly pick out general information automatically.

Tested the general information search algorithm
Changed the way that the algorithm works and fixed a major bug.

New Logging Out Algorithm
A new specific command: Log Out algorithm has been created/coded. A user can now log out by typing 'log out', negating the need to press any buttons. This bodes well for those who want to control the AICore by voice commands.

Found and Fixed several bugs

Changed the term WordCombination to WordSequence in the entire project
This new naming system is more intuitive and meaningful.

Created a word sequence array and handler
All requests for the contents of the array are dealt with by calling the array handler and not the array itself.
This array shall be used to check word sequences of new sentences which AICore shall generate.
It shall also use this word sequence array to check if a sentence has a correct word order.
There shall be many other uses for this array.

Altered the 'word sequence write to file' algorithm
Now, every time the word sequence files are written to, we reload the associated wordSequence array, using the wordSequenceHandler.

Created/coded 'quick sentence analysis monitor'
Provided the user has sufficient account privileges, by activating the quick sentence analysis algorithm, the user can enter entire paragraphs, which the AICore shall assume as correct. No checks are made on this input and the entire input is analysed. This is a much faster way of analysing sentences.

Re-wrote/coded a major portion of the way in which AI generates a reply.
The new method now splits the process in 2 parts (in the Chat Class). Typically specific command related output is dealt with in the first process, while the more general responses are generated from the 2nd part of the process.

Completed testing of fast general info learning algorithm

AICore now has 22374 lines of code





26/01/2011
General Information Fast Learning Algorithm - completed
Typically, AICore automatically detects what is and what is not general information. This algorithm can be bypassed by entering the 'fast general information learning mode'. This mode is available only to selected users and allows the user to enter general information at a rapid rate. Statements which would otherwise not be (automatically) recognised as general information, can be 'force entered' as general information.

In order to start AICore on the road to learning, all general information shall be entered using the Fast Learning Algorithm. After 200-300 statements have been learnt by AICore, it should have enough information to correctly detect general information, automatically, with few errors.

 



22/01/2011
General Information Detection Algorithm
Completed coding this algorithm. The only thing which remains is the the calculation of suitable values for the 2 constants used in the algorithm. These constants shall be calculated after AICore holds 200-300 general information statements.

The Master Account & Fast Learning
This shall be coded in the next few days.



16/01/2011
Created new 'Multimedia' section on the website.

Created and uploaded videos, for the multimedia section.

These shall enable those interested, to gain a better understanding of what the AIProject aims to achieve. One of the videos also briefly explains the source code, giving future collaborators who wish to contribute to the coding process, an insight into how AICore works.



14/01/2011
Completed testing on the new account creation algorithm

General Information Detection Algorithm (Ver2)

During testing of the login algorithm, version 1 of the general information detection algorithm was shown to be inadequate. Specifically, the statement, "south of France" was incorrectly recognised (and saved) as general information. Over the next few days version 2 of the general information detection algorithm was mapped out is currently being coded. Some constants (used by the algorithm) still have to be determined, but otherwise the algorithm has been coded. The constants shall be determined once AICore has 200-300 valid general information statements in its database. This brings us to the next feature being added.

The Master Account & Fast Learning
Currently in the process of development, this algorithm shall allow a user, who has "Master Account" privileges to input general information, bypassing all (verification) checks which are usually carried out by the AICore, before accepting that a sentence contains bona fide general information. This shall allow a user to quickly teach the AICore facts/information about the general World, quickly. Information such as "humans have 1 brain", "red is a colour", "lions kill wildebeest", etc can all be "taught" to the AICore, very quickly.

The Master Account and Fast Learning Algorithm shall be coded over the next week or so, after which 200-300 general information statements shall be input. After this, we shall calculate suitable values for the constants, used in the General Information Detection Algorithm (see above).

 



12/01/2011
Completed most of the testing on the new account creation algorithm
Some testing still needs to be done, but this should be completed in the next week or so.

User Information Association algorithm refined
When a user inputs some information about themselves into the AICore, the information is compared against the information held in the user's login details. If the new information is in direct conflict with that which is held in the user's login details, the user is asked to verify their login details. It is now impossible for login details to conflict with user information.

Replaced 'ArrayList' with 'List'
Changed to using generic 'List', instead of 'ArrayList'. This was done because 'List' uses less memory. On a 64 bit system, the memory usage for a 'List' is SIGNIFICANTLY less than 'ArrayList'. Almost all usage of 'ArrayList' has now been removed.

Bug Fix
Some "silent" bugs were found and fixed.



30/12/2010
Create New Account
Completed the coding relating to the creation of a new user accounts. Also, found and fixed some bugs.

Extra Help Required
This program is currently weighing at around 20k lines and this is merely the tip of the iceberg. I definitely need help programming it. The number of items on the to-do list is growing. Every time I knock one item off it, 2 more spring up. The program is difficult to program, but more than that is the sheer amount of code required for the program to gain a decent understanding of the English language.



26/12/2010
Create New Account
Completed most of the coding relating to the creation of a new user account. This should be completed in the next few days.



21/12/2010
Bug Fix & Testing
Found bug which was occurring in the chat log files. Fixed the bug.

Tested the user record decrement number of associated users, algorithm. Everything checks out fine.



20/12/2010
User Record IDs
Reworked the way in which user record ids are stored. Previously, user record ids were replicated, for every single user who shared a user record. This meant identical data was loaded up in RAM. This would not have been a problem for 10-100 users, but if we had 1M users, all working off of a single server, the memory requirements would've been massive.
There is no longer any replication and details of each user record are held in memory, in a single array. All the users share access to that single array.

Using a Handler to Access the User Record Array
I also experimented with placing the array within a "handler", which makes access to the actual array, which holds the data, safer and less likely to cross thread operations. This also negates the need to place locks all over the place. All the array locks are held in a single (smallish) class, making it easier to program.

Anonymous Users
Previously, only users who were logged into the AICore could communicate with it. At this moment, anonymous users (who have not logged), can also communicate fully with the AICore.



16/12/2010
Client Connection and Chat Rules
Started coding the revised process, initiated when a client first connects to the AICore. Where previously, the AICore demanded that the user create an account and login, to chat; the revised version which should be complete before 2011, shall allow any user to chat, without logging in. The advantage with creating an account and logging in is that AICore shall remember all the conversations with users which are logged in. For users which are not logged in, AICore shall "forget" all information entered, when the connection between the client and AICore is severed.



13/12/2010
User Account Login Algorithm
Coding complete for the Login algorithm.



09/12/2010
User Account Login/Creation Algorithm
Completed writing out the concepts for the user account login and user account creation algorithms. Coding shall be done later this month.

Bug Fix
Fixed bug which occurred when the same question was asked successively and whose answer was not known.



08/12/2010
Log On Requirement
Completed concept of when AICore is permitted to communicate with the user without logging on with a valid user account.
Currently the user must log on or create a new user account before AICore will communicate with the user. This shall now be altered, such that AICore shall be able to communicate with users who do not have a user account.

Updated GUI
The GUI now has a checkbox such that the AICore can either be set to communicate with those without user accounts or be set to communicate with users only if they have a user account. The administrator shall be able to change this settings on the fly.

Coding for the Log On Requirement has also started

The next few weeks shall concentrate on altering the code for the algorithm, to negate the need for users to log on, before communicating with the AICore.



05/12/2010
Greeting Algorithm
Completed work on the greeting algorithm, which recognises a greeting when a user inputs one. It then replies to the greeting, appropriately.



28/11/2010
File Locking
Completed work on adding file locks to every piece of code which accesses files.

Bug

Removed bug relating to AICore determining which user it is speaking with.



27/11/2010
Completed work on adding array locks to every array/list.

Created a new way to lock groups of file.
Using the new method, the file locking is being recoded.
Half of all the file lock (re)coding is complete, but as there are so many files to think about, sorting out file locks, while avoiding recursion, is proving time-consuming. It is anticipated that all file locks shall be in place within 24 hours.



21/11/2010
Almost completed work on the general information record related question algorithm.
All work has been completed on this algorithm. It has been tested and is working fine, though locks to the arrays still need to be added. This shall be done in the coming week.

 



10/11/2010
A web application has been produced for testing purposes only.
This has been done using ASP and can be found here. The program only works when the server is running in London. At present this web application is not to be used by the general public and is strictly for the purpose of testing. The web application is expected to go live (for testing by the public), once the AI Core is performing satisfactorily and giving appropriate output, to queries.

Continued working on developing the database related controls, as well as the controls which relate to selecting the server type (i.e. Strong or Weak).



02/11/2010
Added some controls (and logic statements) which relate to running the server as either a 'weak server' or 'strong server'.


Strong Server = server has full use of database and internet access

Weak Server = server is run locally, with no internet connection or database access

Differences between Weak and Strong Server
Strong Servers shall be used for any client to connect. Weak Servers may be used where institutions may want access to AICore features, but do not want to allow information to leave their own servers due to security concerns. Banks are a good example. Weak Servers shall also be installed inside robots, which will use the server to generate responses. When their (on-board) Weak Server is unable to generate a suitable response, they may connected to a Strong Server (via the internet, if available) to attempt to generate a suitable response.



01/11/2010
Added some Try...Catch blocks to the GetClientMessage and GetServerMessage subs in the Client and Server. This has made the sending/getting/handling of messages between server and client, more reliable and robust.

Added a checkbox to enable/disable server message window messages.

Continued coding the General Info Record Retrieval Algorithm.



31/10/2010
Created Facebook Page
Updates shall now appear on the face book page.



26/10/2010
General Info Record Retrieval Algorithm

Started work on the the retrieval algorithm for general information (analogous to user information records).



24/10/2010
Error Log File

Created an error log (text) file system to allow collaborators/testers to better document any errors which they may have encountered. The error log can be sent back to aid debugging.

Bug correction: when a user inputs some new information about themselves into AICore, AICore throws errors due to changes which were made later, to some of the subs/functions. These bugs were corrected.

GeneralInfoRecordClass: added code for dealing with exceptions, during the creation of this object. Also, made Sub New() more robust.



20/10/2010
Cleaned up the General Info Verification Algorithm.
Cleaned up the internet browser closing algorithm.
Added some more controls to the GUI.
All the algorithms are now performing more reliably.



17/10/2010
Introduced tooltips to the GUI.

Altered the SimpleSearchHitCountGenInfoAlgorithm.
Now, if searchCount = 0, verificationValue = inconclusive. It no longer gives a verificationValue = false.
The SimpleSearchHitCountGenInfoAlgorithm now only gives verificationValue of true or inconclusive.



16/10/2010
Completed a basic database searching algorithm
All results are returned in a 2 dimensional array.



15/10/2010
Introduced MySQL Database
Thus far, AICore has been using a set of text files to store all its data. A MySQL database has now been setup as a service and from here on in shall run 24/7, allowing developer versions of AICore to access/save data from and to it. As yet, AICore does not use the database, however, this should change in the coming months.

 



14/10/2010
General Info Verification Algorithm.
For the last 2 weeks, all development has been centred on completing the basic version of the General Information Verification Algorithm. The basic algorithm is almost complete though it still needs to be tested a little.



01/10/2010
New domain name.
Domain name: www.aicore.co.uk now points to the aiproject website.
It is envisaged that the engine which the server uses shall be named AICore. This has yet to be decided, though.



30/09/2010
New host. New domain name.
Switched host from 50webs to a dedicated host with new domain name: www.aiproject.co.uk. Changed contact email address and links to reflect the new domain name.



29/09/2010
Updated the google docs 'New Collaborators, Readme' page
Added information on how new collaborators should go about installing, testing and following the code paths of the AICore program (code).



24/09/2010
Developed the general information verification algorithm
Have created empty subs and functions, yet to be implemented. The verification algorithm will take a line of general information which user types in. It identifies the line as general information. It then attempts to calculate whether or not the line of input is factually correct or not. It does this by searching its own files and also the internet. If the line of input is verified as being factually correct, this information is saved in the relevant file, with suffix: true.



11/09/2010
Continued work on the internet browser algorithm.
The user is now able to select which web browser to use. The user is also able to input new web browsers and show AICore the locations of new (as yet unavailable) web browsers. Modifications were made to the original search algorithm, to improve efficiency when opening/closing web browsers.

Continued work on the internet search engine selection algorithm.
Some finishing touches still need to be put in, which shall be completed in the next few days.

 



06/09/2010
Continued work on the internet search algorithm.
This algorithm is going to be fairly large and therefore will be work in progress. Many of AICore's knowledge will be derived and checked by using internet searches. The important thing is for AICore to be able to learn from not only the users it communicates with, but also by reading information on the internet.

Work has been completed on the first version of the basic internet search,
such that for a given search string, AI is now able to find out how many successful search results have been returned.
As yet, only Firefox (Mozilla) is supported, however, support for the other 2 (major) web browsers shall be added later this week. Also, as yet, only 1 search engine has been programmed for use. Use of other search engines shall be coded in the coming weeks.



05/09/2010
Continued working on the General Information algorithm.
Revised the way in which general information is saved. Also revised the algorithm itself. At present AICore doesn't use the latest version of the algorithm, but this shall be worked on later this week.



02/09/2010
Brainstormed techniques on ways in which to use internet searches.
Started work on the internet search algorithm.



29/08/2010
Brainstormed techniques on spell correction.
Started work on the spell checking algorithm.

 

 

 



27/08/2010
Continued working on the General Information algorithm. Created methods to update the General Information Files.
Also converted the IO Module into a class, which has helped improve the speed of the program, as measured by use of the simulator.



21/08/2010
Created GeneralInfoKeyWord file/array.
This array holds a list of words which help identify whether or not a sentence contains general knowledge or not. This list is dynamically changed as more general information is input and identified.



18/08/2010
General Knowledge (Information) Algorithm.
Started work on developing/coding an algorithm which identifies general knowledge/information from user input and then stores it in its GeneralInfo file/array. Once stored, AI shall then be able to recall this general knowledge.

 

 



17/08/2010
Sentence saving algorithm (save to sentence bank).
Completed work on an algorithm which saves sentences to file and memory. When AI is replying to user input, it will have the option of replying with a full sentence, by fitting the keywords to any sentences which it holds in its sentence bank.



14/08/2010
Improved the efficiency of the word association 'save to file' algorithm.

The previous version would first save the word associations to file and then deal with any new requests for information, from users. This was all done sequentially.
The new version completes the same task by routinely dumping all the information into a separate container and then allowing a separate thread to save this information to file, while the main program returns to the job of providing users with information, as per the ongoing incoming requests.
The same efficiency improvements have been applied to the word combination 'save to file' algorithm.

Following the efficiency upgrade, when AICore is bombarded with requests for information from users, AICore is now able to provide the user with information in less than 1s, the vast majority of the time.

The current algorithm has been tested using multiple clients, each using a simulator, to place AICore under severe stress. A human user will never be able to achieve the same speeds as that achieved by the simulator.



09/08/2010
User Record Related Question Algorithm.

A 2nd algorithm has now been successfully added. This algorithm saves a question which has been successfully answered and matches it to the user record. The question (id) is saved to the userRecord file, so that the next time the same question is asked, AICore will refer to the userRecords and the question IDs listed. This technique should allow AICore to answer unusually difficult questions about the user, which have previously been answered correctly.

 



29/07/2010
First version of the client server system is now complete.
Added new section to website - Screen Shots.



26/07/2010
The development of the client-server system has continued.
We are now using a numbering system where the messages passed between the client and server are numbered. If the server or client receive messages which are out of sync, they request the missing messages. This algorithm ensures that all messages which are sent are received by the client or server and that all messages are received in the correct sequence. The server/client system is now ready to be tested over the internet.

The client and server system is configured in such a way such that clients can be run on the same computer as the server. Clients can be run on the same network as that which the server is running. Clients can be run over the internet, in a location completely different to the server.

It is anticipated that the client/server system shall be completed in the next few days, after which the development of the language processing algorithms shall resume.

 



15/07/2010
Development of switching the AI program into a client server system has continued.
The actual client - server system is now complete. Over the next few days the processing abilities of AICore shall be incorporated into the new system.



05/07/2010
Major Update: turned AI into a client-server system, such that multiple instances of a client may be run, attached to a single instance of AI.
This allows a single physical computer to run multiple instances of AI client. This will also come in handy when we decide to run AI, over the internet. The changes made will allow the client to be run on a slower PC, without issues, while the heavy work, which is what the server does, can be ran on a powerful PC.

This client-server system offers a significant advantage over the previous "all-in-1" system, where previously, only a fast PC would've been capable of running the program - this rule now only applies to server (and not the client).

The changes which occur to the code as result of running as a client-server system, are still continuing. Many changes have already been made and at present, the client is running stable.



01/07/2010
Completed work on the first version of the simulator.
This is now allowing hundreds of sentences to be input into AI, in very short periods of time. It is also allowing us to test how AI handles rapid input.

 



27/06/2010
More work was completed on the caching algorithm,
ironing out some minor bugs. Also, increased the number of situations for the cache is used to access data from, instead of reading from a file.

Improved the WordAssociationValueIncrement and WordCombinationValueIncrement sub-routines.
This has increased the speed of AI.



26/06/2010
The sheer amount of threads being used by the program is causing problems with IO (File) operations. This was to be expected. Work has been continuing unabated to deal with the problems associated with locking and more importantly, caching. Caching is already yielding significant performance advantages. The performance differential of AI, when using and not using caching, will continue to increase, as the code increases in complexity.

A simulator has also been produced to ask AI questions.

This is purely as an aid to testing, during the development process. Developers will now be able to test their code, using a series of pre-determined questions. So, where before each revision of code would be manually tested, the simulator can now ask the same questions, in a fraction of the time, pushing AI to its limit.

 



21/06/2010
Continued development of File Caching algorithm.

Added safety measures/checks within the file caching process.



20/06/2010
Commenced development of File Caching.

The AI response times have been reduced by approximately
40-45%.



12/06/2010
Website updates.

Added logo to website.
Added 'Current Features' section.



10/06/2010
Email and website updates.

Fixed Email issue: Fixed problems with email server. Those who have emailed but have not received a reply, should send the email again.
Added 'current feature set' document.

 



08/06/2010
Website update.

Created a 'To Do List' section on the website. Associated the section with a (Google) document which lists the items, still left 'to do'. Collaborators can check this document to see what parts of the program need to be coded or are currently being worked on.



07/06/2010
Website update..

'Documentation' added to website.



05/06/2010
Website update.

Created an 'AI Concepts' (Google) document as well as an Ideas Discussion' (Google) document. All new collaborators will be required to read through these documents to get an idea of how AI currently works and how it will work, once additional features are incorporated.



03/06/2010
Website update.

'Commercial Roadmap' added to website.



02/06/2010
Website update.

Created an introductory (Google) document to explain the project to new (prospective) collaborators. All interested collaborators will be given access to the document to understand the aims of the project and the algorithms used by the current version of the software.



29/05/2010
Background reading/research.

Spent reading up on methods to improve the search routines of AI. I also came up with a better method of associating words, e.g. associating the words 'blue' and 'colour'.



28/05/2010
Initial version of information retrieval algorithm completed.

AI is now able to learn information about a user and store this information automatically. It is then able to retrieve this information and give it to the user in the form of key words.

It also has the ability to associate words with other words and assign a value to the strength of the association.

AI is capable of analysing large chunks of text.



20/02/2010
Coding has begun.



09/07/2009
Website updated.



08/07/2009
Website uploaded and brought online.