I, Smartapp

Even the most elaborate problem-solving systems can be reduced to a rules repository (or knowledge base) and an inferencing engine.

Many of the problem-solving techniques that power adaptive learning and rule-based inferencing systems have gone mainstream.

There are a couple of vexing impediments to the development of smart apps in most enterprises—namely, a lack of expertise and time.

Some of the techniques first pioneered by AI researchers
(and commercialized by the expert systems pioneers
of the 1970s and 1980s) have been used to produce highly
adaptive applications or systems. Many expert systems—
which can range from the simple (true/false logic) to the complex
(true/false logic in tandem with fuzzy logic)—might be called
smart, because they're able to make reasonable inferences about
the behaviors and preferences of their interactive users and adjust
their application presentation or strategic guidance accordingly.

More to the point, the problem-solving capabilities that power
the expert systems of today are explicitly portable, because
they aren't based on domain-specific expertise. With a few exceptions,
even the most elaborate of expert or problem-solving
systems can be reduced to two components: a rules repository
(or knowledge base) and an inferencing engine.

AI and expert systems concepts and methods aren't just the
province of academics or highly specialized commercial ISVs anymore.
Many of the problem-solving techniques that power artificial
intelligences or expert systems (adaptive learning and rulebased
inferencing capabilities) have gone mainstream. Most
codejockeys are at least familiar with pathfinding, decision trees
and rule-based inferencing, if only as vague holdovers from otherwise
long-forgotten CompSci AI seminars.

But some, like Steve Berczuk, a programming consultant and
co-author, with Brad Appleton, of Software Configuration Management
Patterns, are using these techniques in their ongoing work. "I once worked on an application that used genetic algorithms
for scheduling—or rather for optimizing schedules. I'd classify it
as intelligent in the sense that it came up with answers comparable—or better—than a person might have," Berczuk explains.
"On the other hand, the way that genetic programming works is
by trying different things and picking the best options in an efficient
way. So it was intelligent, but achieved it by doing lots of
small simple things, and correcting course."

Smarter app dev tools

Smart apps will require smarter development tools. And there are a lot of ways in which app dev tools can get smarter. Consider the emergence of domain-specific languages (DSL), which describe a way to encode esoteric domain expertise in (often declarative) programming idioms. Although DSLs haven't yet gone mainstream, some programmers have used them in tandem with other techniques (such as rules) to develop smarter or quasi-intelligent applications. Although there are typically caveats here, too.

"I like using DSLs to implement rules in a concise way, but I've never managed to find a client who would not require something that lay outside the scope of those," says Stefan Schmiedl, a programmer with risk management specialist Approximity.

More to the point, experts say, development tools are going to get smarter. The DSL models championed by Intentional Software, JetBrains and Microsoft will grow in popularity. Model-driven tools will become even more sophisticated and incorporate even more innate "smarts." Over time, Borland, IBM, Microsoft, the Eclipse Foundation and other players will make it easier to build smart apps by incorporating explicit support for rules and other smart programming techniques into their tools. And one consequence of improved app dev smarts might be the diminishment of conventional (imperative) software development.

"A lot of coding is still done in the imperative, one-line-after-another model. We've gone to extremes to make sure that it's easy and efficient to produce software that's essentially one chunk of imperative code after another," says Dan Massey, chief technical architect with Borland Software. "The next step will be more levels of abstraction. There's UML, there's other modeling ideas like Alloy, where—given enough information about your design—for some finite number of nodes, they can tell you whether you're going to violate the constraints you set for them."

This is going to take time. As experts concede, most IT orgs are still developing software the old-fashioned way. So the big tools vendors aren't in any hurry. In the interim, then, small players will have to do much of the heavy lifting.

"Right now, I think [Borland, IBM and Microsoft] are doing the right thing: there's not enough of a market and not enough commonality of tools and approaches. Probably some small company will do something good," suggests Ron Jeffries, a senior consultant with The Cutter Consortium's agile software development and project management advisory service. "A small company looking to get something going might do well to integrate with Eclipse or [Visual Studio], depending on whether they were going after a Java or .NET market."

In addition, Jeffries speculates, there are a lot of unspectacular ways in which app dev tools can be improved, if not made smarter. "There are lots of things where more intelligent IDEs might help. Even in conventional programming, tools like 'lint' and refactoring tools can be of great assistance," he comments, noting that smarter source code diff tools would be a good start.

As for the emergence of programming expert systems that are able to provide meaningful guidance to novice developers, Jeffries isn't holding his breath. "I could imagine tools that would ask 'Are you trying to do X?' and help out. But so far, even the kind of thing that Word can do usually guesses wrong and is hard to configure. In programming, intelligent help is just beginning."

—Stephen Swoyer

Others, such as Stefan Schmiedl, a programmer with risk management
specialist Approximity, are starting to experiment with
smart applications in production environments for the first time. "We actually have [used] adaptive techniques to improve prediction
in a prototype currently under heavy development," he confirms.

