NetKernel News Volume 4 Issue 16 - On Professions, ROC Flock

NetKernel News Volume 4 Issue 16

June 14th 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

  • kernel-1.33.1
    • Modified the AsynchronousResponseJoin to detect and prevent a very rare possibility of double response propagation when an asynchronously requested endpoint returns an asynchronous exception having also returned a synchronous response. Thanks to the Transformers team at BestBuy for discovering and reporting this.
  • http-client-2.13.1
    • Added tolerance over the structure of the headers argument and improved docs. Thanks to Ron Hitchens for suggesting this.

NEW: ROC Flock

Inspired by the ROC Hockey demo. Tony has been at it again, this time you don't need a friend to enjoy the fun...

NEW: Randy's Kotlin Language Runtime

Randy Kahle writes with news of a brand new Kotlin language runtime. Support for Kotlin adds yet another full-featured language to NetKernel's polyglot smorgasbord. Randy informs me that this is the first release of a series of new NetKernelROC community contributions to be announced over the next few weeks.

Chris Cormack is the primary maintainer of the NetKernelROC apposite repository - take a look at his note below. Overnight, since Randy's announcement, he has built a ready to use apposite package for Kotlin. All you need to do is add the NetKernelROC repo to your NetKernel instance (see his note with link)...

Great stuff. Thank you Randy (and Chris)!

Today the NetKernelROC community is releasing a new module on GitHub as well as in the community Apposite repository server. This marks the beginning of a series of new and updated module releases that will augment NetKernel as well as make it easier to program NetKernel systems. This first module is urn:org:netkernelroc:lang:kotlin, a Kotlin language support module. For information about this module, please refer to my blog posting at

I have been fortunate to have a consulting client who is very supportive of NetKernel and the NetKernel community. I have been developing a set of infrastructure support and architectural component modules for this client which will be released to the NetKernelROC community in the next few weeks.

My hope is that these releases will spur development interest in the community. If you want to help with module development, simply fork and clone the GitHub repositories and make your updates and fixed available through merge requests. If your interest is in using these modules within your own NetKernel systems, you will want to connect to the NetKernelROC Apposite repository and request packages. Chris Cormack has offered to help publish these packages when the modules reach milestones.

As always, discussions are welcome in the NetKernelROC community forum at



I've now published the Kotlin packages.

Might be worth including a link to the NetKernelROC Apposite repository at



On Professions

I'm in the middle of buying/moving house. This explains why I've had and will have for the next few weeks, less time to put into these news articles. However, it's given me direct personal exposure to the working practices and economic model of a number of professions. Which got me thinking, we "geeks" really could learn a thing or two...

We all know about the established professions. It is understood that you will make a good living and get high social status by training hard and qualifying for one of the big three professions...

  • Lawyer
  • Accountant
  • Doctor

So why do these professions exist and what enables their practitioners to be respected, with high incomes?

Quite simply, they serve a societal need. Each profession provides a service that an individual in society will require in order to benefit over the long-term ...

  • An Accountant optimizes your money
  • A Lawyer optimizes your economic risk
  • A Doctor optimizes your health

† Business lawyers obviously mitigate economic risk through contracts. But criminal lawyers protect society by managing the rule of law, such that each individual does not have to cover the costs of their own protection. Criminal law therefore offers collective protection which therefore mitigates personal economic risk.

Being in an old profession confers social status and financial security. Therefore the traditional professions are very protective of commodification of the profession...

Software Status

Software people do not usually rate high on the social status scale and it is a rarity for the income of a software professional to match the median income of a doctor or lawyer. Software is well paid, but its not nearly as financially valued as the old professions.

I believe that financial value will increase when we address the fundamental matter: Status and respect for the service that the Software Profession provides.

One way software professionals can acquire status is to give away their work: The Open Source movement.

However, a member of the traditional professions would regard this as very odd. Firstly they don't do anything for free and, secondly, because their profession's cultural norms are such as to ensure that actions that reduce the potential value of the profession's members are rejected.

