Archive for March, 2006

Phil Windley’s March CTO Breakfast

Friday, March 31st, 2006

Xen – http://www.linuxjournal.com/article/8909

Microsoft Research

There is a certain comfort in tight coupling.
Getting developers to use loose coupling
Erlang as a message based product

I said that Jamis Buck had told me that all performance problems at 37 signals where database related.
I admit I was speaking in generalities, not all performance problems are database related, but a lot of them are.

Trent corrected me andreferenced Jamis Buck of 37 Signals to talk about scalability of Campfire.

Supposedly IBM has a web site where you can get a virtualized z-series for a month or a two.
Jim Gray article

Scott Lemon mentioned here was some talk that John Smart wanted to start up a FutureConversations Channel over at the Conversations Network.
Phil Windley said that IT Conversations publishes 10 – 12 audio programs a week and that needs to be decreased to about 5 a week. One for each weekday essentially.
Limelight a Content Delivery Network(CDN) provides bandwidth and distribution for itconversations.
Nerd-TV seems to have dropped off the radar lately. Episodes are much less frequent now.

Phil Windley spent much of the week working with MicroID

Links

KSXPath 2.0 XPath 2.0 for Scheme and Skuery

Wednesday, March 29th, 2006

Skuery is the new name for my masters thesis software previously named SchemeQuery.
In summary, Skuery is the native embeding of data query in general purpose programming languages.
In my case XQuery and Scheme.

XPath 1.0 can be simply described a tree traversal and subtree selection domain specific language.
XPath 2.0 builds upon version 1.0 by adding more powerful looping and decision flow control.
XPath 2.0 as a subset of XQuery 1.0 functionality, or in other words XPath 2.0 functionality is wholely contained in XQuery 1.0 Specification.
Most importantly to Skuery, XPath 2.0 supports user defined node filtering and selection functions.

The Scheme XPath implementation (SXPath) is architected using a layered approach.

SXPath like Skuery, processes both the orginal plain text form of the defined language as well as a S-expression encoded form.
Both initial forms of XPath: plain text and sexpression base are translated by SXPath into a sequence of low-level primitive operations.

Further functions such as node-join, node-reduce, node-union, and filter provide the core functionality of the primitive SXPath operations.
The elegance of SXPath and XPath in general is the realization that each step in the path can be represented as a projection, selection, transitive closure or a filter operation.
A XPath expression can then be evaluated by combining steps as chains of sequential operations or as parallel union operations.

Unfortunately the scheme SXPath library only supports XPath 1.0 functionality.
However the XPath 1.0 and 2.0 do share the same low level XML path traversal, selection, and iteration operations.

Skuery implements XPath 2.0 present in XQuery 1.0 traditional syntax by transforming XQuery AST segments into a super SXPath 1.0 S-expression syntax called KSXPath 2.0.
KSXPath 2.0 can be use directly by the end user as a native scheme syntax of XPath 2.0, which Skuery adopts for XPath 2.0 expression in S-expr described XQuery 1.0 queries.

KSXPath 2.0 reuses the low level implementation functions of SXPath and injects its own combinators into the evaluation pipeline to implement XPath 2.0 functionality.


Learning Scheme Macros

Wednesday, March 1st, 2006

I’ve been really impressed with the expertise and academic richness of the functional programming and programming language theory community. I have found the community relatively open, transparent, and willing to adopt and mentor newcomers.
However the word choice in vocabulary and nomenclature could use some help.

[PDF] Writing Hygienic Macros in Scheme with Syntax-Case finally helped me understand Scheme Macros.

Note that implicit-identifier is now called datum->syntax-object and that the examples need syntx->list inserted wherever list operations are attempted on a syntax object.