January 3, 2006, 8:30am PDT

On this first business day of 2006, I'm launching www.softcodedlogic.com to serve as a vehicle for software developers (programmers, architects, CIOs, and project managers) on the Microsoft platform to explore ways of bringing smarter, more malleable software architectures to the mainstream. I believe this is something that we should be vigorously addressing now for the following reasons:

  • Complex, dynamic, evolving logic. Complex because the number of agents (devices interacting) is increasing. This increase will be exponential as the devices on the Internet grow to include embedded devices and RFID. Dynamic because conditions upon which these devices that live outside in the real world function is constantly changing. PCs are not mobile, therefore, the context of change was less prevalent. Evolving because as devices that another device interacts with changes behavior (dynamic), devices must adjust to the behavior accordingly.
  • More technology and people increase moving parts – With hundreds of millions of different types of devices and different types of people join the Internet, there are bound to be uncountable, unpredictable ways people will try to use these devices.
  • Rules are not naturally as isolated or rigid as the IF-THEN statements in our high-level language code – Most software is engineered to solve very specific problems. Therefore, immutable (hard-coded) IF-THEN statements in our high-level language code will suffice. However, that method of embedding logic is inflexible. If logic is rigid, users must conform to the software. Users become slaves to the software. It’s supposed to be the other way around.

    As a starting point for this exploration, I present SCL. The introduction to my article, Introduction to SCL, provides an Executive Summary of SCL:

    SCL (Soft-Coded Logic) is my implementation of Prolog enhanced with a new set of features outfitting it with the capability of providing malleable logic services for distributed applications. As the number and variety (embedded devices, RFID, etc) of “nodes” on the Internet grows, the complexity, evolution (the rules are always changing), and the mix of factors contributing towards decisions the applications on these devices makes becomes overwhelming. This creates a need for a mechanism that is geared towards handling complex and evolving logic.

    SCL is such a mechanism. The Prolog language itself is designed to deduce logical conclusions for a query by inferring logical relationships from a list of facts. Complementing that purpose with the capability of locating, aggregating, and refreshing facts from multiple, diverse sources (other devices/applications/databases) fulfills that need. I call the new Prolog features providing this capability “MetaFacts”.

    Incorporation of SCL into software applications results in a “separation of logic and procedure”. In a nutshell, by “logic” I’m referring to the “IF” part of an IF-THEN statement and “procedure” as the “THEN” part. For example, IF some set of conditions are met, THEN a traffic light will turn the lights red in one direction and green in the other. The action taken (changing the color of the lights) is always the same, but the conditions to trigger that action evolve. Factoring the conditions out of the software application allows the conditions to evolve without forcing the software application to change. Such a separation is somewhat analogous in terms of both methodology and value to the separation of data and presentation that XML/XSLT provides over HTML.

    Although this site does place much emphasis on SCL, the intent is for this site is to include all issues related to the stated goal. For example, as a Lead Database Architect at Microsoft, besides material on SCL, I will contribute content on related Microsoft technologies, especially the Common Language Runtime (CLR), SQL Server 2005, and Analysis Services 2005.

    My years at Microsoft have taught me that taking technologies "out of the lab" or the out-of-reach fringes and into the mainstream is a daunting task. For example, when I worked in the SQL Server 7.0 OLAP product group in 1998, I really thought that the release of the OLAP into the mainstream would immediately rock the world. With such software, hundreds of thousands of small and mid-sized businesses could have access to the same information as the "CXX" (Chief something or other) folks at the large corporations. Although it is now the #1 OLAP, it took years to "socialize" the technology in the mainstream audience. Usage scenarios had to be identified, data integration disconnects had to be bridged, adequate performance of other mainstream technology (also with great TCO - total cost of ownership) had to catch up, standards such as XML had to gell to pave a smoother road. Bringing SCL to the mainstream presents significant challenges including, but undoubtedly not limited to:

    All of those items will be the subject of upcoming articles.

    Upon the release of the SCL SDK (SCL Software Development Kit), I hope the community of developers on the Microsoft platform can begin experimenting with SCL to develop best practices and usage scenarios. As a first in a series of usage scenarios, I offer MetaValue Database Columns.

    Please feel free to contact me at either eugenea@microsoft.com or eugene@softcodedlogic.com.

    Sincerely,

    Eugene