100 years of progress in 25 years

If Ray Kurzweil is correct, technological singularity is inevitable. And by "inevitable," Kurzweil doesn't just mean the stuff of some distant or oblique future. In his new book, The Singularity Is Near: When Humans Transcend Biology, Kurzweil says that what he calls Singularity is only a few decades away.

Singularity is a term Kurzweil and other trans-human futurists use to describe what they believe will happen when the development of artificial (or superhuman) intelligence fuels the exponential acceleration of technological progress and human cultural evolution. There's a lot at stake. In Kurzweil's view, the Singularity will trigger a "profound and disruptive transformation" in human capabilities. In other words, the Singularity will fundamentally alter what it is to be human, both biologically and experientially.

Kurzweil is a technology polymath who's played instrumental roles in the development of optical character recognition and text-to-speech synthesis technologies. He believes Singularity will occur by 2045. More to the point, he argues, we're already in the home stretch. The rate of technological progress is doubling every decade, and Kurzweil expects it will accelerate even more as advances in supercomputing power bring Singularity ever closer.

For Kurzweil, it mostly boils down to an issue of computing horsepower. By 2013, we'll have enough processing power to support functional simulation of the human brain. And by 2025, we'll be able to simulate the brain's neural activity, which will let researchers simulate consciousness in the machine realm.

Key to Kurzweil's argument is that the rate of technological progress is increasing. (He has said that at today's rates, we'll achieve 100 years of progress in just 25 years.) In a certain sense, what Kurzweil really means by "technological progress" is computing power. And the geometric growth of computing horsepower (Moore's Law) isn't simply a function of AI research. There's a profit motive at stake, especially insofar as many of the world's most prominent supercomputer manufacturers also have thriving enterprise server or consumer PC businesses. In other words, businesses and consumers are the driving forces behind technological innovation. What this means is that if the rate of technological progress accelerates-- as we verge ever closer to Singularity--businesses and consumers will be the primary beneficiaries.

And if this happens, it could radically transform what is today called enterprise application development--long before the advent of Kurzweil's Singularity.

At the very least, applications and app dev tools will almost certainly get smarter. With so much processing power at their behest, and with the mainstreaming or trickling down of innovations derived from AI research, robotics, nanotechnology and other domains--it'll amount to a fait accompli of sorts.

But the lesson of today's smart applications is dual-fold: Yes, the pieces are in place and--yes--the technology is in many ways compelling. But the idea of smart applications (to say nothing of machine awareness and super-intelligence) is a disquieting one, at least for most consumers. And until Kurzweil's highly disruptive Singularity utterly explodes the issue, the qualms of potential consumers could act as a brake on the development of truly smart applications.

—Stephen Swoyer

Not a trend, yet
Dan Massey, chief technical architect with Borland Software, says
smart application development isn't a widespread trend—yet. "I
haven't seen that much of it coming in from customers in terms of requirements [for app dev tooling]," he
confirms.

"They're doing a lot of imperative
coding, and some of them are kind of
finding new ways to solve traditional problems,
but I've actually had to force rules
[inferencing] on people," he says.

There are impediments to the development
of smart apps in most enterprises—a lack of expertise and a lack of
time. Codejockeys aren't AI researchers,
nor do most rank-and-file programmers
have much experience with AI or expert
systems concepts and methods.

And even if they did, Massey points
out, most projects don't give codejockeys
enough time to build the infrastructure
services—such as a robust inferencing
engine—that are needed to
enable smart apps in the first place.
"The amount of time to do it is more
than most developers are given to devote
to a project," he points out. "I think
a lot of developers could embrace this
stuff and go forward with it, but implementing
it in the real world, they're not
given the time to go do that." That's
changing, however.

One emerging model for building potential
smart apps is the business rules approach,
which to some extent is an offshoot
of expert systems research. At a
basic level, BRA describes a model in
which (often declarative) rules determine
outcomes; in their more sophisticated incarnations,
business rules management
systems (BRMS) use inferencing engines
to decide which rules are called for and
why. In this respect, organizations can
configure their BRMSes to automatically
trigger decisions that might otherwise
have to be made by a human being—such as a business analyst. A host of vendors
market BRMSes, and at least one shrinkwrapped
player—Microsoft—has embedded
a rules engine in a commodity
product (Biztalk Server).

The upshot, says BRA proponent Ron
Ross, co-principal of consultancy Business
Rules Solutions and executive editor of
BRCommunity.com, is there's a market for
off-the-shelf BRMSes. And while there
is still a host of issues associated with these
products—the codification and management
of rules, the rapid rate of change (and
accompanying evolution of rules) in many
organizations, the human resistance to
divulge privileged knowledge—they can
eliminate a lot of the complex and timeconsuming
coding that would otherwise
preclude the construction of smart apps in
many organizations.

