Thursday, January 28, 2010

Discussion - Understanding the explanations of rule-based expert systems.

The most significant disadvantage of a rule-based expert system is its inability to justify a conclusion from a sequence of rules. Due to the expertise required for a solution, the cost of a wrong decision can be costly and understanding the decision making process can be complicated, but worth diagnosing.

If we have a basic understanding of the domain we could possibly see a ‘human’ explanation but these systems are based in a narrow, specific section of the whole domain. It may be possible to attach appropriate fundamental principles of the domain expressed as character strings to each rule. We could attach this value to every rule or at least the high-level rules and store them in the knowledge base. Using the representation of the values as a guide we could closely examine (but possibly not understand) an explanation of fired rules by reviewing the textual lists created.

I gather if we could attach string values to rules, why not attach rules to rules. I may come off sounding redundant as the rules themselves move toward other rules but I am thinking more of validation rules instead of decisions. At each crossroad, the decision could possible check the outcome of the future steps to seek the best destination after X moves. An even better approach could be to spin off multiple threads that engage more rules at once and provides multiple results. If this were possible I would imagine a throttle to set the strictness of the rules allowing a less strict setting the ability to select a rule that was not the best option in the idea where a solution further down the results list. The opposite could be said for stricter results.

I fear this is beginning to sound like conventional programming. Of course all of the elements I listed may not be possible in expert systems but the one vital processing unit is based on a rule. It’s not based on how many times we can go from start to finish, if the overhead is not costly.



Negnevitsky, Michael. Artificial Intelligence:  A Guide to Intelligent Systems.. Publisher: Addison-Wesley. Copyright: 2005. 31-35p


http://en.wikipedia.org/wiki/Expert_system

Wednesday, January 27, 2010

Time to Reflect: I'm going to be a daddy!

I woke up this morning and did my routine and off to work I go. All the while my beautiful wife sleeps in and nurtures our unborn son.

What a feeling!

The idea of having a baby son is completely new to me and who knows what else new awaits this year. As a growing professional, 2008 brought a great feeling of accomplishment. 2009 brought wedding bells and it looks like 2010 will bring the pitter patter of little feet. We both are exhausted but it is worth every minute. The onslaught of online classes and scheduling and baby workshops and classes(x2) are piling and we click through them like champs. I am proud of both of us and know we are building a strong future together.

It is my utmost desire to have a healthy baby and to carry the dual responsibility with Whitney to mold the mind of someone who will look to us for direction. I wonder what I will say when he asks a question I haven't already thought of. Or even better, how will I react when he does something we consider "mildly" wrong and transform into authority roles. My stomach just squeezed tight... lol

In my whirlwind of events in the past year, I have to give credit to my wife. She puts up with my passion and shakes her head up and down when I used words like "scripts" or "twitter" or "social ___(anything)__" to affirm I said something smart. I smile back.

I am going to be a daddy soon! Ever once in a while I get a stirring feeling in my chest and it spins through me and leaves me winded. I am just now learning this is a good thing. :)

Advantages and Disadvantages of Agile Testing

excerpt from research paper - 12/7/09 |  I have chosen a segment of my paper to address Agile Testing.  If you would like to see complete paper please request by email at lucaslshaffer@gmail.com

How is Agile testing used?
Standalone Testing
Agile testing consists more of a method in which to handle the testing process and does not test a certain aspect of the project itself.  It is more of a concept.
The concept of “the team being responsible for quality” or “the whole team concept” and not just the testing team is a key value of agile methods.  Agile methods need the development team writing unit tests and/or following Test First Design (TDD) practices.  This is not to be confused as a test activity as in fact it is a mechanism to help with designing the code [1]. The goal is to get as much feedback on code and build quality as early as possible [6].
The desire for information earlier in the development phases is to monitor what the current code and build quality of the latest checked code are. This requirement leads to the use of continuous build and integration practices which provide feedback every time code is checked into the code repository and the system is built, usually on a daily basis [2].
In Conjunction with Other Testing
After the code has been unit tested, there are several testing phases, such as system, integration and regression testing.  Although these layers of testing do exist in agile projects, agile testing is integrated throughout the lifecycle [1], with each feature being fully tested as it's developed.  Rather than doing most testing at the end of all the development, testing phases are used appropriately as the developer moves along [6].

