Main | May 2007 »

April 30, 2007

Digging through JLog interpreter source

At the suggestion of Dr. Kac from the Philosophy Department, I downloaded the source code for JLog today, which is a Java-based Prolog interpreter. I was able to spelunk its architecture and look around for how it manages grammatical structures in its interpreter. I was hoping to derive some insight in how to differentiate the API terms for an imperative language structure dedicated to controlling the flow of action and change in a computer system, from a more propositional language structure dedicated to analysis of the flow control logic itself.

I intend to support these two sentence types in the same logic core:

  1. An imperative type which initiates change in the system as a result of a specific anticipated state of conditions, and
  2. A propositional type which analyses the structure of and relationships between both the state of conditions in the system and the imperative sentences created by the knowledge experts.

In order to do this, I'm building a Lexicon, and while I draw the line far from finding the quiddity of these terms, I do want to assemble enough nouns to allow myself to be both expressive and correct in the core APIs.

April 29, 2007

Coming to an ontology

The problem with the computerized logical systems which I have used prior to today, is this. With almost perfect consistency, the underlying goal of the logic in popular computer systems is to assemble a mechanism to control the flow of change in the system. These systems are imperative in nature.

Imperative systems direct the actions which a computer program performs. They are perhaps the most common and practical systems in use today. Less common, though ultimately no less practical, are logical systems that evaluate the truth of certain logical arguments. Telling a computer how to perform certain functions is useful, but dangerous if the reasoning behind our commands is flawed.

So, I'm interested in building systems that can provide a means to analyse our logics as well as to execute them. That's what I'm trying to build with Arete. However, the effort requires visible public progress as an Open Source project before I can get some of the needed infrastructure to continue more advanced development. This requires an iterative approach to building the platform.

The problem with this iterative approach is that there is scant and often contradictory literature to help me distinguish the two types of logic listed above. Often terms are used interchangeably between the two types of logic to describe what are essentially different things. Theorems, premises, antecedents, consequents, hypotheses, sentences, clauses, instructions, protasis, sumperasma, arguments. Logical literature today is a mixed bag of ambiguity and industry buzz-words.

So, I'm trying today to come to terms, to fashion an ontology I can use moving forward in development. It is fun but demanding work, and I've not yet eaten. I think I should see to that.

April 26, 2007

ARETE-USER mailing list is up and running!

The arete-user mailing list is up and running! I've posted information and instructions to subscribe and unsubscribe to the arete-user list at the Arete project home page.

These lists will be open to the public, and the arete-user list archives are searchable from the University of Minnesota LISTSERV homepage.

April 23, 2007

Arete 1.0-alpha-04 Released!

After an invigorating two-week-long codebender, I can proudly announce the release of Arete-1.0-alpha-04! This version seriously beefs up the infrastructure of the project, and includes the following improvements:

  1. An improved project directory structure brings us much closer to a Maven2 build
  2. 100% unit test coverage!
  3. The addition of a new example application--a Rock-Paper-Scissors game simulation.
  4. A vastly improved I/O subsystem, with much more robust error checking and reporting for XML files

But that's not the end. Really, the project is maturing at a steady pace, and with full unit test coverage we can begin to turn our attention to a boat-load of new features that are in our project JIRA, including more and better example applications and advanced engine cores. It is an exciting time in Minneapolis.

Project mailing list is on its way

The project mailing list is on its way! I heard back from the University's IS department, which oversees the creation of new mailing lists on the campus listserv system. They have heard the cry, and hopefully we'll have a mailing list by the weekend.

April 20, 2007

No word yet on setting up a project mailing list

Earlier this week I requested an arete-user mailing list address here at the University, but have not yet heard anything about it. I have a sinking feeling that the request for setting up the project mailing list could be denied, which would open up a new front in infrastructure requirements for the general UMFoundry effort.

The good news is that the blog got a face lift last evening, and is looking pretty sharp. Once the mailing list goes online, I'll report with updates.

April 17, 2007

Arete project goals

Now that I'm working more or less full time (nights and weekends U.S. central time zone) on Arete, and especially now that I've finally stamped a public release of the source code, it's a legitimate Open Source product. But this is not yet a legitimate Open Source project. Here's the difference: Open Source projects have community, and Arete doesn't. I intend to change this right away.

Here's the big plan. I'm going to get the following for this project:

  • A User mailing list, so we can chat

  • A Clover license, for generating test coverage reports

  • An IntelliJ IDEA license, so I can upgrade and build a rule-authoring plugin
  • I'm working on three more sample applications for Arete.

    The first application is none other than Miss Manners. That's right, she's back in full effect. I've currently got her cranking out very VERY large seating plans, and while she's not perfect just yet, it's really just a matter of time.

    The second application, which I'm pretty excited about, is a deck analysis program for Magic the Gathering. I'm experimenting with MTG because the game rules involve manifold modes of truth assertion. At the moment, my attention is focused on the data gathering and data modeling aspects of the application.

    The final application is a network diagnostics tool. I'm going to write something to help my colleagues in 1-HELP troubleshoot network problems at the University. Of course the application will have limited use, because so many of the core systems at the University which we use for diagnostics do not expose public interfaces. This is fine. I'm going for the 80/20 approach.

    Hopefully these three sample applications will garner some interest and attract a few interested developers. I think the best way to see why modal logic is important is to try to model a system for something that involves a lot of timing, possibility analysis, and permission / obligation rules.

    With any fortune, I'll be able to show some respectable progress to the IntelliiJ license granting team in the next couple of months. Until then, my friend Nate's going to have to use Eclipse.

    Coding Tonight

    My pal Nate and I are going to be pair programming at Little Tijuana on West 26th and Nicollet tonight. The subject of our attention will be unit tests for the engine core. Cheers!

    Arete QuickStart manual published

    I launched the Arete Developer's QuickStart Guide today from the Arete project home page. I think that the University has more ability than it really understands when it comes to using the UMWiki platform for publications. We're really quite fortunate to have this system in place.

    Documentation authoring is simple on UMWiki. I used to publish a lot of articles in various online tech journals such as Java.net and TheServerSide.org, but the ability to push out professional-quality documentation and keep it up-to-date on a minute-by-minute basis was never something that my publishers could offer. I would rather write and publish for free on the UMWiki platform than get paid to write for my old publishers, not because I have something against the publishers--they were great. But this technology really puts me where I want to be, which is in the driver's seat.

    Anyway, enjoy the quickstart manual. I'll be writing a lot of these in the near future, I think. There are dozens of projects here on campus that could use documentation like this.