In short they've understood the message delivered in this interesting op-ed story...

The summary of which is that, over the long term giving away our information (including, as is mentioned, source-code) may actually damage the interest of the individual since it only serves to empower, for free, the largest economic participants in a market and commodifies the individual.

By contrast, you do not find old professions giving away their knowledge for free.

  • Where are the "open source contracts" and if you used one, you know the counter-party's lawyer would advise their client, "This is too risky. Do not sign it - let me redraft it".
  • Ask a Doctor her opinion of self-diagnosis and on-line prescription services - you'll get: "You're putting yourself in danger. Your life is at risk.".
  • Tell an accountant you'll file your own tax return - they'll say: "You can do it but you'll pay too much or, pay too little and go to jail!"

We need to recognise that Open Source is a way to gain social status within our peer group - but it doesn't impact the larger societal status of Software as a Profession. You might, as an altruist, argue it should, but try telling your neighbour about your great public source code and see their face blank over.

Perhaps even more significant is that we, as a body, potentially diminish our social standing by placing the label of "free" on it. We all know that ultimately nothing is free. Our time and effort least of all.

In fact this is the "trick" that the traditional professions have pulled-off. They have ensured that society regards the time and effort of the members of their profession as a premium service. Something that it is worth paying significantly more for than regular labour.

I would argue that Mastery of Information is a profession that should command both respect and the concomitant remuneration...

So where is the Software Profession?

So why is Software not regarded with the same status as other professions?

Well, for a start, Software is hard to explain - it is abstract and in general people don't understand what we do.

Tell people you're a Software Professional and maybe if you're lucky you'll get a jokey (but usually serious) request to help them fix their PC.

Conversely, if you tell someone your job protects people's risk, money or life, then people know what this means and you will be conferred social status and respect.

We even make this part of our language. We say, you are in a "respectable profession".

So what about software? Is Software a "respectable profession"?

Clearly it is not. We will only earn people's respect if we are able to let them understand what we do for them.

I think there are some simple ways in which we can position and explain our profession.

Firstly we need people who don't understand, to know what we do for them. Software needs a "go-to" phrase.

How about we use the same approach as our older peers. Here is a short and sweet summary of what we do...

  • A Software Professional optimizes your information

Isn't a person's or business's information as important as risk, money and even life? In particular, a business's life is entirely dependent on software, since, and it is assuredly true, information is the lifeblood of business.

But, in fact, information is the commodity upon which all of the other professions are based. So optimization of the "creation, management and protection of information" surely makes Software the Queen of Professions††?

At least that's how it ought to be...

But a catch-phrase is not sufficient. To gain status we must accept a greater degree of professional responsibility and, through the quality of our services, earn respect...

†† Queen. Information is King.

Responsibility and Assumed Liability

But, the Software Profession is only a baby - it's just 40 years old. It is, conservatively speaking, three hundred years behind its established peers. It has not had time to establish the societal framework and social norms that must also exist to assert that you are a Profession.

In short, Software doesn't behave like a profession.

Fundamentally, to be a profession its practitioners must conform with standards of responsibility and, also therefore, accountability and liability.

But, we should be honest, Software, as it is practiced today, is effectively liability free.

When did you ever hear of someone being disbarred for failing to deliver a project? Struck-off for overrunning the costs? Where is the Software Professionals hypocratic oath our promise of confidentiality and a commitment to the long-term well-being of the client?

It is not good enough when everyone knows and accepts that developing a system is only 20% of the cost. That 80% of the cost of a software solution is backloaded to the client business over its lifetime.

This is in fact, the opposite of what should be expected - it is the abrogation of responsibility. It's like a doctor saying "I cured your headache, but the medicine I gave you will give you cancer".

Its not good enough that projects can start and never deliver.

Its not good enough that projects can take 3 years and then be completely thrown away when a slightly newer set of features are needed.

Imagine if lawyers were appointed to write a contract. It takes them 3 years, along the way the company needs a new set of amendments added in a schedule but the lawyers say "oh we'll have to start again to add that".

