NetKernel News Volume 4 Issue 25 - Hello World from First Principles, Resource Oriented State Machine Runtime

NetKernel News Volume 4 Issue 25

November 1st 2013

Catch up on last week's news here, or see full volume index.

Repository Updates

The following updates are available in the NKEE and NKSE repositories

  • http-client 2.17.1
    • Added URL encoding of reserved characters if not already escaped.
    • Updated documentation on httpState.
  • lang-dpml 1.24.1
    • Fix to pass-by-value references for nCode runtime compatibility
  • lang-trl 1.6.1
    • Swapped use of StringBuffer to StringBuilder since legacy Java is no longer supported and the unsychronized Builder enhances performance. Thanks to Earl Nolan at for this suggestion.
  • module-standard 1.59.1
    • Fix for a rare situation where a prototype instantiated endpoint could have the same auto-generated endpoint id if the class/script was the same but the grammars were different the consequence of which was that if the space was wrapped in an overlay it would potentially make the second prototype endpoint unresolvable. Thanks to Tom Geudens for discovering this.
  • nkse-dev-tools 1.55.1
    • Space explorer static structure diagram fixes NaN rounding error in the SVG boundary when trying to generate very large space diagrams.
  • twitter 1.3.1
    • Updated to use Twitter 1.1 API

The following updates are available in the NKEE repository

  • encrypted-module-factory 1.14.1
    • Workaround so that OSX Java 7 finds the correct hostname for a license file.
  • lang-scxml 1.3.1
    • Added nCode palette
    • Enhanced error handling for release

Hello World from First Principles

Tom has questioned all his assumptions and gone right back to basics. In this blog entry he tries to cast aside assumptions and take you through a step-by-step Hello World guide...

Great stuff Tom

Resource Oriented State Machine Runtime

Resource Oriented Computing (like REST) is fundamentally about the computation of the state of resources. We create solutions by working with representations of the state of a resource.

We engineer the computational efficiency by managing the computed representation state by holding on to it (caching) and assigning deterministic expiration constraints - so that the Nyquist sampling rate for the representation provides a sufficient approximation to reality.

If you are coming to the generalised world of ROC with a REST perspective then it would be easy to assume that external requests are the events that drive this "sampling of the computational state space". Of course they often are, especially if you're creating RESTful services (or even REST-style services with other protocols).

However it has been clear for a long time that richer, more advanced systems, comprise the interplay between many state transitioning events. Think for example of a database trigger, a JMS message, an NKP super-stack request, a cron event, an async throttle transition, a metadata driven architectural configuration change etc etc... The degree of complexity increases when we understand that the transition events can be both independent and dependent and that the computational context is also dynamic.

Usually our first thought when things get complex is to start writing code. But the problem with going down to the metal of code is that you can easily lose site of the big picture: our purpose is to "determine the state of resources" not to run code.

There's got to be a better way of elegantly dealing with complex state transitions which allows us to keep working at the high-level?

Of course, you know the answer, the title says it already, what if we had a true Resource-Oriented state machine runtime?

Actually credit is due to Brad Jones, one of the very earliest NK evangelists, since he first made the observation (about eight years ago!) that partnering NetKernel with state machines would be a very natural fit.

After some careful engineering, Tony has been able to integrate a standards-based SCXML hierarchical state machine engine and (no mean feat) extricate it from its default attempts to go down to the coding metal. In so doing he has delivered a pure ROC state transition engine embodied as an ROC runtime.

In his blog this week Tony provides a detailed introduction to the capabilites of the lang-scxml state machine runtime...

I think, if my introduction made sense and you can recognise that NetKernel/ROC solutions are always purely about managing the computational state space, then the power and elegance of an ROC-enabled state machine is like moving from the long-bow to gun-powder.

Have a great weekend.


Please feel free to comment on the NetKernel Forum

Follow on Twitter:

@pjr1060 for day-to-day NK/ROC updates
@netkernel for announcements
@tab1060 for the hard-core stuff

To subscribe for news and alerts

Join the NetKernel Portal to get news, announcements and extra features.

NetKernel will ROC your world

Download now
NetKernel, ROC, Resource Oriented Computing are registered trademarks of 1060 Research

© 2008-2011, 1060 Research Limited