"There have been, probably out of necessity,
a lot of do-it-yourselfers in the
past, but...the momentum to acquire off-the-shelf capabilities has grown tremendously,
and very few people are undertaking
to develop their own [BRMSes]
these days," said Ross in an interview last
year. "At the very least, there are a couple
of open-source places that people go
so they won't code their inference engine
or rules engine from scratch."

The BRAdescribes a very specific paradigm—
in this case, using declarative rules
designed to appeal to business users—but
the concepts on which it's based (rules and
inferencing algorithms) have much broader
applicability. As a result, even skeptics
say it's possible to use a combination of
rules (declarative or otherwise) and inferencing
algorithms to construct highly
adaptive, quasi-intelligent apps.

And given the availability of commercial,
off-the-shelf and open-source rules
management systems, it's easier than
ever. Although many question the wisdom
of doing so. "It's definitely possible,"
concedes Ron Jeffries, a senior consultant
with The Cutter Consortium's agile
software development and project management
advisory service. "I think that
for most purposes, an inferencing engine
is probably overkill. It's yet another instance
of a framework looking for something
to do. I'm sure there are exceptions.
But I don't run into them."

People unnerved
In a certain sense, it comes down to a
fundamental human need, argues Borland's
Massey. "People...want some [application
intelligence], but they also
want it to be deterministic," Massey says.
"Consider Bayesian stuff. In theory, you
could test for it, you could trend, expecting
it to pass or fail. But even though
you know it is deterministic somewhere
down in the guts of it, it could still seem
like magic. That unnerves many people.
They want to be the ones who are in control."

Programmer Schmiedl says he has firsthand
experience with this phenomenon.
His company incorporated adaptive learning
capabilities into one of its risk-management
software prototypes, designed to
increase the predictive capabilities of the
prototype, Schmiedl says. At the same
time, improved predictive insight does entail
a cost of sorts—at least from the perspective
of some potential users.

"I demo'ed some of the techniques to
a client about a year ago, who replied
that he really felt uncomfortable
with a system that unpredictable. He
valued reproducibility over evolution,"
Schmiedl explains.

Schmiedl's experience is seconded by
Mary Crissey, a marketing director with
data mining and statistical analysis powerhouse
SAS Institute. To some extent,
Crissey concedes, it might be possible to
use rules and inferencing algorithms to
automate the actionable insights that are
unearthed via data mining or information
analysis. After all, she says, data mining
and information analysis is undergoing a
renaissance of sorts, thanks to the ability
to process unprecedented amounts of
data. But empowering the application to
make decisions of this kind isn't a direction
in which SAS is going, she says.

"It's more of an alert [model] right
now. It's showing you things that you
might not have seen because of all of the
possible combinations. That's where
we are," she explains. But couldn't SAS
automate information analysis via rules,
inferencing or genetic algorithms, if only
on an industry-specific basis?

Certainly, she says, SAS can hardcode
trending information to custom-tailor
data mining or text mining solutions for
specific customer environments. As for automation
via quasi-intelligence, Crissey is
more reserved. "I would really want a human
being [involved]. I think most of our
customers expect that [the output of]
analysis will be interpreted by a human being.
The point is that the machines are not
running by themselves. I am strongly in favor
of the human participant being a valuable
part of the decision-making process."

Unsure smart apps will be
smart enough
In many cases, of course, artificial decision-
making can be a good thing. E-commerce
applications use rules and inferencing
to trigger discounts, suggest
additional or alternative items, and provide
incentives (free shipping, anyone?)
based on a customer's online buying patterns.
Healthcare, insurance and financial
services firms—or any company that's
subject to increased regulatory oversight—can use rules to more easily manage
changing regulations (rules aren't
hardcoded into applications but exist as
declarative statements in a repository),
ensure compliance with requirements or mitigate exposure to potential litigation.
(A rule-based, automated loan approval
process is by definition impartial.) As for
HAL Corp.'s permitting its Executive
Information System to trigger a merger
with XYZ Corp., that won't happen.

At some point, suggests Borland's
Massey, applications might become smart
enough to quell most human concerns.
He uses the example of a project management
system that's able to customtailor—or custom-market—its guidance
based on information it has collected
about specific users. Even so, he says, this
isn't so much a function of application
awareness as of programmer ingenuity.

"There doesn't even have to be any awareness
for something like this. [The computer
is] going through its rule base and
everything it knows, and it looks at the
options it's given you and which ones
you've picked. Then some algorithms
kick in, and it has a library of different
ways to show you its data. It goes through
different ways of prioritizing them;
maybe it starts to learn that you always
pick the second option. It learns through
trial and error, and from there, you start
moving toward teaching it what marketing
is," he concludes. "If humans don't
want machines thinking for them, maybe
you might want to focus on putting in the
guts so [the machines] can market their
decisions to you."

ILLUSTRATION BY RYAN ETTER

On ADTmag.com

Content management's changing story line By Paul Korzeniowski www.adtmag.com/article.asp?id=11883