It is absolutely not good enough when you meet a fellow software professional (as I have recently directly tested on a sample of more than 100) and say to them: "Software has a saw-tooth lifecycle. We build something. We live with it for a while. Then we throw it away and we build a new one" and they nod, smile a sheepish half-smile and acceptingly say "Yes, but that is how it is".

No. No. No. This is not what a true profession would accept. This is irresponsible.

Mystical Practices

We must deliver systems that adapt and evolve and embrace the changes that a client would naturally expect. We must stand-up and take responsibility and be prepared to bear the liability of failure and brittleness both today and for the long-term.

But before we can do this we need to be able to explain to people what we are doing for them. We need to be able to show people what we have achieved for them and, more particularly, they need to be able to show the professional where they have fallen short and therefore bear the liability.

We cannot do this when Software is fixated on language and code. By focusing on code, there is no middle ground upon which the professional and the client can stand together. Worse still, today we could easily be accused of being a priesthood of practitioners - our clients no more able to understand what we are doing than a supplicant peering over a witch doctor's shoulder at the entrails of a chicken.

We need a new way to think about software so that we can communicate with our clients and so that they can gain trust and respect for what we do for them...

The Resource Oriented Path to Professionalism

As I said earlier, I am moving house soon. In anticipation of the usual domestic jobs that inevitably follow a move, last week I bought a new drill. I was reminded of the old adage: "No one who ever bought a drill wanted a drill. They wanted a hole."

As a profession we need to understand our clients. For, just as with drills, so too with software...

No one who ever commissioned software wanted software. They wanted information.

As a profession we need to step away from code. We need to understand and embrace the simple fact that our clients do not want software. We gain no respect for our software skills; they are mystical and abstruse. We gain respect for our mastery of information.

I have many times in the past explained the journey that led me to reject classical software and to seek to establish a Resource Oriented model for computation. I have consistently stated that this path was not chosen out of technical motivation - even though it turned out that the technology and the new vistas that it opens are breathtakingly beautiful - ROC has only ever been about the economics.

When we step away from code and instead focus on the identity and compositional structure of information resources. We step out of the page of code and into the world of information.

In so doing, we have moved a huge step closer to common ground in which we are able to talk about and show clients what we are doing. A client can't hope to understand Java or Ruby or Clojure or Scala or Python or...

But show them this...


Then, with the flick of a wrist, in less than a second give them an alias:


then twenty minutes later give them this...

active:BestSellers+location@active:TodaysSales active:BestSellers+location@active:TodaysSales+State@CA active:BestSellers+location@active:BlueWaterMallSalesToday

if necessary give them some more aliases:


and so on and so on and so on... What's the betting your client would be able to guess the identity of the New York bestsellers? How much respect do you think you'd get for doing this in front of their eyes?

No code, no coupling. These are identities of resources that are valid today and will remain just as valid for so long as the business stays in business... Information lives outside implementation.

These are resources for which you can take responsibility. Not code. Information.

From Entrails to Insight, Reason, Responsibility

With a Resource Oriented perspective, what you gain is spontaneous, organic, creative mastery of business information. As a consequence the client no longer sees bloody entrails, they start to perceive aspects of the information that we, the practitioner, saw all along. They will never be as expert as us, but they at least get a sense of what we are doing and furthermore can express what they would like.

Furthermore we practitioners are empowered to step away from micro-mechanics and instead can assume responsibility for the quality of the information and the engineering qualities of the system that delivers the information. We can live up to our credo: ''We optimize your information".

In short we can expressly quantify risk in our systems and therefore we can accept and assume professional responsibility.

I think stepping away from programming languages and code is the single most important step we could take in order to raise Software up to being an Established Profession. I think, and those who practice it concur, that Resource Oriented Computing is the starting point for us to be able to claim our seat at the head of the table of "respectable professions".

Have a great weekend. I'm off to pay my lawyer...


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