Advantage of Agile Testing
Agile testing is becoming the popular method of testing because it allows the developers to change course on a moment’s notice and keep the knowledge that the code already written before the turn, is quality code.  This is a powerful notion as the former required extensive responses from the developer and a tester.
Moving fast is an advantage of Agile testing. In my experience, the entire team has the responsibility to make sure their code is quality and no longer lean on the backs of testers if requirements change.   Another bonus is working with the customers or end users.  This occurrence that was once rare is now common place [1].  Developers are equipping themselves with etiquettes that extend outside the cubicle and sometimes receive the feedback directly from the customer themselves.  And of course, who doesn’t like a job that has a tendency to change from time to time.  Testing on the fly allows you to be flexible and learn your limits on your own.  It’s amazing how well you work when you manage your own time and is allowed affordances to ‘live’ with your code.  It makes it feel more personal.
Documentation is always carries a negative connotation with some developers and others are happy to summarize.  An advantage to the agile methodology is that documentation is low priority over the overall “working software” [5].  As we will see, this also can be a disadvantage.


Disadvantages of Agile Testing
As mentioned above, documentation can be slim and sometimes non-existent [4].   This is a loss for any tester.  Testing happens on the fly so there is little time to document every move and documentation takes time which is against agile preferences.  The problem lies in having to work with someone who is unfamiliar with the project.  In a worst case scenario, handing it over to someone who has never seen it before can be disastrous [6]
Agile testing principles are very demanding on the developers’ time and require a big commitment for collaboration on the duration of the project.  This commitment is very engaging, rewarding and ensures delivery of the right product. It's the fundamental principle of the agile atmosphere that ensures expectations are well managed. And since the definition of failure is not meeting expectations, these are critical success factors for any project and they fall on the multitasking developer [5].
The potential for scope creep, which we all know can create the risk of ever-lasting projects, can become an issue [3]  I have seen this first hand.  Customers always bring the what-if dialogue to feedback sessions and this has a tendency to dilute the original purpose but again, this is the nature of being agile.  There is much less predictability, at the start of the project and duringabout what the project is actually going to deliver so testing can be interrupted or modified to fit the need of the situation [6].
Also, agile testing requires more effort.  Through this methodology, development time suffers as the project halts while the developer tests the previous unit of code before moving on to the next section.  This is double the work!  It helps to ensure quality throughout the project without the need for a lengthy and unpredictable test phase at the end of the project but testers and developers spend a lot of time working through the iterations [4].


Summary
It is complicated to speak on Agile testing and not sound like we are speaking of Agile development.  They are in tandem and together complete the ideas of agile methodology.  The many types of testing a developer is involved in throughout the development life-cycle are an enormous aspect of an applications’ life.  Agile testing is the approach at which utilizing the correct test to accomplish the goal quickly allowing the developer to stay flexible and continue on while creating quality products.  Testing frequently and along the lines of the iterative guidelines are the benchmarks of agile testing.




[1] Crispin, Lisa, Gregory, Janet. Agile Testing: A Practical Guide For Testers And Agile Teams. Publisher: Addison-Wesley Professional. Date Published: 01/09/2009.

[2] Desikan S.Ramesh. Software Testing: Principles and Practices. Pearson Education. 2009.

[3] "Agile testing." Wikipedia, the free encyclopedia3 December 2009. Wikipedia. 3 December 2009 http://en.wikipedia.org/wiki/Agile_testing>.

[4] "Agile methods and software testing." Agile Testing. 30 September 2009 < http://agiletesting.com.au/agile-methodology/agile-methods-and-software-testing/ >.

