Updated README YOOOOOO
Got this bizzle up and goin again.

Had a slight hiccup with sql (connection string, db didn't exist).
I included a SQL problem-solution.txt file describing this.  Would be
better to have some sort of issue tracker, but this is good enough for
now.  Anyway, back up and lernin pretty quick: 1 day (couple hours).  That
includes environment and everything.
-Reminds me...if you have a problem with the unit testing projects,
be sure to install the silverlight 4 toolkit, that has the unit testing
framework in it.

-Bill
Adding functionality to auto save auto-translated phrases to DB.

-So what I did was make it fire an event to aggregator when autotranslate
is used.  Then, I set up a listener for that event that saves
autotranslated phrases into DB.
-I haven't tested this yet.  I'm scheduled for a break (scheduling myself
now...tryin to survive biotches).

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Tweaking/fixing auto save auto translate stuff.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Working on editing Question phrase when studying song.

-Fixed bug when studying multiple MLTs.  Changed a foreach to a for loop.
Apparently the foreach was having problems with the asynchronous nature
of the call.  I had a foreach MLT in MLT list, do stuff that was async,
and it wasn't going through the list properly. Changing it to a for loop
fixed it.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Gott im Himmel jeez trying to get this editing working properly.

-Tired, think I'm messing up more than I'm fixing. The question and
answer PhraseEdits being supplied to the StudyViewModel are not the
ones in the DB.  Concretely, if I have a question in French "je suis"
and it auto translated (and auto saved) the translation with phraseedits:
{ id = 1, l=french, text="je suis" } & { id = 2, l=english, text=i am }
PhraseEdit with id 1 is getting passed to the viewmodel with a different
id like id 3.  So when I go to fetch the phrase edit from the DB by id,
it aint findin it and I apparently have not created any plumbing to fetch
a phraseEdit by its text property.  So I'm going round and round with
async nonsense (I hate that I couldn't use yield statements and shit
to get async better, but the ms library didn't work with the SL library,
so I have callbacks all over the place if I want to do any one little
thing...only other option is to make some UoW object for every little
which is also a pain in the ass to maintain).  Anyway, I'm going to step
away from this and look at it again tomorrow.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Still implementing Edit Translation stuff.

-Slept on it.  Decided to make phrase retrievers.
-First made one that
searches translations for a phrase pairing
(TranslationPairSearchRetriever/Criteria).  But then I realized that I was
needing this with a Phrase reviewer viewmodel, not a translation review
viewmodel.  So I didn't do any testing with these classes.
-So then I made Retriever that just gets PhraseEdits from DB given
a list of PhraseEdits as the criteria (ListOfPhrasesCriteria). Using this,
however, I've found that I need to rethink what I'm doing yet again.
-So, I was thinking that the autotranslate should autosave the translations
to the DB, as I didn't think that it would be a problem with the partial
phrases created when I do the segmentation of the lines for study.  But
now I'm not sure.  I need to write this out more carefully somewhere...I
think I'll do it in the wiki.
-I also was getting a problem with PhraseList.GetAll().  It was locking up
the tightloop User.ChildFetch<> when loading all of the PhraseEdits that
populate the PhraseList.  So, I took out the loading of the user object
in the PhraseEdit.LoadFromDtoBypassingPropertyChecksImpl method. This could
have more profound effects, but so far I haven't seen any.
Tweaking edit  stuff still.

-Well, I've hacked my way through to getting to a different problem.
Now, when I edit the question, it does indeed save the phrase, but it is
effectively creating a duplicate copy of the phrase and saving it. The
translation itself is retaining the original phrase text.  At least
it's a different problem.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Still working on edit implementation.

-Found another bug in TranslationCreator.  When creating translations,
it doesn't reuse existing phrases.  Will fix this next.
-AutoTranslateEventRecorder didn't reuse existing phrases.  Fixed that.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Weee dogey that editing is somewhat done.

-Can edit the Question only now when studying a song, only using the
manual VM.
-Still need to add this same functionality to the Answer +& timed VM.
-The check for inserting/updating a phrase is now in the Ef PhraseDal
(not in the mock).
-Need to add a test for this in the PhraseTests.
-Still is a little slow, but I'm continuing not to worry about this though
it will be more and more important pretty soon.
-Along those same lines, I really need to have a consistent way of telling
the user that the program is thinking and disabling the entire view,
as well as a thinking in the background area.  Maybe a viewmodel in the
shell specifically devoted to this.  This is especially important, since
the future of this program will have this thing constantly thinking and
doing stuff (never just sitting there).

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Can edit Answer somewhat now as well as Question.

-Having problem with duplicating and not saving phrase properly similar
to when doing the question.
-Need to change this stuff to another view model whose responsibility
is to simply contain a PhraseEdit and do this editing.  If the translation
object is in memory (or the LineEdit for that matter), these will need
to know that a phrase they contain has been updated.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Can Edit Question and Answer in both Manual and Timed ViewModels!!!!!

-This is awesome.
-Absolutely need to have some kind of indicator and/or inhibitor for
marking something as busy.  Maybe a busy listener that listens for busy
events published, and enables/disables views dynamically.
-I did not make a separate control/viewmodel for phrases that allow
editing.  I may do this the next time I need it.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Beginning "Thinking"/update messaging.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
I've attempted to address the deadlock issue with fetching the user.

-I've put this in a for loop that tries up to
EfResources.MaxDeadlockAttempts.
-I have not tested this very much. I need to get to bed though.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Ahh fun. Trying to futz with updating knowledge before aggregating text.

-My program is choking on trying to GetPercentKnown() for lines.
-Introduced a timeout for a complicated async tight loop. Gonna have to
figure out how to do this right, cause right now it ain't. It takes about
1.5 minutes to initialize for a study session now, and that just isn't
right. And this mostly stems from my unweildy crappy async structure
that cascades Initialize for everything. I'll have to think on this awhile
to come up with what to do.
-Possibilities include: More unit testing for the advisor structure.
-Restructuring the study partner (as in another complete overhaul) in a
smarter way that anticipates long-running parallel processes. IOW,
when it initializes for study, what is the data that it really needs,
and just go for that at first. Then, in the background, prepare for
future studiers.
-Got to get a better grip on the long-running async pattern I think.
Just a couple of async processes I've done before, but this is a whole
new level of async that I need to manage.  Aww yeah.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
I've gotten around the thread lock issue.

-Referring to the locking up when trying to do a tight loop using
ThreadPool and a WaitOne. Locking up the whole program. It was in
DefaultPhrasePercentKnownAdvisor. I had it looking up individual words
in a phrase in a tight loop, and this was for some reason blocking the main
thread. It's possible that I could ahve started it on a background worker
thread and this might fix the problem, but for now, it's not an essential
piece and so it just returns 0 pct known if it doesn't know the exact
phrase. It doesn't try to sum up the individual component words pct known.
-A note with usage. It does not form belief about aggregate phrase texts.
It only forms a belief (ie it only stores that it knows a phrase) when
that phrase is an entire line text. I had forgotten I made this decision.
I think it's a good design point, but I could change this in the future.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
It be working! FTMP! heh. Got the Thinking System up somewhat.

-Moved the thinking event stuff to History project. This makes more sense,
and pretty much every project will be referencing history, so any project
can now tell the application as a whole about (and listen for) the
thinking/thinked events.
-Figured out my bug in my percent known (not the waitone problem of
earlier). The DefaultPhrasePercentKnownAdvisor was choosing the earliest
belief about a phrase, instead of the most recent.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Updated journal in README	file.


Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Took out manual DEBUG breakpoint for troubleshooting sql command lock

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
InProgress: AddUser functionality.

-Does not compile. I need to get to sleep. In the middle of making
UserInfoCriteria and a NewUserCreator class in business project.
-Removed Investment paradigm stuff. Old stuff that was dead weight. It's
in version control if for some reason I want it. I doubt it.
-Added two business rules to CustomIdentity class: MinUsernameLength
and UsernameRegex validation.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>