Writing Software with AI – Adaptive Programming

It is natural that even humans don’t learn everything over night and that we have to spend a lot of time probing information so that we can acquire knowledge. This knowledge then becomes intelligence once we have processed it. Therefore in my opinion it might be worth it to build an AI system that asks questions, launches quests and goes after missing pieces of information, whenever it is stuck on a new problem.

Adaptive programs

Adaptive programs will be sort of software systems that while working on a complex problem will have the ability to simultaneously discover peers that might already know solution to part of the problem or be able to give directions to contact another software system that might. To prevent the infinite wait times after second level of delegation the software system will stop active probing and assign the responsibility to an asynchronous probing agent to probe further.

This network based software system collaboration can reduce the complexity of the software systems and provide for most optimal reuse of existing solutions to recurring problems. The central principle is that software systems will not just be used for computation, but for gathering knowledge on the problem sets they can solve directly or by delegation to peer software systems. The communication can be based on open protocols and human feedback can be used to refine solutions arrived at by these adaptive programs.

Deep Linking:Restore State of Flex Application

Dear Dummy Friends,

I know I have been keeping quite tight lipped for a long time and the reason for that is either I didn’t have anything to say or whatever I wanted to say was not coming out pretty well. However, when I discovered this feature I really hit myself on the head for not having read the documentation thoroughly before and felt an urgent need of sharing it with you guys.

Have you ever wondered why flex application couldn’t be started from the last state that user closed the browser in?

Prepare to be liberated. Flex supports a feature called deep linking.

What is deep linking?

Deep linking is a method of making the flash application aware of the browser url and vice versa.

The first thing that we learn while writing flex application is that there is no need to navigate over pages in browser while using a flashplayer based applications. So, it is often miconstrued that flashplayer or the flex framework shouldn’t or doesn’t care about to providing any bridge between the state of the application and the state of the browser.

It is quite natural to believe that and treat it to be a constraint while developing flex applications. However, the truth is that flex framework does care about this comaptibility between the browser navigation and in-flex navigation. And you can see it by looking at the elaborate API the flex framework offers. [Article: Deep Linking in Flex,LiveDocs: About Deep Linking]

Advantage

This feature will add more of a backward compatibility for the old-school browser dependent generation that still thinks it is cool to navigate using only the back-forward buttons. I might add that I belong to that school of thought too.

A Cool Use Case

Apart from navigation it allows you to bookmark certain screens in a flex application. So that might actually be a cool feature to be used in application that provide iPaper like functionality. Say you were reading a book online on Scribd or any equivalent site. And suddenly you have to leave but you don’t want to leave your computer on and would rather have it turned off. Yet you sill want to be able to come back to the same page you were reading on the eBook. The flex based eBooks can support bookmarking to give it a real life feel.

Caution

Restoring the state only applies to the visible part of the application not to the other hidden portions of the application. Which means there should be some extra effort put in to ensure that the browser dependent navigation can be accurately captured and that it triggers all the state restoration in the same manner as if the application was going through its normal flow.

Before you leave!

There are various pitfalls in using this feature, so I would recommend strongly that you read the docs thoroughly and weigh the advantages over disadvantages before you support browser navigation.

Point to be noted

Good application only differs from average application in terms of setting the right expectations and meeting them consistently.

Happy Coding!

:)

Flex Tip: Stop CSS from getting heavy!

Remember friends, if you are using flex builder 3 and trying out various fonts for your widgets, everytime you select a font, it gets embedded into your CSS and that makes your SWF heavier. You would have noticed that with time it takes longer and longer to compile.

To get rid of this problem, ensure that you uncheck the Embedded checkbox right next to your font selection drop down. Everytime you see it checked, just uncheck it if you don’t want the font to be embedded.

Usually there are standard fonts that do not require embedding and usually they suffice for most of the business UIs.

So, if you don’t know what you are doing to make your flex design view become slower in applying style changes, you take a look at the fonts embedded to the CSS, accidentally.

Have fun with Flex and keep it simple!

Pitfalls In Java Development and More

Hi guys, here is a super cool blog recently launched by my friends and colleagues at Pramati.

http://pitfalls.wordpress.com

The blog is named as Pitfalls in Java Development, but it doesn’t limit the content or the description to just the pitfalls; there are amazingly new and refreshing facts about Java Technology and all its associated open source technologies.

You will also find quite a few interesting debates on DOs and NOT TO DOs in the Application Development world of Open Source and Java/J2EE. All of the authors on the blog are experts in their respective domains and technologies and share the most recent issues they encounter while working on their current assignments.

In less than two weeks since it was launched, it has reached a hit count of 3000 approx. Which in itself is an indication of how techies about the value of information shared by this blog. And to those of you for whom it matters, the CTO at Spring Source Adrian Colyer has already commented on one of the posts on this blog.

I am sure you are going to learn a lot from this single link. So check it out now!