[5Manifesto for Agile Software Development2001. < http://www.agilemanifesto.org/ >.

[6Pettichord, Bret. "Agile Testing What is it? Can it work?"http://www.io.com/~wazmo/papers/agile_testing_20021015.pdf>. Retrieved 2009-12-2.




Sunday, January 24, 2010

@HootSuite and the Social Media captive

You might wonder why I am taking the time to profile @HootSuite as I have only used it for one day.  Well, that's the reason.  I have only used this for one day and I already feel like I have a better hold on my reputable status in my social circle.  I have been held captive up to this moment by the abundance of information I would like to share and seem to have found the application that will help alleviate the need to find value to add to my social space and break some of my bad habits.

Do you have a bad habit online?  Ever worry about posting too much?  Ever thought about a possibility to auto-post a tweet before the biggest magnate media moguls such as @mashable or @guykawasaki post a whisper of the latest news?  Want to see how 'click-able' your links are to your followers or whether your links are even seen?  You may be surprised what links are clicked the most and which links fall short.

It is the nature of any user to try and understand your followers needs and creating value content for them besides showing them you are a human.  Balancing the two are really what separates the true good-will ambassadors who bring value to your network and those who spread any news in an effort to grab followers.  Finding a stable and useful plan to solidify your online presence is an important area of your online life and patience is the key.

With all this being said, my time with social media as a user has been limited but I feel comfortable with what I provide for my followers and friends after many 'spam' moments where I hit the feed hard for 10 minutes after a long absence.  Can I stack these to future posts/statuses/tweets or do I really have to punch them through in sequence?  You really do a disservice with the latter and your social circle cringes a bit.

@HootSuite is my new friend.  On the heels of a visit to North Carolina I had the chance to sit down with a social media watchdog.  Nathan Maxwell, better known as @socialshark, is a person who has a passion for social media and it's uses, and I got a glimpse of his passion.  It is apparent that what it takes to provide value is not just a barrage of information but an alliance of planning, tools and knowledge of what to look for to bring value to your feed. Nathan is ahead of many in the realm of managing feeds and his recommendation of @HootSuite is not overlooked...

Ok, enough about the why.  Here is the how.  @HootSuite is easy.  It's online and allows multiple accounts including Twitter, LinkedIn and facebook.  Do you think you have a bad habit of posting too many posts at one time and causing what others may see as 'Spam'?  Do you follow a blog and lean on this person to add value to your content?  Want to see how interesting your links are so you can provide better quality links to your circle?

Check out these features:

  1.  So you have 20 posts and you need to run out the door!  You bite the bullet and click, click click....and all 20 posts light up your feed and you probably get a @reply saying, "Hey!  Stop spamming me!" and you apologize and continue.  No more spam!  @HootSuite allows you to "Send Later" or schedule the posts AND offers a "Pending Tweets" area to help manage the scheduled tweets. 





    Never blind your followers on twitter anymore.  This is also includes facebook updates.  You don't want facebook aggregating your posts into something similar to "Lucas Shaffer has posted 18 similar items."  You would rather have them post 19 items at intervals of 1 hour as to spread the info and make it less evasive.  Your friends will appreciate it.  Trust me!



  2. RSS/Atom feeds are known for bringing the content to you, as soon as it hits the web!  If you haven't subscribed to a feed yet, it may be time to latch onto the updates of you favorite photographer/designer/developer.  By doing so you are receiving the latest update and this may be of value to your followers.  But how can you take your email updates and change them into relevant tweet/updates to your circle?  @HootSuite allows you to attach RSS and Atom feeds to schedule or immediately send tweets or updates.  This is nice!  This means a little less babysitting your favorite well of information and automatically porting this to you friends and followers.






    You can see here I am attaching @HootSuite to my blog so that my new blog posts will be fed into my feeding accounts.  In the example, my twitter space and facebook account will be updated with my new blog post without any extra work from me allowing me to stay focused on value of other posts. It is scheduled to fire the tweet and status update after a 3 hr interval which means @HootSuite automatically checks this feed every 3 hrs.  If the feed has produced 1 new post then @HootSuite post to my accounts immediately.  If the feed finds more than one I have a setting engaged to wait 1 hr to post each new feed until the new posts are done!  Easy and NO SPAM!  It may even appear to your followers that you are a madman and always on the site.  This is not true and you can get a bit of your life back!  ;)



  3. If you already have an addiction to sites like twittercounter and twittergrader/facebookgrader then this part will make you feel all warm and fuzzy.  @HootSuite is affiliated with the ow.ly links you have seen everywhere.  It is in YOUR interest to start using the ow.ly URL shortening if you decide to chose @HootSuite.  The reason?  This is because @HootSuite tracks the amount of clicks these URL's you post to other sites or blogs and tracks them with your account.  Very nice!  Now you can see how valuable your links are.  You are now able to see if your followers are interested in the new Tech tweets that link to @engadget and if they respond to other types of links.  Here is what you get!





    You can see my blog seems to draw a bit more interest than the Lady Cougars win over Georgia!  :)  These type of stats are almost unheard of and if you have any other stats that can help build and nurture value in your feed then PLEASE let me know.



As you can see, I have only been using this FREE online app for 1 day and I have already been able to determine my impact with links, stop my bad habit of spamming and automate some of my own search results to give my followers better value, in incremental spoonfuls instead of gushes of 'blah'.

In the end, it has only been 1 day.  Let's see where this goes!


I would like to give credit to @socialshark for the heads up as I find his value to my social circle is a pillar to my reputation and I encourage others to follow him as well.  Find him here: http://twitter.com/socialshark

What is an original experience when programming an intelligent system?

A class mate in my Artificial Intelligence class wrote about AI possibly being able to create something unique
in which I responded below.

I agree expectations can be a bit diluted by the fact that a system can only contain rules or “intelligence” from experiences it has consumed and ultimately learned from. Presumption or ‘pre-programming’ of other rules can help but most of the time I feel would prejudge a situation. After all, we sometimes learn more about a situation when we experience it ourselves and we often call this experience life, even if it turns out good or bad. So the program or entity must experience good and BAD.

It lends a hand to the term original. How can something be original and unique to all when the collective of the majority of all rules in the world have already been discovered? For example, humans are not given every rule or boundary when we are born. We are contently rule-less and spend the rest of our lives finding the boundaries in which we can exist in our individual cultures.

If computers are to be truly ‘original’ then they must learn on their own. The combinations of one’s’ experiences are the only unique factor we all have. Computers, because of their rule-based nature, can be programmed with the prejudices and therefore are given an advantage of the outside world but still only begins with the rules learned be the programmer.

Saturday, January 23, 2010

New Team, New Goals and New...uh.....Desk!

Visiting Soffe was a great visit. I am in awe at the size of this place. The grounds were more like a university campus where the main goal is to provide great branded product to everyone who mutters the words "Soffe short".

My visit was brief but by no means was it not an important time. I am now a real person to my new team at Soffe instead of a series of stats and project outputs. They were great and it was a pleasant trip. It will be nice to work with these guys as they have much to offer!












































Apparently this is my new desk at Soffe. This is a new integrated "dual" monitor system which requires type-writing skills. Look closely and you can see the small LCD screen (3 inches by .23 inches). Thanks guys!

Great way to spend that money on your new team member! lol

at least it's clean....(Windex)

Friday, January 22, 2010

AI & Rules

After reviewing many definitions I ran across these terms which I will paraphrase from Wikitionary. I believe this phrase to be a very accurate statement.

AI is “an exhibition of an artificial (non-natural, man-made) entity dealing with the reproduction or mimicking of human-level thought in a manner similar to or on the same general level as a human being.”

In short, an intelligent system is one that learns during its existence. It learns, for each situation, which response permits it to reach its objectives. It continually acts, mentally and externally, and by acting reaches its objectives more often than pure chance would indicate. As an intelligent system exhibits human-level adaptation, it becomes apparent that the rule-based AI grows as the entity becomes aware of feedback and adapts to the information gained to create new rules similar to an expert system.

As experts gain insight navigating new situations, the rules are formed to correctly build a path for reaching objectives. This ‘knowledge base’ becomes the bottom line for most AI programming. In all the examples above it would seem that all deal with rules but some are proactive at creating reactions and learning and others that are reactive to previous systems.


Sources:
en.wiktionary.org/wiki/artificial_intelligence
http://lmgtfy.com/?q=define%3A+artificial+intelligence
http://www.intelligent-systems.com.ar/intsyst/glossary.htm